<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>opensource on Sourav Badami</title>
    <link>https://souravbadami.com/tags/opensource/</link>
    <description>Recent content in opensource on Sourav Badami</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-US</language>
    <lastBuildDate>Tue, 31 May 2022 16:39:01 +0530</lastBuildDate><atom:link href="https://souravbadami.com/tags/opensource/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>heating issues with MacBook Pro</title>
      <link>https://souravbadami.com/heating-issues-with-macbook-pro/</link>
      <pubDate>Tue, 31 May 2022 16:39:01 +0530</pubDate>
      
      <guid>https://souravbadami.com/heating-issues-with-macbook-pro/</guid>
      <description>this post covers a set of configurations and external factors to assess and fix heating issues with MacBook Pro; some of the below might work for you and some might not. i&amp;rsquo;ve curated this list from my own hit and trial experiments.
Device: MacBook Pro (16-inch, 2019)
activity monitor check your activity monitor and figure out the processes with max CPU and memory consumption; manually close some of them if you&amp;rsquo;re not using it.</description>
    </item>
    
    <item>
      <title>identifying default vs unset values in Google Protocol Buffers (proto3)</title>
      <link>https://souravbadami.com/identifying-default-vs-unset-values-in-google-protocol-buffers-proto3/</link>
      <pubDate>Wed, 24 Jun 2020 02:31:13 +0530</pubDate>
      
      <guid>https://souravbadami.com/identifying-default-vs-unset-values-in-google-protocol-buffers-proto3/</guid>
      <description>what are Protocol Buffers / Protobuf? Protocol Buffers are Google&amp;rsquo;s language-neutral, platform-neutral, extensible mechanism for serializing structured data – think XML, but smaller, faster, and simpler; you define how you want your data to be structured once, then you can use special generated source code to easily write and read your structured data to and from a variety of data streams and using a variety of languages.
problem in proto3, all fields are &amp;ldquo;optional&amp;rdquo; (it is not an error if the sender fails to set them); but fields are no longer &amp;ldquo;nullable&amp;rdquo;, there&amp;rsquo;s no way to tell the difference between a field being explicitly set to its default value vs.</description>
    </item>
    
    <item>
      <title>first contribution to open source</title>
      <link>https://souravbadami.com/first-contribution-to-open-source/</link>
      <pubDate>Sat, 02 Nov 2019 02:31:13 +0530</pubDate>
      
      <guid>https://souravbadami.com/first-contribution-to-open-source/</guid>
      <description>it’s hard; it’s always hard the first time you do something. collaborating makes it worse — mistakes feel public, and git doesn’t exactly hold your hand.
reading articles helps a little; doing the thing in a safe environment helps a lot more. we built a small practice track so beginners can make a real first contribution without needing to understand a giant codebase on day one. the point isn’t the commit — it’s crossing the line from “i want to contribute” to “i already did.</description>
    </item>
    
    <item>
      <title>the requested address is not valid in its context</title>
      <link>https://souravbadami.com/the-requested-address-is-not-valid-in-its-context/</link>
      <pubDate>Wed, 15 Nov 2017 02:31:13 +0530</pubDate>
      
      <guid>https://souravbadami.com/the-requested-address-is-not-valid-in-its-context/</guid>
      <description>facing this with Python 2.7 and ftplib? i won’t waste your time; let’s fix it.
the error shows up when passive mode returns an address your client can’t route to. ftplib trusts that address; your network doesn’t. so we stop trusting it — subclass FTP_TLS, keep the port from makepasv, and force the host you already connected to.
import ftplib class FTP_TLS_UNROUTABLE_HOST(ftplib.FTP_TLS, object): def makepasv(self): _, port = super(FTP_TLS_UNROUTABLE_HOST, self).makepasv() return self.</description>
    </item>
    
    <item>
      <title>Logstash -&gt; Azure Event Hub | log &amp; event management utility | NodeJS</title>
      <link>https://souravbadami.com/logstash-azure-event-hub-log-event-management-utility-nodejs/</link>
      <pubDate>Fri, 17 Mar 2017 02:31:13 +0530</pubDate>
      
      <guid>https://souravbadami.com/logstash-azure-event-hub-log-event-management-utility-nodejs/</guid>
      <description>Logstash is an open source data collection engine with real-time pipelining capabilities; Logstash can dynamically unify data from disparate sources and normalize the data into destinations of your choice. cleanse and democratize all your data for diverse advanced downstream analytics and visualization use cases. (Source)
Event Hubs is a highly scalable data streaming platform capable of ingesting millions of events per second; data sent to an Event Hub can be transformed and stored using any real-time analytics provider or batching/storage adapters.</description>
    </item>
    
    <item>
      <title>MyCleanIndia app</title>
      <link>https://souravbadami.com/mycleanindia-app/</link>
      <pubDate>Mon, 09 Jan 2017 02:31:13 +0530</pubDate>
      
      <guid>https://souravbadami.com/mycleanindia-app/</guid>
      <description>you can’t fix what you can’t see; cities have plenty of unhygienic spots that never make it onto a map.
MyCleanIndia was a project to tag those places on Google Maps (Maps API v3), with a Python backend. the goal was simple — make cleanliness gaps visible so people and civic systems have something concrete to act on. it was a student project, rough in places, but it taught me a lot about shipping something public instead of just talking about impact.</description>
    </item>
    
    <item>
      <title>passport status change notifier</title>
      <link>https://souravbadami.com/passport-status-change-notifier/</link>
      <pubDate>Sun, 16 Oct 2016 02:31:13 +0530</pubDate>
      
      <guid>https://souravbadami.com/passport-status-change-notifier/</guid>
      <description>waiting on an Indian passport application is mostly refreshing a status page and hoping the text moved.
i wrote a small Python script that checks the status every hour and fires a desktop notification when it changes. no dashboard, no app store listing — just one less tab open in my brain while bureaucracy does its thing.
code: passportstatus.py.</description>
    </item>
    
    <item>
      <title>DuckDuckGo — ComeToTheDuckSide</title>
      <link>https://souravbadami.com/duckduckgo-cometotheduckside/</link>
      <pubDate>Fri, 16 Sep 2016 02:31:13 +0530</pubDate>
      
      <guid>https://souravbadami.com/duckduckgo-cometotheduckside/</guid>
      <description>the open source search engine that doesn’t track or store your personal information; the other giants show you creepy ads and sell your data to advertisers. stop being followed; start using DuckDuckGo.
what i liked beyond privacy: you can extend the engine itself. Instant Answers and cheatsheets push useful info onto the results page — ZeroClickInfo — so people get what they need without drowning in blue links.
you can build fatheads, goodies, and other IAs to help people find answers faster.</description>
    </item>
    
    <item>
      <title>advanced packaging tool</title>
      <link>https://souravbadami.com/advanced-packaging-tool/</link>
      <pubDate>Mon, 12 Sep 2016 02:31:13 +0530</pubDate>
      
      <guid>https://souravbadami.com/advanced-packaging-tool/</guid>
      <description>if you’ve used Debian for more than a week, you’ve typed apt-get without thinking; that’s the point.
APT is the front end over dpkg — a simpler, safer way to install and upgrade packages than wrestling the lower-level tools by hand. the SCM history lived at https://alioth.debian.org/anonscm/git/apt/apt.git; around the time i wrote this, Release 1.3~rc4 was the latest in the logs.
sometimes you still need an rpm on a Debian box; compatibility is messy, but alien gets you most of the way:</description>
    </item>
    
    <item>
      <title>calendar application</title>
      <link>https://souravbadami.com/calendar-application/</link>
      <pubDate>Mon, 29 Aug 2016 02:31:13 +0530</pubDate>
      
      <guid>https://souravbadami.com/calendar-application/</guid>
      <description>i got tired of juggling events across apps; so i built one place for them.
this is a Django app where you can save events on a calendar and sync them with a private Google Calendar. the interesting bit wasn’t the UI — it was wiring auth, sync, and persistence so the two calendars don’t fight each other.
repo with build steps: calendarapp. an older instance lived on Heroku.</description>
    </item>
    
    <item>
      <title>birthday wishing bot</title>
      <link>https://souravbadami.com/birthday-wishing-bot/</link>
      <pubDate>Tue, 23 Aug 2016 02:31:13 +0530</pubDate>
      
      <guid>https://souravbadami.com/birthday-wishing-bot/</guid>
      <description>forgetting birthdays is easy; automating them is easier.
this is a small Python bot that reads a list of birthdays and posts a wish to a Facebook page via the Graph API. nothing clever about the wish itself — the point was learning how page publishing works end to end, and removing one more thing from my head.
code’s here.</description>
    </item>
    
    <item>
      <title>auto hibernate</title>
      <link>https://souravbadami.com/auto-hibernate/</link>
      <pubDate>Sun, 14 Aug 2016 02:28:01 +0530</pubDate>
      
      <guid>https://souravbadami.com/auto-hibernate/</guid>
      <description>most machines don’t know when you’ve walked away; they just sit there burning power until you remember to close the lid.
i built a small Python script that watches the room through a camera, uses OpenCV for motion detection, and hibernates the system when nobody’s nearby for a while. no fancy product — just a useful automation for a machine that sits idle too often.
code’s on GitHub.</description>
    </item>
    
    <item>
      <title>Oppia interactive tutor</title>
      <link>https://souravbadami.com/oppia-interactive-tutor/</link>
      <pubDate>Sat, 23 Jul 2016 02:09:56 +0530</pubDate>
      
      <guid>https://souravbadami.com/oppia-interactive-tutor/</guid>
      <description>most online lessons are still PDFs with a quiz bolted on; Oppia is closer to a tutor sitting across the table.
you build “explorations” — interactive activities that feel like a one-on-one conversation. students learn by doing, get feedback along the way, and contributors can ship lessons without waiting for a curriculum committee. i spent time around this project because the idea is simple and hard: education that responds, instead of education that broadcasts.</description>
    </item>
    
  </channel>
</rss>
