What I Learned as a BARC Project Trainee
It's been exactly one year since my three-month summer stint as a Project Trainee (Jun - Aug 2025) at the Bhabha Atomic Research Centre (BARC) with the Radiation Safety Systems Division. Going into a short summer project, I thought my focus would strictly be on Python scripting and UI development. What I walked away with was a deep appreciation for geospatial analysis, the power of removing operational friction, and how software architecture directly influences real-world emergency response.
On this page
Due to the confidential nature of the work, I can't share exact system details or source code, but I want to reflect on the architectural lessons I learned while building the "QGIS-Based Decision Support for Implementing Counter Measures".
🌍 The Problem with Friction in Crisis
During tabletop emergency response exercises, researchers model scenarios to prepare for critical possibilities. This involves calculating spatial parameters—like environmental dispersion or impact zones—and overlaying them against demographic data to plan logistics or countermeasure deployments.
The problem wasn't a lack of tools; QGIS is incredibly powerful. The problem was friction. When seconds matter, or when researchers are running dozens of rapid iterations, manually importing shapefiles, running buffer calculations, and intersecting demographic polygons is simply too slow.
🛠️ Engineering a Solution: Python + PyQGIS + PyQt
My mandate was to build a decision-support system that integrated directly into the QGIS environment. We needed it to be completely offline for security reasons, and it had to abstract the complexity of GIS operations away from the researcher so they could focus purely on the scenario data.
Here was the architecture we landed on:
By building a custom PyQt5 desktop interface that talked directly to the PyQGIS API, I was able to automate the data ingestion and spatial calculations. A researcher could input their parameters into a clean, purpose-built UI, and the Python scripts would orchestrate the heavy lifting underneath.
🧠 Key Takeaways
1. Removing Friction is a Feature
By automating the geospatial data processing workflows, we reduced manual preprocessing time by approximately 50%. I learned that as engineers, we often want to build new features, but sometimes the highest-leverage work you can do is simply removing the repetitive steps preventing users from doing their core jobs.
2. The Power of Offline-First and Local Compute
In modern web development, the default instinct is to reach for a cloud API or a serverless function. Working at BARC taught me how to engineer robust, entirely local systems. The extreme data security requirements meant no external dependencies. If it couldn't run on the local machine's PyQGIS runtime, it couldn't be used. This constraint forced me to write much more efficient algorithms for spatial intersections and proximity buffering.
3. Domain Knowledge is a Multiplier
You can't build a good tool without understanding how the user works. Learning the basics of radiation safety and emergency modeling allowed me to design the PyQt interface in a way that mapped perfectly to a researcher's mental model, rather than forcing them to adapt to my software.
🚀 Final Thoughts
Looking back a year later, my time at BARC was foundational. It taught me that software engineering is rarely just about writing code; it's about solving human problems in highly constrained environments. The discipline I learned there—focusing on security, automation, and user-centric design—continues to influence every project I build today.
Engineering solutions in high-stakes, constrained environments. ⚛️