<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Shruti Kapoor on Medium]]></title>
        <description><![CDATA[Stories by Shruti Kapoor on Medium]]></description>
        <link>https://medium.com/@shruti-kapoor08?source=rss-baae12b574bc------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/2*0evhoco6l5s1WSrTivPrsA.jpeg</url>
            <title>Stories by Shruti Kapoor on Medium</title>
            <link>https://medium.com/@shruti-kapoor08?source=rss-baae12b574bc------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Fri, 13 Nov 2026 20:49:40 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@shruti-kapoor08/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[This week, I migrated an old React 15 Create React App (CRA) project from 2017 to Vite.]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-snippet">Watch the livestream to see this migration LIVE &#x2014;</p><p class="medium-feed-link"><a href="https://shruti-kapoor08.medium.com/this-week-i-migrated-an-old-react-15-create-react-app-cra-project-from-2017-to-vite-28c39b1a4503?source=rss-baae12b574bc------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://shruti-kapoor08.medium.com/this-week-i-migrated-an-old-react-15-create-react-app-cra-project-from-2017-to-vite-28c39b1a4503?source=rss-baae12b574bc------2</link>
            <guid isPermaLink="false">https://medium.com/p/28c39b1a4503</guid>
            <category><![CDATA[tutorial]]></category>
            <category><![CDATA[react]]></category>
            <category><![CDATA[web-development]]></category>
            <dc:creator><![CDATA[Shruti Kapoor]]></dc:creator>
            <pubDate>Fri, 21 Feb 2025 22:57:11 GMT</pubDate>
            <atom:updated>2025-02-21T22:57:11.296Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[What you missed in Front End in 2024]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://javascript.plainenglish.io/what-you-missed-in-front-end-in-2024-a39319a11801?source=rss-baae12b574bc------2"><img src="https://cdn-images-1.medium.com/max/1456/0*XsyRaY1-kvvRtwjc.jpeg" width="1456"></a></p><p class="medium-feed-snippet">Happy New Year! A lot has happened in 2024. Here&#x2019;s a rundown of the biggest news of Front End that you may have missed.</p><p class="medium-feed-link"><a href="https://javascript.plainenglish.io/what-you-missed-in-front-end-in-2024-a39319a11801?source=rss-baae12b574bc------2">Continue reading on JavaScript in Plain English »</a></p></div>]]></description>
            <link>https://javascript.plainenglish.io/what-you-missed-in-front-end-in-2024-a39319a11801?source=rss-baae12b574bc------2</link>
            <guid isPermaLink="false">https://medium.com/p/a39319a11801</guid>
            <category><![CDATA[frontend-development]]></category>
            <category><![CDATA[javascript]]></category>
            <dc:creator><![CDATA[Shruti Kapoor]]></dc:creator>
            <pubDate>Mon, 13 Jan 2025 07:57:28 GMT</pubDate>
            <atom:updated>2025-01-13T07:57:28.017Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[7 Steps to Dealing with Overcoming Imposter Syndrome in Tech]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-snippet">If you&#x2019;ve ever stared at your code and thought, &#x201C;I have no idea what I&#x2019;m doing, and everyone&#x2019;s going to find out,&#x201D; you&#x2019;re not alone. That&#x2026;</p><p class="medium-feed-link"><a href="https://medium.com/swlh/7-steps-to-dealing-with-overcoming-imposter-syndrome-in-tech-088a8525756c?source=rss-baae12b574bc------2">Continue reading on The Startup »</a></p></div>]]></description>
            <link>https://medium.com/swlh/7-steps-to-dealing-with-overcoming-imposter-syndrome-in-tech-088a8525756c?source=rss-baae12b574bc------2</link>
            <guid isPermaLink="false">https://medium.com/p/088a8525756c</guid>
            <category><![CDATA[coding]]></category>
            <category><![CDATA[careers]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[professional-development]]></category>
            <dc:creator><![CDATA[Shruti Kapoor]]></dc:creator>
            <pubDate>Mon, 23 Dec 2024 23:21:34 GMT</pubDate>
            <atom:updated>2024-12-23T23:21:34.539Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[React 19 Actions — Simpliying form submission and loading states]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://javascript.plainenglish.io/react-19-actions-simpliying-form-submission-and-loading-states-40d92dbadcb7?source=rss-baae12b574bc------2"><img src="https://cdn-images-1.medium.com/max/1280/1*ayC378GzbYrtXEpHOA86vw.jpeg" width="1280"></a></p><p class="medium-feed-snippet">React 19 introduced Actions, which are asynchronous functions. Actions are helpful in making form submissions easier. This blog post dives&#x2026;</p><p class="medium-feed-link"><a href="https://javascript.plainenglish.io/react-19-actions-simpliying-form-submission-and-loading-states-40d92dbadcb7?source=rss-baae12b574bc------2">Continue reading on JavaScript in Plain English »</a></p></div>]]></description>
            <link>https://javascript.plainenglish.io/react-19-actions-simpliying-form-submission-and-loading-states-40d92dbadcb7?source=rss-baae12b574bc------2</link>
            <guid isPermaLink="false">https://medium.com/p/40d92dbadcb7</guid>
            <category><![CDATA[react]]></category>
            <category><![CDATA[tutorial]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[frontend-development]]></category>
            <category><![CDATA[reactjs]]></category>
            <dc:creator><![CDATA[Shruti Kapoor]]></dc:creator>
            <pubDate>Mon, 08 Jul 2024 04:16:58 GMT</pubDate>
            <atom:updated>2024-07-08T04:16:58.347Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Develop Animated Bubbles with HTML5 Canvas and JavaScript: A Step-by-Step Tutorial]]></title>
            <link>https://shruti-kapoor08.medium.com/develop-animated-bubbles-with-html5-canvas-and-javascript-a-step-by-step-tutorial-3c4b73352c53?source=rss-baae12b574bc------2</link>
            <guid isPermaLink="false">https://medium.com/p/3c4b73352c53</guid>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[tutorial]]></category>
            <category><![CDATA[beginner]]></category>
            <category><![CDATA[learning-to-code]]></category>
            <category><![CDATA[front-end-development]]></category>
            <dc:creator><![CDATA[Shruti Kapoor]]></dc:creator>
            <pubDate>Thu, 31 Aug 2023 08:33:49 GMT</pubDate>
            <atom:updated>2023-09-02T19:28:36.282Z</atom:updated>
            <content:encoded><![CDATA[<p>Hello everyone! Welcome to this tutorial where we’re going to dive into the world of creating fun bubbles in code by using HTML canvas and JavaScript. The best part? We’ll achieve all of this using just a touch of HTML and all JavaScript, no CSS.</p><h3>Unveiling the Concepts</h3><p>Today, we’re going to master the following concepts:</p><ol><li>Creating circles using the arc method of the canvas context.</li><li>Utilizing the requestAnimationFrame function for smooth circle animations.</li><li>Harnessing the power of JavaScript classes to create multiple circles without repeating code.</li><li>Adding stroke styles and fill styles to our circles for a 3D bubble effect.</li></ol><p>You can follow along with me, or use <a href="https://codepen.io/shrutikapoor08/pen/wvQXMVO">the final codepen</a> if you want to take a look at the source code</p><p>If you prefer to learn in a video format, follow along this video</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FIjPgXP3gDyI%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DIjPgXP3gDyI&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FIjPgXP3gDyI%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/fe6683a8451da5c2c651c183ed883c9c/href">https://medium.com/media/fe6683a8451da5c2c651c183ed883c9c/href</a></iframe><h3>Getting Started</h3><p>First things first, we need an HTML5 Canvas element. Canvas is a powerful element for creating shapes, images and graphics. This is what the bubbles will be created on. Let’s set it up -</p><pre>&lt;canvas id=&quot;canvas&quot;&gt;&lt;/canvas&gt;</pre><p>In order to do anything meaningful with canvas, we need to have access to it’s context. <a href="https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D">Context</a> provides a interface to render objects on the canvas and draw shapes.</p><p>Let’s get access to canvas and it’s context.</p><pre>const canvas = document.getElementById(&#39;canvas&#39;);<br>const context = canvas.getContext(&#39;2d&#39;);</pre><p>We will set up our canvas to use the entire window height and width -</p><pre>canvas.width = window.innerWidth;<br>canvas.height = window.innerHeight;</pre><p>Let’s give our canvas a nice soothing light blue background by adding some css. This is the only CSS we are going to use. You can also do this with JavaScript if you wish.</p><pre>#canvas {<br>  background: #00b4ff;<br>}</pre><h3>Time to Create Bubbles!</h3><p>Let’s get to the fun part. We are going to create bubbles by clicking on the canvas. To achieve this, we’ll start by creating a click event handler:</p><pre>canvas.addEventListener(&#39;click&#39;, handleDrawCircle);</pre><p>Since we need to know where we clicked on our canvas, we are going to keep track of it in our handleDrawCircle function and use the event’s coordinates -</p><pre>//We are adding x and y here because we will need it later.<br>let x, y<br>const handleDrawCircle = (event) =&gt; {<br>  x = event.pageX;<br>  y = event.pageY;<br><br>// Draw a bubble!<br>  drawCircle(x, y);<br>};</pre><h3>Drawing circles using arc method</h3><p>To create circles, we are going to utilize the <a href="https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/arc">arc method available on canvas’s context.</a> Arc method accepts x and y - the center of the circle, a radius and a start angle and end angle which for us will be 0 and 2* Math.PI since we are creating a full circle.</p><pre>const drawCircle = (x, y) =&gt; {<br>  context.beginPath();<br>  context.arc(x, y, 50, 0, 2 * Math.PI);</pre><pre>  context.strokeStyle = &#39;white&#39;;<br>  context.stroke();<br>};</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/0*mQYxUyZg6hT9tSAG.png" /></figure><h3>Moving circles using requestAnimationFrame method</h3><p>Now that we have circles, let’s make them move because….</p><p>GIF</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/480/0*fzJewIxLxD1sUSV3.gif" /></figure><p>Remember, that when we created circle, we used the arc method which accepted x and y coordinates - the center of the circle. If we move the x and y coordinate of our circle really fast, it will give an impression that the circles are moving. Let’s try that!</p><pre>//Define a speed by which to increment to the x and y coordinates</pre><pre>const dx = Math.random() * 3;<br>const dy = Math.random() * 7;</pre><pre>//Increment the center of the circle with this speed<br>x = x + dx;<br>y = y - dy;</pre><p>We can move this inside a function -</p><pre>let x, y;</pre><pre>const move = () =&gt; {<br>  const dx = Math.random() * 3;<br>  const dy = Math.random() * 7;</pre><pre>  x = x + dx;<br>  y = y - dy;<br>};</pre><p>To give our circle a seemless movement, we are going to create an animate function and use browser&#39;s requestAnimationFrame method to create a moving circle.</p><pre>const animate = () =&gt; {<br>  context.clearRect(0, 0, canvas.width, canvas.height);</pre><pre>  move();<br>    drawCircle(x,y);</pre><pre>  requestAnimationFrame(animate);<br>};</pre><pre>//Don&#39;t forget to call animate at the bottom <br>animate();</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/571/0*jjCxfYFt4_6i6IAw.gif" /></figure><h3>Creating Particles: Introducing the Particle Class</h3><p>Now that we have created one circle, it’s time to create multiple circles!</p><p>But before we create multiple circles, let’s prepare our code.<br>In order to avoid repeating our code, we are going to use classes and introduce Particle class. Particles are the building blocks of our dynamic artwork and animation. Each bubble is a particle with its own position, size, movement, and color attributes. Let’s define a <strong>Particle</strong> class to encapsulate these properties:</p><pre>class Particle {<br>  constructor(x = 0, y = 0) {}</pre><pre>  draw() {<br>    // Drawing the particle as a colored circle<br>    // ...<br>  }</pre><pre>  move() {<br>    // Implementing particle movement<br>    // ...<br>  }<br>}</pre><p>Let’s move some of the constants we had set up to the Particle class -</p><pre>class Particle {<br>  constructor(x = 0, y = 0) {<br>    this.x = x;<br>    this.y = y;<br>    this.radius = Math.random() * 50;<br>    this.dx = Math.random() * 3;<br>    this.dy = Math.random() * 7;<br>  }</pre><pre>  draw() {<br>    // Drawing the particle as a colored circle<br>    // ...<br>  }</pre><pre>  move() {<br>    // Implementing particle movement<br>    // ...<br>  }<br>}</pre><p>The <strong>draw</strong> method will be responsible for rendering the particle on the canvas. We have already implemented this functionality in drawCircle, so let’s move it in our class and update variables to be class variables</p><pre>class Particle {<br>  constructor(x = 0, y = 0) {<br>    this.x = x;<br>    this.y = y;<br>    this.radius = Math.random() * 50;<br>    this.dx = Math.random() * 3;<br>    this.dy = Math.random() * 7;<br>    this.color = &#39;white&#39;;<br>  }</pre><pre>  draw() {<br>    context.beginPath();<br>    context.arc(this.x, this.y, this.radius, 0, 2 * Math.PI);<br>    context.strokeStyle = this.color;<br>    context.stroke();</pre><pre>    context.fillStyle = this.color;<br>    context.fill();<br>  }</pre><pre>  move() {}<br>}</pre><p>Similarly, let’s move the move function within the class-</p><pre>move() {<br>    this.x = this.x + this.dx;<br>    this.y = this.y - this.dy;<br>}</pre><p>Now, we need to make sure that in our event handler, we are calling the class Particle.</p><pre>const handleDrawCircle = (event) =&gt; {<br>  const x = event.pageX;<br>  const y = event.pageY;</pre><pre>  const particle = new Particle(x, y);<br>};</pre><pre>canvas.addEventListener(&#39;click&#39;, handleDrawCircle);</pre><p>Since we need to access this particle in our animate function in order to call the move method on it, we will store this particle in an array called particleArray. This array will also be helpful when create lots of particles. Here’s the updated code to reflect this -</p><pre>const particleArray = [];</pre><pre>const handleDrawCircle = (event) =&gt; {<br>  const x = event.pageX;<br>  const y = event.pageY;</pre><pre>  const particle = new Particle(x, y);<br>  particleArray.push(particle);<br>};</pre><pre>canvas.addEventListener(&#39;click&#39;, handleDrawCircle);</pre><p>Remember to update the animate function too -</p><pre>const animate = () =&gt; {<br> context.clearRect(0, 0, canvas.width, canvas.height);<br><br> particleArray.forEach((particle) =&gt; {<br>  particle?.move();<br>  particle?.draw();<br> });<br><br> requestAnimationFrame(animate);<br>};</pre><p>At this point, you will see this particle on your screen-</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/624/0*zSI96aJYxmThjW9b.gif" /></figure><p>Awesome! Now, to the fun part! Let’s creates lots of circles and style them to make them look like bubbles.</p><p>To create lots of bubbles, we are going to create particles using for loop and add them to the particleArray we had created here.</p><pre>const handleDrawCircle = (event) =&gt; {<br>  const x = event.pageX;<br>  const y = event.pageY;</pre><pre>  for (let i = 0; i &lt; 50; i++) {<br>    const particle = new Particle(x, y);<br>    particleArray.push(particle);<br>  }<br>};</pre><pre>canvas.addEventListener(&#39;click&#39;, handleDrawCircle);</pre><p>In the animate function, we’ll continuously update the canvas by clearing it and redrawing the particles in their new positions. This will give an illusion of the circle moving.</p><pre>const animate = () =&gt; {<br>  context.clearRect(0, 0, canvas.width, canvas.height);</pre><pre>  particleArray.forEach((particle) =&gt; {<br>    particle?.move();<br>    particle?.draw();<br>  });</pre><pre>  requestAnimationFrame(animate);<br>};</pre><pre>animate();</pre><p>GIF</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/694/0*pjrdhjCoPIInUuO4.gif" /></figure><p>Now that we have bubbles moving, it’s time to add color to them to make them look like bubbles!</p><p>We will do this by adding a gradient fill to bubbles. This can be done using the context.createRadialGradient method.</p><pre>const gradient = context.createRadialGradient(<br>  this.x,<br>  this.y,<br>  1,<br>  this.x + 0.5,<br>  this.y + 0.5,<br>  this.radius<br>);</pre><pre>gradient.addColorStop(0.3, &#39;rgba(255, 255, 255, 0.3)&#39;);<br>gradient.addColorStop(0.95, &#39;#e7feff&#39;);</pre><pre>context.fillStyle = gradient;</pre><p>GIF</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/0*-FDS620MOjI9Mr6Y.gif" /></figure><p><a href="https://codepen.io/shrutikapoor08/pen/wvQXMVO">Here’s the final codepen</a> if you want to take a look at the source code</p><h3>Wrap Up</h3><p>Congratulations! You’ve just created something super fun using only HTML Canvas and JavaScript. You’ve learned how to use the arc method, leverage requestAnimationFrame, harness the power of JavaScript classes, and style your bubbles using gradients for the 3D bubble effect.</p><p>Feel free to experiment with colors, speeds, and sizes to make your animations truly unique.</p><p>Feel free to experiment with colors, speeds, and sizes to make your animations truly unique.</p><p>I hope you had as much fun following this tutorial as I did creating it. Now, it’s your turn to experiment. I would love to see if you tried this out and what you created. Share with me your code link and I would love to check it out.</p><p>If you enjoyed this article, share it with someone who will benefit from it.</p><p>If you are interested in articles like this and front-end articles on JavaScript, React, GraphQL or Accessibility and career advice from a. Staff Engineer, <a href="https://tinyletter.com/shrutikapoor">sign up for my newsletter</a> and get these directly in your inbox.</p><p>And now a #DevJoke -</p><p>Question — Who won the debate for the best name for loop variable?</p><p>Answer — i won.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=3c4b73352c53" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[10 Tips for Creating Powerful Conference Talks]]></title>
            <link>https://shruti-kapoor08.medium.com/10-tips-for-creating-powerful-conference-talks-cfd556b8c5a6?source=rss-baae12b574bc------2</link>
            <guid isPermaLink="false">https://medium.com/p/cfd556b8c5a6</guid>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[careers]]></category>
            <dc:creator><![CDATA[Shruti Kapoor]]></dc:creator>
            <pubDate>Mon, 14 Aug 2023 20:53:21 GMT</pubDate>
            <atom:updated>2023-08-14T20:53:21.395Z</atom:updated>
            <content:encoded><![CDATA[<p>Have you ever felt the desire to step up to the stage and share your expertise at conferences, but something inside you is holding you back? Perhaps it’s the fear of speaking in front of a large audience, the worry of forgetting your words, or the challenge of finding the perfect topic to discuss. You’re not alone — many aspiring speakers face these same fears.</p><p>However, creating an engaging conference talk is a skill that can be perfected with practice. In this blog post, I will share effective tips for crafting compelling conference talks that captivate your audience and leave a lasting impact. I’ll also provide examples of inspiring presentations that have influenced me.</p><p>If you’re looking for a comprehensive guide on speaking at conferences, check out my video where I discuss topics such as finding a conference, preparing slides, delivering engaging talks, and networking.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F8ewaKFulvGc%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D8ewaKFulvGc&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F8ewaKFulvGc%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/66af6ae502049c1e8a75f9fe58e0a0c5/href">https://medium.com/media/66af6ae502049c1e8a75f9fe58e0a0c5/href</a></iframe><h3>Know Your Audience</h3><p>Understand your audience’s interests and needs to tailor your content effectively.</p><ul><li><strong>Audience Expertise and Interests:</strong> Before preparing your talk, consider the level of expertise your audience possesses. Are you addressing beginners who are eager to learn the basics, or are you speaking to seasoned professionals seeking advanced insights? Understanding this will help you customize your content accordingly.</li><li><strong>Gather Insights:</strong> To gain valuable insights into your audience’s preferences, talk to event organizers or conduct surveys. This will give you a better understanding of their expectations and what they hope to take away from your presentation.</li><li><strong>Balance Fundamentals and Advanced Insights:</strong> If your audience consists of newcomers to the topic, focus on providing clear explanations of fundamentals, terminologies, and motivations. On the other hand, if you have an audience with intermediate to advanced knowledge, dive into the nitty-gritty, discuss pros and cons, share opinions, and share real-life experiences.</li><li><strong>Avoid Jargon Overload:</strong> Ensure that your content is accessible to everyone by avoiding excessive use of jargon. Make complex concepts understandable by using clear language and providing relevant context.</li><li><strong>Gauge with Show of Hands:</strong> During your talk, you can engage the audience by doing a show of hands to gauge their familiarity with the topic. Based on their response, you can offer a brief 101-style introduction for those who are new to the subject, or dive directly into the main content if most of the audience is already familiar.</li></ul><h3>Work on the meat of the talk first</h3><p>When preparing your conference talk, focus on developing the core content and the compelling story you want to share. Design and templates can be addressed later; prioritizing your message is key.</p><ul><li><strong>Identify the Key Objective:</strong> Start by answering this question: What is the one thing you want your audience to take away from your talk? This objective will be the central theme around which you build your narrative.</li><li><strong>Create a Mind-Map:</strong> I find it helpful to create a mind-map of the topics I’ll cover, centered around the main point I want my audience to remember. This approach ensures that your talk flows logically and maintains a clear focus throughout.</li></ul><h3>Tell a story</h3><p>As humans, we like storytelling. Instead of just talking through your content, frame the story around why you are sharing this. By telling a story that follows this format, you engage your audience on an emotional level, make your content more relatable, and leave a lasting impact. Here’s a template I like for storytelling is -</p><ul><li><strong>Introduce the Problem:</strong> Begin by describing a relatable problem or challenge you encountered. Paint a vivid picture to evoke empathy and interest from your audience.</li><li><strong>Highlight the Impact:</strong> Illustrate the consequences and impact of the problem. Share the challenges and struggles you faced, allowing your audience to connect with your journey.</li><li><strong>Present the Solution:</strong> Transition into the solution you discovered or devised. Explain how you tackled the problem and the thought process behind it. Make it clear why this solution was unique and effective.</li><li><strong>Celebrate the Improvement:</strong> Describe how the solution improved your life or the lives of others involved. Share specific outcomes and successes resulting from your approach.</li><li><strong>Embrace the Journey:</strong> Be honest about the ongoing nature of progress. Acknowledge that the journey may not be perfect, and there might be continuous efforts to maintain the positive changes.</li><li><strong>Empower Your Audience:</strong> Provide actionable insights or advice for your audience to avoid or overcome similar challenges. Encourage them to apply your learnings to their own situations.</li></ul><h3>Structure your talk</h3><ul><li><strong>Start with a Captivating Hook:</strong> Begin your talk with an attention-grabbing introduction. This could be an intriguing problem you encountered, a humorous joke, a compelling personal story, or a thought-provoking question. The hook sets the tone for your talk and piques the audience’s curiosity.</li><li><strong>Keep Your Audience Anchored:</strong> Recognize that maintaining audience attention is crucial. To keep them engaged throughout, provide a clear roadmap at the beginning of your talk. Briefly outline what you’ll be discussing, so the audience knows what to expect. Throughout your presentation, periodically remind them of the main points you’re covering and where you are in the narrative.</li><li><strong>Deliver Smooth Transitions:</strong> Practice delivering seamless transitions between slides and sections. This ensures that your presentation flows like a cohesive narrative. Familiarize yourself with your content to the extent that you know what slide comes next. Using presenter’s view can be beneficial to preview the upcoming slide discreetly.</li><li><strong>Strategically Reiterate Main Points:</strong> Identify the core messages or key takeaways you want your audience to remember. Make a conscious effort to repeat these points at various stages of your talk, reinforcing their significance.</li></ul><h3>Use visuals</h3><p>A picture is a thousand words. We’re naturally drawn to visuals over lengthy text.</p><ul><li><strong>Utilize a Variety of Visuals:</strong> Incorporate images, graphics, GIFs, diagrams, illustrations, and charts to visually convey your ideas and captivate your audience. Visual elements help break the monotony of text-heavy slides and enhance the overall appeal of your presentation. Explore free platforms like Unsplash and Imgur to find high-quality visuals that align with the content of your presentation. High-resolution images and graphics add a professional touch to your slides.</li><li><strong>Animate to Explain Concepts:</strong> Animations can be a great way to explain complex concepts dynamically. Consider using subtle animations to illustrate processes or step-by-step explanations. As a reference, check out <a href="https://youtu.be/cCOL7MC4Pl0?t=318"><strong>this talk</strong></a> with impressive animations explaining the JavaScript event loop.</li><li><strong>Demonstrate with Demos:</strong> If your presentation includes a demo, start by showcasing the end product first. Then, take your audience through the process of building it step by step. This approach creates anticipation and helps the audience understand the context and value of your demo</li><li><strong>AI-Generated Images:</strong> For a creative touch, consider using AI-generated images created with tools like DALL-E or Midjourney. These unique visuals can add a distinctive element to your presentation. Check out this unique example of an AI generated image of a “”cat singing a song while playing piano” that I created using DALL-E.</li></ul><h3>Optimize Slide Design for Clarity</h3><p>Creating visually clear and appealing slides is crucial to ensure that your conference talk is effectively delivered to all members of the audience, including those seated at the back of the room. Here are essential tips to optimize your slide design:</p><ul><li><strong>Use Large Fonts:</strong> Opt for large, easy-to-read fonts that are visible from a distance. This ensures that even audience members at the back can comfortably follow your content without straining their eyes.</li><li><strong>Concise Text:</strong> Avoid lengthy sentences on your slides. Keep the text concise and to the point. Too much text can distract the audience from your spoken words and diminish their focus on your message.</li><li><strong>Avoid Information Overload:</strong> Refrain from cluttering your slides with excessive information. Stick to key points and use bullet points to convey your ideas succinctly. This allows the audience to grasp the main concepts without feeling overwhelmed.</li><li><strong>Format Code Clearly:</strong> When presenting code, use tools like <a href="http://carbon.sh/"><strong>carbon.sh</strong></a> to format it in a clean and readable manner. This ensures that even complex code is understandable to your audience.</li><li><strong>Ensure Visible Contrast:</strong> Check the visibility and color contrast of your content against the background. Do a dry-run on the day of your talk to confirm that the slides are clearly visible on the projector or screen. Monitors can have varying color resolutions, so it’s essential to be prepared.</li><li><strong>Avoid Distracting Design:</strong> While visual elements can enhance your presentation, ensure that your design template doesn’t distract from the main content. Keep it clean and professional to maintain focus on your message.</li></ul><h3>Avoid Over-Reliance on Presenter Notes</h3><p>Presenter notes can be valuable tools for staying on track during your conference talk, but it’s crucial to avoid relying on them too heavily. Here are key points to consider when using presenter notes effectively:</p><ul><li><strong>Stay Natural and Engaging:</strong> Reading directly from presenter notes can make your presentation sound robotic and disengaging. Instead, aim to speak naturally and connect with your audience. Familiarize yourself with the content to the point where you can convey it in a conversational manner. Treat presenter notes as aids rather than a script. They should serve as a helpful guide to remind you of key points, transitions, or specific details, but not dictate your entire presentation.</li><li><strong>Practice Makes Perfect:</strong> Rehearse your talk multiple times until the content becomes ingrained in your memory. By knowing your material inside out, you’ll be able to deliver it smoothly without relying solely on presenter notes.</li></ul><h3>Keep your audience engaged</h3><p>Keeping your audience engaged is essential to ensuring the success of your conference talk. By incorporating various interactive elements, you can captivate your listeners and maintain their interest. Here are effective strategies to achieve this:</p><ul><li><strong>Inject Humor and Memes:</strong> Light-hearted humor and relevant memes can add a touch of fun to your presentation. Well-timed jokes and amusing visuals help create a relaxed atmosphere and make your talk more enjoyable.</li><li><em>Note on Jokes:</em> If a joke doesn’t land as expected, simply move on without dwelling on it. Avoid explaining the joke or making the audience feel uncomfortable for not getting it.</li><li><strong>Interact with Your Audience:</strong> Engage your audience by asking them questions or encouraging them to participate in brief activities. Interactive elements make your talk more dynamic and involve the audience in the discussion.</li><li><strong>Offer Quick Breaks:</strong> If your talk contains substantial content, consider giving the audience a quick break to recharge. This break can be as simple as taking a sip of water or pausing briefly to allow the audience to take screenshots of important slides.</li><li><strong>Leverage Live Demonstrations:</strong> Live demos are excellent ways to immerse your audience in your topic. Letting the audience interact with your demos, ask questions, and explore the process hands-on keeps them engaged and interested.</li><li><strong>Share Swag or Resources:</strong> If appropriate, consider offering swag such as stickers, or t-shirts. This can serve as an incentive for active participation and create a positive association with your talk.</li></ul><h3>Share Resources for Ongoing Engagement</h3><p>Empowering your audience with valuable resources ensures that the impact of your conference talk extends beyond the event itself. Here are effective ways to share resources and foster continued engagement:</p><ul><li><strong>QR Codes for Accessibility:</strong> Make it easy for your audience to access your slides and additional resources by displaying QR codes at the beginning of your talk. By scanning the code, attendees can quickly access relevant materials on their devices.</li><li><strong>Tweet Links to Slide Deck:</strong> Increase accessibility by tweeting links to your slide deck a few minutes before your talk. This allows people to access the content during your presentation and refer back to it afterward.</li><li><strong>Provide GitHub or CodeSandbox URLs:</strong> If you demonstrate a technical project, share the URL to the corresponding GitHub repository or CodeSandbox. This enables your audience to explore the project further and gain hands-on experience with the code.</li><li><strong>Include Your Contact Information:</strong> Display your name and contact information on every slide, ensuring that attendees can easily reach out to you after the talk. This is particularly helpful if they want to share the slides or contact you for further discussions or inquiries.</li><li><strong>Give Action Steps:</strong> Leave your audience with a call-to-action or “from here, do this” tasks related to the topic. This encourages individuals interested in learning more to take action and engage further with the subject matter.</li></ul><h3>Make it Relevant for Your Audience, Not Just You</h3><p>Ensuring that your conference talk resonates with your audience is essential for creating a meaningful and impactful presentation. Consider the following points to make your talk relevant and valuable for your listeners:</p><ul><li><strong>Abstract the Problem and Solution:</strong> If you’re sharing a talk about a problem you encountered and the solution you formed, abstract the problem to make it relatable for the audience. Avoid overwhelming them with excessive technical details or specific scenarios that may not directly apply to their situations. Instead, focus on the core principles and broader implications that your audience can relate to and learn from.</li><li><strong>Avoid Over-Marketing or Over-Selling:</strong> While it’s natural to be passionate about your work or product, avoid turning your talk into a promotional pitch. People attend conferences to gain knowledge and insights, not to be sold to. Provide valuable content that genuinely benefits your audience, and let the quality of your work speak for itself. Authenticity and value will naturally attract interest and followers.</li><li><em>Note on Self-Promotion:</em> Subtly promote your social media presence at the beginning and end of your talk, but do so in a non-intrusive manner. Mentioning your Twitter handle or other social links during the introduction and conclusion allows interested listeners to follow you for more content without feeling overwhelmed by constant promotion.</li></ul><h3>BONUS: Where to find templates?</h3><p>I’m a fan of simplicity when it comes to design templates. There are various sources to find templates, such as Envato or Canva. Additionally, you can hire a designer from platforms like Fiverr or Upwork to create a custom template for you. Personally, I’ve refined my design template in Keynote over the years, and it’s the one I use most frequently. <a href="https://elements.envato.com/kitulah-google-slides-template-LQHBG6">This is the</a> template I started off with.</p><h3>Examples of Great Talks</h3><ul><li><a href="https://zachholman.com/talk/how-github-uses-github-to-build-github/"><strong>Zach Holman’s Talk with Huge Fonts</strong></a></li><li><a href="https://www.youtube.com/watch?v=MO8hZlgK5zc&amp;list=PL37ZVnwpeshHwJPVBqEnZild7QHWhdufu&amp;ab_channel=JSConf"><strong>Jason’s Talk with Great Fonts</strong></a></li><li><a href="https://www.youtube.com/watch?v=cCOL7MC4Pl0&amp;ab_channel=JSConf"><strong>Andre’s Funny Talk with Cool Animations</strong></a></li><li><a href="https://example.com/shaundai-talk-link"><strong>Shaundai’s Talk with Great Use of Visuals</strong></a></li></ul><p>Speaking at conferences is an enriching experience that allows you to share your passion and expertise with others. Following these tips will help you create powerful conference talks that leave a lasting impact on your audience. Embrace visuals, engage your listeners, and deliver valuable content that inspires and empowers others.</p><p>Remember, every great conference talk starts with a few seconds of courage. Take that step and share your knowledge with the world!</p><p>If you enjoyed this article, share it with someone who will benefit from it.</p><p>If you are interested in articles like this and front-end articles on JavaScript, React, GraphQL or Accessibility, <a href="https://tinyletter.com/shrutikapoor">sign up for my newsletter</a> and get these directly in your inbox.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=cfd556b8c5a6" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Setting Smart Goals that you will actually achieve.]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/geekculture/setting-smart-goals-that-you-will-actually-achieve-a650268ddcd0?source=rss-baae12b574bc------2"><img src="https://cdn-images-1.medium.com/max/2600/0*tz-Z8e5JpVeb9PKW" width="2992"></a></p><p class="medium-feed-snippet">As we start the new year, it is a good time to reflect back on how the past 12 months went, and gear up for the next 12 months. I like to&#x2026;</p><p class="medium-feed-link"><a href="https://medium.com/geekculture/setting-smart-goals-that-you-will-actually-achieve-a650268ddcd0?source=rss-baae12b574bc------2">Continue reading on Geek Culture »</a></p></div>]]></description>
            <link>https://medium.com/geekculture/setting-smart-goals-that-you-will-actually-achieve-a650268ddcd0?source=rss-baae12b574bc------2</link>
            <guid isPermaLink="false">https://medium.com/p/a650268ddcd0</guid>
            <category><![CDATA[motivation]]></category>
            <category><![CDATA[career-development]]></category>
            <category><![CDATA[productivity]]></category>
            <category><![CDATA[goals]]></category>
            <dc:creator><![CDATA[Shruti Kapoor]]></dc:creator>
            <pubDate>Sat, 28 Jan 2023 22:32:28 GMT</pubDate>
            <atom:updated>2023-01-28T22:32:28.742Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Is Your Site Accessible?]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://javascript.plainenglish.io/is-your-site-accessible-245b464e4c08?source=rss-baae12b574bc------2"><img src="https://cdn-images-1.medium.com/max/2600/1*VGjXVV7yDkE-EAVNm89yeQ.jpeg" width="3000"></a></p><p class="medium-feed-snippet">In this post, I will go over 5 things you can keep in mind WHILE building your app so you don&#x2019;t have to do a hacky slap at the end.</p><p class="medium-feed-link"><a href="https://javascript.plainenglish.io/is-your-site-accessible-245b464e4c08?source=rss-baae12b574bc------2">Continue reading on JavaScript in Plain English »</a></p></div>]]></description>
            <link>https://javascript.plainenglish.io/is-your-site-accessible-245b464e4c08?source=rss-baae12b574bc------2</link>
            <guid isPermaLink="false">https://medium.com/p/245b464e4c08</guid>
            <category><![CDATA[web-design]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[accessibility]]></category>
            <category><![CDATA[testing]]></category>
            <dc:creator><![CDATA[Shruti Kapoor]]></dc:creator>
            <pubDate>Mon, 19 Dec 2022 12:16:50 GMT</pubDate>
            <atom:updated>2022-12-19T12:16:50.375Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[How to stay motivated as a developer and stop procrastinating.]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/geekculture/how-to-stay-motivated-as-a-developer-and-stop-procrastinating-f462ecb2ffbd?source=rss-baae12b574bc------2"><img src="https://cdn-images-1.medium.com/max/2600/1*24zLNjNGPIBgtZHntWORHw.jpeg" width="3868"></a></p><p class="medium-feed-snippet">Do you ever find it challenging to work on your project, side hustle, or even your hobby? Have you ever had those moments where nothing&#x2026;</p><p class="medium-feed-link"><a href="https://medium.com/geekculture/how-to-stay-motivated-as-a-developer-and-stop-procrastinating-f462ecb2ffbd?source=rss-baae12b574bc------2">Continue reading on Geek Culture »</a></p></div>]]></description>
            <link>https://medium.com/geekculture/how-to-stay-motivated-as-a-developer-and-stop-procrastinating-f462ecb2ffbd?source=rss-baae12b574bc------2</link>
            <guid isPermaLink="false">https://medium.com/p/f462ecb2ffbd</guid>
            <category><![CDATA[productivity]]></category>
            <category><![CDATA[motivation]]></category>
            <category><![CDATA[careers]]></category>
            <category><![CDATA[goals]]></category>
            <dc:creator><![CDATA[Shruti Kapoor]]></dc:creator>
            <pubDate>Sat, 07 May 2022 16:32:59 GMT</pubDate>
            <atom:updated>2022-05-07T16:32:59.138Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[React 18 Quick Guide & Core Concepts Explained]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://javascript.plainenglish.io/react-18-quick-guide-core-concepts-explained-7be7ecac9dee?source=rss-baae12b574bc------2"><img src="https://cdn-images-1.medium.com/max/1000/1*Go0qm0BRtW-NBDSvbAzesQ.jpeg" width="1000"></a></p><p class="medium-feed-snippet">An overview of React 18.</p><p class="medium-feed-link"><a href="https://javascript.plainenglish.io/react-18-quick-guide-core-concepts-explained-7be7ecac9dee?source=rss-baae12b574bc------2">Continue reading on JavaScript in Plain English »</a></p></div>]]></description>
            <link>https://javascript.plainenglish.io/react-18-quick-guide-core-concepts-explained-7be7ecac9dee?source=rss-baae12b574bc------2</link>
            <guid isPermaLink="false">https://medium.com/p/7be7ecac9dee</guid>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[front-end-development]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[react]]></category>
            <dc:creator><![CDATA[Shruti Kapoor]]></dc:creator>
            <pubDate>Fri, 15 Apr 2022 04:17:28 GMT</pubDate>
            <atom:updated>2022-04-15T04:17:28.403Z</atom:updated>
        </item>
    </channel>
</rss>