Computer science student in Hyderabad. This summer at ISRO NRSC I built a satellite image alignment pipeline that verifies its own output with a second, independent method.
Shadnagar, Telangana. 1 June to 31 August 2026. Calibration and validation team, Data Processing Area. Guide: Mr. Raghavender N.
One pipeline for four satellites, and two ways to prove it worked
Two satellites can photograph the same field and disagree. Before you can compare them, the images have to share a grid, a physical unit and the same position on the ground. Doing that by hand for each pair is slow and easy to get wrong.
Radiometric Align does it from two input rasters. It works out which sensors it was given, converts to top-of-atmosphere reflectance with each mission's own calibration, registers the pair with ECC, and writes calibrated, aligned outputs with diagnostics. A PyQt5 desktop app and a command-line tool run the same core package and produce identical results.
The part I care about most is that it does not trust itself. Dense optical flow, which shares no mathematics with ECC, measures what shift remains. Resampling is benchmarked against a manual block average. Registration is run a second time on the corrected pair. All of it runs on background threads beside the main pipeline.
How a run flows
Checks on background threads
4sensor families in one pipelineResourcesat-2/2A, Cartosat-3, Landsat-8/9, Sentinel-2
< 0.5 pxresidual misalignmentafter one ECC pass, on every test dataset
0.0030RMSE, Landsat-8 vs Sentinel-2Creflectance, R² 0.9997 over 4.4 million pixels
17 of 17tests passingfunctional, GUI and robustness
The desktop app: pick two rasters, run, read the log.Landsat-8 band 7 against Sentinel-2C band 12 reflectance, after alignment.Homogeneity map from an 11 by 11 moving window. White is ground uniform enough to compare radiometry on.RGB composite: green where both images are homogeneous, red source only, blue target only.
What it does not do. It stops at top-of-atmosphere reflectance, with no atmospheric correction. It is built for clear scenes, and ECC expects a starting offset under about 10 pixels.
Catching low-rate DDoS attacks inside a P4 switch.
Low-rate DoS attacks send short, periodic bursts that slip under volume thresholds. PLUTO looks for them where the packets already are, on a P4 (BMv2) switch.
A window-based ML stage flags suspect windows, and time-limited per-flow state then filters the attacker. A tree-based ensemble (XGBoost, LightGBM, RandomForest) was trained offline and mapped onto match/action tables with encoded features so it fits the switch's limits. Entropy, variance and wavelet frequency features are computed in the data plane itself.
Data plane
Detection and mitigation both run on the switch, with per-flow state that expires.
Model
Trained offline, then encoded into match/action tables to respect hardware constraints.
Features
Entropy, variance and wavelet-transform frequency features, computed in the P4 pipeline.
Evaluation
Simulated in Mininet with iperf traffic, scored by an evaluation script that writes plots and a summary.
A GAN that predicts what a coarser satellite sensor would have recorded.
Sensors that observe the same ground disagree in resolution, band response and blur. SatHarmoGAN takes a finer-resolution patch and predicts what a coarser sensor would have recorded. It is harmonization, not super-resolution, and it works on top-of-atmosphere reflectance only.
The generator is a conditional residual U-Net with FiLM layers and a point spread function module. A multi-scale PatchGAN judges it, but the adversarial weight is kept small so the GAN acts as a regularizer next to reconstruction, spectral angle, SSIM, edge and physics losses.
Sensors
LISS-4, LISS-3, Sentinel-2 L1C, Landsat 8 and 9. Any pair where the source is finer than the target.
Judged against
Nearest, bilinear, bicubic, area, Lanczos and Gaussian baselines and two ablations, on MAE, RMSE, PSNR, SSIM, SAM and ERGAS.
Inference
Large scenes are tiled with overlapping Hanning blending, so there are no seams.
Reproducible
Each run writes a timestamped folder with its config, environment, checkpoints and metrics.
A Git-style version control system in C++17 that checks its own history.
YAG keeps local history and syncs to a central repository over SSH and SCP, so the server needs nothing installed. It runs on Linux and Windows and produces the same commit IDs on both.
It was built to check itself. Every transfer is verified with SHA-256 and retried up to three times, a push is skipped when branch heads already match, and yag doctor re-walks the history and re-hashes every object.
Storage
Objects hashed with SHA-256, behind separate storage, index and command layers.
Sync
SSH and SCP, lock files against conflicting pushes, and an optional protected main branch.
Recovery
reflog brings back earlier HEADs, and gc removes unreachable objects.
A video server where Python never touches the bytes.
A home video server has to serve big files to a phone or a TV without stalling. home-stream is a Flask app behind Nginx that answers HTTP range requests with 206 Partial Content. Flask only decides who may read which file. It replies with X-Accel-Redirect, and Nginx sends the bytes with kernel sendfile.
New files arrive in whatever codec they came in. A background pipeline inspects each one with ffprobe and picks a fast remux when the streams are compatible or a full re-encode when they are not. A lock-guarded queue stops the same file being converted twice, and a polling watcher updates a thread-safe index without a restart.
Delivery
Range requests, 206 responses, file bytes served by Nginx and never by Python.
Transcoding
ffprobe to check codec compatibility, ffmpeg to remux or re-encode on background threads.
Concurrency
A lock-guarded work queue and an RLock-guarded in-memory media index.
Discovery
A polling file watcher indexes new media automatically.
Bi-directional file sync for a D-Link router, built by reverse engineering its web interface. Headless Chrome solves the router's HMAC-MD5 login once and hands over a session token. Everything after that is direct HTTP against the undocumented REST API. It is additive only and never deletes a file.
A Flask app that turns weight, height, age and training days into diet and workout plans through Gemini agents built with Google's Agent Development Kit. It adds streaks, reminders and on-page workout timers.