Institutional platforms, community infrastructure and independent experiments. Each project describes my contribution; technical detail and source evidence remain available below.
GeoServer Active-Active
Read case study
Original plugin developer · 2010–2014
I developed the original JMS clustering plugin and related articles at GeoSolutions. It propagates catalog and configuration changes between GeoServer instances while multiple nodes serve queries. Spatial datasets have a separate sharing or synchronization strategy.
JavaSpringJMSActiveMQ
The original development was committed in SVN and later migrated to Git. The current module includes subsequent community maintenance.
CKAN JSON Schema and indexing
Read case study
Extension development and data integration
I developed ckanext-jsonschema for structured metadata forms, validation and Solr indexing. Separately, I worked on an Eventarc-based indexing design across Elasticsearch, Solr and object storage. The event-driven integration is separate from the public extension.
PythonCKANJSON SchemaSolrGCP Eventarc
DynaStore architecture and read-in-place
Read case study
Architecture and technical leadership at FAO · Since 2023
My work combines API extensions, domain modules, operation-specific storage routing and recoverable background tasks. A DuckDB case study queries supported geospatial files in place, while external search indexes are maintained as asynchronous projections.
PythonFastAPIPostGISDuckDBGCP
DynaStore and its institutional deployments are FAO work delivered with colleagues and collaborators.
FAO's modular, multi-tenant geospatial platform for turning OGC API and STAC standards into
deployable services. Its extension architecture covers discovery, vector and raster access,
maps and tiles, processing, joins, dimensions and working 3D delivery paths.
Python
FastAPI
PostGIS
STAC
OGC API Features
Maps / Tiles
Coverages
3D Tiles
OGC API Records
GCP
Engineering details and evidence
Engineering scope:
- Standards-to-code: Separate extension packages map OGC API and STAC protocol families onto shared catalog and storage services
- Multi-tenancy: Catalog-scoped routing, authorization and lifecycle management across cloud and on-premises deployments
- Vector, raster and 3D: Features, tiles, maps, coverages and a verified CityJSON-to-3D-Tiles delivery path
- Asynchronous operations: Ingestion and processing workflows designed for large geospatial assets
- Operational honesty: Open issues document scaling boundaries such as geometry-heavy low-zoom tiles, multi-million-feature ingestion and bounded event consumption
GeoID remains an official FAO initiative. This portfolio describes my technical contribution;
project ownership and institutional inquiries belong to FAO.
A multi-tenant geospatial engine developed at FAO for catalog, map, tile and vector-data workflows.
Its architecture separates protocol handling from storage and operational services, with pluggable
PostgreSQL/PostGIS, search and analytical data paths across cloud and on-premises deployments.
Python
FastAPI
GCP
Terraform
PostgreSQL
PostGIS
asyncpg
pg_cron
OpenSearch
OGC API
React
Engineering details and evidence
Key Components:
- Data Catalog: data.apps.fao.org/catalog — Multi-tenant metadata discovery with pluggable storage backends (Iceberg / DuckDB / Parquet)
- Maps & Tiles API: FastAPI + PostGIS serving WMS/WFS/WMTS + Mapbox Vector Tiles for web mapping
- Dual GeoServer Clusters: Separated read and authoring instances for safe editing under load
- GeoID integration: OGC API and STAC extension packages reuse shared catalog, storage and lifecycle services
- Operational hardening (2026): pg_cron-driven task reaper, async PostgreSQL connection pooling, and GCP provisioning resilience for multi-region deployments
- Admin UI: Operator console for catalog provisioning, task inspection, and configuration management
My contribution covered the architecture and technical leadership of these shared services;
DynaStore and its institutional deployments remain FAO work.
DynaStore and DuckDB read-in-place
Since 2023, I have contributed to the DynaStore geospatial catalog program. Its architecture separates API extensions, service modules, storage capabilities, and background tasks, with external search indexes maintained as asynchronous projections. A related DuckDB case study queries supported geospatial files without first copying them into a database.
Engineering for FAO's corporate statistics platform: frontend modernization, statistical processing and repeatable delivery within an international team.
TypeScriptReact / ReduxRCI/CD
Engineering details and team context
My contribution included React/Redux/TypeScript frontend work, R-based processing pipelines, and CI/CD and software delivery practices for the SWS team. The platform supports Food Balance Sheets, Supply Utilization Accounts and domain-specific statistical methodologies.
FAOSTAT public repositories
Core contributor to GeoServer, GeoNetwork, GeoTools, and GeoBatch.
Led development of advanced features and performance optimization tools.
Java
Spring
GeoServer
PostGIS
Engineering details and evidence
Key Contributions:
- GetLegendGraphic JSON Output: Community-adopted feature for JSON-based map legends
- JMX/REST/JMS/WPS Interfaces: Enhanced monitoring, REST API, message integration, processing services
- GeoServerStressTest: Load testing tool for GeoServer performance evaluation
- Production Deployments: FAO, NATO, NURC, LaMMa research institutions
At GeoSolutions (2010–2014), led development of enterprise features for OGC Web Services,
metadata management, and high-performance geospatial data serving.
GeoServer JMS clustering
I developed the original GeoServer JMS clustering plugin as its sole developer from 2010 to 2014. It synchronizes GeoServer configuration changes between instances through JMS. The current module also includes later maintenance. My related article explains the clustering approach.
The original development was committed in SVN and later migrated to Git; source attribution preserves the historical authorship.
GeoServer-manager
I contributed to the development and maintenance of GeoServer-manager, a Java client for the GeoServer REST administration API. Multiple contributors worked on the project, and its public repository is archived.
GeoServerStressTest
GeoServerStressTest is a supporting tool for exercising GeoServer under load and evaluating service behavior. It complements my broader GeoServer ecosystem work.
A C++ BES module enabling relational database access through the OPeNDAP Hyrax data server.
Exposes databases accessed through ODBC (PostgreSQL, MySQL, SQLite, MongoDB) as standard OPeNDAP datasets.
C++
ODBC
OPeNDAP
Autotools
Engineering details and evidence
Project Details:
- Google Summer of Code: Developed through Google Summer of Code with OPeNDAP mentorship
- Database Support: PostgreSQL, MySQL, SQLite, MongoDB via ODBC/SQL interfaces
- OPeNDAP Integration: Exposes tabular data through standard netCDF, HDF5, FITS, ASCII formats
- Maintenance: Public source and development history are available in the OPeNDAP repository
This project bridged the gap between enterprise databases and scientific data discovery workflows,
enabling transparent access to geospatial and climate data stored in relational databases.
FAO's STAC-native earth observation discovery and access platform. Built on STAC-FastAPI with
Elasticsearch / OpenSearch, exposing OGC STAC APIs across agricultural indicators, dekadal
time series, and administrative boundary hierarchies.
I introduced STAC FastAPI Elasticsearch/OpenSearch (SFEOS) at FAO and contributed patches and design suggestions upstream. This work connects STAC discovery with FAO's Agro-Informatics Platform and catalogue services.
Python
FastAPI
STAC
OpenSearch
Elasticsearch
OGC API
GCP
Datacube
Engineering details and evidence
Platform Highlights:
- STAC-first architecture: OGC STAC standard end-to-end, from collection metadata through catalog search to item retrieval
- Datacube workloads: Handles very large dimension spaces — thousands of agricultural indicators, dekadal time series (36 periods/year), administrative hierarchies
- JSON-safe serialisation: Custom OpenSearch serialiser keeping STAC pydantic models (HttpUrl, datetime, UUID, Decimal) deterministic on ingest
- Datetime range indexing: STAC `[[start, end]]` intervals mapped to Elasticsearch date_range objects with null-handling
- Separate from the main catalog: Distinct runtime and data plane from DynaStore's core catalog, co-deployed on the same Keystone IAM and GCP substrate
The portal is the Organization's entry point for EO-aligned data discovery — complementing
DynaStore's generic geospatial catalog with STAC-native search, item retrieval, and OpenSearch-backed faceting.
FAO's unified identity and access control platform. My 2023–2024 implementation combined Keycloak and Open Policy Agent (OPA) with GCP IAM and integrated Keycloak through a Workforce Identity Pool, supporting federated access across application and resource boundaries.
Keycloak
GCP IAM
Workforce Identity Federation
Java
OIDC
OPA
FastAPI
Python
Terraform
Engineering details and evidence
Architecture Highlights:
- OpenID Connect: Industry-standard authentication for federated identity
- Cloud Identity Integration: Keycloak integration with GCP IAM and Workforce Identity Pools
- Policy evaluation: Open Policy Agent in the access-control implementation
- Role-Based Access Control (RBAC): Traditional role hierarchy for application access
- Relation-Based Access Control (ReBAC): Fine-grained permissions based on data relationships
- Multi-tenant Support: Separate access-policy scopes across applications and resources
My contribution covered identity integration, access-policy architecture and implementation in collaboration with FAO teams.
Suite of 5 open-source CKAN extensions for open data platform enhancement, metadata management,
and visualization integration.
I provide technical leadership for FAO’s ISO metadata catalogue, implemented with CKAN for the Agro-Informatics Platform, and participated in the standardization work on ISO/TR 19115-4. This Technical Report is listed as under publication in October 2026.
Python
CKAN
JavaScript
Engineering details and evidence
Extensions:
These extensions extend CKAN's capabilities for geospatial data publishing, metadata standardization,
and modern web-based data discovery interfaces.
CKAN JSON Schema and indexing
I developed ckanext-jsonschema to support JSON Schema-based metadata forms and validation in CKAN, with documented Solr indexing for schema-related metadata and views. Separately, I worked on an event-driven indexing design spanning Elasticsearch, Solr, and object storage, with GCP Eventarc in the event path. That work is outside the public extension repository.
Tellurion is independently created and owned by Carlo Cancellieri: a self-hosted Rust geospatial serving engine with published v0.6.1 Community source. It covers Features, Tiles, Maps, Styles, STAC, CQL2,
COG, Zarr and 3D Tiles; GeoPackage stays the embedded default and PostGIS supports larger deployments.
Rust
OGC API
STAC
PostGIS
GeoPackage
MVT / PNG
COG / Zarr
3D Tiles 1.1
Engineering details, field note and evidence
From a public URL to a map, in a 90-second walkthrough.
Explore ESA WorldCover land cover (COG), Monaco building footprints (GeoParquet)
and Natural Earth coastline (ZIP Shapefile). See source inspection and map preview
with real public data, then try a supported file of your own.
This edited walkthrough is not a performance benchmark; previews are temporary
and do not create persistent tenants or catalogs.
STAC discovery to a live map
One bounded ESA WorldCover Item, preserved with provenance and served through split GeoPackage and COG lanes as inspectable STAC, Features, TileSet and live PNG resources.
RustSTACOGC APICOGESA WorldCover
Public evidence with explicit boundaries:
- Source and operation: published v0.6.1 Community source is public under AGPL-3.0-only for self-hosted evaluation. There is no Tellurion Cloud and no service-level agreement
- Try a public file: COG and GeoParquet use bounded HTTPS range reads; ZIP Shapefile uses bounded temporary storage. Use a direct public HTTPS URL without credentials, query parameters, fragments or redirects. Sessions last up to 15 minutes and create no persistent tenant or catalog
- Deployment: free Render services can sleep after inactivity. Hosted timings are not benchmark evidence
- Release: the public evaluator runs v0.6.1; vector/STAC paths retain public release-candidate source; historical raster, Zarr and 3D demos retain checksum-pinned 0.3 artifacts and their original terms
- Reproducibility: version entry points retain dated viewer snapshots and checksums. Demo source and evidence now live alongside the engine; existing gallery links remain available. Retained pages do not guarantee historical service uptime
- Rome measurement: the published result remains a Tellurion 0.2.0 smoke-scale benchmark with its method and caveats
- Standards precision: demonstrated behavior is not presented as certification or blanket conformance
A Python MCP context service that brings relevant skills and task evidence into coding sessions.
It keeps the original request intact, scopes retrieval to the project, and shows where each result came from.
Python
FastMCP
SQLite
MCP
Engineering details and evidence
Engineering scope:
- Scoped retrieval: Select task memory and skill descriptions for the current project, with size limits and source references
- Reviewable context: Inspect the original prompt, supplemental evidence, sources and omissions in the Context page
- Client integration: Use the same retrieval service through MCP or a prompt hook; leave permission and continuation decisions with the coding client
- Smaller tool surface: An optional 8-tool profile measured 1,242
o200k_base tokens for serialized MCP schemas and instructions, down from 16,362 for the 87-tool profile (92.41% lower). This is a schema comparison, not a measure of total task usage
- Resilient path: Pass the original prompt through when context is unavailable or retrieval times out
Interactive retrieval needs no local model or API key. Optional indexing and memory curation
run outside the prompt path.
The curated project collection documents Planner, an iOS activity-planning app with LLM-assisted discovery, map-based planning, and local storage.
The curated project collection also documents a Raspberry Pi media-server build, a compact systems and operations project.
At GeoSolutions, I contributed to JMS-based GeoServer clustering and JSON representations of GeoServer REST APIs, working across core code and plugins. This combined distributed-systems engineering with open-source interoperability and API development.
My GeoSolutions work (2010–2014) included geospatial software and data services for institutional and research users. In 2012, I contributed to EOMAP infrastructure supporting GMES Masters and ESA App Camp, making Earth-observation raster time series accessible through OGC services, and to the LaMMA geoportal for meteorological and satellite data.
I also contributed to geospatial infrastructure for NATO NURC/CMRE in La Spezia. The publicly documented company collaboration covered oceanographic data discovery, ingestion and controlled access. This was software engineering for a research and security stakeholder, not military service or a claim of security clearance.
At SIGEO in 2018–2019, I led R&D and engineering delivery for TAP/SMAI, an environmental monitoring system supporting the Trans Adriatic Pipeline construction site in Italy. This connects my platform and delivery experience to civilian infrastructure monitoring.
FAO projects are institutional work delivered with colleagues and collaborators. This is a personal portfolio; views and independent projects do not imply endorsement by FAO or any other organization.