Posts

Showing posts from August, 2026

My GSoC 2026 Journey (Final Report): 12 Weeks of Learning and Contributing

Image
12 Weeks of Learning and Contributing to SunPy I’m really grateful that I got the opportunity to work on radiospectra during GSoC. Over these 12 weeks, I got to work across several areas of the project - from the ndcube migration and metadata to plotting, testing, documentation, support for different data sources and eventually the SpectrogramFactory redesign. What made the experience especially valuable was getting to learn from my mentors and the wider SunPy community along the way. Each review, discussion and challenge helped me understand the project better and become more thoughtful about how I approach a change. Before GSoC: Getting Started with radiospectra My GSoC work actually started before the official coding period. I had already made a few contributions to radiospectra  including restoring the WIND/WAVES client, fixing time and frequency handling in plotting and migrating network clients to newer SunPy APIs. Some of my early contributions were: PR #142:...

12 Weeks of GSoC: A Lot Learned, A Lot More to Do

Image
A Lot Learned, A Lot More to Do 🚀 And just like that, 12 weeks of GSoC are over! The last two weeks have been quite different from the earlier ones. There was a lot of finishing up, reviewing, fixing things that broke along the way and making sure the bigger pieces of the project were coming together properly. Here's what I've been up to. Learning to Write Less Code 😅 One of the biggest lessons from these weeks actually came from a code review. I had previously added some custom methods for getting time and frequency profiles from a spectrogram. The code worked, but there were some change of plans, during review we realized that ndcube already provided the functionality needed to achieve the same thing. So instead of keeping the extra code, I removed it and focused on showing users how to use the existing ndcube methods. It was a really good reminder that adding more code isn't always the right solution . Sometimes the better approach is to make better use of what alrea...

Weeks 9 & 10: Slicing, Profiles and a New Factory

 Slicing, Profiles and a New Factory 🚀 The last two weeks have been a pretty interesting mix of working on spectrogram slicing and starting to look at one of the bigger architectural changes in radiospectra . A lot of the work this time was about understanding how the different pieces fit together and figuring out how to make things easier for users and contributors. Exploring Slicing and Profiles 🔍 After the ndcube refactor, I started looking more closely at how users could work with individual parts of a spectrogram. One thing I wanted to make easier was getting a time profile at a particular frequency or a frequency profile at a particular time . Initially, I worked on adding time_profile() and line_profile() methods to GenericSpectrogram . To make this work, I had to deal with something I hadn't worked with much before—converting physical coordinates into the actual array indices behind the spectrogram. I added a couple of internal helpers to handle this conversio...