<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>web-development | UCSC OSPO</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/category/web-development/</link><atom:link href="https://deploy-preview-1007--ucsc-ospo.netlify.app/category/web-development/index.xml" rel="self" type="application/rss+xml"/><description>web-development</description><generator>Wowchemy (https://wowchemy.com)</generator><language>en-us</language><lastBuildDate>Tue, 23 Sep 2025 00:00:00 +0000</lastBuildDate><image><url>https://deploy-preview-1007--ucsc-ospo.netlify.app/media/logo_hub6795c39d7c5d58c9535d13299c9651f_74810_300x300_fit_lanczos_3.png</url><title>web-development</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/category/web-development/</link></image><item><title>[Final] Building PeerSky’s Extensions System</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/peersky/2025-09-22-6cobi/</link><pubDate>Tue, 23 Sep 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/peersky/2025-09-22-6cobi/</guid><description>&lt;p>Hi everyone, I’m Hanzhong Liu. Over the summer I worked on building the &lt;code>peersky://extensions&lt;/code> system for &lt;a href="https://github.com/p2plabsxyz/peersky-browser" target="_blank" rel="noopener">PeerSky browser&lt;/a>, a decentralized and privacy-first browser built on Electron.&lt;/p>
&lt;p>This post is my final GSoC 2025 update — covering how the extensions manager was designed, the security model behind IPC, the UI for managing extensions, and what’s next for PeerSky.&lt;/p>
&lt;h2 id="project-overview">Project Overview&lt;/h2>
&lt;p>The new extensions system makes PeerSky behave like a modern browser: you can install extensions from the Chrome Web Store or from local files, enable/disable them, update or uninstall, and interact with their toolbar actions through a puzzle-menu UI.&lt;/p>
&lt;h3 id="key-design-goals">Key Design Goals&lt;/h3>
&lt;ul>
&lt;li>Secure preload-based API exposure via &lt;code>contextBridge&lt;/code>&lt;/li>
&lt;li>Support for preinstalled, Web Store, and local packages&lt;/li>
&lt;li>Toolbar integration with pin/unpin support (up to six)&lt;/li>
&lt;li>Robust validation: MV3-only, size caps, zip-slip prevention&lt;/li>
&lt;/ul>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="./peersky-extensions-management.png" alt="Extensions Management" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="highlights">Highlights&lt;/h2>
&lt;h3 id="preinstalled-mv3s">Preinstalled MV3s&lt;/h3>
&lt;p>PeerSky now ships with three trusted extensions out of the box:&lt;/p>
&lt;ul>
&lt;li>Dark Reader&lt;/li>
&lt;li>Linguist (web page translator)&lt;/li>
&lt;li>uBlock Origin Lite&lt;/li>
&lt;/ul>
&lt;p>They remain installed by default but can be disabled at any time. This ensures users always have a working baseline without needing to browse an extension store.&lt;/p>
&lt;h3 id="electron-integration">Electron Integration&lt;/h3>
&lt;p>Instead of injecting scripts, the system uses &lt;strong>preload + IPC&lt;/strong>. Each operation is routed through validated IPC channels:&lt;/p>
&lt;ul>
&lt;li>&lt;code>listExtensions&lt;/code>, &lt;code>installFromWebStore&lt;/code>, &lt;code>toggleExtension&lt;/code>, etc.&lt;/li>
&lt;li>All methods are scoped to &lt;code>peersky://extensions&lt;/code> only.&lt;/li>
&lt;li>Rate limiting and size caps are enforced per renderer.&lt;/li>
&lt;/ul>
&lt;p>This design makes the surface auditable and prevents privilege leaks.&lt;/p>
&lt;h3 id="toolbar--puzzle-menu">Toolbar &amp;amp; Puzzle Menu&lt;/h3>
&lt;p>Browser actions appear in a puzzle menu and can be pinned for quick access:&lt;/p>
&lt;ul>
&lt;li>Up to six pins are allowed&lt;/li>
&lt;li>Pinned state persists across sessions.&lt;/li>
&lt;li>Popups (e.g., for translators or wallets) open in isolated windows, with OAuth flows preserved via popup guards.&lt;/li>
&lt;/ul>
&lt;h3 id="security-highlights">Security Highlights&lt;/h3>
&lt;ul>
&lt;li>Installs capped at &lt;strong>60 MB&lt;/strong>, with early rejection on oversized payloads&lt;/li>
&lt;li>&lt;strong>5 installs/minute&lt;/strong> per renderer to prevent abuse&lt;/li>
&lt;li>ZIP/CRX extraction hardened against path traversal&lt;/li>
&lt;li>MV3 required; permissions validated at install with warnings for risky hosts&lt;/li>
&lt;li>Web Store installs use Google-signed CRX verification via &lt;code>electron-chrome-web-store&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="example-installing-from-the-web-store">Example: Installing from the Web Store&lt;/h2>
&lt;p>Adding a new extension is simple:&lt;/p>
&lt;ol>
&lt;li>Paste a Chrome Web Store URL or ID into the install bar.&lt;/li>
&lt;li>PeerSky downloads and validates the CRX.&lt;/li>
&lt;li>On success, the extension appears in the grid with toggle, update, and remove options.&lt;/li>
&lt;/ol>
&lt;h2 id="reflection">Reflection&lt;/h2>
&lt;p>This project was both challenging and rewarding. Designing an extension system meant grappling with security, IPC design, and user experience at the same time. I learned to think carefully about security management, UI/UX positioning, and design APIs that are auditable.&lt;/p>
&lt;p>I’m grateful to my mentor Akhilesh Thite and the UC OSPO team for their guidance and feedback. Their support pushed me to make deliberate technical decisions and communicate them clearly.&lt;/p>
&lt;p>You can explore the project here:
&lt;a href="https://github.com/p2plabsxyz/peersky-browser" target="_blank" rel="noopener">https://github.com/p2plabsxyz/peersky-browser&lt;/a>&lt;/p></description></item><item><title>Final Report: CarbonCast — An end-to-end consumption-based Carbon Intensity Forecasting service</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/carboncast/20250915-tanushsavadi/</link><pubDate>Mon, 15 Sep 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/carboncast/20250915-tanushsavadi/</guid><description>&lt;p>Hi everyone—this is my final report for &lt;strong>CarbonCast&lt;/strong>, mentored by &lt;strong>Professor Abel Souza&lt;/strong>. Back in June, my goal was simple to say and harder to pull off: help people &lt;strong>see&lt;/strong> when the grid is cleaner and make it easy to act on that information. Over the summer I turned CarbonCast from a research prototype into something you can open, click, and rely on: a containerized backend, a clean API, and a fast, friendly map UI.&lt;/p>
&lt;h2 id="background">Background&lt;/h2>
&lt;p>CarbonCast forecasts the &lt;strong>carbon intensity&lt;/strong> of electricity (gCO₂e/kWh) using grid data and weather. Earlier versions were accurate but difficult to run and even harder to use outside a research context. My OSRE focus was to make CarbonCast usable for real people: provide a standard API, build a web UI that feels responsive, and package everything so it starts quickly and keeps itself healthy.&lt;/p>
&lt;h2 id="goals">Goals&lt;/h2>
&lt;p>I centered the work around four goals. First, I wanted to &lt;strong>ship an end-to-end containerized stack&lt;/strong>—data collection, validation, storage, API, and UI—that someone else could run without digging through my notes. Second, I aimed to &lt;strong>expand coverage&lt;/strong> beyond a handful of regions so the map would be genuinely useful. Third, I needed to &lt;strong>make it reliable&lt;/strong>, with retries, monitoring, and graceful fallbacks so the system could run for weeks without babysitting. Finally, I wanted to &lt;strong>lay the groundwork for a consumption-based signal&lt;/strong>, because imports from neighboring regions also shape a region’s true emissions picture.&lt;/p>
&lt;h2 id="what-i-built">What I built&lt;/h2>
&lt;p>By the end of the program, CarbonCast runs as a &lt;strong>containerized backend + API + web app&lt;/strong> that you can bring up with Docker. The pipelines now reach &lt;strong>85+ regions&lt;/strong>, and the UI currently exposes &lt;strong>58+&lt;/strong> while we finish integrating the rest. The API offers straightforward endpoints for current conditions and multi-day views, plus region metadata so clients can discover what’s available. The UI presents an &lt;strong>interactive choropleth map&lt;/strong> with a side panel for the &lt;strong>energy mix&lt;/strong> and a simple &lt;strong>timeline&lt;/strong> to move between past, now, and the next few days. To keep things feeling snappy, I tuned caching so “now” data updates quickly while historical and forecast views load instantly from cache. I also added a small &lt;strong>“mission control” dashboard&lt;/strong> that shows what updated, what failed, and how the system recovered, which makes maintenance far less mysterious.&lt;/p>
&lt;h2 id="how-it-works">How it works&lt;/h2>
&lt;p>Fresh weather and grid data arrive on a regular schedule. The system checks each file for sanity, stores it, and serves it through a clean API. The React app calls that API and paints the map. Hovering reveals regional details; clicking opens a richer panel with the energy mix and trends; the timeline lets you scrub through hours naturally. In short, the path is &lt;strong>fresh data → API → map&lt;/strong>, and each step is designed to be obvious and quick.&lt;/p>
&lt;p>Behind the scenes, I extended the existing Django backend with a &lt;strong>SQLite path&lt;/strong> so the UI works out of the box on a laptop. For production, you can point the same code at Postgres or MySQL without changing the UI. This choice made local testing easy while leaving room for scale later.&lt;/p>
&lt;h2 id="highlights">Highlights&lt;/h2>
&lt;p>A few moments stand out. The first time the dashboard flipped from red to green on its own—after the system retried through a wave of timeouts—was a turning point. Clicking across the map and getting instant responses because the right data was cached felt great too. And packaging everything so another person can run it without asking me for help might be the biggest quality-of-life win for future contributors.&lt;/p>
&lt;h2 id="challenges">Challenges&lt;/h2>
&lt;p>The first big hurdle was &lt;strong>refactoring the old vanilla-JS interface&lt;/strong>. The original UI worked, but it was dated and hard to extend. I rebuilt it as a modern React + TypeScript app with a cleaner component structure and a fresh look—think &lt;strong>glassmorphic panels&lt;/strong>, readable color scales, and a layout that feels consistent on both laptops and smaller screens. Moving to this design system made the codebase far easier to maintain, theme, and iterate on.&lt;/p>
&lt;p>The next challenge was &lt;strong>performance under real-time load&lt;/strong>. With dozens of regions updating, it was easy to hit API limits and make the UI feel jittery. I solved this by adding a smart &lt;strong>caching layer&lt;/strong> with short, volatility-aware timeouts, request de-duplication, and background prefetching. That combination dramatically reduced round-trips, essentially &lt;strong>eliminated rate-limit hits&lt;/strong>, and made the map feel responsive even as you scrub through time. The result is a UI that can handle many simultaneous updates &lt;strong>without hiccups&lt;/strong>.&lt;/p>
&lt;p>Finally, there were plenty of &lt;strong>stubborn UI bugs&lt;/strong>. Some regions wouldn’t color even when data was available, certain charts refused to render, and a few elements flickered or never showed up. Most of this came down to learning &lt;strong>React state management&lt;/strong> in a real project: taming race conditions, canceling in-flight requests when users navigate, and making sure state only updates when fresh data actually arrives. Fixing those issues taught me a lot about how maps re-paint, how charts expect their data, and how to keep components simple enough that they behave the way users expect.&lt;/p>
&lt;h2 id="what-didnt-make-the-cut-yet">What didn’t make the cut (yet)&lt;/h2>
&lt;p>I designed—but did not finish—&lt;strong>per-region plug-in models&lt;/strong> so each grid can use the approach that fits it best. We decided to ship a stable, deployable service first and reserve that flexibility work for the next phase. The design is written down and ready to build.&lt;/p>
&lt;h2 id="links-and-resources">Links and resources:&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Project page:&lt;/strong> &lt;a href="project/osre25/ucsc/carboncast/">CarbonCast&lt;/a>&lt;/li>
&lt;li>&lt;strong>Proposal:&lt;/strong> &lt;a href="https://ucsc-ospo.github.io/report/osre25/ucsc/carboncast/20250710-tanushsavadi/" target="_blank" rel="noopener">https://ucsc-ospo.github.io/report/osre25/ucsc/carboncast/20250710-tanushsavadi/&lt;/a>&lt;/li>
&lt;li>&lt;strong>Midterm blog:&lt;/strong> &lt;a href="https://ucsc-ospo.github.io/report/osre25/ucsc/carboncast/20250803-tanushsavadi/" target="_blank" rel="noopener">https://ucsc-ospo.github.io/report/osre25/ucsc/carboncast/20250803-tanushsavadi/&lt;/a>&lt;/li>
&lt;li>&lt;strong>Backend/API (branch):&lt;/strong> &lt;a href="https://github.com/carbonfirst/CarbonCast/tree/django_apis_sqlite" target="_blank" rel="noopener">https://github.com/carbonfirst/CarbonCast/tree/django_apis_sqlite&lt;/a>&lt;/li>
&lt;li>&lt;strong>Frontend/UI:&lt;/strong> &lt;a href="https://github.com/carbonfirst/CarbonCastUI/tree/main" target="_blank" rel="noopener">https://github.com/carbonfirst/CarbonCastUI/tree/main&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="whats-next">What’s next&lt;/h2>
&lt;p>My next steps are clear. I want to finish the &lt;strong>per-region model plug-ins&lt;/strong> so grids can bring their own best forecasting logic. I also plan to carry the &lt;strong>consumption-based&lt;/strong> signal end-to-end, including imports and interconnects surfaced directly in the UI. Finally, I’ll harden the system for production by enabling auth and throttling and by moving to a production-grade database where appropriate.&lt;/p>
&lt;h2 id="thank-you">Thank you&lt;/h2>
&lt;p>Huge thanks to &lt;strong>Professor Abel Souza&lt;/strong> for steady mentorship and to the &lt;strong>OSRE&lt;/strong> community for thoughtful feedback. The most rewarding part of this summer was watching a research idea become something people can &lt;strong>click on—and use&lt;/strong> to make cleaner choices.&lt;/p></description></item><item><title>Midterm Report: Learning and Building ORB</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/orb/08072025-param/</link><pubDate>Thu, 07 Aug 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/orb/08072025-param/</guid><description>&lt;h2 id="project-overview">Project Overview&lt;/h2>
&lt;p>UC ORB is an open-source platform developed to increase visibility and engagement with open source projects across the University of California system.&lt;/p>
&lt;p>By providing a structured and searchable repository browser, ORB makes it easier for researchers, students, and collaborators to discover relevant open source initiatives, track their impact, and connect with contributors. It also helps campuses demonstrate the value of their open source output to potential funders and institutional partners.&lt;/p>
&lt;h2 id="progress-so-far">Progress So Far&lt;/h2>
&lt;p>Significant progress has been made in building out core features of the ORB Showcase platform:&lt;/p>
&lt;h3 id="searching-and-filtering-options">Searching and Filtering Options&lt;/h3>
&lt;p>Users can now search and filter repositories using multiple criteria:&lt;/p>
&lt;ul>
&lt;li>Development Team / UC Campus&lt;/li>
&lt;li>Programming Language&lt;/li>
&lt;li>License Type&lt;/li>
&lt;li>Topic / Domain Area&lt;/li>
&lt;/ul>
&lt;p>These filtering tools make it easy to explore the growing set of repositories in a meaningful and personalized way.&lt;/p>
&lt;p>Pagination has been added to ensure scalability and smooth performance, even as the number of projects continues to grow.&lt;/p>
&lt;h3 id="repository-details-view">Repository Details View&lt;/h3>
&lt;p>Each repository page now displays rich metadata and contextual information, including:&lt;/p>
&lt;p>README preview – offering a quick look at the project’s purpose and usage&lt;/p>
&lt;p>License – clearly indicating how the project can be used or adapted&lt;/p>
&lt;p>Contributors and Funders – acknowledging the people and institutions behind the work&lt;/p>
&lt;h2 id="whats-next">What&amp;rsquo;s Next&lt;/h2>
&lt;p>As we prepare UC ORB for public launch, we’re focused on improving the backend workflow and addressing some key challenges:&lt;/p>
&lt;p>⚙️ GitHub Workflow Challenges
Creating a GitHub-first workflow for adding repositories is powerful, but also tricky:&lt;/p>
&lt;p>GitHub Actions cannot be triggered by API calls from a backend directly, which limits automation via server-side tools.&lt;/p>
&lt;p>The GitHub bot has permission limitations, especially when it comes to interacting with PRs and validating submissions outside of standard GitHub UI flows.&lt;/p>
&lt;p>I’m currently working on designing a more robust and maintainable workflow to handle these edge cases, including:&lt;/p>
&lt;p>A standalone script that can add repositories directly to the database, bypassing the need for a pull request and enabling more flexible internal submissions.&lt;/p>
&lt;p>Better logging and validation to ensure consistency between the file-based data model and the live PostgreSQL database.&lt;/p>
&lt;h1 id="reflection">Reflection&lt;/h1>
&lt;p>This project has been a great learning experience despite challenges with Frontend, Backend, GitHub Actions / Bots and APIs, it’s been exciting to build a platform that highlights open source work across the UC system.&lt;/p>
&lt;p>I&amp;rsquo;m looking forward to what&amp;rsquo;s coming next as we get closer to launching ORB.&lt;/p></description></item><item><title>Midterm Report: Learning, Building, and Documenting Brahma</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/brahma/08052025-kajaljotwani/</link><pubDate>Tue, 05 Aug 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/brahma/08052025-kajaljotwani/</guid><description>&lt;h2 id="project-overview">Project Overview&lt;/h2>
&lt;p>&lt;strong>Brahma-XR&lt;/strong> is an open-source WebXR framework designed for building collaborative virtual environments especially those involving spatial data and scientific visualization.&lt;/p>
&lt;p>What makes Brahma powerful is that the same codebase runs seamlessly across both the browser and XR devices like the Apple Vision Pro, Meta Quest 3, and VARJO. This makes it ideal for rapid prototyping and creating cross-platform immersive experiences.&lt;/p>
&lt;p>Some of Brahma’s built-in features include:&lt;/p>
&lt;ul>
&lt;li>Grab-and-pull locomotion&lt;/li>
&lt;li>Raycasting and interaction&lt;/li>
&lt;li>Avatar embodiment&lt;/li>
&lt;li>Spatial rendering&lt;/li>
&lt;li>Support for geospatial and data-driven visualizations&lt;/li>
&lt;/ul>
&lt;p>Brahma is intentionally lightweight, optimized to run even on low-compute devices—making immersive collaboration more accessible to everyone.&lt;/p>
&lt;h2 id="what-worked-and-what-didnt">What Worked (and What Didn’t)&lt;/h2>
&lt;p>As Brahma transitioned from a private research repo to a public open-source project, a lot of important foundational work had to be done around documentation, packaging, and example previews.&lt;/p>
&lt;p>There are two aspects that make Brahma especially unique:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Bipartite npm package structure&lt;/strong> – which requires detailed and thoughtful documentation.&lt;/li>
&lt;li>&lt;strong>Immersive, real-time examples&lt;/strong> – unlike typical libraries, Brahma’s examples aren’t just static demos. They are live, multi-user XR apps designed to be interacted with.&lt;/li>
&lt;/ol>
&lt;p>The first half of the project focused on setting the stage—structuring and preparing the framework for broader use.&lt;/p>
&lt;h3 id="-key-accomplishments">🔧 Key Accomplishments&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Learning Three.js&lt;/strong>&lt;br>
I spent time learning the fundamentals of Three.js—how it handles 3D rendering, scene setup, materials, cameras, and animations. I also explored how large-scale Three.js projects are organized, which helped me understand how Brahma’s example apps are built.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Setting up the project structure&lt;/strong>&lt;br>
I looked at the architecture of various open-source projects and used that knowledge to shape Brahma’s structure. The goal was to align with community best practices while keeping things clean and modular for future contributors.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Understanding npm packaging (especially bipartite)&lt;/strong>&lt;br>
Since Brahma includes both client- and server-side logic, I spent time understanding how multi-part npm packages are published and maintained. I explored best practices around versioning, distribution, and separating internal vs public modules.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Creating a documentation system&lt;/strong>&lt;br>
After exploring different approaches (and with my mentor’s help), I set up a static documentation site using &lt;a href="https://jsdoc.app/" target="_blank" rel="noopener">JSDoc&lt;/a> with the Docdash theme. The current version includes guides, API references, and contribution instructions. This is just the beginning—the docs will evolve as the community grows.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="whats-next">What’s Next&lt;/h2>
&lt;p>In the second half of the project, I’ll be focusing on:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Building a routing system&lt;/strong>&lt;br>
For both documentation and example apps, so that users can easily browse through different components and use cases.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Setting up UI and 3D infrastructure&lt;/strong>&lt;br>
To make it easier for others to start building apps with Brahma by providing clean base layers for interface and spatial development.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Prepping for the first public release&lt;/strong>&lt;br>
Publishing the Brahma NPM package along with a curated set of featured examples and contributor-friendly documentation—making it easier for developers to get started and contribute.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="reflection">Reflection&lt;/h2>
&lt;p>This project has truly been the highlight of my summer. Learning about WebXR, Three.js, and open-source workflows has been both exciting and rewarding. Every challenge taught me something new.&lt;/p>
&lt;p>I am specially greatfull to my mentor &lt;strong>Samir Ghosh&lt;/strong> for his constant support, patience, and guidance. It’s been a privilege learning from you!&lt;/p>
&lt;p>I&amp;rsquo;m looking forward to what’s coming next as we get closer to the first public release of Brahma!&lt;/p></description></item><item><title>Midterm blog: CarbonCast Midpoint Update: From Vision to Reality</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/carboncast/20250803-tanushsavadi/</link><pubDate>Sun, 03 Aug 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/carboncast/20250803-tanushsavadi/</guid><description>&lt;p>A few months ago, I shared my vision for making carbon intensity forecasts more accessible through the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/carboncast">CarbonCast project&lt;/a>. My &lt;a href="https://summerofcode.withgoogle.com/programs/2025/projects/7yvAix3k" target="_blank" rel="noopener">proposal&lt;/a> under the mentorship of Professor Abel Souza aims to build an API that makes carbon intensity forecasts more accessible and actionable. I had two main goals: expand CarbonCast to work with more regional electricity grids, and transform it from a research project into something that could actually run and be interacted with in the real world.&lt;/p>
&lt;p>Today, I&amp;rsquo;m excited to share that we&amp;rsquo;ve not only hit those goals – we&amp;rsquo;ve exceeded them in ways I didn&amp;rsquo;t expect.&lt;/p>
&lt;h2 id="what-weve-built-so-far">What We&amp;rsquo;ve Built So Far&lt;/h2>
&lt;p>Remember how I mentioned that CarbonCast needed to support more regional grids? Well, we&amp;rsquo;ve gone big. The system now covers 85+ regions across two continents. We&amp;rsquo;re talking about major US grid operators like ERCOT (Texas), CISO (California), PJM (Mid-Atlantic), MISO (Midwest), and NYISO (New York), plus we&amp;rsquo;ve expanded into European countries like Germany, France, Spain, and the UK.&lt;/p>
&lt;p>But here&amp;rsquo;s the thing – collecting weather data for carbon intensity forecasting isn&amp;rsquo;t as simple as just downloading a few files. Each region needs four different types of weather data: solar radiation (for solar power predictions), wind patterns (for wind power), temperature and humidity (for energy demand), and precipitation (which affects both supply and demand). That means we&amp;rsquo;re managing data collection for over 340 different combinations of regions and weather variables.&lt;/p>
&lt;h2 id="the-automation-challenge">The Automation Challenge&lt;/h2>
&lt;p>When I started this project, I quickly realized that manually managing data collection for this many regions would be impossible. We&amp;rsquo;re talking about thousands of data requests, each taking time to process, with various things that can go wrong along the way.&lt;/p>
&lt;p>So we built something I&amp;rsquo;m really proud of: an intelligent automation system that handles 95% of the work without human intervention. That means 19 out of every 20 data collection tasks happen automatically, even when things go wrong.&lt;/p>
&lt;p>The system is smart about it too. It knows when to speed up data collection, when to slow down to avoid overwhelming the servers, and how to recover when errors happen. We&amp;rsquo;ve achieved 99% data completeness, which means almost every piece of weather data we need actually makes it into our system successfully.&lt;/p>
&lt;h2 id="making-it-production-ready">Making It Production-Ready&lt;/h2>
&lt;p>The biggest challenge was taking CarbonCast from a research project that worked on my laptop to something that could run reliably for weeks without me babysitting it. This meant building in all the boring but crucial stuff that makes software actually work in the real world.&lt;/p>
&lt;p>We created a comprehensive error handling system that can automatically recover from 95% of the problems it encounters. Network hiccups, server timeouts, data format changes – the system handles these gracefully and keeps running.&lt;/p>
&lt;p>There&amp;rsquo;s also a real-time monitoring dashboard that shows exactly what&amp;rsquo;s happening across all regions. I can see which areas are collecting data successfully, which ones might be having issues, and get alerts if anything needs attention. It&amp;rsquo;s like having a mission control center for carbon data.&lt;/p>
&lt;h2 id="the-dashboard-mission-control-for-carbon-data">The Dashboard: Mission Control for Carbon Data&lt;/h2>
&lt;p>Let me show you what this monitoring system actually looks like. We built a comprehensive web dashboard that gives us real-time visibility into everything that&amp;rsquo;s happening:&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Dashboard Overview" srcset="
/report/osre25/ucsc/carboncast/20250803-tanushsavadi/dashboard-overview_hucf78c7d7b58d9515d431a2744915c5c5_523170_def2a560c75da61de5422b7a6a6dbc38.webp 400w,
/report/osre25/ucsc/carboncast/20250803-tanushsavadi/dashboard-overview_hucf78c7d7b58d9515d431a2744915c5c5_523170_5fcfb689e6283d1720e50da81cfb540f.webp 760w,
/report/osre25/ucsc/carboncast/20250803-tanushsavadi/dashboard-overview_hucf78c7d7b58d9515d431a2744915c5c5_523170_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/carboncast/20250803-tanushsavadi/dashboard-overview_hucf78c7d7b58d9515d431a2744915c5c5_523170_def2a560c75da61de5422b7a6a6dbc38.webp"
width="760"
height="456"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;em>The main dashboard showing real-time system metrics and status across all regions&lt;/em>&lt;/p>
&lt;p>The dashboard shows key metrics at a glance – total requests, completion rates, and active regions. But it goes much deeper than that. You can drill down into individual requests to see their complete lifecycle:&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Request Details" srcset="
/report/osre25/ucsc/carboncast/20250803-tanushsavadi/dashboard-requests_hu4620d0cbd193aecbbe0c5858e2ba9128_195009_876f419901e0b51127b81f1f37bf33f6.webp 400w,
/report/osre25/ucsc/carboncast/20250803-tanushsavadi/dashboard-requests_hu4620d0cbd193aecbbe0c5858e2ba9128_195009_3ae7b2ac3a29478b49913635f43aac19.webp 760w,
/report/osre25/ucsc/carboncast/20250803-tanushsavadi/dashboard-requests_hu4620d0cbd193aecbbe0c5858e2ba9128_195009_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/carboncast/20250803-tanushsavadi/dashboard-requests_hu4620d0cbd193aecbbe0c5858e2ba9128_195009_876f419901e0b51127b81f1f37bf33f6.webp"
width="760"
height="458"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;em>Detailed view of individual data requests showing processing timelines and status&lt;/em>&lt;/p>
&lt;p>Each request card shows everything from the initial request time to when the data becomes available for download. This level of visibility is crucial when you&amp;rsquo;re managing hundreds of data requests across different regions and weather variables.&lt;/p>
&lt;p>The regional analytics view shows how well we&amp;rsquo;re doing across different grid operators:&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Regional Analytics" srcset="
/report/osre25/ucsc/carboncast/20250803-tanushsavadi/dashboard-regions_hubaa80dcd4d7309dd18fca00b148c0f0f_628115_913b55e9f6633983aaaaf25607ac13bf.webp 400w,
/report/osre25/ucsc/carboncast/20250803-tanushsavadi/dashboard-regions_hubaa80dcd4d7309dd18fca00b148c0f0f_628115_950373fdefaf9bd595da010d29c37849.webp 760w,
/report/osre25/ucsc/carboncast/20250803-tanushsavadi/dashboard-regions_hubaa80dcd4d7309dd18fca00b148c0f0f_628115_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/carboncast/20250803-tanushsavadi/dashboard-regions_hubaa80dcd4d7309dd18fca00b148c0f0f_628115_913b55e9f6633983aaaaf25607ac13bf.webp"
width="760"
height="445"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;em>Regional breakdown showing completion status across different electricity grid operators&lt;/em>&lt;/p>
&lt;p>What I&amp;rsquo;m particularly proud of is the error handling dashboard. When things do go wrong (which they inevitably do with any large-scale data system), we can see exactly what happened and how the system recovered:&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Error Management" srcset="
/report/osre25/ucsc/carboncast/20250803-tanushsavadi/dashboard-errors_hua5a5c30a5cd8b72a26622f5af77b2406_480389_2864a9c4d56dcc6220d2fe406daddc17.webp 400w,
/report/osre25/ucsc/carboncast/20250803-tanushsavadi/dashboard-errors_hua5a5c30a5cd8b72a26622f5af77b2406_480389_ca1e5cbfdb24da4f1e6531c7be2eed54.webp 760w,
/report/osre25/ucsc/carboncast/20250803-tanushsavadi/dashboard-errors_hua5a5c30a5cd8b72a26622f5af77b2406_480389_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/carboncast/20250803-tanushsavadi/dashboard-errors_hua5a5c30a5cd8b72a26622f5af77b2406_480389_2864a9c4d56dcc6220d2fe406daddc17.webp"
width="760"
height="254"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;em>Error tracking and resolution system showing 100% success rate in region mapping&lt;/em>&lt;/p>
&lt;p>The fact that we&amp;rsquo;re showing &amp;ldquo;No unknown regions found&amp;rdquo; means our coordinate-based region detection system is working perfectly – every weather data request gets properly mapped to the right electricity grid.&lt;/p>
&lt;h2 id="the-technical-foundation">The Technical Foundation&lt;/h2>
&lt;p>Under the hood, we&amp;rsquo;ve built what I&amp;rsquo;d call enterprise-grade infrastructure. The system can run autonomously for weeks, automatically organizing data by region and weather type, managing storage efficiently, and even optimizing its own performance based on what it learns.&lt;/p>
&lt;p>We&amp;rsquo;ve also created comprehensive testing systems to make sure everything works reliably. When you&amp;rsquo;re dealing with data that people might use to make real decisions about when to charge their electric vehicles or run their data centers, reliability isn&amp;rsquo;t optional.&lt;/p>
&lt;p>The architecture follows a modular, service-oriented design with clear separation between data collection, processing, monitoring, and user interfaces. This makes it much easier to maintain and extend as we add new features.&lt;/p>
&lt;h2 id="why-this-matters">Why This Matters&lt;/h2>
&lt;p>All of this infrastructure work might sound technical, but it&amp;rsquo;s directly connected to the original vision: making carbon intensity forecasts accessible to everyone.&lt;/p>
&lt;p>With this foundation in place, we can now provide reliable, up-to-date weather data for carbon intensity forecasting across major electricity grids in North America and Europe. That means developers building carbon-aware applications, companies trying to reduce their emissions, and individuals wanting to time their energy use for lower environmental impact all have access to the data they need.&lt;/p>
&lt;h2 id="whats-next-breaking-down-carboncast">What&amp;rsquo;s Next: Breaking Down CarbonCast&lt;/h2>
&lt;p>The next phase is where things get really exciting. Now that we have this solid data collection foundation, we&amp;rsquo;re going to break down CarbonCast itself into modular components. This will make it easier for developers to integrate carbon intensity forecasting into their own applications, whether that&amp;rsquo;s a smart home system, a cloud computing platform, or a mobile app that helps people make greener energy choices.&lt;/p>
&lt;h2 id="looking-back">Looking Back&lt;/h2>
&lt;p>When I started this project, I knew we needed better infrastructure for carbon data. What I didn&amp;rsquo;t expect was how much we&amp;rsquo;d end up building – or how well it would work. We&amp;rsquo;ve created something that can reliably collect and organize weather data across two continents, handle errors gracefully, and run without constant supervision.&lt;/p>
&lt;p>More importantly, we&amp;rsquo;ve built the foundation that will make it possible for anyone to access accurate carbon intensity forecasts. Whether you&amp;rsquo;re a developer building the next generation of carbon-aware applications or someone who just wants to know the best time to do laundry to minimize your environmental impact, the infrastructure is now there to support those decisions.&lt;/p>
&lt;p>The vision of making carbon data accessible and actionable is becoming reality, one automated data collection at a time.&lt;/p>
&lt;h2 id="impact-beyond-research">Impact Beyond Research&lt;/h2>
&lt;p>This work builds directly on the foundation of Multi-day Forecasting of Electric Grid Carbon Intensity using Machine Learning, transforming research into practical, real-world infrastructure. We&amp;rsquo;re not just making carbon intensity forecasts more accurate – we&amp;rsquo;re making them accessible to everyone who wants to reduce their environmental impact.&lt;/p>
&lt;p>The open-source nature of CarbonCast means that anyone can run, contribute to, and benefit from this work. Whether you&amp;rsquo;re a developer building carbon-aware applications, a policymaker working on grid decarbonization strategies, or a sustainability-conscious individual looking to reduce your carbon footprint, the tools are now there to make informed, impactful choices.&lt;/p>
&lt;p>Looking ahead, I&amp;rsquo;m excited to see how this infrastructure will enable the next generation of carbon-aware computing and smart energy decisions.&lt;/p></description></item><item><title>[MidTerm] Building PeerSky’s Settings System</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/peersky/2025-07-24-6cobi/</link><pubDate>Thu, 24 Jul 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/peersky/2025-07-24-6cobi/</guid><description>&lt;p>Hi everyone, I’m Hanzhong Liu. My project focuses on building a secure and extensible &lt;code>peersky://settings&lt;/code> system for the &lt;a href="https://github.com/p2plabsxyz/peersky-browser" target="_blank" rel="noopener">PeerSky browser&lt;/a>, a decentralized and privacy-first browser built on Electron.&lt;/p>
&lt;p>This post is a midterm check-in covering what’s been implemented so far — from IPC architecture to real-time theme and wallpaper updates — and a preview of what’s coming next.&lt;/p>
&lt;h2 id="project-overview">Project Overview&lt;/h2>
&lt;p>Peersky’s new settings system is designed to unify browser preferences (themes, search engine, appearance, extensions, etc.) into a single modular interface. It’s accessible via a protocol route (&lt;code>peersky://settings&lt;/code>) and built using web-standard HTML/CSS, scoped APIs, and Electron’s context isolation model.&lt;/p>
&lt;h3 id="key-design-goals">Key Design Goals:&lt;/h3>
&lt;ul>
&lt;li>Secure preload-based API exposure via &lt;code>contextBridge&lt;/code>&lt;/li>
&lt;li>Fast access to user preferences with zero-flicker wallpaper updates&lt;/li>
&lt;li>Extensibility for bookmarks, future plugins, and privacy tools&lt;/li>
&lt;/ul>
&lt;h2 id="midterm-progress-highlights">Midterm Progress Highlights&lt;/h2>
&lt;h3 id="electron-integration">Electron Integration&lt;/h3>
&lt;p>Rather than using &lt;code>webFrame.executeJavaScript()&lt;/code>, I implemented preload-scoped APIs using &lt;code>contextBridge&lt;/code> and &lt;code>ipcRenderer&lt;/code> to prevent injection vulnerabilities and ensure synchronous availability during early page load. Each internal protocol (settings, home, bookmarks) is granted its own API access level.&lt;/p>
&lt;blockquote>
&lt;p>Code: &lt;a href="https://github.com/p2plabsxyz/peersky-browser/blob/main/src/pages/unified-preload.js" target="_blank" rel="noopener">&lt;code>src/pages/unified-preload.js&lt;/code>&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;h3 id="modular-settings-page">Modular Settings Page&lt;/h3>
&lt;p>The UI lives in a single HTML file with sidebar-based navigation (Appearance, Search, Bookmarks, Extensions). Each section updates independently using event-driven IPC and live sync.&lt;/p>
&lt;h3 id="wallpaper--theme-switching">Wallpaper &amp;amp; Theme Switching&lt;/h3>
&lt;ul>
&lt;li>Supports both built-in wallpapers and custom uploads&lt;/li>
&lt;li>Background applies instantly using &lt;code>sendSync()&lt;/code> during preload&lt;/li>
&lt;li>Themes (light, dark, system) are controlled using root-level CSS variables and real-time IPC events&lt;/li>
&lt;/ul>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="https://hackmd.io/_uploads/S11q7M1Dee.png" alt="Wallpaper" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h3 id="cache--search-engine">Cache &amp;amp; Search Engine&lt;/h3>
&lt;ul>
&lt;li>Added IPC handler to clear both Electron session and P2P cache directories (&lt;code>ipfs/&lt;/code>, &lt;code>hyper/&lt;/code>)&lt;/li>
&lt;li>Settings API allows switching between DuckDuckGo, Ecosia, and Startpage via dropdown&lt;/li>
&lt;/ul>
&lt;h3 id="example-adding-a-new-setting-autosave">Example: Adding a New Setting (&lt;code>autoSave&lt;/code>)&lt;/h3>
&lt;p>I also documented how developers can add new settings like &lt;code>autoSave&lt;/code> using:&lt;/p>
&lt;ul>
&lt;li>&lt;code>settings-manager.js&lt;/code> for default values and validation&lt;/li>
&lt;li>Preload event listeners (&lt;code>onAutoSaveChanged&lt;/code>)&lt;/li>
&lt;li>UI toggles and save logic in &lt;code>settings.js&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>Documentation link: &lt;a href="https://github.com/p2plabsxyz/peersky-browser/blob/main/docs/settings.md" target="_blank" rel="noopener">Settings Guide&lt;/a>&lt;/p>
&lt;h2 id="reflection">Reflection&lt;/h2>
&lt;p>I’m really thankful for the mentorship I’ve received from Akhilesh Thite. His guidance has been the perfect balance of autonomy and support. He challenged me to reason clearly about technical choices, especially when I thought some of them are minor and not worthing paying attention to. His feedback helped me write cleaner, better-scoped code. This project has helped me grow as a software engineer in ways I didn’t fully anticipate, but I&amp;rsquo;ve enjoyed it so so much.&lt;/p>
&lt;p>You can explore the project here:&lt;br>
&lt;a href="https://github.com/p2plabsxyz/peersky-browser" target="_blank" rel="noopener">https://github.com/p2plabsxyz/peersky-browser&lt;/a>&lt;/p></description></item><item><title>CarbonCast</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/carboncast/20250710-tanushsavadi/</link><pubDate>Thu, 10 Jul 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/carboncast/20250710-tanushsavadi/</guid><description>&lt;p>As part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/carboncast">CarbonCast project&lt;/a>, my &lt;a href="https://summerofcode.withgoogle.com/programs/2025/projects/7yvAix3k" target="_blank" rel="noopener">proposal&lt;/a> under the mentorship of Professor Abel Souza aims to build an API that makes carbon intensity forecasts more accessible and actionable.&lt;/p>
&lt;p>Under the mentorship of Professor Abel Souza, my proposal is centered around building upon CarbonCast to create an API to enable user access and utilization of energy data in optimizing their electricity consumption. Before diving into the details of the project, I’d like to share a bit about my background.&lt;/p>
&lt;h2 id="about-me">About Me&lt;/h2>
&lt;p>Hi, I’m Tanush—a rising senior at the University of Massachusetts Amherst, majoring in Computer Science and Mathematics and graduating in Spring 2026. Currently, I’m an AI Intern for the Commonwealth of Massachusetts Department of Unemployment Assistance, where I’m developing an end-to-end retrieval-augmented generation (RAG) chatbot on AWS.&lt;/p>
&lt;p>In the past, I’ve contributed to CarbonCast in a different capacity, designing a user interface to help visualize carbon intensity forecasts. I also worked at MathWorks as a Machine Learning Intern, where I collaborated in an AGILE environment to design and deploy predictive models that improved precision torque control and dynamic responsiveness in motor-driven robotic and industrial systems.&lt;/p>
&lt;p>I’m excited to bring these experiences to this year’s GSoC project, where I’ll be building tools to make carbon data more accessible and actionable for everyone.&lt;/p>
&lt;h2 id="what-is-carboncast">What is CarbonCast?&lt;/h2>
&lt;p>CarbonCast is a Python-based machine-learning library designed to forecast the carbon intensity of electrical grids. Carbon intensity refers to the amount of carbon emitted per kilowatt-hour (kWh) of electricity consumed. Developed in Python, the current version of CarbonCast delivers accurate forecasts in numerous regions by using historical energy production data of a particular geographical region, time of day/year, and weather forecasts as features.&lt;/p>
&lt;p>However, there is no easy way to access, visualize, and utilize the data through a standard interface. In addition, much important information is left out and is not available to users. For instance, electricity grids often import electricity from neighboring regions, and so electricity consumption depends on both electricity generation and imports. Moreover, it is imperative for each energy source to utilize a tailored predictive mechanism. Consequently, any carbon optimization solution trying to reduce carbon emissions due to its electricity consumption will benefit more from following a consumption-based carbon intensity signal.&lt;/p>
&lt;p>Unlike other third-party carbon services, CarbonCast’s model is open-sourced, allowing users to study, understand, and improve its behavior. This transparency invites public collaboration and innovation. It also contrasts sharply with proprietary services that often withhold both the logic behind their models and the data they are trained on.&lt;/p>
&lt;h2 id="why-this-matters">Why This Matters&lt;/h2>
&lt;p>Electricity usage is one of the largest contributors to carbon emissions globally. Carbon intensity—the amount of carbon emitted per kilowatt-hour of electricity consumed—varies based on how electricity is generated and demanded (for example, coal versus solar). With better visibility into when the grid is cleaner, individuals and organizations can shift their energy consumption to lower-carbon periods and lower prices. This enables everyday energy optimizations without compromising comfort or productivity.&lt;/p>
&lt;p>By improving CarbonCast’s accessibility and functionality, we are helping people and institutions answer questions like:&lt;/p>
&lt;ul>
&lt;li>When is the best time to charge my EV to reduce environmental impact?&lt;/li>
&lt;li>Can I run my energy-hungry server jobs when the electricity is cheaper?&lt;/li>
&lt;li>How do I actually reduce my emissions without guessing?&lt;/li>
&lt;/ul>
&lt;p>By providing clear, accurate forecasts of carbon intensity, CarbonCast can help users make informed decisions to optimize their energy footprint and reduce emissions without sacrificing convenience or productivity.&lt;/p>
&lt;h2 id="what-im-building">What I’m Building&lt;/h2>
&lt;p>The plan for this summer is to develop the backend API services for CarbonCast. This summer, I’m focused on two major goals:&lt;/p>
&lt;h3 id="geographical-expansion">Geographical Expansion&lt;/h3>
&lt;p>I am extending CarbonCast’s compatibility to support more regional electricity grids. Each model will be customized for local grid behavior and renewable energy characteristics. This involves tuning the model pipeline to adapt to each region’s energy mix, weather patterns, and reporting granularity.&lt;/p>
&lt;h3 id="system-refactoring-and-modularity">System Refactoring and Modularity&lt;/h3>
&lt;p>The original CarbonCast system was built as a research artifact. To refine it into production-grade infrastructure, I am refactoring the codebase to improve modularity. This makes it easier to plug in new regions, update forecasting algorithms, and integrate new data sources.&lt;/p>
&lt;h2 id="impact-beyond-research">Impact Beyond Research&lt;/h2>
&lt;p>The paper that inspired this project, &lt;em>Multi-day Forecasting of Electric Grid Carbon Intensity using Machine Learning&lt;/em>, pioneered the idea of forecasting carbon intensity over multiple days using a hierarchical machine learning model. This goes beyond the typical 24-hour day-ahead models that are common in the industry and allows for better planning and longer-term decision-making.&lt;/p>
&lt;p>CarbonCast builds directly on that foundation by transforming research into practical, real-world infrastructure. It is an open-source library that anyone can run, contribute to, and benefit from. Whether you&amp;rsquo;re a developer building carbon-aware applications, a policymaker working on grid decarbonization strategies, or a sustainability-conscious individual looking to reduce your carbon footprint, CarbonCast provides the tools to make informed, impactful choices.&lt;/p>
&lt;h2 id="looking-ahead">Looking Ahead&lt;/h2>
&lt;p>I am excited to contribute to a project that blends machine learning, systems engineering, sustainability, and public impact. My goal is to help make it easier for everyone to see, understand, and act on their carbon footprint while also providing the &amp;ldquo;visibility&amp;rdquo; people need to take meaningful, informed actions.&lt;/p></description></item><item><title>Implement Web Extensions &amp; System Settings Integration</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/peersky/2025-06-15-6cobi/</link><pubDate>Sun, 15 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/peersky/2025-06-15-6cobi/</guid><description>&lt;p>Hi! I&amp;rsquo;m Hanzhong Liu, a Computer Science student at Fordham University with a minor in Business Administration. My interests lie in distributed systems, backend engineering, and decentralized tools—especially systems that prioritize user autonomy and privacy.&lt;/p>
&lt;p>This summer, I&amp;rsquo;m contributing to the &lt;a href="https://github.com/p2plabsxyz/peersky-browser" target="_blank" rel="noopener">Peersky&lt;/a> project as part of OSRE 2025 through Google Summer of Code. My project, &lt;strong>&amp;ldquo;Implement Web Extensions &amp;amp; System Settings Integration,&amp;rdquo;&lt;/strong> will add full support for local browser extensions in Peersky, allowing users to customize their experience without relying on centralized extension stores.&lt;/p>
&lt;p>Deliverables include an extension loader, drag-and-drop installation for &lt;code>.zip&lt;/code> and Git-based extensions, manifest validation, sandboxing, and a unified &lt;code>peersky://settings&lt;/code> page for managing everything from themes to privacy tools. Pre-installed extensions like uBlock Origin and DScan will be bundled by default.&lt;/p>
&lt;p>You can read my full &lt;a href="https://docs.google.com/document/d/1FQU2typchX08ly8lwk7nj8NcARNrTp0GomVICO4b53k/edit?tab=t.0#heading=h.nv2vmujhdrj" target="_blank" rel="noopener">proposal here&lt;/a>. My mentor for this project is &lt;strong>Akhilesh Thite&lt;/strong>.&lt;/p>
&lt;p>I&amp;rsquo;m excited to help build tools that empower users to take control of their browsing experience—and to contribute to the vision of a more decentralized web. Looking forward to the summer ahead!&lt;/p></description></item><item><title>Into the VR-Verse: My GSoC Adventure Begins!</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/brahma/06152025-kajaljotwani/</link><pubDate>Sun, 15 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/brahma/06152025-kajaljotwani/</guid><description>&lt;p>Hello! I’m Kajal Jotwani, an undergraduate Computer Science student from India who is passionate about building creative, interactive technologies and contributing to open source. This summer, as part of Google Summer of Code 2025, I will be working on the Brahma / Allocentric WebXR Interfaces project under the mentorship of &lt;strong>Samir Ghosh&lt;/strong>. You can read my complete &lt;a href="https://docs.google.com/document/d/1Ne7ADVM72jRuxU7wzRYK8Hvp1zqCUviU0Fh1sTtRWe4/edit?usp=sharing" target="_blank" rel="noopener">proposal here.&lt;/a>&lt;/p>
&lt;p>This project focuses on creating a formalized framework for building collaborative and cross-platform WebXR-based experiences. As part of its first public release of Brahma- a lightweight open-source toolkit, our goal is to formalize the framework, create documentation, and implement example applications like multi-user games and scientific visualizations. This will help make Brahma extensible and accessible for a wider developer community.&lt;/p>
&lt;p>I&amp;rsquo;m excited to be working on this project and will be documenting my journey, learnings, and progress here throughout the summer.&lt;/p></description></item><item><title>Open Source Repository Browser</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/orb/20250615-param/</link><pubDate>Sun, 15 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/orb/20250615-param/</guid><description>&lt;p>Hi! I&amp;rsquo;m Param Arora, a Computer Science student at Manipal Institute of Technology. My interests lie in backend engineering and AI.&lt;/p>
&lt;p>This summer, I&amp;rsquo;m contributing to the &lt;a href="https://github.com/UC-OSPO-Network/orb-showcase" target="_blank" rel="noopener">ORB&lt;/a> project as part of OSRE 2025 through Google Summer of Code.&lt;/p>
&lt;p>My project, &lt;strong>&amp;ldquo;UC Open Source Repository Browser [UC ORB]&amp;rdquo;&lt;/strong>, is a discovery platform that maps and categorizes open source projects across the UC system. It offers a comprehensive web interface with intuitive search, advanced filtering capabilities, responsive design, and integrated visualizations of project metrics.&lt;/p>
&lt;p>You can read my full &lt;a href="https://drive.google.com/file/d/1zELT9lxPhLCUs9Xyfb2nU9EPc_tjzVki/view?usp=sharing" target="_blank" rel="noopener">proposal here&lt;/a>.
My amazing mentor for this project is &lt;strong>Juanita Gomez&lt;/strong>.&lt;/p>
&lt;p>Looking forward to the summer ahead!&lt;/p></description></item><item><title>Causeway: A New Approach to Web Development Teaching</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/causeway/20240620-audsostrom/</link><pubDate>Thu, 20 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/causeway/20240620-audsostrom/</guid><description>&lt;p>As part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/ucsc/causeway">Causeway&lt;/a> team, my &lt;a href="https://docs.google.com/document/d/e/2PACX-1vRghWCQ1QkuRPh2NDllLgEzXwVXvOXZ-8K3B32ItcrtCY19pFhKGV4x53JHGXoHsEhi1PzsOfs35Uf3/pub" target="_blank" rel="noopener">proposal&lt;/a> under the mentorship of Professor &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/david-lee/">David Lee&lt;/a> aims to enhance web development education through situated learning.&lt;/p>
&lt;p>&lt;a href="https://tech4good.soe.ucsc.edu/assets/docs/chi-2019-ca.pdf" target="_blank" rel="noopener">Causeway&lt;/a> addresses shortcomings in current online coding tutorials by offering a comprehensive approach to web development using an Angular, RxJS, NgRx, and Firebase stack. By breaking down the complex task of creating a website down into discrete chunks (micro-roles) and tracking individual progress, students can be assured they are acheiving their desired learning goals. With this project, our team hopes to demonstrate the potential of sitatuted learning – tacit knowledge picked up within a real-world context – instead of content-based learning approaches used in sites like Khan Academy and Coursera.&lt;/p>
&lt;p>Over the course of this summer, we plan on reinvigorating the pre-existing v1 platform through the addition of new features such as dashboards, quizzes, and in-depth walkthroughs of new potential projects for users to implement. The platform will also leverage the &lt;a href="https://developer.stackblitz.com/platform/api/webcontainer-api" target="_blank" rel="noopener">Stackblitz WebContainer API&lt;/a> and &lt;a href="https://firebase.google.com/docs/functions" target="_blank" rel="noopener">Firebase Cloud Functions&lt;/a> to run full applications in the browser for interactive and secured learning.&lt;/p></description></item><item><title>Causeway: Learning Web Development Through Micro-Roles</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/causeway/20240513-rishimondal/</link><pubDate>Mon, 03 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/causeway/20240513-rishimondal/</guid><description>&lt;p>Hello! My name is Rishi and I will be contributing to &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/ucsc/causeway/">Causeway&lt;/a>, a platform for learning to develop web applications using an Angular, RxJS, NgRx, and Firebase stack , during Google Summer of Code 2024. My project is &lt;a href="https://summerofcode.withgoogle.com/programs/2024/projects/wTxAXxEz" target="_blank" rel="noopener">Causeway : Improving the Core Infrastructure and Experience ! &lt;/a>, mentored by &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/david-lee/">David Lee&lt;/a>. This project aims to modernize the platform by adding various login options (Google, GitHub, email/password, passwordless) using Firebase Authentication, enhancing the landing page with an about section and improved UI, and introducing section quizzes via Firebase Firestore and Cloud Functions. It also involves developing user and learning dashboards with Angular Material UI and Firebase Cloud Functions, improving the overall UI design with application walkthroughs, providing an introductory demo for new users, incorporating generative AI features, automating deployment and monitoring with Vercel Bot, and adding contact and feedback options. These enhancements will boost user engagement, usability, and the overall learning experience. &lt;a href="https://drive.google.com/file/d/1WsojAfxLJqU-Jkozbyq-bTJmcTqBkyVy/view?usp=sharing" target="_blank" rel="noopener">My proposal can be viewed here!&lt;/a>&lt;/p>
&lt;p>Causeway is a platform for learning to develop web applications using an Angular, RxJS, NgRx, and Firebase stack. It aims to bridge the gap in online coding tutorials by providing a holistic approach to web application development, breaking down the process into a hierarchy of micro-roles. This structure offers learners a clear pathway for learning and translates into a clear process for developing an application. In the longer future, this approach will enable learners to contribute to projects by taking on micro-roles for yet-to-be-developed projects. The platform leverages the &lt;a href="https://developer.stackblitz.com/platform/api/webcontainer-api" target="_blank" rel="noopener">Stackblitz WebContainer API&lt;/a> to run full applications in the browser for interactive learning.&lt;/p></description></item></channel></rss>