Resume

- 3 mins read

বিশ্বাস এমন পাখি যা ভোর যখন অন্ধকার থাকে তখন আলো অনুভব করে।

- রবীন্দ্রনাথ ঠাকুর



Faith is the bird that feels the light when the dawn is still dark.

- Rabindranath Tagore


About


When I’m not working my day job as a Software Developer. I like learning about history, exploring open source/self hosted technologies, and appreciating pixel art.

Work Experience


Software Developer (June, 2024 - June, 2025)

As a Full Stack Developer at CCRPC (Champaign County Regional Planning Commission):

CCRPC

- 5 mins read

Census Downloader


The US Census Bureau’s data and geopgraphical boundaries are accessible through 2 different APIs. Traditionally planners would have to manually join these two tables with their GEOIDs. This process was time consuming, required python scripting knowledge, and GEOIDs would differ from dataset to dataset.

I joined was tasked with producing a QGIS Plugin that automatically combines Census Data and geographical boudnaries with a neat user friendly GUI. The original codebase was 3000+ lines and had limited functionality, extensiblity, and exposed API keys. By rewriting it, I was able to reduce it to under 1000 lines while increasing performance, functionality, and extensibility.

Bangladesh Research

- 2 mins read

Background


Sand Mining Sand and gravel are two extremely sought-after raw materials in the global market. Course sand dredged from rivers is used in semi-conductor and glass manufacturing. Smoother sand has high demand in wetland reclamation, important for expand infrastracuture in areas affected by climate change. Gravel is a crucial material for both concerete and aslphalt production. Flowing from the himalayans down in to the Gangetic plain, the Bhramaputra deposists course stilt and gravel right into the Bengal Basin.

School Projects

- 10 mins read

Flood Risk Calculation


DEM Map

Slope Map

Proximity Map

Flood Risk Map

# Load necessary packages
library(raster)
library(rasterVis)
library(maptools)
library(rgdal)
# Set working directory
setwd("<YOUR DIRECTORY>")

# Load DEM file
dem <- raster("RiverUSGS.tif")

plot(dem)

# Plot DEM map
plot(dem, col = rev(terrain.colors(50)))

# Set extent for cropping
ext <- extent(-92.2, -92.0, 38.4, 38.6)

# Crop DEM to desired extent
demnew <- crop(dem, ext)

plot(demnew)
# Plot cropped DEM map
plot(demnew, col = rev(terrain.colors(50)))

# Extract elevation values at each cell
elevations <- getValues(demnew)

# Calculate flood risk
flood_risk <- (1 - (elevations / max(elevations)))

# Create raster object for flood risk layer
flood_risk_raster <- raster(demnew)
values(flood_risk_raster) <- flood_risk

# Define custom color palette for flood risk map
my_palette <- colorRampPalette(c("yellow", "red"))

# Plot DEM map with custom color palette
levelplot(demnew, col.regions = rev(terrain.colors(50)))

# Add flood risk map with custom color palette
floodriskplot <- levelplot(flood_risk_raster, alpha = 0.5, add = TRUE, col.regions = my_palette(100))

floodriskplot

library(sf)

boundary <- st_read("Addresses.shp")

flood_data <- read.csv("flood_data.csv")
plot(flood_data$Height, flood_data$Discharge)

df2 <- data.frame(discharge = flood_data$Discharge, height = flood_data$Height)


# Save flood risk map
writeRaster(flood_risk_raster, "flood_risk.tif", format = "GTiff", overwrite = TRUE)


df <- data.frame(Elevation = elevations, Flood_Risk = flood_risk)

# Create a line chart to show the relationship between elevation and flood risk
plot(df$Elevation, df$Flood_Risk, type = "l", xlab = "Elevation", ylab = "Flood Risk", main = "Elevation vs Flood Risk")

noaa_data2 <- read.csv("RiverData2.csv")

A Flood Risk Calculator written in R. It uses DEM data to calculate slope and proximity (shown in their own respective maps). These are used to calculate a final flood risk assessment on a scale of 0 to 1.