<?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>DEV Community: Rohan Lekhwani</title>
    <description>The latest articles on DEV Community by Rohan Lekhwani (@rohanlekhwani).</description>
    <link>https://dev.to/rohanlekhwani</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%2F631856%2Ff6f2a72f-bb73-497e-9141-2b93a5d4c9b9.jpg</url>
      <title>DEV Community: Rohan Lekhwani</title>
      <link>https://dev.to/rohanlekhwani</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rohanlekhwani"/>
    <language>en</language>
    <item>
      <title>Add a Team Poll to Any Rocket.Chat Channel</title>
      <dc:creator>Rohan Lekhwani</dc:creator>
      <pubDate>Tue, 25 Jan 2022 05:31:10 +0000</pubDate>
      <link>https://dev.to/rohanlekhwani/add-a-team-poll-to-any-rocketchat-channel-35fj</link>
      <guid>https://dev.to/rohanlekhwani/add-a-team-poll-to-any-rocketchat-channel-35fj</guid>
      <description>&lt;p&gt;Have you ever wished to measure your team’s sentiments on a topic with a live poll? There is a free Rocket.Chat app for that!&lt;/p&gt;

&lt;p&gt;As many of you discovered already, you can easily use the poll app to perform basic polls. But most of you found the existing poll app rather limiting. We heard you!&lt;/p&gt;

&lt;p&gt;We’ve launched a new app — the &lt;a href="https://rocket.chat/apps/poll-plus"&gt;Poll Plus&lt;/a&gt; app that can do much more than the old app on Rocket.Chat. It’s ability to allow user-defined options, post word clouds, conduct live polls and re-use poll templates make it a Poll App with superpowers!&lt;/p&gt;

&lt;h2&gt;
  
  
  Why You Not Me — Allow Everyone to Add Options!
&lt;/h2&gt;

&lt;p&gt;Earlier, poll options could not be changed after the poll creator posted the poll in a room. While this works fine, Poll Plus does this better and further engages your community by allowing room members to add options after posting the poll!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oRKS9tK8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/700/0%2AheEyYhjhSrkhLGBD" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oRKS9tK8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/700/0%2AheEyYhjhSrkhLGBD" alt="Allow room members to add options 🙌" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Live Polls — Unlimited, Timed Polls
&lt;/h2&gt;

&lt;p&gt;What if you could conduct standup or retro feedback for your teams right within Rocket.Chat? Or, perhaps, could schedule live quizzes for your class to be retrieved on the test day? Introducing Live Polls. Live Polls are a collection of polls with a customizable end time-limit for each poll.&lt;/p&gt;

&lt;p&gt;Create a live poll by sending &lt;code&gt;/poll live &amp;lt;number of polls&amp;gt;&lt;/code&gt; within any room. For example, if you want a total of two questions, send &lt;code&gt;/poll live 2&lt;/code&gt;, which opens up the poll creator modal.&lt;/p&gt;

&lt;p&gt;Each poll within a Live Poll has a time limit to vote upon after which the current Poll ends and the next one is posted. Poll creators can also click on the “Next Poll” button to trigger a pre-scheduled finish of the current Poll.&lt;/p&gt;

&lt;p&gt;The “Time limit to vote” each poll is set as the number of seconds you want that poll to be active.&lt;/p&gt;

&lt;p&gt;Let’s take a look at the Live Poll in action!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Soi4VGvr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/700/0%2AkI4OgOfFq4UTLkuA" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Soi4VGvr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/700/0%2AkI4OgOfFq4UTLkuA" alt="Live Polls 🚀" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Save Poll Template and Reuse Later
&lt;/h3&gt;

&lt;p&gt;Speaking of teachers using Rocket.Chat for exams, the Live Poll Late Retrieval feature proves an excellent tool for teachers to create quizzes even weeks before and then schedule the quiz on D-day with ease. All this while having control over the time limit to answer each question.&lt;/p&gt;

&lt;p&gt;To use the Late Retrieval feature make use of the save subcommand in the format: &lt;code&gt;/poll live save &amp;lt;number of polls&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Post-creation of the Live Poll, a message along with the poll id to retrieve it will be visible only to the poll creator like in the following image.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FHzru8Pv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ik85wjzr3fslrej2plrr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FHzru8Pv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ik85wjzr3fslrej2plrr.png" alt="Save Polls and Retrieve Later" width="674" height="64"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Make use of the &lt;code&gt;/poll live &amp;lt;id&amp;gt;&lt;/code&gt; command to “play” the Live Poll. Here  is the poll id that was visible to the poll creator.&lt;/p&gt;

&lt;p&gt;You can find more information about this feature within its documentation &lt;a href="https://docs.rocket.chat/guides/app-guides/poll-plus/guides/live-poll#late-retrieval"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Word Clouds — Visualize Your Polls Better!
&lt;/h2&gt;

&lt;p&gt;Imagine a better way to visualize your poll results. No we’re not talking about adding colors to bar graphs (we did that already in Poll Plus xD ), we‘re talking about word clouds! Bar graphs are okay, word clouds are awesome.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rljAH3uU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w7kg8kb9i5v6qgvna0dr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rljAH3uU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w7kg8kb9i5v6qgvna0dr.png" alt="Visualize your poll results better with word clouds ☁️" width="700" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Poll Plus requires a word cloud API that returns image results to actually post the word cloud. The URL to the API can be set by the Rocket.Chat administrator from the Poll Plus settings menu.&lt;/p&gt;

&lt;p&gt;By default, the &lt;a href="https://quickchart.io/documentation/word-cloud-api/"&gt;Quickchart&lt;/a&gt; word cloud API is pre-filled. A limitation of using the free version of Quickchart API is a rate-limitation of 60 requests per min per IP and requirement of public Internet access. If your Rocket.Chat server is hosted on-premise or if you require more customizations than Quickchart, we’ve open-sourced a word cloud API &lt;a href="https://github.com/RonLek/wordcloud-api"&gt;here&lt;/a&gt;. It’s usage can also be seen in the settings menu image above.&lt;/p&gt;

&lt;p&gt;In the event you leave the endpoint field blank or the API doesn’t return a valid result, the Poll Plus app would instead display the poll summary when the word cloud is set to enabled.&lt;/p&gt;

&lt;h2&gt;
  
  
  Template Based Polls
&lt;/h2&gt;

&lt;p&gt;Tired of repetitively filling out the same options to your Poll? Just use template based polls. The Poll Plus App includes pre-filled templates for five most commonly used poll types — 1-to-5 poll, 1-to-10 poll, Agree/Disagree polls, Overrated/Underrated polls, Emoji Rank polls. Just type your questions and let Poll Plus do the cumbersome job of filling in the options.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wiO8Q0tr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/700/0%2AU8VnO0jTl-LkuF5-" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wiO8Q0tr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/700/0%2AU8VnO0jTl-LkuF5-" alt="Emoji Rank Poll 😎" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Mixed Visibility Polls
&lt;/h2&gt;

&lt;p&gt;Don’t want to hurt someone’s feelings on a Men In Black 3 like/dislike poll? Just make the dislike option Anonymous with Mixed Visibility Poll mode.&lt;/p&gt;

&lt;p&gt;In addition to completely revealing or veiling the identities of voters through the open and confidential visibilities mode, Poll Plus gives you the middle way out. With Poll Plus poll creators have the flexibility of customizing which options should not reveal voter identities. Here’s how it works.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tyWatarZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/700/0%2AKNM3zBvECVOSp7-_" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tyWatarZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/700/0%2AKNM3zBvECVOSp7-_" alt="Mixed Visibility Poll Options 👀" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Upgrade Your Polling Experience with Poll Plus Today!
&lt;/h2&gt;

&lt;p&gt;Poll Plus is a major upgrade over the older Poll App. Conduct team activities like stand-up, retro or opinion polls without leaving Rocket.Chat. Plan quizzes for your students and post them on the exam day or just post polls to know what your friends think of your favorite movie!&lt;/p&gt;

&lt;p&gt;Poll Plus is completely free and open-source, forever. Download Poll Plus from the &lt;a href="https://rocket.chat/apps/poll-plus"&gt;Rocket.Chat App Marketplace&lt;/a&gt;. On-premise users can directly clone the &lt;a href="https://github.com/Poll-Plus/rocket.chat.app-poll"&gt;Poll Plus repository&lt;/a&gt; and install it for their servers using the Rocket.Chat Apps-Engine.&lt;/p&gt;

&lt;p&gt;Get started with the feature-by-feature installation, set-up and usage &lt;a href="https://docs.rocket.chat/guides/app-guides/poll-plus"&gt;documentation&lt;/a&gt; for the Poll Plus app.&lt;/p&gt;

&lt;p&gt;Want to see a feature we missed including within Poll Plus? Raise an &lt;a href="https://github.com/Poll-Plus/rocket.chat.app-poll/issues"&gt;issue&lt;/a&gt; or start a &lt;a href="https://github.com/Poll-Plus/rocket.chat.app-poll/discussions"&gt;discussion&lt;/a&gt; on the Poll Plus repository and we’ll be in touch!&lt;/p&gt;




&lt;p&gt;Like what I do? Help me pull my next all-nighter. Consider &lt;a href="https://www.buymeacoffee.com/rohanlekhwani"&gt;buying me a coffee&lt;/a&gt;.🥤&lt;/p&gt;

&lt;p&gt;Rohan Lekhwani is an open source contributor and enthusiast. You can connect with him on &lt;a href="https://www.linkedin.com/in/rohanlekhwani/"&gt;LinkedIn&lt;/a&gt;, &lt;a href="http://github.com/RonLek"&gt;GitHub&lt;/a&gt;, &lt;a href="https://twitter.com/Rohanlekhwani"&gt;Twitter&lt;/a&gt;, and his &lt;a href="https://ronlek.github.io/"&gt;website&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>opensource</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>What Happens in Google Summer of Code Final Evaluations</title>
      <dc:creator>Rohan Lekhwani</dc:creator>
      <pubDate>Sun, 19 Sep 2021 14:22:20 +0000</pubDate>
      <link>https://dev.to/rohanlekhwani/what-happens-in-google-summer-of-code-final-evaluations-g9p</link>
      <guid>https://dev.to/rohanlekhwani/what-happens-in-google-summer-of-code-final-evaluations-g9p</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;The final fence to jump before being called a GSoCer. Aiming to be called one? Read on.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For the past 3 months I have been working on the &lt;strong&gt;&lt;a href="https://summerofcode.withgoogle.com/projects/#6521788818784256" rel="noopener noreferrer"&gt;Poll App Mega Extensions&lt;/a&gt;&lt;/strong&gt; project at &lt;strong&gt;&lt;a href="https://rocket.chat/" rel="noopener noreferrer"&gt;Rocket.Chat&lt;/a&gt;&lt;/strong&gt; as a part of Google Summer of Code. I had successfully passed my &lt;strong&gt;&lt;a href="https://dev.to/rohanlekhwani/gsoc-first-evaluations-all-you-need-to-know-2pjf"&gt;First Evaluations&lt;/a&gt;&lt;/strong&gt; from my mentor Ramkumar KB.&lt;/p&gt;

&lt;p&gt;The final evaluations are more involved. Rocket.Chat has a “GSoC Tradition” of having students present their projects before the entire Rocket.Chat team, mentors and other GSoCers. I’ll also be &lt;strong&gt;revealing my proposal (31 pages!)&lt;/strong&gt; at the end of this blog post. Finally, I’ll touch upon the future work required within the Poll App in case you’re a GSoC aspirant and want to work on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  GSoC Final Evaluations
&lt;/h2&gt;

&lt;p&gt;The first thing GSoC Final evaluations form will ask you is to provide a work product link. This can be either in the form of a GitHub Gist, a repository or a blog post. In all it should summarize your work done, PRs and issues opened, merged or closed and your experience within the 3 months of GSoC.&lt;/p&gt;

&lt;p&gt;Here’s the link to my report — &lt;strong&gt;&lt;a href="https://github.com/RonLek/Google-Summer-of-Code" rel="noopener noreferrer"&gt;Rohan Lekhwani | GSoC Report&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The next section within the evaluation form is about your GSoC experience. This involves questions like “were you able to meet all your goals”, your favorite and most challenging parts about GSoC, number of hours dedicated. The data here is probably used by Google to evaluate the popularity and areas of improvement within their program.&lt;/p&gt;

&lt;p&gt;The organization section includes questions as a feedback to Google about the organization. I’m pretty sure Google uses this section to filter out organizations the next GSoC season from the ones who didn’t receive a good feedback.&lt;/p&gt;

&lt;p&gt;The following section is regarding your Growth which focuses whether GSoC helped you get a job or an internship, did it improve your programming skills, anything else you learned from your GSoC experience.&lt;/p&gt;

&lt;p&gt;The final section includes the “Everything Else” section. It forms a miscellaneous section asking you whether you’d like to be a mentor the next GSoC season, any feedback for your organization (your answer to this question will be shared with your organization), any advice for future GSoC aspirants and suggestions for future GSoCs.&lt;/p&gt;

&lt;p&gt;Both student and mentor evaluations questions can be found &lt;strong&gt;&lt;a href="https://developers.google.com/open-source/gsoc/help/evaluations#final" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/strong&gt;. The ones listed here were almost exactly worded as the ones mentioned in the evaluation form.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rocket.Chat’s GSoC Tradition
&lt;/h2&gt;

&lt;p&gt;Rocket.Chat has maintained a streak of getting selected into GSoC &lt;strong&gt;since 2017&lt;/strong&gt; with &lt;strong&gt;7+ projects at the least&lt;/strong&gt;. This year Rocket.Chat broke records with their highest number of projects getting selected — &lt;strong&gt;a whopping 12 projects!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In parallel with GSoC final evaluations, Rocket.Chat organizes an internal “Demo Presentation” for all students. These presentations are attended by almost the entire Rocket.Chat engineering team including the CEO Gabriel Engel and CTO Rodrigo Nascimento.&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%2Fhupi3xwxwwc00ferzjcu.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%2Fhupi3xwxwwc00ferzjcu.png" alt="Isn’t visible but I’m wearing my Rocket.Chat tee 🚀"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It was a real fun experience to showcase my work in front of the community. The only question everyone had on mind was “When will it be on the Marketplace?” (xD).&lt;/p&gt;

&lt;p&gt;The entire recording can be viewed at Rocket.Chat’s YouTube channel. Here’s the &lt;strong&gt;&lt;a href="https://youtu.be/3jSNDDECdDg" rel="noopener noreferrer"&gt;video link&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In case you’re interested in checking out the presentation, I’ve made it publicly accessible &lt;strong&gt;&lt;a href="https://bit.ly/gsoc-presentation" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  And Voila!
&lt;/h2&gt;

&lt;p&gt;I was able to surpass my planned proposal by even including an additonal feature not mentioned earlier — &lt;strong&gt;&lt;a href="https://github.com/RocketChat/rocket.chat.app-poll/pull/13" rel="noopener noreferrer"&gt;Late Retrieval of Live Polls&lt;/a&gt;&lt;/strong&gt;. Result?&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%2Forp57p3a2xts78xqxymv.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%2Forp57p3a2xts78xqxymv.png" alt="Final evaluations passed! 🍻"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Google also mentioned since previous year a lot of students were requesting for a completion certificate, it’ll be provisioning them along with a &lt;strong&gt;super secret link&lt;/strong&gt; to be on Google’s watchlist for opportunities.&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%2Fzzrfi22q1vlv2imv63ic.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%2Fzzrfi22q1vlv2imv63ic.png" alt="I confer upon thee the title of a GSoCer 🌞"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’ve been following along in this blog series, you would know I have been maintaining a &lt;strong&gt;&lt;a href="https://github.com/orgs/RocketChat/projects/40" rel="noopener noreferrer"&gt;GitHub Kanban board&lt;/a&gt;&lt;/strong&gt; for my project progress. Here’s how it looks now:&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%2F8mc2av6xy84vf0yi2vc1.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%2F8mc2av6xy84vf0yi2vc1.png" alt="All PRs merged 📩"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Speaking of PRs I ranked up by a position on the GSoC Contribution Leaderboard which Rocket.Chat maintains every year at &lt;strong&gt;&lt;a href="https://gsoc.rocket.chat/" rel="noopener noreferrer"&gt;gsoc.rocket.chat&lt;/a&gt;&lt;/strong&gt;. I’m ranked 4th of all the people who contributed. The board doesn’t include &lt;strong&gt;&lt;a href="https://github.com/RocketChat/RC4Github" rel="noopener noreferrer"&gt;RC4GitHub&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;a href="https://github.com/RocketChat/RC4Community" rel="noopener noreferrer"&gt;RC4Community&lt;/a&gt;&lt;/strong&gt; repositories, which if accounted for rank me first.&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%2Furzmqpaz9p952425e0yp.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%2Furzmqpaz9p952425e0yp.png" alt="Ranked 4th on the GSoC Contribution Leaderboard 4️⃣"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Future Work
&lt;/h2&gt;

&lt;p&gt;It’s truly amazing to see all your PRs merged within the main codebase. We are currently on track to release &lt;strong&gt;Poll App 3.0.0&lt;/strong&gt; out to the world on Rocket.Chat’s Marketplace.&lt;/p&gt;

&lt;p&gt;I planned a lot of features as extra deliverables which can be seen in my proposal shared below. A super-important future work for a GSoC aspirant would be to expand the &lt;strong&gt;&lt;a href="https://github.com/RocketChat/rocket.chat.app-poll/pull/11" rel="noopener noreferrer"&gt;additional Poll modes feature&lt;/a&gt;&lt;/strong&gt; into templates for Retro, Daily Standup, All Hands, etc. This is similar to what Polly offers.&lt;/p&gt;

&lt;p&gt;Another useful feature would be the poll summary feature allowing users to see their configurations before posting the Poll. This would result in a lesser number of incorrect and misconfigured polls created.&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%2Fehgalt8ww7xtoumpw098.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%2Fehgalt8ww7xtoumpw098.png" alt="Future Work: Poll Summaries 📄"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  As Promised
&lt;/h2&gt;

&lt;p&gt;GSoC aspirant? Here’s something for you.&lt;/p&gt;

&lt;p&gt;I wrote two proposals for GSoC one was 18 pages and the other one (which got selected) is 31 pages! Apart from that I also created Figma designs for both the projects shared below.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://bit.ly/gsoc-proposal1" rel="noopener noreferrer"&gt;Poll App Mega Extensions Proposal Link&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://bit.ly/gsoc-proposal1-designs" rel="noopener noreferrer"&gt;Poll App Mega Extensions Figma Designs Link&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://bit.ly/gsoc-proposal2" rel="noopener noreferrer"&gt;Community Collaboration: Improvements Proposal Link&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://bit.ly/gsoc-proposal2-designs" rel="noopener noreferrer"&gt;Community Collaboration: Improvements Designs Link&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Planning to apply to the upcoming GSoC? Comment your questions/doubts or reach out to me.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Hurray! This forms my final bi-weekly blog about my GSoC journey at Rocket.Chat. I’ll be continuously writing about what I code and build, so if you haven’t yet — hit that follow button on &lt;a href="https://dev.to/rohanlekhwani"&gt;DEV&lt;/a&gt; and &lt;a href="https://rohanlekhwani.medium.com/about" rel="noopener noreferrer"&gt;Medium&lt;/a&gt; 🌟.&lt;/p&gt;

&lt;p&gt;My previous blog in this sereis was about &lt;strong&gt;GSoC Coding Phase 2&lt;/strong&gt;, go check it out now — it includes an unexpected climax when you feel everything’s going smooth.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://dev.to/rohanlekhwani/gsoc-coding-phase-2-challenge-is-an-understatement-bji"&gt;GSoC Coding Phase 2: Challenge Is an Understatement&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;Like what I do? Help me pull my next all-nighter. Consider &lt;a href="https://www.buymeacoffee.com/rohanlekhwani" rel="noopener noreferrer"&gt;buying me a coffee&lt;/a&gt;.🥤&lt;/p&gt;

&lt;p&gt;Rohan Lekhwani is an open source contributor and enthusiast. You can connect with him on &lt;a href="https://www.linkedin.com/in/rohanlekhwani/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, &lt;a href="http://github.com/RonLek" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, &lt;a href="https://twitter.com/Rohanlekhwani" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, and his &lt;a href="https://ronlek.github.io/" rel="noopener noreferrer"&gt;website&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>typescript</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>GSoC Coding Phase 2: Challenge Is an Understatement</title>
      <dc:creator>Rohan Lekhwani</dc:creator>
      <pubDate>Thu, 26 Aug 2021 16:54:12 +0000</pubDate>
      <link>https://dev.to/rohanlekhwani/gsoc-coding-phase-2-challenge-is-an-understatement-bji</link>
      <guid>https://dev.to/rohanlekhwani/gsoc-coding-phase-2-challenge-is-an-understatement-bji</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;It was all going smooth. And then this happened.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://summerofcode.withgoogle.com/" rel="noopener noreferrer"&gt;Google Summer of Code&lt;/a&gt;&lt;/strong&gt; is a 10 week global open-source program for students.&lt;/p&gt;

&lt;p&gt;It has been in the running for 16 years! In case you're new here, I recommend checking out my first blog in this series.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://dev.to/rohanlekhwani/how-i-got-selected-into-google-summer-of-code-27"&gt;How I Got Selected into Google Summer of Code&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'm revamping the &lt;strong&gt;&lt;a href="https://rocket.chat/blog/product/top-8-the-most-popular-rocket-chat-apps/" rel="noopener noreferrer"&gt;most downloaded app&lt;/a&gt;&lt;/strong&gt; on Rocket.Chat - the &lt;strong&gt;&lt;a href="https://github.com/RocketChat/rocket.chat.app-poll" rel="noopener noreferrer"&gt;Poll App&lt;/a&gt;&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bonus:&lt;/strong&gt; While it's been a smooth ride, there's one thing that happened that made all of us scratch our heads. Hang tight!&lt;/p&gt;

&lt;h2&gt;
  
  
  Recap
&lt;/h2&gt;

&lt;p&gt;Here’s a recap of the features I built in &lt;strong&gt;&lt;a href="https://dev.to/rohanlekhwani/commit-push-merge-gsoc-coding-phase-1-51i0"&gt;Coding Phase 1&lt;/a&gt;&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Improved Response Visualizations:&lt;/strong&gt; Previously the Poll App displayed simple grayscale reponses. This was dull and boring. Moreover, there wasn’t a way to distinguish winners and total votes cast. &lt;strong&gt;&lt;a href="https://github.com/RocketChat/rocket.chat.app-poll/pull/2" rel="noopener noreferrer"&gt;Here’s&lt;/a&gt;&lt;/strong&gt; how we changed this.&lt;/li&gt;
&lt;/ul&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mixed Visibility Mode:&lt;/strong&gt; The Poll App allowed only two modes — open where voter identities were visible and closed where they were not. What about something in the middle? Introducing &lt;strong&gt;&lt;a href="https://github.com/RocketChat/rocket.chat.app-poll/pull/5" rel="noopener noreferrer"&gt;Mixed Visibility Mode&lt;/a&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Word Clouds:&lt;/strong&gt; Bar graphs are simple. Bar graphs do the job. And bar graphs are just &lt;em&gt;“okay”&lt;/em&gt;. Word Clouds are lit! Visualize responses in word clouds &lt;strong&gt;&lt;a href="https://github.com/RocketChat/rocket.chat.app-poll/pull/6" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What Did I Add to the Poll App?
&lt;/h2&gt;

&lt;p&gt;While planning my timeline within my GSoC proposal, my strategy was to take up easier features at the start. This would allow me to have more time to explore the &lt;strong&gt;&lt;a href="https://rocketchat.github.io/Rocket.Chat.Apps-engine/" rel="noopener noreferrer"&gt;Rocket.Chat Apps Engine&lt;/a&gt;&lt;/strong&gt; while still shipping out features consistently.&lt;/p&gt;

&lt;p&gt;Coding Phase 1 was a success. It was time to bring out the &lt;strong&gt;big guns&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  User-defined Options
&lt;/h3&gt;

&lt;p&gt;Until now the Poll App only allowed the Poll Creator to add options. Once they posted the poll no changes to the options could be made. &lt;strong&gt;What if users have an idea not covered within the options?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now if you’ve ever used Facebook polls within groups you might’ve noticed a subtle feature. All group members can add options after the poll is posted. Allowing group members to vote not only involves the community better but also evokes ideas and opinions from the entire group, not just limited to the poll creator.&lt;/p&gt;

&lt;p&gt;We decided to give the Poll Creator an option — allow or disallow users from adding choices. Here’s how the poll message looks when the poll creator allowed users to add options.&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%2Fv8t99e9zogzfw03tnpjl.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%2Fv8t99e9zogzfw03tnpjl.png" alt="Allow Users to Add Options After Poll Creation"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See that Add option button? That becomes available to all the users within the room. Let’s click on it and see what happens.&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%2Fchgq3b6crsj46s5ej3hk.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%2Fchgq3b6crsj46s5ej3hk.png" alt="Adding German as a new option. I don’t speak German. (yet :P)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It opens up a modal that allows users to add an option. On clicking Add the option gets added to the existing Poll message with both vote quantity and voters set to 0.&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%2Fygbsm3u1v8vpw9q54463.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%2Fygbsm3u1v8vpw9q54463.png" alt="Germans in the house!"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Poll message updates for everyone within the room with the new option. Yay!&lt;/p&gt;

&lt;p&gt;The PR for this feature along with a video demo can be found here.&lt;/p&gt;

&lt;h3&gt;
  
  
  Additional Poll Modes
&lt;/h3&gt;

&lt;p&gt;Adding options to Poll was kind of repetitive. Especially if you’re doing a 1 to 10 poll typing 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 was what you had to do (&lt;em&gt;okay I just did that&lt;/em&gt;). I thought:&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%2Fkdz8qcgoasq9ghulpaih.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%2Fkdz8qcgoasq9ghulpaih.png" alt="Why not?"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Poll App only had two modes — Mutliple Choice and Single Choice. That. Is. It. &lt;strong&gt;What if I could add more modes that would auto-fill all the options?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Over the next few days (and nights) I added the following modes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Overrated/Underrated Polls&lt;/strong&gt; (Options: Overrated, Appropriately Rated, Never Tried, Underrated)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;1-to-5 Polls&lt;/strong&gt; (Options: 1–5)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;1-to-10 Polls&lt;/strong&gt; (Options: 1–10)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Agree/Disagree Polls&lt;/strong&gt; (Options: Agree/Disagree)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Emoji Rank Polls&lt;/strong&gt; (Options: Watch the demo! 🚀)&lt;/p&gt;&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%2Fmiro.medium.com%2Fmax%2F700%2F1%2AsPhvVXxvC7wogIUc869mZg.gif" class="article-body-image-wrapper"&gt;&lt;img alt="Emoji Rank Polls in Action!" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F700%2F1%2AsPhvVXxvC7wogIUc869mZg.gif"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The best part is that the modal is completely interactive. This means that as soon as you select one of the additional poll modes the Options fields automatically disappear. Not to mention that Additional Poll modes support Mixed Visibility. How cool is that?&lt;/p&gt;

&lt;p&gt;To view other additional poll modes, checkout the &lt;strong&gt;&lt;a href="https://github.com/RocketChat/rocket.chat.app-poll/pull/11" rel="noopener noreferrer"&gt;PR&lt;/a&gt;&lt;/strong&gt; for Additional Poll Modes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Live Polls
&lt;/h3&gt;

&lt;p&gt;If you’ve attempted an online quiz before. Well this it!&lt;/p&gt;

&lt;p&gt;Introducing Live Polls. To be honest about it, the effort and thought that went into this feature qualifies it as a &lt;strong&gt;mini-GSoC project&lt;/strong&gt; itself.&lt;/p&gt;

&lt;p&gt;Live Polls are an array of regular Polls with additional functionality of having a time limit to vote upon after which the current Poll ends and the next one is posted. Poll creators can also click on a new “Next Poll” button to trigger a pre-scheduled finish of the current Poll.&lt;/p&gt;

&lt;p&gt;The scheduling magic happens using the &lt;strong&gt;&lt;a href="https://developer.rocket.chat/apps-development/fundamentals-of-apps/scheduler-api" rel="noopener noreferrer"&gt;Scheduler API&lt;/a&gt;&lt;/strong&gt;. Every time a Poll within a Live Poll is posted, a processor is scheduled to end it after the user-specified time to vote.&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%2Fr6s865itd4d0ji4vezg3.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%2Fr6s865itd4d0ji4vezg3.png" alt="Time to vote on the Poll along with a “Next Poll” button."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Live Polls are triggered using the command &lt;code&gt;/poll live &amp;lt;number of polls&amp;gt;&lt;/code&gt;.&lt;br&gt;
An excellent use-case for the Live Poll are stand-up and retro meetings. An additional use case is by teachers wanting to conduct &lt;strong&gt;timed quizzes&lt;/strong&gt; on Rocket.Chat.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Late Retrieval&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My mentor suggested that in addition to having the Polls timed, the user should also be able to create a Live Poll at a time and retrieve or play it at a later time.&lt;/p&gt;

&lt;p&gt;I created a subcommand &lt;code&gt;/poll live save &amp;lt;number of polls&amp;gt;&lt;/code&gt;. It saves all the Poll states in the Poll App’s persistent storage. A unique &lt;strong&gt;Live Poll ID&lt;/strong&gt; is provided to the user.&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%2Fpuw7nh6isld1w95ixc76.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%2Fpuw7nh6isld1w95ixc76.png" alt="Live Poll ID generated after saving Live Poll within persistent storage.&amp;lt;br&amp;gt;
"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The created Live Poll can be subsequently retrieved using the &lt;code&gt;/poll live load &amp;lt;Live Poll ID&amp;gt;&lt;/code&gt;. In case the user enters a wrong or non-existent Live Poll ID they’re shown a notification. On executing the above command with a correct Poll ID the Live Poll can be retrieved at any time.&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%2Fmiro.medium.com%2Fmax%2F700%2F1%2AvA5bEwLTDGNTnMBS7LL_fQ.gif" class="article-body-image-wrapper"&gt;&lt;img alt="Retrieving a pre-created Live Poll." src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F700%2F1%2AvA5bEwLTDGNTnMBS7LL_fQ.gif"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Speaking of teachers using Rocket.Chat for exams, the Live Poll Late Retrieval features proves an excellent tool for teachers to create quizzes even weeks before and then schedule the quiz on D-day with ease. All this while having control over the time limit to answer each question.&lt;/p&gt;

&lt;p&gt;The PR for Live Poll and Live Poll Late Retrieval features can be found &lt;strong&gt;&lt;a href="https://github.com/RocketChat/rocket.chat.app-poll/pull/13" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bonus: An Unexpected Problem!
&lt;/h3&gt;

&lt;p&gt;If you’ve been through my &lt;strong&gt;&lt;a href="https://dev.to/rohanlekhwani/commit-push-merge-gsoc-coding-phase-1-51i0"&gt;Coding Phase 1 article&lt;/a&gt;&lt;/strong&gt; you would remember us using the &lt;strong&gt;&lt;a href="http://quickchart.io/documentation/word-cloud-api/" rel="noopener noreferrer"&gt;Quickchart Wordcloud API&lt;/a&gt;&lt;/strong&gt; to generate wordclouds.&lt;/p&gt;

&lt;p&gt;While this API works well when your Rocket.Chat server is connected to the Internet, a lot of organizations (my mentors org Credit Suisse, US Defence) use Rocket.Chat in an isolated environment. That means no Internet access. What then?&lt;/p&gt;

&lt;p&gt;We thought why not host Quickchart locally using their &lt;strong&gt;&lt;a href="https://github.com/typpo/quickchart" rel="noopener noreferrer"&gt;open-sourced codebase&lt;/a&gt;&lt;/strong&gt;? But…Wait-for-it. Quickchart has all APIs &lt;strong&gt;except&lt;/strong&gt; wordcloud open-sourced. Ha!&lt;/p&gt;

&lt;p&gt;Another problem was rate-limits. Quickchart has a rate-limit of &lt;code&gt;60 requests per minute per IP&lt;/code&gt; on their free tier. This means it is totally unsuitable for rooms with more than 60 members. My mentor Murtaza shared a perfect explaination. Quoting him from the &lt;strong&gt;&lt;a href="https://github.com/RocketChat/rocket.chat.app-poll/pull/6" rel="noopener noreferrer"&gt;PR&lt;/a&gt;&lt;/strong&gt; comment:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;if all the users are accessing the room from a different network then the limit is fair enough, however if all the users are on a private network behind a (Router + NAT) then although each of them will have a different local IP, but the same public IP — In that case if there is a single room with more than 60 users, they all would be identified as a single entity/IP and the rate limit will come into picture.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;I thought, why can’t I build my own API and remove Quickchart out of the equation altogether? And:&lt;/strong&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%2Fmiro.medium.com%2Fmax%2F349%2F1%2APHq45ZJJ4ibMrl8yI2e0zQ.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%2Fmiro.medium.com%2Fmax%2F349%2F1%2APHq45ZJJ4ibMrl8yI2e0zQ.gif"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Within a few days I had our own in-house developed Wordcloud API. The best thing about it? It offered &lt;strong&gt;more&lt;/strong&gt; customizations than Quickchart Enterprise, worked without an Internet connection, had practically no rate-limits and was free.&lt;/p&gt;

&lt;p&gt;I have open-sourced the word-cloud API &lt;strong&gt;&lt;a href="https://github.com/RonLek/wordcloud-api" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/strong&gt;. Feel free to use it in your own projects or raise a PR for further customizations.&lt;/p&gt;

&lt;p&gt;My API also factors in the number of votes cast per option. For example, if English received twice as many votes as Hindi on a Poll then “English” would appear twice as big as “Hindi” within the word-cloud.&lt;/p&gt;

&lt;p&gt;I provided the repository link within the Poll App settings page for users to self-host the API. This solved our Wordcloud frenzy forever.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Have you faced an unexpected problem while coding a project? How did you solve it? Could you find a solution or did you just leave it for the future? Let me know in the comments section below!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I write biweekly about my GSoC journey at Rocket.Chat and this was the fifth blog in this series. Follow my voyage on &lt;a href="https://dev.to/rohanlekhwani"&gt;DEV&lt;/a&gt; and &lt;a href="https://rohanlekhwani.medium.com/about" rel="noopener noreferrer"&gt;Medium&lt;/a&gt; ⭐️&lt;/p&gt;

&lt;p&gt;In case you haven’t checked out my previous blog about GSoC First Evaluations, go check it out now —it covers in detail how a GSoC student is evaluated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://dev.to/rohanlekhwani/gsoc-first-evaluations-all-you-need-to-know-2pjf"&gt;GSoC First Evaluations: All You Need to Know&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;Like what I do? Help me pull my next all-nighter. Consider &lt;a href="https://www.buymeacoffee.com/rohanlekhwani" rel="noopener noreferrer"&gt;buying me a coffee&lt;/a&gt;.🥤&lt;/p&gt;

&lt;p&gt;Rohan Lekhwani is an open source contributor and enthusiast. You can connect with him on &lt;a href="https://www.linkedin.com/in/rohanlekhwani/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, &lt;a href="http://github.com/RonLek" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, &lt;a href="https://twitter.com/Rohanlekhwani" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, and his &lt;a href="https://ronlek.github.io/" rel="noopener noreferrer"&gt;website&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>typescript</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>GSoC First Evaluations: All You Need to Know</title>
      <dc:creator>Rohan Lekhwani</dc:creator>
      <pubDate>Sat, 31 Jul 2021 06:54:41 +0000</pubDate>
      <link>https://dev.to/rohanlekhwani/gsoc-first-evaluations-all-you-need-to-know-2pjf</link>
      <guid>https://dev.to/rohanlekhwani/gsoc-first-evaluations-all-you-need-to-know-2pjf</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Even before applying to Google Summer of Code I had the question of what GSoC evaluations look like. Are students passed easily? It was time to know. It was Evaluation Time.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Starting GSoC 2021, Google modified their rules to have 2 evaluations from 3 earlier. This meant an evaluation at the 5 week mid-way mark between the program and one at the end of it.&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%2Fnhc9za4d7116o4fzl9cc.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%2Fnhc9za4d7116o4fzl9cc.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I had just finished raising a PR for the &lt;strong&gt;&lt;a href="https://github.com/RocketChat/rocket.chat.app-poll/pull/8" rel="noopener noreferrer"&gt;Add User Defined Options&lt;/a&gt;&lt;/strong&gt; feature on my GSoC project — &lt;strong&gt;&lt;a href="https://summerofcode.withgoogle.com/projects/#6521788818784256" rel="noopener noreferrer"&gt;Poll App Mega Extensions&lt;/a&gt;&lt;/strong&gt;. It would allow channel members within a room on Rocket.Chat to add options to an already created poll before it ended.&lt;/p&gt;

&lt;p&gt;And then this dropped into my mailbox. &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%2Fzzbdaou0bpzc83fsr9m8.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%2Fzzbdaou0bpzc83fsr9m8.png" alt="Opening mail for First Evaluations"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fortunately, I had been sternly following my work plan and had finished my GSoC project exactly 50% before the evaluations began, as I had planned.&lt;/p&gt;

&lt;p&gt;Evaluations comprise of a two-way feedback where students and mentor review each other based on the 5 weeks they’ve spent working together. Once the student passes the evaluation, they’re sent out 45% of their stipend — $675 for Indian students.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Are You Required to Do During Evaluations?
&lt;/h2&gt;

&lt;p&gt;Students need to fill a form comprising of 4 sections:&lt;/p&gt;

&lt;h3&gt;
  
  
  About You
&lt;/h3&gt;

&lt;p&gt;This section requires you to fill details about your prior relation with open-source and your GSoC organization before GSoC started. Google later uses this to shell out statistics, for example, how many students were first-time GSoCers. It also uses this section to get an internal estimate of how long before GSoC actually begins do people start gearing up for it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Communication
&lt;/h3&gt;

&lt;p&gt;Open-source is all about communication. Within this section you’re asked about the mode and frequency of communication between you and your mentors. The same question is asked to your mentor as well. It’s scary and funny to think what if both of your answers differ here (you say everyday and mentor says once a week : P ).&lt;/p&gt;

&lt;h3&gt;
  
  
  GSoC Experience
&lt;/h3&gt;

&lt;p&gt;This one’s a more subjective section. In 2000 characters each you’re required to write what are your most favorite and most challenging parts of participating in GSoC.&lt;/p&gt;

&lt;h3&gt;
  
  
  Feedback
&lt;/h3&gt;

&lt;p&gt;This section involves two questions — one is the feedback for your organization and mentor (this becomes visible to your organization after submitting) and the second is feedback for Google (GSoC students in India mutually decided on Whatsapp to ask Google for swags in this question!). Google be like:&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%2Fc3dva95v2c65tfomozg4.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%2Fc3dva95v2c65tfomozg4.png" alt="Google Be Like"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mentors have their own questionare about students. In one of the questions they’re required to provide student feedback. This is sent to the student in the evaluation results mail along with the pass/fail.&lt;/p&gt;

&lt;p&gt;In case you’re interested in viewing the exact questions that mentors and students have to answer, Google has provided a preview &lt;strong&gt;&lt;a href="https://developers.google.com/open-source/gsoc/help/evaluations" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s Next?
&lt;/h2&gt;

&lt;p&gt;In case you’re sticking to your work plan and have been consistently communicating with your mentor — Congratulations you’ll pass your first evaluations and get those dollars 💰.&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%2Fktediw142yl33n9gluu8.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%2Fktediw142yl33n9gluu8.png" alt="First Evaluation Results: Passed 🎉"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A cool feature that I’ve started working on next is pre-formed polls. For example, an Overrated/Underrated Poll or an Emoji Poll! The user just needs to select the poll type and the Poll App will pre-fill all the options!&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%2Fuuse5207ekdc7dv7o28u.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%2Fuuse5207ekdc7dv7o28u.png" alt="Pre-formed Emoji Poll Design"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check out my &lt;strong&gt;&lt;a href="https://github.com/orgs/RocketChat/projects/40" rel="noopener noreferrer"&gt;GSoC Project Board&lt;/a&gt;&lt;/strong&gt;. I continuosly try to keep it updated with what I’m working on!&lt;/p&gt;

&lt;p&gt;I write biweekly about my GSoC journey at Rocket.Chat and this was the fourth blog in this series. Follow my voyage on &lt;strong&gt;&lt;a href="https://dev.to/rohanlekhwani"&gt;DEV&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;a href="https://rohanlekhwani.medium.com/about" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;&lt;/strong&gt; ⭐️&lt;/p&gt;

&lt;p&gt;In case you haven’t checked out my previous blog about Coding Phase 1 at GSoC, go check it out now— it includes all that I’ve been building at Rocket.Chat!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://dev.to/rohanlekhwani/commit-push-merge-gsoc-coding-phase-1-51i0"&gt;Commit, Push, Merge: GSoC Coding Phase 1&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;Like what I do? Help me pull my next all-nighter. Consider &lt;strong&gt;&lt;a href="https://www.buymeacoffee.com/rohanlekhwani" rel="noopener noreferrer"&gt;buying me a coffee&lt;/a&gt;&lt;/strong&gt; 🥤&lt;/p&gt;

&lt;p&gt;Rohan Lekhwani is an open-source contributor and enthusiast. You can connect with him on &lt;strong&gt;&lt;a href="https://www.linkedin.com/in/rohanlekhwani/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;a href="http://github.com/RonLek" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;a href="https://twitter.com/rohanlekhwani" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/strong&gt; and his &lt;strong&gt;&lt;a href="https://ronlek.github.io/" rel="noopener noreferrer"&gt;website&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>programming</category>
      <category>webdev</category>
      <category>typescript</category>
    </item>
    <item>
      <title>Commit, Push, Merge: GSoC Coding Phase 1</title>
      <dc:creator>Rohan Lekhwani</dc:creator>
      <pubDate>Sun, 04 Jul 2021 08:31:03 +0000</pubDate>
      <link>https://dev.to/rohanlekhwani/commit-push-merge-gsoc-coding-phase-1-51i0</link>
      <guid>https://dev.to/rohanlekhwani/commit-push-merge-gsoc-coding-phase-1-51i0</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;What if I told you that the GSoC Coding Period is not all about coding? Surprised?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://summerofcode.withgoogle.com/"&gt;Google Summer of Code&lt;/a&gt; is a global student-focused open-source program. I recommend checking out my first blog in this series, if you’re new.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/rohanlekhwani/how-i-got-selected-into-google-summer-of-code-27"&gt;How I Got Selected into Google Summer of Code&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m a Google Summer of Code 2021 Student working with &lt;a href="http://rocket.chat/"&gt;Rocket.Chat&lt;/a&gt;. We’re in the middle of the Phase 1 of the Coding Period.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--d1PNR-nF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6f28ls4q919wev2n2pgv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--d1PNR-nF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6f28ls4q919wev2n2pgv.png" alt="GSoC 2021 Timeline"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Coding Period, and coding in general, does not involve only code. There’s another factor that is super-important. I’ve touched upon this towards the end.&lt;/p&gt;

&lt;p&gt;I’ve been making steady progress on my GSoC project - &lt;a href="https://summerofcode.withgoogle.com/projects/#6521788818784256"&gt;Poll App Mega Extensions&lt;/a&gt; and am additionally also contributing to &lt;a href="https://github.com/RonLek/RC4Community"&gt;RC4Community&lt;/a&gt; — Rocket.Chat’s portal to its community.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Features Have I Built into the Poll App?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Improved Response Visualizations&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The current Poll App has really bland and grayscale response visualizations. There’s no way to know which response is the winner.&lt;/p&gt;

&lt;p&gt;The only way to know the total number of votes casted is to manually count them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ADiVnbOg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/flm6if06wmnry0xmqayh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ADiVnbOg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/flm6if06wmnry0xmqayh.png" alt="The sad state of the Poll makes me Sad : ("&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The winner response needed to stand-out from the “non-winner” responses. This required rendering the winner response in a different color perhaps.&lt;/p&gt;

&lt;p&gt;There’s a tricky use-case here. What if there are multiple winning reponses?&lt;br&gt;
In that case all of them should be rendered with the same color.&lt;/p&gt;

&lt;p&gt;Since apps within Rocket.Chat make use of &lt;a href="https://developer.rocket.chat/apps-development/uikit"&gt;UIKit&lt;/a&gt; for rendering the frontend. I added a block for dynamically updating the number of total votes casted.&lt;/p&gt;

&lt;p&gt;Here’s the Poll App after a facelift (: P)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cJZAbSDX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hmlbecfpyrnlza0w589l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cJZAbSDX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hmlbecfpyrnlza0w589l.png" alt="The happy state of the Poll makes me Happy : )"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The PR for this feature can be found &lt;a href="https://github.com/RocketChat/rocket.chat.app-poll/pull/2"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Word Cloud Generation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Texts are okay. Bar graphs are good. Wordclouds are awesome!&lt;/p&gt;

&lt;p&gt;What if the Poll App could show a cool word-cloud of all the responses?&lt;/p&gt;

&lt;p&gt;Rocket.Chat’s use of UIKit for Apps is a major limitation towards this. &lt;strong&gt;RC-Apps don’t allow you to add an external npm package.&lt;/strong&gt; This means we needed to bid adieu to out-of-the-box packages like &lt;a href="https://github.com/jasondavies/d3-cloud"&gt;d3-cloud&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Since the only way to attach images to the message posted by a Rocket.Chat App is through an image URL. We needed an API. That’s when I stumbled across &lt;a href="https://quickchart.io/"&gt;Quickchart&lt;/a&gt; — an open-source Chart API that can also do word-clouds.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--m7StKuWN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fmrohvtatwwf7u6npwmv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--m7StKuWN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fmrohvtatwwf7u6npwmv.png" alt="Wordcloud generated through QuickChart WordCloud API"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And then there was another problem!&lt;/p&gt;

&lt;p&gt;Some organizations host an isolated server of Rocket.Chat. That means no access to public Internet. That means no Quickchart!&lt;/p&gt;

&lt;p&gt;Thankfully, my mentor and I had an idea to provide a setting for the Poll App where server administrators could let the Poll App know beforehand whether it could access the Internet. If it could — use Quickhart, if not — generate a poll summary.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8YzwHSOy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://miro.medium.com/max/600/1%2Ap-t1oqAFDkTD9W7hVSsHlQ.gif" class="article-body-image-wrapper"&gt;&lt;img alt="Poll App word cloud feature in action" src="https://res.cloudinary.com/practicaldev/image/fetch/s--8YzwHSOy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://miro.medium.com/max/600/1%2Ap-t1oqAFDkTD9W7hVSsHlQ.gif"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For those who speak code, here are the &lt;a href="https://github.com/RocketChat/rocket.chat.app-poll/issues/3"&gt;issue&lt;/a&gt; and &lt;a href="https://github.com/RocketChat/rocket.chat.app-poll/pull/6"&gt;PR&lt;/a&gt; corresponding to the word-cloud feature.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mixed Visibility of Responses&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Poll App offered only 2 types of poll visibilities — Open and Confidential. Everyone could see who voted what on an open poll. No one could see who voted what on a confidential poll.&lt;/p&gt;

&lt;p&gt;There was no middle way where members could see voter identities on some responses and on others they appeared as “Anonymous”.&lt;/p&gt;

&lt;p&gt;I built a modal that would open-up only when the poll creator chose mixed visibility.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KlQAa2h0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fbgq4hbzj3vyduektlfj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KlQAa2h0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fbgq4hbzj3vyduektlfj.png" alt="The poll creator can choose which options they want to be anonymous."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The challenge was remembering which options the user wanted to remain anonymized after submitting this modal.&lt;/p&gt;

&lt;p&gt;This was tackled by defining an &lt;code&gt;anonymousOptions&lt;/code&gt; property within the Poll interface. In cases where open or confidential visibilities polls were created, this would be an empty array. Doing this keeps the anonymous marked options along with the rest of the Poll properties.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0viBUGU5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hfk9eqw8zdiq514u9hbo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0viBUGU5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hfk9eqw8zdiq514u9hbo.png" alt="Mixed Visibility feature in Action. English and Spanish were selected as Anonymous.&amp;lt;br&amp;gt;
"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here are the &lt;a href="https://github.com/RocketChat/rocket.chat.app-poll/issues/4"&gt;issue&lt;/a&gt; and &lt;a href="https://github.com/RocketChat/rocket.chat.app-poll/pull/5"&gt;PR&lt;/a&gt; for the Mixed Visibility feature.&lt;/p&gt;

&lt;h3&gt;
  
  
  What’s the Super-Important Factor I Talked About?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/jV4wbvtJxdjnMriYmY/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img alt="Communication" src="https://i.giphy.com/media/jV4wbvtJxdjnMriYmY/giphy.gif"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Communicating thoroughly with not only your mentor but anyone who can help you! When I was coding the word-cloud feature I even reached out to &lt;a href="https://twitter.com/iwebst"&gt;Ian Webster&lt;/a&gt; the creator of Quickchart which saved us from an incorrect architectural move.&lt;/p&gt;

&lt;p&gt;This was the third article of my GSoC journey at Rocket.Chat. I’m writing biweekly blogs. Follow my voyage on &lt;a href="https://dev.to/rohanlekhwani"&gt;DEV&lt;/a&gt; and &lt;a href="https://rohanlekhwani.medium.com/about"&gt;Medium&lt;/a&gt;. ⭐&lt;/p&gt;

&lt;p&gt;In case you haven’t checked out the previous blog about &lt;strong&gt;How to Ensure a Successful Community Bonding Period&lt;/strong&gt;, hit the link below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/rohanlekhwani/google-summer-of-code-how-to-ensure-a-successful-community-bonding-period-2l42"&gt;How to Ensure a Successful Community Bonding Period&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Like what I do? Help me pull my next all-nighter. Consider &lt;a href="https://www.buymeacoffee.com/rohanlekhwani"&gt;buying me a coffee&lt;/a&gt;.🥤&lt;/p&gt;

&lt;p&gt;Rohan Lekhwani is an open source contributor and enthusiast. You can connect with him on &lt;a href="https://www.linkedin.com/in/rohanlekhwani/"&gt;LinkedIn&lt;/a&gt;, &lt;a href="http://github.com/RonLek"&gt;GitHub&lt;/a&gt;, &lt;a href="https://twitter.com/Rohanlekhwani"&gt;Twitter&lt;/a&gt;, and his &lt;a href="https://ronlek.github.io/"&gt;website&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>career</category>
      <category>webdev</category>
      <category>typescript</category>
    </item>
    <item>
      <title>Google Summer of Code: How to Ensure a Successful Community Bonding Period</title>
      <dc:creator>Rohan Lekhwani</dc:creator>
      <pubDate>Thu, 17 Jun 2021 14:36:16 +0000</pubDate>
      <link>https://dev.to/rohanlekhwani/google-summer-of-code-how-to-ensure-a-successful-community-bonding-period-2l42</link>
      <guid>https://dev.to/rohanlekhwani/google-summer-of-code-how-to-ensure-a-successful-community-bonding-period-2l42</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Ever wondered what the 21 day GSoC Community Bonding period is about and how to make the most of it?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You’ve made it to Google Summer of Code — the ultimate open-source development opportunity for students around the world.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/L6EoLS78pcBag/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img alt="Now What?" src="https://i.giphy.com/media/L6EoLS78pcBag/giphy.gif"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You are automatically entered into a phase called — &lt;strong&gt;Community Bonding Period&lt;/strong&gt; on your dashboard and your GSoC summer officially kicks in.&lt;/p&gt;

&lt;p&gt;If you opt-in you’ll be added to two mailing lists — the GSoC Students List comprising of all the GSoC students accepted this season and the GSoC Alumni list which consists of the &lt;strong&gt;10,000+ GSoCers&lt;/strong&gt; throughout the history of GSoC.&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%2F8cy72uo96f7ym5a3ku5i.jpg" 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%2F8cy72uo96f7ym5a3ku5i.jpg" alt="GSoC Profile with the ability to opt into mailing lists"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You would also receive a mail with a customized link to set-up your Payoneer account to recieve your stipend.&lt;/p&gt;

&lt;p&gt;In case you’re aspiring to be a GSoCer you can bookmark &lt;a href="https://docs.google.com/document/d/16jpmv6TP3ZAvJh7BKhnh7C25Jy4H1PFPmqOT7gnAWdw/edit" rel="noopener noreferrer"&gt;this&lt;/a&gt; doc to see what mails are sent by the GSoC organizers.&lt;/p&gt;

&lt;h3&gt;
  
  
  What you should do to ensure a successful Community Bonding Period
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Set-up Clear Communication with Mentors&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It’s likely that you’ve interacted with your mentors through text during the application period. Now is the time to get to know them better and there’s nothing better than a one-on-one video call.&lt;/p&gt;

&lt;p&gt;Schedule weekly one-on-one meets with your mentors. Doing this ensures both of you take out time from your schedules and meet at least once a week. This helps in preventing miscommunications and sudden revelations of misunderstandings.&lt;/p&gt;

&lt;p&gt;If possible, also form a channel on any &lt;a href="https://en.wikipedia.org/wiki/Internet_Relay_Chat" rel="noopener noreferrer"&gt;IRC&lt;/a&gt; your organization uses or else creating one on &lt;a href="https://open.rocket.chat/" rel="noopener noreferrer"&gt;Rocket.Chat&lt;/a&gt; is always a good idea.&lt;/p&gt;

&lt;p&gt;I meet my mentor — &lt;a href="https://www.linkedin.com/in/ramkumarkb?originalSubdomain=sg" rel="noopener noreferrer"&gt;Ramkumar KB&lt;/a&gt; every Friday at 1 PM.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Get Tasks Prioritized&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It’s been a month since you submitted your proposal. A lot has changed.&lt;/p&gt;

&lt;p&gt;Maybe a dependency on which a feature you’re about to implement is now deprecated. Maybe your organization needs a feature in your proposal implemented urgently.&lt;/p&gt;

&lt;p&gt;It is important to prioritize your implementation tasks for the upcoming coding period.&lt;/p&gt;

&lt;p&gt;I asked my mentor to set-up a &lt;a href="https://github.com/orgs/RocketChat/projects/40" rel="noopener noreferrer"&gt;Project Roadmap Board&lt;/a&gt; on GitHub to keep track of progress.&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%2F2fff2khd3hlgs447gj9d.jpg" 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%2F2fff2khd3hlgs447gj9d.jpg" alt="GitHub Project Roadmap for my GSoC project"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn your stack&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You might not have coded in a particular language required for your project before. Or you might not be familiar with how things work out internally.&lt;/p&gt;

&lt;p&gt;In my case I had just finished building &lt;a href="https://github.com/RonLek/Rocket.Chat.MemeBuddy" rel="noopener noreferrer"&gt;MemeBuddy&lt;/a&gt; and was getting started with Typescript and the Rocket.Chat Apps Engine.&lt;/p&gt;

&lt;p&gt;You should ask your mentors for resources to learn and they’ll be more than happy to help you out. Even if you feel you have experience working on a particular stack, ask them for resources and you’ll be amazed how much you still don’t know compared to your mentors (they’re mentors for a reason :P ).&lt;/p&gt;

&lt;p&gt;The community bonding period is the best time to get yourself boosted before the coding period starts.&lt;/p&gt;

&lt;p&gt;My awesome mentor sent me resources to learn Typescript. I’ve shared them at the end of the article for those interested in learning Typescript.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start Coding Already&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you’re done with all the planning why not start coding already?&lt;/p&gt;

&lt;p&gt;You’ll not only get a buffer at the end but also get a chance to try out newer approaches you didn’t mention in your proposal.&lt;/p&gt;

&lt;p&gt;I started working on my target for Week 1 of the Coding Period a week before the Coding Period actually started. Lo and behold:&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%2Fzj4zrwrphxmqa2zkbpwm.jpg" 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%2Fzj4zrwrphxmqa2zkbpwm.jpg" alt="My first GSoC PR (Now Merged)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I had my first GSoC PR raised before the week ended.&lt;/p&gt;

&lt;p&gt;This was the second article of my GSoC journey at Rocket.Chat. I’m writing biweekly blogs. Follow my voyage on &lt;a href="https://rohanlekhwani.medium.com/about" rel="noopener noreferrer"&gt;Medium&lt;/a&gt; and Devpost. ⭐&lt;/p&gt;

&lt;p&gt;In case you haven’t checked out the previous blog about How I Got Selected into Google Summer of Code, hit the link below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/rohanlekhwani/how-i-got-selected-into-google-summer-of-code-27"&gt;How I Got Selected into Google Summer of Code&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here are the resources that were shared with me by my mentor for learning Typescript. I found them pretty useful.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typescriptlang.org/docs/handbook/intro.html" rel="noopener noreferrer"&gt;Typescript Handbook&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://typescript-exercises.github.io/" rel="noopener noreferrer"&gt;Typescript Exercises&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typescript-weekly.com/" rel="noopener noreferrer"&gt;Typescript Weekly&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Like what I do? Help me pull my next all-nighter. Consider &lt;a href="https://www.buymeacoffee.com/rohanlekhwani" rel="noopener noreferrer"&gt;buying me a coffee&lt;/a&gt;.🥤&lt;/p&gt;

&lt;p&gt;Rohan Lekhwani is an open source contributor and enthusiast. You can connect with him on &lt;a href="https://www.linkedin.com/in/rohanlekhwani/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, &lt;a href="http://github.com/RonLek" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, &lt;a href="https://twitter.com/Rohanlekhwani" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, and his &lt;a href="https://ronlek.github.io/" rel="noopener noreferrer"&gt;website&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>career</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How I Got Selected into Google Summer of Code</title>
      <dc:creator>Rohan Lekhwani</dc:creator>
      <pubDate>Thu, 03 Jun 2021 08:55:25 +0000</pubDate>
      <link>https://dev.to/rohanlekhwani/how-i-got-selected-into-google-summer-of-code-27</link>
      <guid>https://dev.to/rohanlekhwani/how-i-got-selected-into-google-summer-of-code-27</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;More than 50,000 students around the world register for GSoC every year and of those who submit a proposal only 1200 are accepted.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Organizations at GSoC work within Operating Systems to Web to Cloud and even applications within Science and Medicine thereby covering almost the entire spectrum of Computer Science.&lt;/p&gt;

&lt;p&gt;I got selected by Rocket.Chat.&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%2Fsag594vzwpfylfeai52d.jpg" 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%2Fsag594vzwpfylfeai52d.jpg" alt="GSoC Acceptance Mail"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://rocket.chat" rel="noopener noreferrer"&gt;Rocket.Chat&lt;/a&gt; is the ultimate communication platform for teams — say an open-sourced Slack with a different business model.&lt;/p&gt;

&lt;p&gt;It offers web and phone based communication platforms, integrated omnichannel features and even has an &lt;a href="https://rocket.chat/marketplace/" rel="noopener noreferrer"&gt;App Store&lt;/a&gt; of its own where you can publish and monetize apps that run on Rocket.Chat!&lt;/p&gt;

&lt;h3&gt;
  
  
  What I did before applying to GSoC
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Selecting Organizations&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Around December, I started going through organizations that got selected into GSoC the past year and shortlisting them based on a few &lt;strong&gt;criteria&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The last word is super-important here — to set out a criteria before selecting an organization.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;My plan was to select 3 organizations and then shortlist one or two out of them further as time progressed. Here is what I set my org criteria to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Work related to Web and Javascript.
2. Multiple projects awarded consistently.
3. Org selected every year at GSoC.
4. Repository remains active on GitHub.
5. A bigger org.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After about a week, I had shortlisted CircuitVerse, CloudCV and of course Rocket.Chat. Out of these three, Rocket.Chat fitted all of my criteria.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open-source Contribution Leaderboard&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Rocket.Chat has this amazing &lt;a href="https://gsoc.rocket.chat/" rel="noopener noreferrer"&gt;GSoC contribution leaderboard&lt;/a&gt; (started by a past GSoCer at Rocket.Chat) that counts how many contributions every student is making across all Rocket.Chat repositories. The top-10 contributors get a chance for a one-on-one with Gabriel Engel, the Founder and CEO of Rocket.Chat.&lt;/p&gt;

&lt;p&gt;I joined the &lt;a href="https://open.rocket.chat/channel/gsoc2021" rel="noopener noreferrer"&gt;#gsoc2021&lt;/a&gt; channel within Rocket.Chat and started making smaller contributions to the Rocket.Chat main repository at first. Communicating with Rocketeers led me to start working on the &lt;a href="https://github.com/RocketChat/Opensource-Contribution-Leaderboard" rel="noopener noreferrer"&gt;GSoC contribution leaderboard&lt;/a&gt; repository in a team of four.&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%2Fp9e9a9kp455g5ts7i14m.jpg" 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%2Fp9e9a9kp455g5ts7i14m.jpg" alt="GSoC Contribution Leaderboard. I’m at number 5 :P"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I worked on filtering contributors by time, building an inclusion/exclusion list where the admin would be able to select which Rocket.Chat repositories to consider when counting contributions, dockerizing the application and fixing bugs. &lt;/p&gt;

&lt;p&gt;My contributions to this repository can be found &lt;a href="https://github.com/search?q=author:RonLek+repo:RocketChat/Opensource-Contribution-Leaderboard&amp;amp;type=issues" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RC4Community&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After deploying the GSoC Contribution Leaderboard, we started working on a more ambitious project in January — RC4Community!&lt;/p&gt;

&lt;p&gt;RC4Community, a project we built from scratch, was set to be a one-stop collaboration platform for teams using Git, in other words, Rocket.Chat’s own Gitter. Our power-team (as we called ourselves :P) worked super-hard for the next 3 months to give life to RC4Community.&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%2Fm0lvs2a4vuywlc3bdwqg.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%2Fm0lvs2a4vuywlc3bdwqg.png" alt="RC4Community in action at [https://community.rocket.chat/](https://community.rocket.chat/)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I worked specifically on the frontend and backend for creating channels and communities on a Rocket.Chat server from the RC4Community client, providing real-time user statistics — that is real-time updation of when users were online or away, repository information for every channel linked to a repository, CRUD operations for custom GitHub webhooks for repositories, embed badges for direct links to RC4Community rooms, dockerizing the application and a demo mode within RC4Community that set the path for what was to come.&lt;/p&gt;

&lt;p&gt;My contributions to RC4Community can be found &lt;a href="https://github.com/search?q=author:RonLek+repo:RocketChat/RC4Community&amp;amp;type=issues" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MemeBuddy&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Around the end of March, I started developing an interest within Rocket.Chat Apps. These were Typescript coded (which I was unfamiliar with back then) and worked within the Rocket.Chat ecosystem.&lt;/p&gt;

&lt;p&gt;I had an idea that I thought was really cool. What if there was an app bot that could fetch memes from Reddit and post it directly within a Rocket.Chat room? The idea for MemeBuddy was born. It is Discord’s equivalent to DankMemer (installed on 5 million Discord servers) for Rocket.Chat.&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%2Frd3e7bsflnr2nnt6pzjy.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%2Frd3e7bsflnr2nnt6pzjy.gif" alt="MemeBuddy triggered by /meme serving within Rocket.Chat"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I extended MemeBuddy to not only work within the Rocket.Chat team collaboration platform but also within their LiveChat Widget used by millions of users on a daily basis. Find MemeBuddy on the &lt;a href="https://rocket.chat/marketplace?category=Social+%26+Fun" rel="noopener noreferrer"&gt;Rocket.Chat Apps Marketplace&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;The repository for MemeBuddy can be found &lt;a href="https://github.com/RonLek/Rocket.Chat.MemeBuddy" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you found this cool. I even wrote a Medium &lt;a href="https://rohanlekhwani.medium.com/making-a-rocket-chat-app-8eaaa0263e39" rel="noopener noreferrer"&gt;blog&lt;/a&gt; over how you can make your own Rocket.Chat App.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I did while applying to GSoC
&lt;/h3&gt;

&lt;p&gt;Every year Rocket.Chat publishes its &lt;a href="https://docs.rocket.chat/contributors/google-summer-of-code/google-summer-of-code-2021" rel="noopener noreferrer"&gt;ideas list&lt;/a&gt; for GSoC. I was particularly interested in the Poll App Mega Extensions project (since I was fascinated with apps) and the Community Collaboration Platform: Improvements project (this is RC4Community in case you’re wondering :P).&lt;/p&gt;

&lt;p&gt;I got in touch with mentors of both the projects through Rocket.Chat rooms made specifically for discussion about each individual project idea. Mentors at Rocket.Chat were truly welcoming and made every effort to resolve doubts and confusions regarding ideas.&lt;/p&gt;

&lt;p&gt;I made sure to reciprocate mentors’ efforts by building sort of an MVP for a few features within the project ideas and got feedback over it. I followed a similar approach while writing my proposal. I read through the proposals of past GSoCers at Rocket.Chat and gleaned the important stuff I could use in mine. I made sure to get feedback after my first and final drafts from my mentors.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Getting feedback from mentors is of utmost importance. Make sure you leave enough time for them to review your proposal.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I included Figma designs and code snippets for implementation details. I tried making my proposal as detailed and substance-driven as possible. In the timeline section I made sure to give a week-by-week estimate of what I would do.&lt;/p&gt;

&lt;p&gt;By the end of the application period I had submitted two proposals — one for the Poll App (31 pages!) and the other for the RC4Community project (18 pages). I’ll be sure to share links to both of my proposals along with Figma files later in this blog series.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Project
&lt;/h3&gt;

&lt;p&gt;My Poll App Mega Extensions proposal got accepted! (good observation if you already saw that coming in the acceptance mail)&lt;/p&gt;

&lt;p&gt;The Poll App is the &lt;a href="https://rocket.chat/blog/product/top-8-the-most-popular-rocket-chat-apps/" rel="noopener noreferrer"&gt;numero uno&lt;/a&gt; among the most popular Rocket.Chat Apps. My mission during GSoC is to revamp the App to match it with its competitors (Polly.ai, Mentimeter, Kahoot!) by providing a truck-load of features.&lt;/p&gt;

&lt;p&gt;I’ll be working with my mentor during the GSoC period to extend the Poll App both through improved visualizations and additional functionalities.&lt;/p&gt;

&lt;p&gt;I’ll be writing biweekly blogs about my GSoC journey at Rocket.Chat. Follow my voyage on &lt;a href="https://rohanlekhwani.medium.com/about" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;. ⭐&lt;/p&gt;




&lt;p&gt;Like what I do? Help me pull my next all-nighter. Consider &lt;a href="https://www.buymeacoffee.com/rohanlekhwani" rel="noopener noreferrer"&gt;buying me a coffee&lt;/a&gt;.🥤&lt;/p&gt;

&lt;p&gt;Rohan Lekhwani is an open source contributor and enthusiast. You can connect with him on &lt;a href="https://www.linkedin.com/in/rohanlekhwani/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, &lt;a href="http://github.com/RonLek" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, &lt;a href="https://twitter.com/Rohanlekhwani" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, and his &lt;a href="https://ronlek.github.io/" rel="noopener noreferrer"&gt;website&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>typescript</category>
      <category>webdev</category>
      <category>career</category>
    </item>
    <item>
      <title>Your all-in-one accessibility and productivity Chrome Extension.</title>
      <dc:creator>Rohan Lekhwani</dc:creator>
      <pubDate>Sat, 15 May 2021 18:47:30 +0000</pubDate>
      <link>https://dev.to/rohanlekhwani/your-all-in-one-accessibility-and-productivity-chrome-extension-h2p</link>
      <guid>https://dev.to/rohanlekhwani/your-all-in-one-accessibility-and-productivity-chrome-extension-h2p</guid>
      <description>&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%2Fl2p2ydwhhzen8e25hlmh.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%2Fl2p2ydwhhzen8e25hlmh.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hey Dev Community!&lt;/p&gt;

&lt;p&gt;We just launched &lt;a href="https://chrome.google.com/webstore/detail/someity/jifjdmnjnmpbclnpjlmebkclilekkdho" rel="noopener noreferrer"&gt;Someity&lt;/a&gt; - the only tool you need to start taking control of webpages in your browser. 🐶&lt;/p&gt;

&lt;p&gt;Someity is an overall winner at a Major League Hacking hackathon. After days of hard work we transformed it from a weekend hack to a full-fledge product (our first, yay!) on Product Hunt.&lt;/p&gt;

&lt;p&gt;Here's what Someity can do for you:&lt;/p&gt;

&lt;p&gt;🤖 Someity Actions&lt;br&gt;
Navigate webpages, play music, translate from any language to English and get directions just by speaking to Someity.&lt;/p&gt;

&lt;p&gt;🔤 Webpage Font Customizations&lt;br&gt;
Customize font type, colors and sizes on any webpage on the Internet!&lt;/p&gt;

&lt;p&gt;🤟 Sign Language Support&lt;br&gt;
We know not everyone might be comfortable understanding written-languages and so we included Sign Language support. Transform webpage text into sign language with just a click!&lt;/p&gt;

&lt;p&gt;🎯 Focus Mode&lt;br&gt;
Suffering from cognitive impairments or just want to kill out all distractions while working? Focus Mode helps you veil images and highlight words on scroll. No more getting distracted!&lt;/p&gt;

&lt;p&gt;🔎 Magnifier&lt;br&gt;
Images not a11y compliant and appear too small to make sense of it? Magnifier is just the right tool for you. Enable and hover over images to watch it in action!&lt;/p&gt;

&lt;p&gt;👀 Color Blind Aid&lt;br&gt;
We want Someity to be for all and hence we built in color blindness features. Emphasize links in multi-colors and add text strokes to paragraph texts in a user-defined color effective for all types of color blindness.&lt;/p&gt;

&lt;p&gt;🖨️ Take your webpages with you&lt;br&gt;
Someity offers easy to use print screen and screen capture features making it way easier for non-tech savvy and accessibility prone users to operate.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Check out - &lt;a href="https://someity.tech" rel="noopener noreferrer"&gt;https://someity.tech&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Try it out and let us know your feedback and any exciting new features that you would want Someity to have ❤️ &lt;/p&gt;

</description>
      <category>productivity</category>
      <category>showdev</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
