<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Pradyun Gedam</title><link>https://pradyunsg.me/</link><description>Recent content on Pradyun Gedam</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Sun, 17 Mar 2024 00:00:00 +0000</lastBuildDate><atom:link href="https://pradyunsg.me/index.xml" rel="self" type="application/rss+xml"/><item><title>Making GitHub Notifications UI slightly nicer for bulk triage</title><link>https://pradyunsg.me/blog/2024/03/17/github-notifications-userstyles/</link><pubDate>Sun, 17 Mar 2024 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/blog/2024/03/17/github-notifications-userstyles/</guid><description>I&amp;rsquo;m someone who gets a lot of GitHub notifications &amp;ndash; this week had &amp;gt;100 individual notifications.
The problem The &amp;ldquo;new&amp;rdquo; GitHub Notifications UI1 was based on Octobox. It was a step in the right direction to help with my notification &amp;ldquo;workload&amp;rdquo;, although I recognise that it was not perceived as such by many others.
That said, they copied over the exact same design issue I had with Octobox: the action buttons are on the completely opposite side from where my attention is.</description></item><item><title>About Me</title><link>https://pradyunsg.me/about/</link><pubDate>Sat, 27 Jan 2024 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/about/</guid><description>I am a software engineer, who likes to work on improving the experience of using software for other humans. I have a keen interest in open source software, with deep experience with developer tooling and technical writing &amp;amp; communication.
I wear many hats in open source software spaces, including maintaining critical projects that serve as the foundational digital infrastructure for the ecosystem of the Python programming language, making it easier to create good technical documentation websites and being involved in community events.</description></item><item><title>Choreographing a release process for my PyPI packages</title><link>https://pradyunsg.me/blog/2024/01/27/package-release-workflow/</link><pubDate>Sat, 27 Jan 2024 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/blog/2024/01/27/package-release-workflow/</guid><description>I maintain quite a few Python packages and they all have development workflows as well as release processes that are different in various ways.
This is basically my research document as I am exploring what I want the release process (and supporting development workflow) to look like for the Python packages I maintain, so that I can reduce the overhead caused by the various differences in these projects as well as the need to make all these decisions myself.</description></item><item><title>PDM does not implement PEP 582, at the time of writing</title><link>https://pradyunsg.me/blog/2023/01/21/pdm-does-not-implement-pep-582/</link><pubDate>Sat, 21 Jan 2023 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/blog/2023/01/21/pdm-does-not-implement-pep-582/</guid><description>Note: I&amp;rsquo;ve updated this to reflect how this happened, on recommendation from PDM&amp;rsquo;s author.
PDM claims to implement PEP 582. However, if you look at what it implements, it is something completely different from the standard.
PDM&amp;rsquo;s file system structure &amp;lt;root&amp;gt; __pypackages__ 3.10 bottle myscript.py PDM will scan for the __pypackages__ directory up to 5 folders above the &amp;ldquo;current&amp;rdquo; one.
PEP 582&amp;rsquo;s file system structure &amp;lt;root&amp;gt; __pypackages__ lib python3.10 site-packages bottle myscript.</description></item><item><title>Thoughts on the Python packaging ecosystem</title><link>https://pradyunsg.me/blog/2023/01/21/thoughts-on-python-packaging/</link><pubDate>Sat, 21 Jan 2023 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/blog/2023/01/21/thoughts-on-python-packaging/</guid><description>My response to the discussion topic posed in Python Packaging Strategy Discussion Part 1 had become quite long, so I decided to move it to write a blog post instead. This post then started absorbing various draft posts I&amp;rsquo;ve had on this topic since this blog was started, morphing to include my broader thoughts on where we are today.
Note: I&amp;rsquo;ve updated this to cover an aspect of the recent LWN article on the topic as well.</description></item><item><title>How the Python Packaging community is organised</title><link>https://pradyunsg.me/blog/2023/01/14/python-packaging-organisation/</link><pubDate>Sat, 14 Jan 2023 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/blog/2023/01/14/python-packaging-organisation/</guid><description>The way the Python packaging community is organised is something that I&amp;rsquo;ve explained in multiple places, in multiple contexts. I figure that it&amp;rsquo;ll be useful to actually write it down in a single place, so that I don&amp;rsquo;t have to repeat myself.
The Python Packaging Authority The Python Packaging Authority (PyPA) is a fairly loose group of projects that happen to be related to Python packaging. While the PyPA has a formal governance model, there&amp;rsquo;s no &amp;ldquo;oversight&amp;rdquo; or &amp;ldquo;enforcement&amp;rdquo; on projects that are part of the PyPA &amp;ndash; they are only required to adopt the PSF Code of Conduct and to be accepted by the existing members.</description></item><item><title>Excellent error messages from command line tools, according to ChatGPT</title><link>https://pradyunsg.me/blog/2023/01/02/chatgpt-fun-with-error-messages/</link><pubDate>Mon, 02 Jan 2023 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/blog/2023/01/02/chatgpt-fun-with-error-messages/</guid><description>In late Dec 2022, I played around with ChatGPT in an evening.
Since it was on the top of my mind1, I decided try to nudge ChatGPT into the direction of giving me a useful answer about error message design for command line tools.2
Now, tell me what an excellent error message from a command line tool should contain.
An excellent error message from a command line tool should contain the following elements:</description></item><item><title>A mistake in a recent website update</title><link>https://pradyunsg.me/blog/2023/01/01/mistake-in-recent-website-update/</link><pubDate>Sun, 01 Jan 2023 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/blog/2023/01/01/mistake-in-recent-website-update/</guid><description>A false claim was made on the about page for a few days.</description></item><item><title>Wheels are faster, even for pure Python packages</title><link>https://pradyunsg.me/blog/2022/12/31/wheels-are-faster-pure-python/</link><pubDate>Sat, 31 Dec 2022 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/blog/2022/12/31/wheels-are-faster-pure-python/</guid><description>When installing with pip (or from PyPI in general), wheels are much faster than source distributions, even for pure-Python projects.
Packages with native code are a clearer win, because the wheel file will contain pre-compiled binaries for the platform you&amp;rsquo;re installing on. This means that you don&amp;rsquo;t need to have a compiler and non-Python build dependencies installed, and you don&amp;rsquo;t need to wait for the compiler to do its thing.</description></item><item><title>OSS Work update #18</title><link>https://pradyunsg.me/blog/2022/09/30/oss-update-18/</link><pubDate>Fri, 30 Sep 2022 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/blog/2022/09/30/oss-update-18/</guid><description>Oh hey, backfilling is fun.</description></item><item><title>OSS Work update #17</title><link>https://pradyunsg.me/blog/2022/07/29/oss-update-17/</link><pubDate>Fri, 29 Jul 2022 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/blog/2022/07/29/oss-update-17/</guid><description>Oh hey, backfilling is fun.</description></item><item><title>OSS Work update #16</title><link>https://pradyunsg.me/blog/2022/07/28/oss-update-16/</link><pubDate>Thu, 28 Jul 2022 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/blog/2022/07/28/oss-update-16/</guid><description>April was a somewhat relaxed month.</description></item><item><title>OSS Work update #15</title><link>https://pradyunsg.me/blog/2022/04/08/oss-update-15/</link><pubDate>Fri, 08 Apr 2022 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/blog/2022/04/08/oss-update-15/</guid><description>Woah, time flies!</description></item><item><title>Pradyun Gedam</title><link>https://pradyunsg.me/stuff/</link><pubDate>Sun, 27 Feb 2022 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/stuff/</guid><description>The information on this page has been consolidated into this page.</description></item><item><title>OSS Work update #14</title><link>https://pradyunsg.me/blog/2021/12/12/oss-update-14/</link><pubDate>Sun, 12 Dec 2021 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/blog/2021/12/12/oss-update-14/</guid><description>Making things look better and work better!</description></item><item><title>OSS Work update #13</title><link>https://pradyunsg.me/blog/2021/10/09/oss-update-13/</link><pubDate>Sat, 09 Oct 2021 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/blog/2021/10/09/oss-update-13/</guid><description>New hardware + more time = more stuff done!</description></item><item><title>OSS Work update #12</title><link>https://pradyunsg.me/blog/2021/07/03/oss-update-12/</link><pubDate>Sat, 03 Jul 2021 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/blog/2021/07/03/oss-update-12/</guid><description>A whole lot of logistics.</description></item><item><title>OSS Work update #11</title><link>https://pradyunsg.me/blog/2021/05/07/oss-update-11/</link><pubDate>Fri, 07 May 2021 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/blog/2021/05/07/oss-update-11/</guid><description>Release all the things!</description></item><item><title>Revamping my personal website</title><link>https://pradyunsg.me/blog/2021/04/09/revamping-this-site/</link><pubDate>Fri, 09 Apr 2021 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/blog/2021/04/09/revamping-this-site/</guid><description>Hopping onto the hype train and migrating to Hugo.</description></item><item><title>OSS Work update #10</title><link>https://pradyunsg.me/blog/2021/04/03/oss-update-10/</link><pubDate>Sat, 03 Apr 2021 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/blog/2021/04/03/oss-update-10/</guid><description>More (new) Sphinx stuff and rewriting other things.</description></item><item><title>OSS Work update #9</title><link>https://pradyunsg.me/blog/2021/02/27/oss-update-9/</link><pubDate>Sat, 27 Feb 2021 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/blog/2021/02/27/oss-update-9/</guid><description>&lt;p>Alrighty! Let&amp;rsquo;s start doing this again.&lt;/p></description></item><item><title>Catching up</title><link>https://pradyunsg.me/blog/2020/12/08/catchup/</link><pubDate>Tue, 08 Dec 2020 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/blog/2020/12/08/catchup/</guid><description>&lt;blockquote>
&lt;p>I&amp;rsquo;m actually &lt;em>really good&lt;/em> at procrastinating things when I&amp;rsquo;m uncomfortable.&lt;br>
- me, back in Feb 2020&lt;/p>
&lt;/blockquote></description></item><item><title>Testing the next-gen pip dependency resolver</title><link>https://pradyunsg.me/blog/2020/03/27/pip-resolver-testing/</link><pubDate>Fri, 27 Mar 2020 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/blog/2020/03/27/pip-resolver-testing/</guid><description>This is an attempt to summarize the broader software architecture around dependency resolution in pip and how testing is being done around this area.
The motivation behind writing this, is to make sure all the developers working on this project are on the same page, and to have a written record about the state of affairs.
Architecture The &amp;ldquo;legacy&amp;rdquo; resolver in pip, is implemented as part of pip&amp;rsquo;s codebase and has been a part of it for many years.</description></item><item><title>OSS Work update #8</title><link>https://pradyunsg.me/blog/2020/02/19/oss-update-8/</link><pubDate>Wed, 19 Feb 2020 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/blog/2020/02/19/oss-update-8/</guid><description>I&amp;rsquo;m trying to post these roughly once a month. Here&amp;rsquo;s the January post.
I am working on open source projects, as part of an internship at FOSSEE and as a part of grant-funded work on pip&amp;rsquo;s dependency resolver.
Work I did (Jan 6 - Feb 5) Technical Co-worked with another developer, in person, for 1 week, on pip! Triaged pip&amp;rsquo;s issue tracker (a lot). Spend some time improving pip&amp;rsquo;s test suite infrastructure.</description></item><item><title>OSS Work update #7</title><link>https://pradyunsg.me/blog/2020/01/10/oss-update-7/</link><pubDate>Fri, 10 Jan 2020 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/blog/2020/01/10/oss-update-7/</guid><description>I&amp;rsquo;m trying to post these roughly once a month. Here&amp;rsquo;s the December post.
I am working on open source projects, as part of an internship at FOSSEE and as a part of grant-funded work on pip&amp;rsquo;s dependency resolver.
Work I did (Dec 11 - Jan 5) Technical Wrore and adopted vendoring for use in pip. Initiated conversation for pipenv to switch to it too. Made progress toward TOML 1.0, via useful clarifications in the specification Continued tackling pip’s build logic refactoring.</description></item><item><title>OSS Work update #6</title><link>https://pradyunsg.me/blog/2019/12/11/oss-update-6/</link><pubDate>Wed, 11 Dec 2019 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/blog/2019/12/11/oss-update-6/</guid><description>I&amp;rsquo;m trying to post these roughly once a month. Here&amp;rsquo;s the November post.
This update has been a little late, since I have been traveling and recovering from an illness.
I also have good news: I will be working on open source projects related to Python Packaging (full time) starting early Dec 2019 till May/Jun 2020.
Work I did (Nov 6 - Dec 10) Technical Worked to separate pip&amp;rsquo;s dependency vendoring logic from rest of pip This would enable other projects that use similar mechanisms (eg.</description></item><item><title>OSS Work update #5</title><link>https://pradyunsg.me/blog/2019/11/06/oss-update-5/</link><pubDate>Wed, 06 Nov 2019 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/blog/2019/11/06/oss-update-5/</guid><description>I&amp;rsquo;m trying to post these roughly once a month. Here&amp;rsquo;s the October post.
Work I did (Oct 6 - Nov 5) Technical
Wrapped up refactoring metadata generation within pip. (yay!) Started refactoring wheel building logic within pip. A few minor fixes/cleanup within pip. Helped out with pip 19.3&amp;rsquo;s release. Significantly simplified pip&amp;rsquo;s release processes. Reviewed &amp;gt;50 PRs. Fixed a &amp;ldquo;major&amp;rdquo; regression in pip&amp;rsquo;s detection of virtual environments. Got some work done, progressing closer to TOML 1.</description></item><item><title>What's up with bugs.python.org?</title><link>https://pradyunsg.me/blog/2019/11/02/state-of-bpo/</link><pubDate>Sat, 02 Nov 2019 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/blog/2019/11/02/state-of-bpo/</guid><description>bugs.python.org is the issue tracker for CPython. &amp;ldquo;bpo&amp;rdquo;, as it is commonly referenced, is where implementation bugs, smaller feature requests, and documentation issues are tracked as part of Python&amp;rsquo;s development.
PEP 581 proposes sunsetting bugs.python.org, in favor of GitHub issues. &amp;ldquo;Why not focus on improving Roundup / bpo?&amp;rdquo; section made me wonder: What is needed to improve Roundup / bpo? This blog post is my attempt at summarizing the state of bpo and how it could be improving in the future, based on a discussion with folks maintaining bpo.</description></item><item><title>OSS Work update #4</title><link>https://pradyunsg.me/blog/2019/10/06/oss-update-4/</link><pubDate>Sun, 06 Oct 2019 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/blog/2019/10/06/oss-update-4/</guid><description>I&amp;rsquo;m trying to post these roughly once a month. Here&amp;rsquo;s the September post.
Work I did (Sept 6 - Oct 5) Technical
Figured out a rough structure for approaching pip&amp;rsquo;s build logic refactor. Discussed and sketched a rough &amp;ldquo;goal&amp;rdquo; model for pip&amp;rsquo;s build logic, to adopt after initial cleanups and decoupling refactor work. Made significant progress on refactoring pip&amp;rsquo;s metadata handling and generation logic. (yay!) Identified a quirk in how pip&amp;rsquo;s current resolution logic, which makes it conceptually intertwined with pip&amp;rsquo;s index interaction logic (sigh).</description></item><item><title>OSS Work update #3</title><link>https://pradyunsg.me/blog/2019/09/06/oss-update-3/</link><pubDate>Fri, 06 Sep 2019 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/blog/2019/09/06/oss-update-3/</guid><description>I&amp;rsquo;m trying to post these roughly once a month. Here&amp;rsquo;s the August post which includes the work I was planning to do this month.
Work I did (Aug 6 - Sept 5) Technical
Began working on splitting the code for handling of the two kinds of source distributions. Wrap up pip 19.2, with pip 19.2.3 release, unblocking Python 3.8&amp;rsquo;s final beta. Hooray! Fix documentation builds for pip, on ReadTheDocs &amp;ndash; this took way longer to figure out than I&amp;rsquo;d expected.</description></item><item><title>OSS Work update #2</title><link>https://pradyunsg.me/blog/2019/08/06/oss-update-2/</link><pubDate>Tue, 06 Aug 2019 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/blog/2019/08/06/oss-update-2/</guid><description>I&amp;rsquo;m going to try to post these roughly once a month. Here&amp;rsquo;s the late June post.
Work I was planning to do Technical
Clearly determine what parts of the build system are intertwined with pip&amp;rsquo;s resolution logic. Communication
Get confirmation from my college about required dates/duration of internships in final semester. Work I did (24 June - 6 Aug) Technical
Identified portion of build system intertwined with pip&amp;rsquo;s resolver:
&amp;ldquo;Get abstract distribution&amp;rdquo;: building installable artifacts is intertwined with pip&amp;rsquo;s resolver.</description></item><item><title>What's happening with that pip dependency resolver?</title><link>https://pradyunsg.me/blog/2019/06/23/oss-update-1/</link><pubDate>Sun, 23 Jun 2019 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/blog/2019/06/23/oss-update-1/</guid><description>I&amp;rsquo;m glad you asked.
What&amp;rsquo;s up? Over the past few months, I&amp;rsquo;ve worked on a prototype for a resolver in pip, spent some time planning what rolling out a new dependency resolver in pip might look like, and continue to work on pip&amp;rsquo;s build logic to decouple it from the dependency resolution logic.
The prototype has helped me better understand the relationships and contracts between various portions of the codebase. This understanding has led me to conclude that it is a worthwhile investment to better decouple the build logic from the resolution logic, then introduce the abstractions defined in resolvelib/zazo, and then proceed to adopting better dependency resolution.</description></item><item><title>Is this thing on?</title><link>https://pradyunsg.me/blog/2019/06/22/is-this-thing-on/</link><pubDate>Sat, 22 Jun 2019 00:00:00 +0000</pubDate><guid>https://pradyunsg.me/blog/2019/06/22/is-this-thing-on/</guid><description>*tap* *tap*
Seems like this is reaching you.
Hello there! I&amp;rsquo;m Pradyun. You probably knew that already. Thanks for spending the time to reach this random piece of writing by me.
Acknowledgements This blog used to be built using Jekyll and the theme was based off Pixyll. The theme was heavily restyled to be more in line with how I wanted my site to look like. I ended up making changes to almost every element of the design, though the layout and colours were solid in Pixyll.</description></item></channel></rss>