<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Prem Kumar</title>
    <description>The latest articles on Forem by Prem Kumar (@onprem).</description>
    <link>https://forem.com/onprem</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%2F247594%2Fe45aadf3-78df-45d9-96e4-fcc516023c21.jpg</url>
      <title>Forem: Prem Kumar</title>
      <link>https://forem.com/onprem</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/onprem"/>
    <language>en</language>
    <item>
      <title>Me, Thanos and GSoC</title>
      <dc:creator>Prem Kumar</dc:creator>
      <pubDate>Fri, 04 Sep 2020 17:36:55 +0000</pubDate>
      <link>https://forem.com/onprem/me-thanos-and-gsoc-l90</link>
      <guid>https://forem.com/onprem/me-thanos-and-gsoc-l90</guid>
      <description>&lt;h1&gt;
  
  
  The beginning
&lt;/h1&gt;

&lt;p&gt;The &lt;a href="https://summerofcode.withgoogle.com/" rel="noopener noreferrer"&gt;GSoC website&lt;/a&gt; gives a pretty good introduction to what it is all about.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Google Summer of Code is a global program focused on bringing more student developers into open source software development. Students work with an open source organization on a 3 month programming project during their break from school.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I knew about GSoC from quite some time, mostly because some of my college seniors who had participated in GSoC in the past. They encouraged us to get involved in the open-source community. I had quite a bit of experience in web development with React so I started looking for organizations where I can start contributing to web-related stuff.&lt;/p&gt;

&lt;p&gt;I have always been interested in things like hosting websites, running a mail server, automated deployments, etc. Inevitably, I came across Kubernetes and the whole Cloud Native landscape. So, coming back to GSoC, I decided to take a look at the CNCF projects. I was not expecting any web related projects here but to my surprise, I came across a proposal by the Thanos team to migrate their web UI to React. This looked like a perfect match for me. Thanos is mainly written in Go and I had started learning it a few weeks back. To me, this was an opportunity to get more experience with GoLang. So I hopped onto the CNCF slack and started lurking on #thanos and #thanos-dev channels.&lt;/p&gt;

&lt;h1&gt;
  
  
  Enter, Thanos!
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fs8i07bhvfc9l15rak3cf.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%2Fi%2Fs8i07bhvfc9l15rak3cf.jpg" alt="Thanos figurine"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://thanos.io" rel="noopener noreferrer"&gt;Thanos&lt;/a&gt; describes itself as &lt;em&gt;"Open source, highly available Prometheus setup with long term storage capabilities."&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Now the question is, what is Prometheus?
&lt;/h3&gt;

&lt;p&gt;In short, &lt;a href="https://prometheus.io" rel="noopener noreferrer"&gt;Prometheus&lt;/a&gt; is a systems monitoring and alerting toolkit. People use Prometheus to monitor various kinds of workloads, from their application to the infrastructure the application is deployed on. Prometheus was initially created with more focus on real-time monitoring, with data retention requirements in order of a few months.&lt;/p&gt;

&lt;p&gt;Thanos was created to address these limitations. With Thanos, you can have a highly available Prometheus setup, with unlimited retention of data. It allows you to store the metrics generated by Prometheus in object storage of your choice. It also allows you to have a global view of metrics from all of the Prometheus instances.&lt;/p&gt;

&lt;h1&gt;
  
  
  So, what am I doing?
&lt;/h1&gt;

&lt;p&gt;Thanos has a web UI that is mostly similar to the Prometheus web UI with some additional features related to Thanos. Recently, Prometheus moved to a new web UI written in React and TypeScript. My goal is to port the new Prometheus web UI to Thanos and then further extend it to various components of Thanos. I have been working towards this goal for the past two and a half months and I'll share more about it in future blog posts.&lt;/p&gt;

&lt;h1&gt;
  
  
  My experience as a Thanos mentee
&lt;/h1&gt;

&lt;p&gt;My experience as a GSoC mentee at Thanos has been excellent in all possible ways. Looking back to it, I think my experience doesn't have much to do with GSoC. I am not saying that being a GSoC student didn't provide me with any benefits. It was an important milestone in my life and I consider myself very lucky that I got selected. It's just that the experiences I had are not exclusive to GSoC. Heck, the barrier to entry is so low in open-source that I can't help but think that I should have started sooner. The open-source community is very inclusive and friendly. And it's not just limited to code, they'll help you with anything you can imagine. In a sense, this feels more like a family rather than just a bunch of people working on the same project.&lt;/p&gt;

&lt;p&gt;Now, let's talk about some of those "experiences" I mentioned. My favorite thing about this summer is the Thanos Mentees' Hangouts. This summer, there were a total of 5 mentees working on Thanos including me. We decided to do a call every week where we discussed our projects, the progress we made, and random stuff. After a few of these, one of us mentees (shoutout to &lt;a href="https://twitter.com/Thisisobate" rel="noopener noreferrer"&gt;Uche&lt;/a&gt;!) got the idea to invite Thanos maintainers in our calls. We invited a different maintainer in each call. We would ask questions related to their work, about software engineering, or life in general. Now I think you can understand why this is my favorite. We got to listen to so many interesting stories, solid bits of advice, and a few jokes. This was such a unique experience for me. I got to learn so many things in these hangouts. These hangouts are definitely going to shape my decisions in the future. I also got the chance to attend PromCon and KubeCon this year, albeit virtually due to the ongoing pandemic. I got a chance to meet more people outside of Thanos (virtually, but I hope to attend an in-person conference someday).&lt;/p&gt;

&lt;h1&gt;
  
  
  The future
&lt;/h1&gt;

&lt;p&gt;What the future holds for us is always a surprise, but we still can have a few expectations, right? In the future, I'd like to contribute more to Thanos and get more involved in the community. Most of my work has been around the UI and API stuff and I'd like to contribute code to other areas as well. I'd also like to start contributing to other projects as well. I already have a few improvements in my mind that I want to upstream to the Prometheus UI.&lt;/p&gt;

&lt;p&gt;In conclusion, this summer was a very unique and awesome experience for me. Thank you very much all of the Thanos community and especially my mentors and the co-mentees for making this summer enjoyable on a whole new level. Okay then, until next time. :)&lt;/p&gt;

</description>
      <category>gsoc</category>
      <category>thanos</category>
    </item>
    <item>
      <title>Submission: GoNotify: WhatsApp messages as a Service</title>
      <dc:creator>Prem Kumar</dc:creator>
      <pubDate>Thu, 30 Apr 2020 17:28:39 +0000</pubDate>
      <link>https://forem.com/onprem/submission-gonotify-whatsapp-messages-as-a-service-10c</link>
      <guid>https://forem.com/onprem/submission-gonotify-whatsapp-messages-as-a-service-10c</guid>
      <description>&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;GoNotify is a service that can be used to send notifications to yourself in the form of WhatsApp messages. For example, you can use this to send yourself notifications if a build fails in the CI, etc. This service extracts out the logic behind maintaining various contacts, managing them into groups, and sending them messages. GoNotify provides you with a simple WebUI and API to manage the phone numbers and groups, and send them notifications. &lt;/p&gt;

&lt;h4&gt;
  
  
  Category Submission: Engaging Engagements
&lt;/h4&gt;

&lt;p&gt;GoNotify can easily be leveraged by a business to send notifications to its customers and employees without much hassle.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo Link
&lt;/h2&gt;

&lt;p&gt;A demo is hosted on &lt;a href="https://gonotify.xyz"&gt;https://gonotify.xyz&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Important Note:&lt;/em&gt; To be able to receive messages over WhatsApp using &lt;a href="https://gonotify.xyz"&gt;https://gonotify.xyz&lt;/a&gt;, you would need to join the Twilio WhatsApp sandbox first.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can join the sandbox easily by using this link &lt;a href="https://wa.me/14155238886?text=join%20including-tin"&gt;https://wa.me/14155238886?text=join%20including-tin&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Q9ag6p53--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/04ag25r3z4eqovyh8pgz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Q9ag6p53--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/04ag25r3z4eqovyh8pgz.png" alt="Sandbox QR" width="200" height="200"&gt;&lt;/a&gt;&lt;br&gt;
Or by scanning this QR code on your phone.&lt;/p&gt;
&lt;h2&gt;
  
  
  Link to Code
&lt;/h2&gt;

&lt;p&gt;The code is hosted on my GitHub profile. &lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/onprem"&gt;
        onprem
      &lt;/a&gt; / &lt;a href="https://github.com/onprem/gonotify"&gt;
        gonotify
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A web service that lets you send yourself WhatsApp messages serving as notifications
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  How I built it
&lt;/h2&gt;

&lt;p&gt;I started learning Go recently and this seemed like an ideal opportunity to gain some good experience with the language. It was pretty challenging and fun. I used &lt;code&gt;Gin&lt;/code&gt; as it seemed like a mature web framework to me. The front-end was built using ReactJS as I am quite familiar with it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Some Screenshots
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aN0FVWNc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/75nxj3lycz8m9j2l3kew.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aN0FVWNc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/75nxj3lycz8m9j2l3kew.png" alt="Groups" width="880" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0MsINGXg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/fzlmv5huv2u9t2yy6ngl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0MsINGXg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/fzlmv5huv2u9t2yy6ngl.png" alt="Numbers" width="880" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Additional Resources/Info
&lt;/h2&gt;

&lt;p&gt;Additional details can be found in &lt;a href="https://github.com/prmsrswt/gonotify/blob/master/README.md"&gt;this Project's README&lt;/a&gt;&lt;/p&gt;

</description>
      <category>twiliohackathon</category>
      <category>showdev</category>
    </item>
    <item>
      <title>WhatsApp messages as a Service</title>
      <dc:creator>Prem Kumar</dc:creator>
      <pubDate>Mon, 20 Apr 2020 21:02:51 +0000</pubDate>
      <link>https://forem.com/onprem/whatsapp-messages-as-a-service-3kc</link>
      <guid>https://forem.com/onprem/whatsapp-messages-as-a-service-3kc</guid>
      <description>&lt;p&gt;This is my idea for the ongoing &lt;a href="https://dev.to/devteam/announcing-the-twilio-hackathon-on-dev-2lh8"&gt;Twilio Hackathon&lt;/a&gt;. A web service that lets you send WhatsApp messages to yourself programmatically, serving as a notification system.&lt;/p&gt;

&lt;h2&gt;
  
  
  Some Background
&lt;/h2&gt;

&lt;p&gt;This idea struck me when I was setting up a seedbox. The seedbox, which is hosted on a Google Cloud Instance is used to download torrents (Linux ISOs, of course :P) and then upload them to a folder in my Google Drive. The thing was I had no way of knowing that if the downloaded file has been uploaded to the drive or not other than to refresh the Google Drive website regularly or tailing the logs of my seedbox.&lt;/p&gt;

&lt;p&gt;I needed some kind of notification service, which can notify me that the upload is complete. The first thing that came to my mind was emails. I can shoot myself an email using some email provider like Gmail which lets me use the service over SMTP. But emails felt clunky to me and it also came with the risk of the email getting buried in spam. The ideal solution for me was WhatsApp! It would be so nice to send myself a WhatsApp message rather than an email for this kind of notifications. And Twilio's WhatsApp messaging API makes this solution very approachable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use Case
&lt;/h2&gt;

&lt;p&gt;My use case is simple. I needed a service that I can use to send myself notifications on WhatsApp without much fuss.&lt;/p&gt;

&lt;h2&gt;
  
  
  Idea
&lt;/h2&gt;

&lt;p&gt;I plan to create a web-service, on which a user can register himself/herself and add some WhatsApp numbers to their account. Then they can use the API to programmatically send messages to previously registered mobile numbers. To make this easier a command-line client would be great. I plan on implementing something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;wnotify &lt;span class="s2"&gt;"File Uploaded"&lt;/span&gt;
Message sent to the default number.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The user can also create reminders using the WebUI or by sending a message through WhatsApp, which then will be delivered to the user when scheduled.&lt;/p&gt;

&lt;h2&gt;
  
  
  Some Implementation Details
&lt;/h2&gt;

&lt;p&gt;I started learning Golang recently and I am thinking of using it in this project. For the WebUI, I am going to use ReactJS as I am quite familiar with it.&lt;/p&gt;

&lt;p&gt;I would like the message sending logic to be modular. So in the future, I can easily expand it to services other than WhatsApp, like Slack, Telegram, Mattermost, etc.&lt;/p&gt;

&lt;p&gt;This service can also be leveraged for reminders etc. Maybe a plugin system makes sense here.&lt;/p&gt;

&lt;p&gt;I would love to hear your opinions about it so please let me know what you think about it. :)&lt;/p&gt;

&lt;p&gt;&lt;em&gt;PS: This is my first post on Dev, so yay!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>twiliohackathon</category>
    </item>
  </channel>
</rss>
