<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: vibalijoshi</title>
    <description>The latest articles on Forem by vibalijoshi (@vibalijoshi).</description>
    <link>https://forem.com/vibalijoshi</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F484969%2Fb46c134b-9635-443c-9adc-a80d19a36420.jpeg</url>
      <title>Forem: vibalijoshi</title>
      <link>https://forem.com/vibalijoshi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/vibalijoshi"/>
    <language>en</language>
    <item>
      <title>How I Use Polywork As a Student</title>
      <dc:creator>vibalijoshi</dc:creator>
      <pubDate>Mon, 02 May 2022 12:07:52 +0000</pubDate>
      <link>https://forem.com/vibalijoshi/how-i-use-polywork-as-a-student-37mb</link>
      <guid>https://forem.com/vibalijoshi/how-i-use-polywork-as-a-student-37mb</guid>
      <description>&lt;p&gt;&lt;em&gt;Skip the waiting list, using special &lt;a href="https://polywork.com/invite/VibaliVIP"&gt;invite codes&lt;/a&gt;!&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;u&gt;A little about me&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;I’m Vibali Joshi - a student, software engineer, writer, and speaker. I’m currently in my pre-final year of a bachelor’s degree in Computer Science. I love coding, writing technical blogs, and presenting what I’ve learned to other women interested in pursuing this career field. At this point in my education, I understand finding a job is critical and I believe that the best way a candidate can set themselves apart is by establishing an online presence.&lt;/p&gt;

&lt;p&gt;Until now, I’ve used Twitter and LinkedIn to serve as my primary platforms — I post on Twitter on #buildinpublic, share blogs about my work on 100 Days of Code, and hold Twitter Spaces on topics for college students. On LinkedIn, I would share my accomplishments from speaking events and try to organize events for student communities. But it felt all over the place. I felt like a recruiter checking my profile would need to go to different platforms to piece my story together. I didn’t have a streamlined way to optimize an “online resume”.&lt;/p&gt;

&lt;p&gt;Enter Polywork.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;u&gt;Polywork Made It All Simple&lt;/u&gt;
&lt;/h2&gt;

&lt;p&gt;When I first encountered Polywork, I was thrilled to establish myself on a new platform where I could find new ways to promote myself. &lt;/p&gt;

&lt;p&gt;But what Polywork provided me with was what I needed all along: a place where all of my activities are shown exactly how I want them to be. It became clear to me from using the platform that I was in charge of building the persona I wanted to project to recruiters and potential employers. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rW1potcQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v4bx9kvar5zs0ymh6sz7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rW1potcQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v4bx9kvar5zs0ymh6sz7.png" alt="Image description" width="880" height="889"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  [1] &lt;u&gt;My Online Resume&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;It’s easy for tweets to get lost in the noise, and the key highlights are not readily evident. On Polywork, I can quickly highlight the important Tweets and other content I want others to see.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DVsk2y_l--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2q0d60kos2m174tm7665.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DVsk2y_l--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2q0d60kos2m174tm7665.png" alt="Image description" width="781" height="932"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In my opinion, Polywork is not a replacement for LinkedIn or Twitter. It's an excellent cross interface with various platforms because it allows you to highlight experiences from multiple platforms in one location.&lt;/p&gt;

&lt;p&gt;It serves as my online resume, which I completely customized myself. If somebody wants to know what I accomplished throughout my college years and beyond, I know where to look.&lt;/p&gt;




&lt;h3&gt;
  
  
  [2] &lt;u&gt;Highlighting My Blogging Journey&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;If you think having so many highlights on your profile defeats the purpose of my previous statement, Polywork recently added collections, which allows me to create bundles or groups of my highlights together.&lt;/p&gt;

&lt;p&gt;I blog frequently, and my "Articles and blogs" collection serves as a repository for all of the articles I've written thus far. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0fJV4d96--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mffhkgyqay09n6j18z19.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0fJV4d96--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mffhkgyqay09n6j18z19.png" alt="Image description" width="838" height="872"&gt;&lt;/a&gt; &lt;/p&gt;




&lt;h3&gt;
  
  
  [3] &lt;u&gt;Finding Opportunities&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;Almost everyone nowadays has the skills to get recruited for a job; the difference is in who finds the job postings first and actively applies for them. Polywork makes things easier for me because my feed offers a variety of opportunities that I can apply for as well as a hassle-free way to contact the individual who is offering the job.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AAFjYiiS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kp4qfwosbwmov5idxnex.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AAFjYiiS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kp4qfwosbwmov5idxnex.png" alt="Image description" width="438" height="490"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  [4] &lt;u&gt;Collaborating with Student Communities&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;Individuals that use Polywork are curious, willing to chat with new people, and eager to collaborate. As a Public Speaker and an active part of student communities, I am able to readily discover people willing to speak to community members and communities to which I can contribute. As a result of this, I've made a lot of valuable connections and increased my network.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_hiiFptC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e73j00nhs2yug6rtgrcw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_hiiFptC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e73j00nhs2yug6rtgrcw.png" alt="Image description" width="620" height="813"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;u&gt; The Friendliest Community&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;Polywork is a very student-friendly community. The Polywork team enjoys interacting with the community and is continuously looking for ways to improve the platform. They also have the best merchandise!  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OkBOBekl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9x3ahevmohz7ksicmugf.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OkBOBekl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9x3ahevmohz7ksicmugf.jpeg" alt="Image description" width="880" height="1173"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're a student reading this who wants to make a name for yourself online, becoming an early active part of the Polywork community would undoubtedly benefit you greatly, as it has for me.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;You can skip the waiting list and get all these benefits using my &lt;a href="https://polywork.com/invite/VibaliVIP"&gt;VIP Code&lt;/a&gt;.&lt;/strong&gt;&lt;br&gt;
Make sure your account has these so that you get more engagement!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your Name&lt;/li&gt;
&lt;li&gt;1 role/position&lt;/li&gt;
&lt;li&gt;A profile pic&lt;/li&gt;
&lt;li&gt;Couple of badges&lt;/li&gt;
&lt;li&gt;A brief description about yourself. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;See you there!&lt;/p&gt;

</description>
      <category>career</category>
      <category>productivity</category>
      <category>management</category>
      <category>beginners</category>
    </item>
    <item>
      <title>The Dark Side of Software Development </title>
      <dc:creator>vibalijoshi</dc:creator>
      <pubDate>Mon, 13 Dec 2021 10:57:17 +0000</pubDate>
      <link>https://forem.com/vibalijoshi/the-dark-side-of-software-development-441e</link>
      <guid>https://forem.com/vibalijoshi/the-dark-side-of-software-development-441e</guid>
      <description>&lt;p&gt;Software engineering is one of the most intriguing and in-demand occupations right now. You've probably heard about how wonderful software development is, and I agree that it excites me every time I hear about it. However, I suppose we should be aware of the flip side of the coin because let's face it no job is perfect. &lt;/p&gt;

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

&lt;p&gt;I conducted a Twitter space recently on this topic where over 20+ speakers and more than 100+ active listeners were present and shared their views on this. For more such spaces on software development, you can &lt;a href="https://twitter.com/VibaliJoshi" rel="noopener noreferrer"&gt;follow me&lt;/a&gt; on Twitter. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;u&gt;Addiction to Work&lt;/u&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkyrar3uwztxul23l6fzl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkyrar3uwztxul23l6fzl.png" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
There's a good possibility you got into this field because you like coding and solving complex challenges. &lt;u&gt;Coding is a highly addictive activity&lt;/u&gt;. Something doesn't feel quite right till the bug is fixed. &lt;/p&gt;

&lt;p&gt;Though this will benefit you by allowing you to complete more work in less time and impress your boss, we must keep in mind that this comes at a cost.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn0rpr5ym796p94mwnscj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn0rpr5ym796p94mwnscj.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you aren't a geek, you can relate to this: we underestimate the code, which requires us to commit more time to it than usual, potentially causing plans with friends and family to be cancelled.&lt;/li&gt;
&lt;li&gt;If you don't get up from your chair until the glitch is fixed, you could be sitting for up to 8 hours, which could cause major health problems if done on a regular basis. 

&lt;ul&gt;
&lt;li&gt;Terrible back and neck pains. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.webmd.com/eye-health/computer-vision-syndrome" rel="noopener noreferrer"&gt;Computer Vision Syndrome&lt;/a&gt;
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw14b6hcptz1pb2q3w86f.png" alt="Image description"&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;u&gt;Suggestions&lt;/u&gt;:
&lt;/h3&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Take a break&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We &lt;del&gt;often forget to take breaks&lt;/del&gt; need to remind ourselves to take a break. &lt;/li&gt;
&lt;li&gt;You can download &lt;a href="https://hovancik.net/stretchly/" rel="noopener noreferrer"&gt;Stretchly&lt;/a&gt; the break time reminder app ( It is also open source!)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Disconnect from work&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Separate your workstation from your bedroom or your resting space.&lt;/li&gt;
&lt;li&gt;Keep your phone free from all the work apps. &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Suggested Reads: &lt;a href="http://healthyprog.com/" rel="noopener noreferrer"&gt;The Healthy Programmer by Joe Kutner&lt;/a&gt;, &lt;a href="https://dev.to/desoga/7-ways-to-stay-healthy-as-a-programmer-3fjl"&gt;7 Ways To Stay Healthy As A Programmer&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  &lt;u&gt;Constantly Keeping Up With New Technology&lt;/u&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx6qeud7tl8am3n4lahxb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx6qeud7tl8am3n4lahxb.png" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Let's see if any of this looks familiar:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You feel that you are lagging as you are not using the latest tech stack in your current project.&lt;/li&gt;
&lt;li&gt;You feel like jumping to every other thing and learning multiple tech stacks at once.&lt;/li&gt;
&lt;li&gt;(For senior developers) You overhear your subordinates discussing a tech stack about which you are completely unaware, and they expect you to be an expert.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because the pace of new technology is so fast, you can't keep up with everything, yet people expect you to know everything at least to a basic level. To keep up with the latest trends and be an active member of the community, you think need to be well-versed in everything.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;u&gt;How to overcome this:&lt;/u&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;You need to realize that learning multiple things at once results in reduced productivity. Tim Buchalka who has taught over 1 Million students has explained it beautifully in &lt;a href="https://youtu.be/Jlo0OaL-Gn0" rel="noopener noreferrer"&gt;this&lt;/a&gt; video. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;(for the senior software devs) Flip the question, ask your team members to answer this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can you explain it to the entire team and make it so simple that no one needs to study it?&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;u&gt;Project Managers and Product Managers Unrealistic Demands&lt;/u&gt;
&lt;/h1&gt;

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

&lt;p&gt;There's a good probability that your boss doesn't have a technological background. They are also under pressure from their superiors to release a feature in a short period of time. This can result in low-quality code, as well as a weaker foundation for future builds.&lt;/p&gt;

&lt;p&gt;You are annoyed and furious with them, which leads to an unhealthy relationship between you two and a loss of trust. This need not be a case, save this bad blood by following these. &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;u&gt;Communication is the Key&lt;/u&gt;
&lt;/h3&gt;

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

&lt;ul&gt;
&lt;li&gt;Have a healthy discussion, outline why the task is unrealistic.&lt;/li&gt;
&lt;li&gt;list out the points in detail and the steps why it is unrealistic.&lt;/li&gt;
&lt;li&gt;Provide them with alternatives. &lt;/li&gt;
&lt;li&gt;Cut the problem down into smaller pieces, why the requirement is coming in and how can we go about it in a more realistic way. &lt;/li&gt;
&lt;li&gt;Discuss the (LOE) Level of Effort that would be required, so that you can get a timeline for the issue. &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;u&gt;Understand your Boss&lt;/u&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;One of the most common issues among software developers is a lack of awareness of the commercial side of the business and the chain of command.&lt;/li&gt;
&lt;li&gt;After reading &lt;a href="https://twitter.com/simpleprogrammr" rel="noopener noreferrer"&gt;John Sonmez's&lt;/a&gt; following articles, I got a tremendous degree of clarity:

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://simpleprogrammer.com/7-things-your-boss-doesnt-understand-about-software-development/" rel="noopener noreferrer"&gt;7 Things Your Boss Doesn’t Understand About Software Development&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://simpleprogrammer.com/dealing-with-your-boss/" rel="noopener noreferrer"&gt;A Software Developer’s Guide to Dealing With Your Boss&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;u&gt;Unhealthy competition for compensation&lt;/u&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxjd3qpmon0z4oljlyapv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxjd3qpmon0z4oljlyapv.png" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;How many times have you checked out &lt;a href="https://www.teamblind.com/" rel="noopener noreferrer"&gt;Blind&lt;/a&gt; and have been so addicted to it that you had to uninstall it?&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;There are a lot of developers who are just running after money hence switching companies after 6 months.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Constant comparisons between peers regarding salaries and stock options have made things extremely competitive, which is affecting their happiness.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Do you feel a constant need to improve yourself to get a better salary or offer?&lt;/em&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This definitely is a great push for getting better roles. But, at some point, you will overwork yourself as there is no end to this greed. Hence, you will stop enjoying your job. &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;u&gt;Switching is not that easy&lt;/u&gt;
&lt;/h3&gt;

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

&lt;ul&gt;
&lt;li&gt;When you switch so frequently, your integrity gets questioned and this would be reflected in your resume too. &lt;/li&gt;
&lt;li&gt;It would be clear that for you, money matters more than software. &lt;/li&gt;
&lt;li&gt;Also you would have to start all the processes of knowing people, building trust from scratch.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;u&gt;Life is not all about money&lt;/u&gt;
&lt;/h3&gt;

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

&lt;ul&gt;
&lt;li&gt;Money should not be the driving factor. A good work-life balance, good peer group, work on challenging problems matters more in the long run. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;u&gt;Maintaining Legacy Code&lt;/u&gt;
&lt;/h2&gt;

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

&lt;p&gt;It is just really scary to touch.&lt;/p&gt;

&lt;p&gt;Legacy code can be a challenge to maintain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The code is not well documented. &lt;/li&gt;
&lt;li&gt;The code is not clean.&lt;/li&gt;
&lt;li&gt;Fewer resources to integrate it with the new trends&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;You need to step up and change it, if you do not change it then it becomes a dark side.&lt;/li&gt;
&lt;li&gt;The most important thing you can do to go up in the ranks at any company is to take on more responsibility. Legacy code is an area where no one wants to get involved. &lt;/li&gt;
&lt;li&gt;This is the best test. A sign of a really good engineer. Take this chance. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What are all other challenges do you face in your workspace? Comment down below 👇🏼&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>discuss</category>
      <category>career</category>
    </item>
    <item>
      <title>The Ultimate Resource Guide for Your Next 100 Days of Code</title>
      <dc:creator>vibalijoshi</dc:creator>
      <pubDate>Tue, 26 Oct 2021 04:57:59 +0000</pubDate>
      <link>https://forem.com/vibalijoshi/the-ultimate-resource-guide-for-your-next-100-days-of-code-2630</link>
      <guid>https://forem.com/vibalijoshi/the-ultimate-resource-guide-for-your-next-100-days-of-code-2630</guid>
      <description>&lt;p&gt;The adrenaline rush that we get from the idea of sticking to coding every day for 100 days is undeniable, and this gets you through your first week of coding drive. 🤩&lt;/p&gt;

&lt;p&gt;BUT 👀&lt;/p&gt;

&lt;p&gt;We've all been there, where things start to slow down after a week or so. Life intervenes, and we are longer able to continue the challenge 💔&lt;/p&gt;

&lt;p&gt;But don't worry, we all learn from our mistakes. There is a pattern that I have discovered among those who have accomplished this feat, and the following are my observations that you can follow:&lt;/p&gt;

&lt;h2&gt;
  
  
  Declare it to the world but...&lt;em&gt;in style&lt;/em&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1632933224095%2FPsDJSVlri.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1632933224095%2FPsDJSVlri.png" alt="image.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It has been scientifically proven that declaring something publicly gives you the responsibility of accountability. You don't want to show the world that you failed, do you? This is the energy source that keeps you going!&lt;/p&gt;

&lt;h3&gt;
  
  
  Twitter
&lt;/h3&gt;

&lt;p&gt;If you haven't already, you should be familiar with tech Twitter as a developer. Not only do you get to build your personal brand, but you also get to learn a lot. My life has changed dramatically since I decided to reactivate my Twitter account.&lt;/p&gt;

&lt;p&gt;How can you use Twitter for #100DaysOfCode?&lt;/p&gt;

&lt;p&gt;Many of you may already be doing this by tweeting about your progress every day; using #100DaysOfCode hashtags and being retweeted by bots created by developers during their 100 Days of Code!&lt;/p&gt;

&lt;p&gt;But how can you add &lt;em&gt;"the"&lt;/em&gt; factor to your tweets?&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Add value to your tweets
&lt;/h3&gt;

&lt;p&gt;Instead of saying, "I did blah, blah, blah," include what you learned today. Maybe you learned about an amazing C++ STL function that makes things so simple or a VSC shortcut that can make someone's day a lot easier.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1442508229724946441-840" src="https://platform.twitter.com/embed/Tweet.html?id=1442508229724946441"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1442508229724946441-840');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1442508229724946441&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Make it fancy!
&lt;/h3&gt;

&lt;p&gt;Some developers also have a nag of UI/UX tweet along with a stylized picture of what they have done. This is quite successful as Sheldon once said:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Yes, well, they say a picture's worth a thousand words, but I say nothing beats a picture and a thousand words.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1436828262051860480-351" src="https://platform.twitter.com/embed/Tweet.html?id=1436828262051860480"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1436828262051860480-351');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1436828262051860480&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;She uses &lt;a href="//canva.com"&gt;Canva&lt;/a&gt; as mentioned in one of her tweets. &lt;/p&gt;

&lt;p&gt;For this you can also use tools like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; &lt;a href="https://carbon.now.sh/" rel="noopener noreferrer"&gt;Carbon&lt;/a&gt; if you want to share a code snippet.&lt;/li&gt;
&lt;li&gt; &lt;a href="https://marketplace.visualstudio.com/items?itemName=Goopware.raythis" rel="noopener noreferrer"&gt;RayThis: Instant Beautiful Code Screenshots&lt;/a&gt; A VSC extension that lets you create a beautiful snippet. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This would not only make your tweets prettier but also add extensive value to your posts!&lt;/p&gt;

&lt;h2&gt;
  
  
  Blog About it
&lt;/h2&gt;

&lt;p&gt;There are many free amazing developer blogging sites that you can document your journey. Some of them:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; &lt;a href="https://dev.to/"&gt;Dev.to&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://hashnode.com/" rel="noopener noreferrer"&gt;Hashnode&lt;/a&gt; &lt;/li&gt;
&lt;li&gt; &lt;a href="https://hackernoon.com/" rel="noopener noreferrer"&gt;Hackernoon&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;Also GitHub, Medium&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/best-blogging-platforms-for-developers/" rel="noopener noreferrer"&gt;Here is a great comparison&lt;/a&gt;  between all three platforms, and you can then decide which one is best for you.&lt;/p&gt;

&lt;p&gt;Not only you are expanding your knowledge, but you are also sharing it with the rest of the world. If you want to become a technical writer, I believe this is an excellent ritual to follow in order to build your portfolio.&lt;/p&gt;

&lt;h2&gt;
  
  
  Divide and Conquer
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;From  &lt;a href="https://www.freecodecamp.org/news/my-journey-in-completing-100-days-of-code-e657428b1fa6/" rel="noopener noreferrer"&gt;My journey in completing 100 days of code&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1632934129958%2FfvX5FSkZ6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1632934129958%2FfvX5FSkZ6.png" alt="image.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can divide 100 Days into three 30 days blocks and set a definitive goal for all these days. Unplanned events, like any other aspect of our lives, do not last long, especially when you are aiming for 100 days!  &lt;/p&gt;

&lt;p&gt;Check out these roadmaps if you want to learn about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Data Structures and Algorithms: &lt;a href="https://www.geeksforgeeks.org/100-days-of-code-a-complete-guide-for-beginners-and-experienced/" rel="noopener noreferrer"&gt;100 Days roadmap by GeeksForGeeks&lt;/a&gt; and  &lt;a href="https://omkarghotekar.medium.com/30-days-of-code-complete-guide-w-resources-dsa-efc0930efbd9" rel="noopener noreferrer"&gt;30 Days of Code — Complete Guide W/Resources(DSA)&lt;/a&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;React.js:  &lt;a href="https://medium.com/@LenoraPorter/learning-react-in-100-days-229c45d906a3" rel="noopener noreferrer"&gt;Learn React in 100 Days&lt;/a&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/how-i-built-100-projects-in-100-days/" rel="noopener noreferrer"&gt;How I built 100 Projects in 100 Days&lt;/a&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ML:  &lt;a href="https://github.com/Avik-Jain/100-Days-Of-ML-Code" rel="noopener noreferrer"&gt;100-Days-Of-ML-Code&lt;/a&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Frontend: &lt;a href="https://levelup.gitconnected.com/a-100daysofcode-timeboxed-front-end-development-curriculum-cb4b6c2081c2" rel="noopener noreferrer"&gt;A Timeboxed, Day-by-Day #100DaysOfCode Front-End Development Curriculum&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can find similar roadmaps for the stack/topic of your choice over the internet. Comment down below if you find any!&lt;/p&gt;
&lt;h2&gt;
  
  
  Start with a peer
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1632934353304%2F8oUkwid6d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1632934353304%2F8oUkwid6d.png" alt="image.png"&gt;&lt;/a&gt;&lt;br&gt;
You not only gain accountability, but you also learn how to collaborate, learn from your peers, teach, and consolidate your knowledge.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Try out  &lt;a href="https://codebuddies.org/" rel="noopener noreferrer"&gt;CodeBuddies&lt;/a&gt;.&lt;br&gt;
Here you have Peer-to-peer organized study groups, Teaching Hangouts, and Collaboration Hangouts. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Join Gitter (you need a GitHub account), and search for chat rooms. There is a &lt;a href="https://gitter.im/FreeCodeCamp/LetsPair" rel="noopener noreferrer"&gt;Pair Programming chat room by freecodecamp.org&lt;/a&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Join the official slack account! &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use this link to get an invite to #100DaysOfCode Slack: &lt;a href="https://100xcode.slack.com/join/shared_invite/zt-ol9dlcwy-rB6JCOBCcboQQiu2j4bMoQ#/shared-invite/email" rel="noopener noreferrer"&gt;CLAIM INVITE&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If the link above didn’t work&lt;br&gt;
If the link above has expired, please let me know by sending a DM on Twitter &lt;a href="https://twitter.com/ka11away" rel="noopener noreferrer"&gt;@ka11away&lt;/a&gt; 🙌&lt;/p&gt;

&lt;p&gt;If you need a study environment try out these virtual study rooms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.studytogether.com/" rel="noopener noreferrer"&gt;Study Together&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.studystream.live/home" rel="noopener noreferrer"&gt;Study Stream&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hours.zone/" rel="noopener noreferrer"&gt;Hours&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Don't stress out!
&lt;/h2&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1444688291316387849-511" src="https://platform.twitter.com/embed/Tweet.html?id=1444688291316387849"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1444688291316387849-511');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1444688291316387849&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;It's quite acceptable to take a break and then return to it; just don't abandon it completely! All you have to do is code for an hour every day. I am confident in your ability to complete this.&lt;/p&gt;

&lt;p&gt;Thanks for reading the full article, here is a bonus for you: &lt;br&gt;
Head over to  &lt;a href="https://join.teamtreehouse.com/100-days-of-code/?utm_content=178628742&amp;amp;utm_medium=social&amp;amp;utm_source=twitter&amp;amp;hss_channel=tw-14843763" rel="noopener noreferrer"&gt;treehouse&lt;/a&gt;  to get free reminders to code for at least 30 min per day.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1633415638355%2F9jhCdrFnz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1633415638355%2F9jhCdrFnz.png" alt="image.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hope you shine as bright as the sun 🌞&lt;br&gt;
All the best!&lt;/p&gt;

</description>
      <category>100daysofcode</category>
      <category>programming</category>
      <category>beginners</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How to Automate WhatsApp Messages</title>
      <dc:creator>vibalijoshi</dc:creator>
      <pubDate>Sat, 16 Oct 2021 11:56:53 +0000</pubDate>
      <link>https://forem.com/vibalijoshi/how-to-automate-whatsapp-messages-3cpl</link>
      <guid>https://forem.com/vibalijoshi/how-to-automate-whatsapp-messages-3cpl</guid>
      <description>&lt;p&gt;WhatsApp is without a doubt the most popular smartphone application on our devices. With restrictions in place all around the world, it became one of our primary means of communication.&lt;/p&gt;

&lt;p&gt;Are you the type of person who prefers not to be distracted from your work by the thought of wishing someone a happy birthday or reminding someone of anything at a specific time? If that's the case, this automation is for you!&lt;/p&gt;

&lt;p&gt;You can automate this process by using python by writing just 2-3 lines of code. &lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--86Cd_kbY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wy0swgn2rm16oinpr5gm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--86Cd_kbY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wy0swgn2rm16oinpr5gm.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python3 &lt;/li&gt;
&lt;li&gt;Chrome browser*&lt;/li&gt;
&lt;li&gt;You must be logged into &lt;a href="https://web.whatsapp.com/"&gt;WhatsApp web&lt;/a&gt; (does not matter if it is closed)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;*&lt;em&gt;If you do not have chrome browser, then you can follow the following steps:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;1.  Download and extract the current stable release of chrome driver from  &lt;a href="https://chromedriver.chromium.org/"&gt;https://chromedriver.chromium.org/&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;2.  Open the downloaded file and search for an application named chrome drive, copy its path, for windows, it should look like this - C:/Users/.../chromedriver.exe.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;3.  Then call  &lt;code&gt;pywhatkit.add_driver_path(path)&lt;/code&gt;  and pass the copied path as an argument, if the path is valid, a black window along with chrome will open and close.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;4.  Now call  &lt;code&gt;pywhatkit.load_QRcode()&lt;/code&gt;  function and scan the QR code.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_YoCWlUJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q7ai55113r8y1257l4om.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_YoCWlUJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q7ai55113r8y1257l4om.png" alt="Overview of the process"&gt;&lt;/a&gt;&lt;br&gt;
To automate the transmission of messages, we'll write a Python script. Whatsapp web would open at the appointed time and deliver the message to the specified contact number.&lt;/p&gt;
&lt;h2&gt;
  
  
  Install PyWhatkit
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Create a new python file, name it &lt;code&gt;wa_automation.py&lt;/code&gt; or anything of your choice. &lt;/li&gt;
&lt;li&gt;We would use a python library &lt;a href="https://pypi.org/project/pywhatkit/"&gt;PyWhatKit&lt;/a&gt;, which comes with various whatsapp features like send text messages, images, gifs to a personal contact or even a group chat. 
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Ankit404butfound"&gt;
        Ankit404butfound
      &lt;/a&gt; / &lt;a href="https://github.com/Ankit404butfound/PyWhatKit"&gt;
        PyWhatKit
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Send WhatsApp message at certain time and many other things.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/e87412b322c414971c84b5c77189cd32354e7c8410e97a54d033f031616a80fb/68747470733a2f2f6d656469612e646973636f72646170702e6e65742f6174746163686d656e74732f3834323739343136373133343435333832302f3838323232373936303631333034383335302f756e6b6e6f776e2e706e673f77696474683d31343430266865696768743d343230"&gt;&lt;img src="https://camo.githubusercontent.com/e87412b322c414971c84b5c77189cd32354e7c8410e97a54d033f031616a80fb/68747470733a2f2f6d656469612e646973636f72646170702e6e65742f6174746163686d656e74732f3834323739343136373133343435333832302f3838323232373936303631333034383335302f756e6b6e6f776e2e706e673f77696474683d31343430266865696768743d343230" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/09dea9548206ee25355b484a4843ea231cc843270fd4e179e3b537b1a18c5a5b/68747470733a2f2f666c61742e62616467656e2e6e65742f6769746875622f73746172732f416e6b6974343034627574666f756e642f5079776861746b6974"&gt;&lt;img src="https://camo.githubusercontent.com/09dea9548206ee25355b484a4843ea231cc843270fd4e179e3b537b1a18c5a5b/68747470733a2f2f666c61742e62616467656e2e6e65742f6769746875622f73746172732f416e6b6974343034627574666f756e642f5079776861746b6974" alt="image"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/fc2134c9077a525e89fab507a4598317e3cb2598b9e3d9e3370ffef464cc16e1/68747470733a2f2f666c61742e62616467656e2e6e65742f6769746875622f666f726b732f416e6b6974343034627574666f756e642f5079776861746b6974"&gt;&lt;img src="https://camo.githubusercontent.com/fc2134c9077a525e89fab507a4598317e3cb2598b9e3d9e3370ffef464cc16e1/68747470733a2f2f666c61742e62616467656e2e6e65742f6769746875622f666f726b732f416e6b6974343034627574666f756e642f5079776861746b6974" alt="image"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/d0c77c2e697b2329c74a14eadd5e855ad2ff46b74fbb68cdafa872494637c3dd/68747470733a2f2f666c61742e62616467656e2e6e65742f6769746875622f6f70656e2d6973737565732f416e6b6974343034627574666f756e642f5079776861746b6974"&gt;&lt;img src="https://camo.githubusercontent.com/d0c77c2e697b2329c74a14eadd5e855ad2ff46b74fbb68cdafa872494637c3dd/68747470733a2f2f666c61742e62616467656e2e6e65742f6769746875622f6f70656e2d6973737565732f416e6b6974343034627574666f756e642f5079776861746b6974" alt="image"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/1ac20ddf0a1b3bf1ef15b84de7174574f3490899c6a9f84e931bbfec707e5fcd/68747470733a2f2f666c61742e62616467656e2e6e65742f6769746875622f6f70656e2d7072732f416e6b6974343034627574666f756e642f5079776861746b6974"&gt;&lt;img src="https://camo.githubusercontent.com/1ac20ddf0a1b3bf1ef15b84de7174574f3490899c6a9f84e931bbfec707e5fcd/68747470733a2f2f666c61742e62616467656e2e6e65742f6769746875622f6f70656e2d7072732f416e6b6974343034627574666f756e642f5079776861746b6974" alt="image"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/14374cfeb834dd052c24fd322b58f13aea6b6e84549bde8f742dc17c194daf36/68747470733a2f2f666c61742e62616467656e2e6e65742f6769746875622f636f6d6d6974732f416e6b6974343034627574666f756e642f5079776861746b6974"&gt;&lt;img src="https://camo.githubusercontent.com/14374cfeb834dd052c24fd322b58f13aea6b6e84549bde8f742dc17c194daf36/68747470733a2f2f666c61742e62616467656e2e6e65742f6769746875622f636f6d6d6974732f416e6b6974343034627574666f756e642f5079776861746b6974" alt="image"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/9762119f3c558ab2ee8c7e28a721289c93bef5d77f33256250a58bd220a9e80f/68747470733a2f2f666c61742e62616467656e2e6e65742f6769746875622f6c6963656e73652f416e6b6974343034627574666f756e642f5079776861746b6974"&gt;&lt;img src="https://camo.githubusercontent.com/9762119f3c558ab2ee8c7e28a721289c93bef5d77f33256250a58bd220a9e80f/68747470733a2f2f666c61742e62616467656e2e6e65742f6769746875622f6c6963656e73652f416e6b6974343034627574666f756e642f5079776861746b6974" alt="image"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/5f3184fef6cc5983358db04478b19890a71f1d020267af8ff58726a594001c91/68747470733a2f2f666c61742e62616467656e2e6e65742f6769746875622f636f6e7472696275746f72732f416e6b6974343034627574666f756e642f5079776861746b6974"&gt;&lt;img src="https://camo.githubusercontent.com/5f3184fef6cc5983358db04478b19890a71f1d020267af8ff58726a594001c91/68747470733a2f2f666c61742e62616467656e2e6e65742f6769746875622f636f6e7472696275746f72732f416e6b6974343034627574666f756e642f5079776861746b6974" alt="image"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/59122f0bebcb2da66137929ba2daf749e85f1fd9c8b008e02f54287ff8688c9a/68747470733a2f2f666c61742e62616467656e2e6e65742f6769746875622f72656c656173652f416e6b6974343034627574666f756e642f5079776861746b6974"&gt;&lt;img src="https://camo.githubusercontent.com/59122f0bebcb2da66137929ba2daf749e85f1fd9c8b008e02f54287ff8688c9a/68747470733a2f2f666c61742e62616467656e2e6e65742f6769746875622f72656c656173652f416e6b6974343034627574666f756e642f5079776861746b6974" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pypi.org/project/pywhatkit/" rel="nofollow"&gt;PyWhatKit&lt;/a&gt; is a Python library with various helpful features. It's easy-to-use and does not require you to do any additional setup. Currently, it has about 200k+ downloads and counting. New updates are released frequently with new features and bug fixes.&lt;/p&gt;
&lt;h1&gt;
Links&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;h3&gt;
Have some query or suggestions or want to become a beta tester, join our discord server - &lt;a href="https://discord.gg/62Yf5mushu" rel="nofollow"&gt;Discord invite link&lt;/a&gt;
&lt;/h3&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h3&gt;
Help us test an upcoming feature - &lt;a href="https://pywhatkit.herokuapp.com/remote-kit" rel="nofollow"&gt;here&lt;/a&gt;
&lt;/h3&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h3&gt;
Documentation - &lt;a href="https://github.com/Ankit404butfound/PyWhatKit/wiki"&gt;Wiki&lt;/a&gt;
&lt;/h3&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Contributing&lt;/h2&gt;
&lt;p&gt;Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
For more detailed information see &lt;a href="https://github.com/Ankit404butfound/PyWhatKit/blob/master/CONTRIBUTING.md"&gt;this&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
License&lt;/h2&gt;
&lt;p&gt;MIT. For more information see &lt;a href="https://github.com/Ankit404butfound/PyWhatKit/blob/master/LICENSE"&gt;this&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Ankit404butfound/PyWhatKit"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;This library takes care of everything behind the scenes, so all we have to do is write a few lines of Python code describing it what message to send and when to send it, along with some other parameters.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;br&gt;
Install the library in your Python environment&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip3 &lt;span class="nb"&gt;install &lt;/span&gt;pywhatkit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;em&gt;If you face errors:&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-m&lt;/span&gt; pip &lt;span class="nb"&gt;install&lt;/span&gt; - upgrade pip

python &lt;span class="nt"&gt;-m&lt;/span&gt; pip &lt;span class="nb"&gt;install&lt;/span&gt; –upgrade Pillow 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Import the package&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# wa_automation.py
&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;pywhatkit&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Write Code
&lt;/h2&gt;

&lt;p&gt;After we have installed the package, let us write our python code for automation.&lt;/p&gt;

&lt;p&gt;We will use the function &lt;code&gt;sendwhatmsg()&lt;/code&gt; to send our message to the contact.&lt;br&gt;
The function asks for the following parameters:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;sendwhatmsg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;phone_no&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
             &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
             &lt;span class="n"&gt;time_hour&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
             &lt;span class="n"&gt;time_min&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
             &lt;span class="n"&gt;wait_time&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
             &lt;span class="n"&gt;tab_close&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;bool&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
             &lt;span class="n"&gt;close_time&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Mandatory Parameters: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;phone_no&lt;/strong&gt;: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Enter phone number as a string&lt;/li&gt;
&lt;li&gt;It is mandatory to add the country code, otherwise you would get error&lt;/li&gt;
&lt;li&gt;Example: "+911234567891"&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;message&lt;/strong&gt;: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Message to be sent as a string.&lt;/li&gt;
&lt;li&gt;Ex: "One hour to go for the deadline"&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;time_hour&lt;/strong&gt;: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The hour when you want to send message&lt;/li&gt;
&lt;li&gt;Please note that the time should be given in 24 hour format.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;time_min&lt;/strong&gt;: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The minutes when you want to send message.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# wa_automation.py
&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;pywhatkit&lt;/span&gt;
&lt;span class="n"&gt;pywhatkit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sendwhatmsg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"+911234567891"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;"Reminder to go to market"&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;17&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;00&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Customizations:
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# wa_automation.py
&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;pywhatkit&lt;/span&gt;
&lt;span class="n"&gt;pywhatkit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sendwhatmsg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"+911234567891"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;"Reminder to go to market"&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;17&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;00&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;wait_time:&lt;/strong&gt; After the appointed time, this is the time when your messages will be sent. It is set to 20 seconds by default, but you can alter it to suit your needs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;tab_close&lt;/strong&gt;: Specifies that whether the previous tab should be closed or not after sending the message. It will remain open after sending the message by default. You can change it by marking it &lt;code&gt;True&lt;/code&gt;. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;close_time&lt;/strong&gt;: You can control the time after which the tab should be closed &lt;strong&gt;after delivering the message&lt;/strong&gt; by specifying the &lt;code&gt;close_time&lt;/code&gt; parameter &lt;strong&gt;in seconds&lt;/strong&gt;. 
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9ytPtt-i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cd1r20k9k3jwiai64gwl.png" alt="full overview"&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Other features
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Send messages to groups
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Using the &lt;code&gt;sendwhatmsg_to_group()&lt;/code&gt; method we can send messages to group chats.&lt;/li&gt;
&lt;li&gt;Everything else is the same as the earlier case including the customizations, the only difference is that instead of &lt;code&gt;phone_num&lt;/code&gt; there is &lt;code&gt;group_id&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;You can identify the group_id of your group through the invite link. Highlighted text is your group id.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dJDu5kDX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/413/1%2AVq_3IAcaSeAgcky9ZEwRdg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dJDu5kDX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/413/1%2AVq_3IAcaSeAgcky9ZEwRdg.png" alt="WhatsApp Group ID. https://holithemes.com/whatsapp-chat/fin… | by venkat |  Click to Chat | Medium"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;pywhatkit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sendwhatmsg_to_group&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"AB123CDEFGHijklmn"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"One hour to the deadline"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;23&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;00&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Send Instant Messages
&lt;/h3&gt;

&lt;p&gt;Here only difference is that there is no &lt;code&gt;time_hour&lt;/code&gt; or &lt;code&gt;time_min&lt;/code&gt; to be scheduled.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;sendwhatmsg_instantly&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;phone_no&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                     &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                     &lt;span class="n"&gt;wait_time&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                     &lt;span class="n"&gt;tab_close&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;bool&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                     &lt;span class="n"&gt;close_time&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;pywhatkit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sendwhatmsg_instantly&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"+911234567891"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Can you call me? It is urgent!"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Send Images/gifs
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;sendwhats_image&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;phone_no&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="n"&gt;img_path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="n"&gt;caption&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;" "&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="n"&gt;wait_time&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="n"&gt;tab_close&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;bool&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="n"&gt;close_time&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;pywhatkit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sendwhats_image&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"+911234567891"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"C:&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s"&gt;Image.png"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Question-1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Send multiple messages
&lt;/h3&gt;

&lt;p&gt;The feature would be launched soon: &lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/Ankit404butfound/PyWhatKit/issues/126"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg"&gt;
      &lt;span class="issue-title"&gt;
        Sending multiple messages to multiple numbers
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#126&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/Elbargho"&gt;
        &lt;img class="github-liquid-tag-img" src="https://res.cloudinary.com/practicaldev/image/fetch/s--CY9a939n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://avatars.githubusercontent.com/u/67919802%3Fv%3D4" alt="Elbargho avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/Elbargho"&gt;Elbargho&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/Ankit404butfound/PyWhatKit/issues/126"&gt;&lt;time&gt;Oct 07, 2021&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;I think you are already working on sending multiple messages to the same person (one after another), if not, this feature is needed.
Also I would like to send a message (or multiple) to multiple numbers.&lt;/p&gt;
&lt;p&gt;Thanks&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Ankit404butfound/PyWhatKit/issues/126"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;



&lt;h3&gt;
  
  
  Possible pitfalls:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Make sure your WhatsApp web is connected properly and you have a stable internet connection.&lt;/li&gt;
&lt;li&gt;When running the code, you should try to give at least 4-5 minutes from the present time; otherwise, if you set the time 1-2 minutes prior to the current time, the module may throw an error.&lt;/li&gt;
&lt;li&gt;Do not add 0 as a prefix when specifying time. &lt;/li&gt;
&lt;li&gt;Windows users can send Images (all formats) and GIF's. For Linux based distributions, only &lt;code&gt;JPEG&lt;/code&gt; and &lt;code&gt;PNG&lt;/code&gt; are supported. For MacOS users, only &lt;code&gt;JPEG&lt;/code&gt; is supported currently.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Limitations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;This would only work when you are working on the machine, connected to a stable connection.&lt;/li&gt;
&lt;li&gt;So for example, you want to send your parents good morning every day at 7:00 AM while sleeping, this won't work. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Use cases
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;If you are busy doing your work and you have to remind someone, or even schedule a text for meetings, announcements then this would do your work.&lt;/li&gt;
&lt;li&gt;Make aware your study group about the project deadline submission, wish someone a happy birthday on time while not being bothered about it doing work.
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Alternative
&lt;/h2&gt;

&lt;p&gt;If you want to send messages while being offline and away from your machine, then there is an alternative method for this using &lt;em&gt;Twilio, python and Heroku&lt;/em&gt;. It is not that convenient and works on the basis of a hack, but it is for free and it works. &lt;br&gt;
Check out these resources to implement it:&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/pQeFxdT3FGY"&gt;
&lt;/iframe&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="https://medium.com/programminghero/how-to-automate-whatsapp-with-15-lines-of-python-code-fa2d3565324d" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UpgJFcgj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/fit/c/96/96/1%2Ac8dWhnGtWGvBdX1LuJ0nIw.png" alt="Shawon Chowdhury"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://medium.com/programminghero/how-to-automate-whatsapp-with-15-lines-of-python-code-fa2d3565324d" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;How to Automate WhatsApp with 15 lines of Python Code | Shawon Chowdhury | by Shawon Chowdhury | Programming Hero | Medium&lt;/h2&gt;
      &lt;h3&gt;Shawon Chowdhury ・ &lt;time&gt;Oct 3, 2020&lt;/time&gt; ・ 
      &lt;div class="ltag__link__servicename"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ze5yh_2q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/medium_icon-90d5232a5da2369849f285fa499c8005e750a788fdbf34f5844d5f2201aae736.svg" alt="Medium Logo"&gt;
        Medium
      &lt;/div&gt;
    &lt;/h3&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>python</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>programming</category>
    </item>
    <item>
      <title>How you can use WebSockets with Flutter</title>
      <dc:creator>vibalijoshi</dc:creator>
      <pubDate>Tue, 12 Oct 2021 19:43:41 +0000</pubDate>
      <link>https://forem.com/vibalijoshi/how-you-can-use-websockets-with-flutter-ipn</link>
      <guid>https://forem.com/vibalijoshi/how-you-can-use-websockets-with-flutter-ipn</guid>
      <description>&lt;p&gt;WebSockets are clearly taking the industry by storm. With Google's Flutter framework on the rise too, it would give you a big boost knowing how to integrate both of these technologies. &lt;/p&gt;

&lt;h2&gt;
  
  
  What are WebSockets
&lt;/h2&gt;

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

&lt;p&gt;WebSockets represent a long-awaited evolution in the client/server web technology. It defines a fully duplex bi-directional communication channel between the client and server. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Related: &lt;br&gt;
&lt;a href="https://www.pcmag.com/encyclopedia/term/clientserver#:~:text=An%20architecture%20in%20which%20the,WAN%29%20such%20as%20the%20Internet." rel="noopener noreferrer"&gt;What do you mean by client and a server?&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In simple words, once after the initial handshake where the server and the client agree to upgrade to WebSockets, (from HTTP) the client and the server can talk in real time without having to continuously make requests (like loading the page again and again). &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Only the client-side problems of developing a dependable WebSocket-based solution for realtime Flutter apps are discussed in this article. On the server side, you must determine which solution you wish to utilise. You can use an open-source library like &lt;a href="https://ably.com/topic/socketio" rel="noopener noreferrer"&gt;Socket.IO&lt;/a&gt; if you haven't already.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to connect to a WebSocket server with Flutter
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://pub.dev/packages/web_socket_channel" rel="noopener noreferrer"&gt;&lt;code&gt;web_socket_channel&lt;/code&gt;&lt;/a&gt; package
&lt;/h3&gt;

&lt;p&gt;We will use this package to acquire the tools we need to connect to a WebSocket server. &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9y4379cj5cgz0xqr1h7w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9y4379cj5cgz0xqr1h7w.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;web_socket_channel&lt;/code&gt; basically works with the &lt;strong&gt;&lt;em&gt;StreamChannel&lt;/em&gt;&lt;/strong&gt; class, which is an abstract class representing a two-way communication channel (as in the case for WebSockets)&lt;/li&gt;
&lt;li&gt;Each &lt;code&gt;StreamChannel&lt;/code&gt; exposes a &lt;code&gt;Stream&lt;/code&gt; for &lt;strong&gt;receiving data&lt;/strong&gt;. A &lt;code&gt;Stream&lt;/code&gt;  is like a pipe, you put a value on the one end and if there’s a listener on the other end that listener will receive that value.&lt;/li&gt;
&lt;li&gt;It also exposes &lt;code&gt;StreamSink&lt;/code&gt; used to push messages to the server.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In short words, the package allows you to both listen for messages from the server and push messages to the server i.e &lt;strong&gt;&lt;em&gt;fully duplex bi-directional communication channel&lt;/em&gt;&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;br&gt;
Follow the installation given here: &lt;br&gt;
&lt;a href="https://pub.dev/packages/web_socket_channel/install" rel="noopener noreferrer"&gt;https://pub.dev/packages/web_socket_channel/install&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Basic Idea
&lt;/h3&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;We'd have a textfield in our app where the user could type a message. The data that we input would be displayed on the screen after pressing a button.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The data displayed comes from the server response, which is an echo server in this case, meaning it sends back what it receives. These servers are used to determine whether or not a connection to a server is successful. Here we would be using them to maintain simplicity for this example. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is the boiler plate we will be using:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h3&gt;
  
  
  How to connect to server
&lt;/h3&gt;

&lt;p&gt;First let us connect to a WebSocket server. As discussed above we will be using an echo webSocket server. &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;

&lt;span class="n"&gt;WebSocketChannel&lt;/span&gt; &lt;span class="n"&gt;channel&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;IOWebSocketChannel&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"wss://ws.ifelse.io/"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;WebSocketChannel&lt;/code&gt;: A &lt;em&gt;StreamChannel&lt;/em&gt; (class representing a two-way communication) that communicates over a WebSocket.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;IOWebSocketChannel&lt;/code&gt;: A &lt;a href="https://docs-flutter-io.firebaseapp.com/flutter/package-web_socket_channel_web_socket_channel/WebSocketChannel-class.html" rel="noopener noreferrer"&gt;WebSocketChannel&lt;/a&gt; that communicates using a &lt;code&gt;dart:io&lt;/code&gt;  &lt;a href="https://docs-flutter-io.firebaseapp.com/flutter/dart-io/WebSocket-class.html" rel="noopener noreferrer"&gt;WebSocket&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;IOWebSocketChannel.connect&lt;/code&gt;: Creates a new WebSocket connection and connects to  &lt;code&gt;url&lt;/code&gt;  using  &lt;a href="https://api.dart.dev/stable/2.14.2/dart-io/WebSocket/connect.html" rel="noopener noreferrer"&gt;WebSocket.connect&lt;/a&gt;  and returns a channel that can be used to communicate over the resulting socket. &lt;/li&gt;
&lt;li&gt;Here &lt;code&gt;wss://ws.ifelse.io/&lt;/code&gt; is an echo WebSocket server. Please note that the mostly used echo server &lt;code&gt;ws://echo.websocket.org&lt;/code&gt; is no longer in service. &lt;/li&gt;
&lt;/ul&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;



&lt;h3&gt;
  
  
  How to listen to the server
&lt;/h3&gt;

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

&lt;ul&gt;
&lt;li&gt;Now that we’ve established a connection, let us listen to messages from the server.&lt;/li&gt;
&lt;li&gt;After sending a message to the test server, it sends the same message back (echo). &lt;/li&gt;
&lt;li&gt;We will use a  &lt;a href="https://api.flutter.dev/flutter/widgets/StreamBuilder-class.html" rel="noopener noreferrer"&gt;&lt;code&gt;StreamBuilder&lt;/code&gt;&lt;/a&gt;  widget to listen for new messages, and a  &lt;code&gt;Text&lt;/code&gt; widget to display them.&lt;/li&gt;
&lt;li&gt;A StreamBuilder:

&lt;ol&gt;
&lt;li&gt;Can listen to exposed streams.&lt;/li&gt;
&lt;li&gt;Return widgets&lt;/li&gt;
&lt;li&gt;Catch snapshots of got stream information.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;

&lt;span class="n"&gt;StreamBuilder&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;  
  &lt;span class="nl"&gt;stream:&lt;/span&gt; &lt;span class="n"&gt;widget&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;channel&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
  &lt;span class="nl"&gt;builder:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;snapshot&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;Padding&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;  
      &lt;span class="nl"&gt;padding:&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="n"&gt;EdgeInsets&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;all&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;20.0&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;  
  &lt;span class="nl"&gt;child:&lt;/span&gt; &lt;span class="n"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;snapshot&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;hasData&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="s"&gt;'&lt;/span&gt;&lt;span class="si"&gt;${snapshot.data}&lt;/span&gt;&lt;span class="s"&gt;'&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;''&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;  
  &lt;span class="p"&gt;);&lt;/span&gt;  
  &lt;span class="p"&gt;},&lt;/span&gt;  
&lt;span class="p"&gt;)&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Watch &lt;a href="https://youtu.be/MkKEWHfy99Y" rel="noopener noreferrer"&gt;this&lt;/a&gt; video to get a better idea about StreamBuilder:   &lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  How to Send data to the server
&lt;/h3&gt;

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

&lt;p&gt;We will add a function &lt;code&gt;sendData()&lt;/code&gt; responsible for sending data to the stream whenever the floating button is pressed. &lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;

&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;sendData&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_controller&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;isNotEmpty&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
    &lt;span class="n"&gt;widget&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;channel&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;sink&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_controller&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  
  &lt;span class="p"&gt;}&lt;/span&gt;  
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;channel.sink.add()&lt;/code&gt;: for sending values to the other endpoint of the stream (i.e the server) using the sink property of the WebSocketChannel. &lt;/li&gt;
&lt;li&gt;To make sure we are printing not empty data we add a &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  How to close the connection?
&lt;/h3&gt;

&lt;p&gt;Using the close method we can disconnect from the server. &lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;

&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;dispose&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
  &lt;span class="n"&gt;widget&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;channel&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;sink&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;close&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;  
 &lt;span class="k"&gt;super&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;dispose&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;  
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
  
  
  Final Code
&lt;/h3&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;



&lt;p&gt;If you successfully connected to the server then you would see this on the emulator. &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu8q2ko45qfno56jsjbui.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu8q2ko45qfno56jsjbui.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is how your app should look at the end:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhzcjif83d03h38382sjw.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhzcjif83d03h38382sjw.gif" alt="Animation"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Where can you use it?
&lt;/h3&gt;

&lt;p&gt;The realtime web existed before WebSockets, but it was difficult to accomplish, often slower, and based on hacking web technologies that weren't built for realtime applications. The WebSocket protocol paved the path for a genuinely real-time web and expanded the possibilities of Internet communication.&lt;/p&gt;

&lt;p&gt;USE CASES: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Web-based games&lt;/li&gt;
&lt;li&gt;Chatting Applications&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>flutter</category>
      <category>tutorial</category>
      <category>mobile</category>
      <category>android</category>
    </item>
    <item>
      <title>What makes languages "fast" or "slow"? </title>
      <dc:creator>vibalijoshi</dc:creator>
      <pubDate>Sat, 09 Oct 2021 17:20:38 +0000</pubDate>
      <link>https://forem.com/vibalijoshi/what-makes-languages-fast-or-slow-3l44</link>
      <guid>https://forem.com/vibalijoshi/what-makes-languages-fast-or-slow-3l44</guid>
      <description>&lt;p&gt;In his article &lt;a href="https://towardsdatascience.com/how-fast-is-c-compared-to-python-978f18f474c7" rel="noopener noreferrer"&gt;Naser Tamimi&lt;/a&gt; compares C++ and Python and this is what he observed: &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb4bj750cvfhs6mpp5got.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb4bj750cvfhs6mpp5got.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see Python is much slower than C++, but in reality no programming language is fast or slow. The machine code generated by the programming language is either simple or complex. &lt;/p&gt;
&lt;h2&gt;
  
  
  All Languages have the same goal
&lt;/h2&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The low level languages like the machine code (displayed in binary digits) runs very fast because no translation program is required for the CPU, but it very inconvenient to write. &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8owrxg1x4nil3zpocrbj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8owrxg1x4nil3zpocrbj.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;High Level Languages (HLL) such as C++ and JavaScript provide a simple human language-like environment for programmers to communicate with computers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Programming languages may differ in their syntax, but the common goal of all of them is to generate Machine Code, which is the only language that a computer can understand.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;As a result, it all comes down to how the code is converted into machine code.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;To understand this, we must first understand the differences between statically and dynamically typed programming languages.&lt;/p&gt;
&lt;h2&gt;
  
  
  Statically and Dynamically Typed Languages
&lt;/h2&gt;

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

&lt;p&gt;&lt;strong&gt;Statically-typed Language&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A statically typed language is one in which variable types are known at the time of compilation. The data types of the variables must be specified in statically-typed languages, and once defined, the variable type cannot be modified. eg: C, C++, Rust, Java
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="cm"&gt;/* C++/C code */&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;number_1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//integer&lt;/span&gt;
&lt;span class="n"&gt;number_1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"digit"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//ERROR! cannot be changed to string&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;&lt;p&gt;At compile time, type verification is performed. As a result, these checks will catch things like missing functions, invalid type arguments, or a mismatch between a data value and the type of variable it's allocated to before the program runs.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7ilc113kc2ruk1ury3bb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7ilc113kc2ruk1ury3bb.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A programmer can't run code unless it passes these type checks, thus it pushes them to rectify bugs by throwing errors and warnings during the compilation process.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A substantial number of errors are discovered early in the development process.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Dynamically-typed languages&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Those where the interpreter assigns variables a type at runtime based on the variable's value at the time. Eg: JavaScript, Python&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;57&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Vibali&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//this will not throw any error. &lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There is no compilation phase in JavaScript. Instead, a browser interpreter examines the JavaScript code, understands each line, and then executes it.&lt;br&gt;
If the type checker identifies an issue at this point, the developer will be notified and given the option to fix the code before the program crashes.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbfn0fg4ssiou2xrutx72.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbfn0fg4ssiou2xrutx72.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You don't have to wait for the compiler to finish before testing your code modifications because there isn't a separate compilation process. This makes the debugging process much faster and easier.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Related: &lt;br&gt;
&lt;a href="https://www.geeksforgeeks.org/difference-between-compiler-and-interpreter/" rel="noopener noreferrer"&gt;Difference between Compiler and  Interpreter&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  How does this matter?
&lt;/h3&gt;

&lt;p&gt;Look at this python example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Python 3 program to find  
# factorial of given number
&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;factorial&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;

    &lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

        &lt;span class="n"&gt;fact&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

        &lt;span class="nf"&gt;while&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;

            &lt;span class="n"&gt;fact&lt;/span&gt; &lt;span class="o"&gt;*=&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;

            &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;fact&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;What is the value of n? Is it a numerical value? Is it string? Is it a class you created previously?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The interpreter has no way of knowing what kind of data it will get. At run-time, you have to do a lot more checking, which implies you're doing more implicit work for basic actions.&lt;br&gt;
All of these lookups are &lt;em&gt;extremely&lt;/em&gt; difficult to complete quickly.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;As a result, the time it takes to generate machine code increases, making these languages appear slower.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;On the other hand the Statically Typed languages like C++ or Java results in compiled code that executes more quickly because when the compiler knows the specific data types that are in use, it can produce &lt;strong&gt;optimized machine code (i.e. faster and/or using less memory)&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Which language should I choose?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;This isn't to say that languages like JavaScript aren't useful. It is entirely dependent on the use case. Each language focuses on a distinct aspect. Dynamic typing allows programmers to construct types and functionality based on run-time data, but it comes at the sacrifice of speed. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Programmers can fine-tune their code to operate effectively in any context, even when there is little hardware space or energy available to power the application, by using C, C++, or Rust when building an operating system driver or file system.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So it all depends on the task that we want to achieve.&lt;/p&gt;

&lt;p&gt;Let me know in the comments below which language you prefer and why. &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>tutorial</category>
      <category>programming</category>
      <category>performance</category>
    </item>
    <item>
      <title>WASM is AWSM</title>
      <dc:creator>vibalijoshi</dc:creator>
      <pubDate>Tue, 05 Oct 2021 17:10:10 +0000</pubDate>
      <link>https://forem.com/vibalijoshi/wasm-is-awsm-3a98</link>
      <guid>https://forem.com/vibalijoshi/wasm-is-awsm-3a98</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;We live in times where you learn JS to write server side code and desktop apps (electron), and you also learn C++ / Rust to create browser apps.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Does this sound strange? well this is kindaaa true 😦&lt;/p&gt;

&lt;p&gt;With advent of JavaScript runtime environments like Node.js it is possible to write server side code with JS and not learn other languages like PHP,  C++, Java and JSP, Python,  Ruby on Rails. Hence a single person can just master JavaScript and write both frontend and backend code without any hassle.  &lt;/p&gt;

&lt;p&gt;Even though JavaScript is no doubt the most known language, not everyone is a master in it. Let's say you make a game using unity and C++ and you want to make it available for the web (as in the browser) but for that you would require to learn JavaScript. This would restrict a lot of possible amazing talented people who want to contribute to the web but cannot. &lt;strong&gt;Here is where the the gangsta WebAssembly arrives.&lt;/strong&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  WASM
&lt;/h2&gt;

&lt;p&gt;WASM or WebAssembly allows programmers to write application for the web other than the beloved JavaScript. You can write code in languages such as C, C++, Rust, Python, Go and even COBOL! FYI WebAssembly is a low-level assembly-like language.&lt;br&gt;
As mentioned the case of a game developer above; The WASM format removes the need for browser plug-ins to support online gaming and makes it possible to support graphics-heavy games. &lt;/p&gt;

&lt;p&gt;You can use it for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Better execution for languages and toolkits that are currently cross-compiled to the Web (C/C++, GWT, …)&lt;/li&gt;
&lt;li&gt;Image / video editing&lt;/li&gt;
&lt;li&gt;Games: Casual games that need to start quickly, AAA games that have heavy assets, Game portals (mixed-party/origin content).&lt;/li&gt;
&lt;li&gt;Peer-to-peer applications (games, collaborative editing, decentralized and centralized).
and many more, check out &lt;a href="https://webassembly.org/docs/use-cases/" rel="noopener noreferrer"&gt;here&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As the MDN Docs say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;WebAssembly is a new type of code that can be run in &lt;strong&gt;modern web&lt;br&gt;
browsers&lt;/strong&gt; — it is a &lt;strong&gt;low-level assembly-like language&lt;/strong&gt; with a compact&lt;br&gt;
&lt;strong&gt;binary format&lt;/strong&gt; that runs with &lt;strong&gt;near-native performance&lt;/strong&gt; and provides&lt;br&gt;
languages such as &lt;strong&gt;C/C++, C# and Rust&lt;/strong&gt; with a compilation target so that&lt;br&gt;
they can run on the web. It is also designed to run alongside&lt;br&gt;
JavaScript, &lt;strong&gt;allowing both to work together.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  Browser support
&lt;/h3&gt;

&lt;p&gt;Firefox and Chrome browsers currently support the wasm format on Linux, MacOS, Windows and Android. The latest versions of Edge and Safari now include WebAssembly support as well.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu8fmjs4r2ov60u4nzd9x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu8fmjs4r2ov60u4nzd9x.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Low level assembly-like language
&lt;/h3&gt;

&lt;p&gt;This is how WASM works under the hood in very simple words:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;High level languages like C, C++ and Rust are compiled into binary format, that is, .wasm and text format .wat.&lt;/li&gt;
&lt;li&gt;The source code written in C, C++ and Rust is compiled to .wasm using a compiler.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdg92pmmug97ve6325u7j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdg92pmmug97ve6325u7j.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Compatibility with JS
&lt;/h3&gt;

&lt;p&gt;Remember ⚠⚠&lt;br&gt;
It is not an alternative to JavaScript. It works alongside JavaScript, replacing &lt;strong&gt;asm.js&lt;/strong&gt; (WASM's old competitor) as the compilation target for C/C++ applications.&lt;br&gt;
Bonus read: &lt;a href="https://hacks.mozilla.org/2017/03/why-webassembly-is-faster-than-asm-js/" rel="noopener noreferrer"&gt;Why WebAssembly is Faster Than asm.js&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Let's give it a try!
&lt;/h3&gt;

&lt;p&gt;Here is the list of languages that web assembly supports:&lt;br&gt;
&lt;a href="https://github.com/appcypher/awesome-wasm-langs#contents" rel="noopener noreferrer"&gt;https://github.com/appcypher/awesome-wasm-langs#contents&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Without any setup&lt;/em&gt;&lt;/strong&gt; : To just get a feel about how the whole webAssembly concept looks like you can check out &lt;a href="https://webassembly.studio/" rel="noopener noreferrer"&gt;WebAssembly Studio&lt;/a&gt; : an online IDE tool developed by Mozilla that can be used to compile C/C++ and Rust code into WebAssembly (WASM).&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8m7ts52lihuvk6mysu0z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8m7ts52lihuvk6mysu0z.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Setup required:&lt;/em&gt;&lt;/strong&gt; If you are a C/C++ lover you can use &lt;a href="http://kripken.github.io/emscripten-site/" rel="noopener noreferrer"&gt;Emscripten&lt;/a&gt; : a complete compiler toolchain to WebAssembly. &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;C/C++ code can be compiled to .wasm using Emscripten SDK. Later, the .wasm code can be used with the help of javascript in your html file to display the output.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyzc8vkcdfp4am0bjrro8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyzc8vkcdfp4am0bjrro8.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If you prefer Rust then try: &lt;a href="https://www.hellorust.com/setup/wasm-target/" rel="noopener noreferrer"&gt;rustc&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  Compiling C/C++ to WebAssembly
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;As explained above we would need to set up Emscripten Environment for C/C++.&lt;/li&gt;
&lt;li&gt;Setup the Emscripten SDK following &lt;a href="https://emscripten.org/docs/getting_started/downloads.html" rel="noopener noreferrer"&gt;these instructions&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;We use emscripten to generate everything we need to run our code, as WebAssembly, in the browser.&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;In new directory make a .c file and name it  &lt;code&gt;demo.c&lt;/code&gt; . Copy paste this code to this program file.&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt;&lt;span class="cpf"&gt;&amp;lt;emscripten/emscripten.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello World&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Now, using the terminal window you used to enter the Emscripten compiler environment, navigate to the same directory as your  &lt;code&gt;demo.c&lt;/code&gt;  file, and run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;emcc demo.c -s WASM=1 -o demo.html
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;The options we’ve passed in with the command are as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;code&gt;-s WASM=1&lt;/code&gt;  — Specifies that we want wasm output. If we don’t specify this, Emscripten will just output  &lt;a href="http://asmjs.org/" rel="noopener noreferrer"&gt;asm.js&lt;/a&gt;, as it does by default.&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;-o demo.html&lt;/code&gt;  — Specifies that we want Emscripten to generate an HTML page to run our code in (and a filename to use), as well as the wasm module and the JavaScript "glue" code to compile and instantiate the wasm so it can be used in the web environment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At this point in your source directory you should have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  The binary wasm module code &lt;code&gt;demo.wasm&lt;/code&gt; : A WebAssembly file generally ends with &lt;code&gt;.wasm&lt;/code&gt; and it contains the &lt;strong&gt;binary instructions&lt;/strong&gt; as well as &lt;strong&gt;data&lt;/strong&gt; (&lt;em&gt;memory&lt;/em&gt;) generated during compilation.&lt;/li&gt;
&lt;li&gt;  A JavaScript file containing glue code to translate between the native C functions, and JavaScript/wasm &lt;code&gt;demo.js&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  An HTML file to load, compile, and instantiate your wasm code, and display its output in the browser &lt;code&gt;demo.html&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  How to run this?
&lt;/h3&gt;

&lt;p&gt;Open the resulting &lt;code&gt;demo.html&lt;/code&gt; in your browser. Make sure that it is updated to avoid any compatibility issues. &lt;/p&gt;

&lt;h3&gt;
  
  
  The output
&lt;/h3&gt;

&lt;p&gt;If you successfully followed this then you would get this output in your browser’s JavaScript console. &lt;a href="https://wordpress.org/support/article/using-your-browser-to-diagnose-javascript-errors/" rel="noopener noreferrer"&gt;Here is how you can find your console&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsgltzrwtky3i8hcj8tqs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsgltzrwtky3i8hcj8tqs.png" alt="image"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;("Hello World" would be displayed)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Congratulations! You did it 🎊&lt;/p&gt;

&lt;h3&gt;
  
  
  Bonus
&lt;/h3&gt;

&lt;p&gt;You can also learn web assembly and write native code directly. But it is quite tough hence people do not prefer that. &lt;/p&gt;

&lt;p&gt;Interested to know more? Read the undisputed &lt;a href="https://developer.mozilla.org/en-US/docs/WebAssembly" rel="noopener noreferrer"&gt;MDN docs on WebAssembly&lt;/a&gt; &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
