<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Dr James Williams - Blog</title><description>Articles on geospatial AI, place-aware computing, and spatial analysis by Dr James Williams.</description><link>https://jwilliams.science/</link><language>en-gb</language><item><title>H3 Hierarchy and Compaction: Multi-Resolution Spatial Analysis</title><link>https://jwilliams.science/blog/h3-hierarchy-compaction/</link><guid isPermaLink="true">https://jwilliams.science/blog/h3-hierarchy-compaction/</guid><description>Learn how H3&apos;s hierarchical structure enables multi-resolution analysis, how parent-child relationships work across resolution levels, and how the compactCells and uncompactCells functions reduce redundant spatial representations. Includes interactive browser demos and practical code examples.</description><pubDate>Tue, 28 Apr 2026 00:00:00 GMT</pubDate><category>H3 Grids</category><category>Spatial Computing</category><category>JavaScript</category><category>Mapping &amp; Visualization</category><category>Tutorials</category><category>GIS</category><category>Algorithms</category><author>J. Williams</author></item><item><title>H3 Catchment Analysis: Modelling Service Areas with Hexagonal Grids</title><link>https://jwilliams.science/blog/h3-catchment-analysis/</link><guid isPermaLink="true">https://jwilliams.science/blog/h3-catchment-analysis/</guid><description>Learn how to use H3&apos;s gridDisk, gridRing, and gridDistance functions to model service areas, accessibility zones, and multi-source catchment overlap. Includes interactive browser-based demos with step-by-step code.</description><pubDate>Sat, 25 Apr 2026 00:00:00 GMT</pubDate><category>H3 Grids</category><category>Spatial Computing</category><category>JavaScript</category><category>Mapping &amp; Visualization</category><category>Tutorials</category><category>GIS</category><category>Urban Analytics</category><author>J. Williams</author></item><item><title>H3 Density Mapping: Visualising Urban Point Data as Hexagonal Heatmaps</title><link>https://jwilliams.science/blog/h3-density-mapping-tutorial/</link><guid isPermaLink="true">https://jwilliams.science/blog/h3-density-mapping-tutorial/</guid><description>Learn how to aggregate point data into hexagonal density maps using H3 and Leaflet. This tutorial covers spatial binning, choropleth colouring, power-scaled colour ramps, and interactive multi-resolution analysis — all running in the browser.</description><pubDate>Wed, 22 Apr 2026 00:00:00 GMT</pubDate><category>H3 Grids</category><category>Spatial Computing</category><category>JavaScript</category><category>Mapping &amp; Visualization</category><category>Tutorials</category><category>GIS</category><category>Data Visualization</category><author>J. Williams</author></item><item><title>What Do Large Language Models Know About Place?</title><link>https://jwilliams.science/blog/place-in-llms/</link><guid isPermaLink="true">https://jwilliams.science/blog/place-in-llms/</guid><description>A reflective piece on how large language models represent place: the difference between spatial and platial knowledge, what LLMs do well (cultural associations, character, narrative), what they get wrong (boundaries, recency, under-represented places), and how to build applications that use this capability honestly.</description><pubDate>Wed, 15 Apr 2026 00:00:00 GMT</pubDate><category>LLM</category><category>AI</category><category>Place Theory</category><category>Spatial Computing</category><category>GIS</category><author>J. Williams</author></item><item><title>Streaming LLM API Responses in Python: A Complete Production Guide</title><link>https://jwilliams.science/blog/python-llm-streaming-api-tutorial/</link><guid isPermaLink="true">https://jwilliams.science/blog/python-llm-streaming-api-tutorial/</guid><description>A complete guide to consuming streaming LLM APIs in Python. Covers the SSE protocol, async generator patterns with httpx, token counting and cost estimation during streaming, exponential back-off for rate limits, and a production-ready wrapper class for OpenAI-compatible endpoints. Applied to a real document summarisation pipeline.</description><pubDate>Tue, 14 Apr 2026 00:00:00 GMT</pubDate><category>Python</category><category>LLM</category><category>AI</category><category>APIs</category><category>Async</category><category>Tutorials</category><category>Production</category><author>J. Williams</author></item><item><title>How to Use Rust and WebAssembly for Real-Time Data Processing in the Browser</title><link>https://jwilliams.science/blog/rust-wasm-realtime-data-processing/</link><guid isPermaLink="true">https://jwilliams.science/blog/rust-wasm-realtime-data-processing/</guid><description>A practical tutorial on compiling Rust to WebAssembly using wasm-pack and wasm-bindgen. Covers writing a Rust processing core, exposing functions to JavaScript, running heavy computation off the main thread using Web Workers, and benchmarking the result against a pure-JavaScript baseline. Applied to a real-time sensor data smoothing use case.</description><pubDate>Wed, 08 Apr 2026 00:00:00 GMT</pubDate><category>Rust</category><category>WebAssembly</category><category>Performance</category><category>JavaScript</category><category>Tutorials</category><category>Systems Programming</category><author>J. Williams</author></item><item><title>Building High-Throughput Spatial Pipelines with Go Concurrency</title><link>https://jwilliams.science/blog/golang-concurrency-spatial-pipelines/</link><guid isPermaLink="true">https://jwilliams.science/blog/golang-concurrency-spatial-pipelines/</guid><description>A practical guide to building high-throughput geospatial data pipelines in Go using goroutines, channels, and the fan-out/fan-in pattern. Includes benchmarked code examples processing H3 hexagonal grid cells in parallel, with proper context cancellation and error handling.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>Go</category><category>Concurrency</category><category>Spatial Computing</category><category>Performance</category><category>Tutorials</category><category>GIS</category><author>J. Williams</author></item><item><title>Self-Hosted Vector Tiles with PMTiles and MapLibre GL JS</title><link>https://jwilliams.science/blog/vector-tiles-pmtiles-maplibre/</link><guid isPermaLink="true">https://jwilliams.science/blog/vector-tiles-pmtiles-maplibre/</guid><description>A practical guide to generating, hosting, and consuming vector tile archives using PMTiles and MapLibre GL JS. Covers creating PMTiles archives from GeoJSON and GeoPackage sources with Tippecanoe, hosting on S3 or GitHub Pages, and building an interactive web map with custom styles, popups, and dynamic layer control.</description><pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate><category>MapLibre GL JS</category><category>Vector Tiles</category><category>PMTiles</category><category>GIS</category><category>Web Mapping</category><category>JavaScript</category><category>Spatial Computing</category><author>J. Williams</author></item><item><title>Location-Aware Search with Elasticsearch Geo Queries</title><link>https://jwilliams.science/blog/elasticsearch-geospatial-search/</link><guid isPermaLink="true">https://jwilliams.science/blog/elasticsearch-geospatial-search/</guid><description>A practical tutorial on Elasticsearch geospatial search covering geo_point field mapping, geo_distance and geo_bounding_box queries, and advanced relevance scoring using function_score with geo_distance decay functions. Includes Python Elasticsearch client examples and a discussion of when to use each query type.</description><pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate><category>Elasticsearch</category><category>Search</category><category>Spatial Computing</category><category>GIS</category><category>Tutorials</category><author>J. Williams</author></item><item><title>DuckDB as an In-Process Spatial Analytics Engine</title><link>https://jwilliams.science/blog/duckdb-spatial-analytics/</link><guid isPermaLink="true">https://jwilliams.science/blog/duckdb-spatial-analytics/</guid><description>A practical guide to using DuckDB&apos;s spatial extension for geospatial analysis. Covers installing the extension, running ST_Within and ST_Distance queries over large Parquet datasets, integrating with Python and the broader data ecosystem, and comparing the approach to traditional spatial database setups.</description><pubDate>Sun, 15 Mar 2026 00:00:00 GMT</pubDate><category>DuckDB</category><category>SQL</category><category>Spatial Computing</category><category>Analytics</category><category>GIS</category><author>J. Williams</author></item><item><title>Rust&apos;s Zero-Cost Abstractions for Geospatial Processing</title><link>https://jwilliams.science/blog/rust-zero-cost-abstractions/</link><guid isPermaLink="true">https://jwilliams.science/blog/rust-zero-cost-abstractions/</guid><description>An exploration of Rust&apos;s zero-cost abstractions applied to geospatial data processing. Covers iterator chains over coordinate arrays, custom trait implementations for spatial types, and how the Rust compiler eliminates abstraction overhead to produce performance equivalent to hand-written C.</description><pubDate>Sun, 08 Mar 2026 00:00:00 GMT</pubDate><category>Rust</category><category>Performance</category><category>GIS</category><category>Systems Programming</category><category>Spatial Computing</category><author>J. Williams</author></item><item><title>Building a Geospatial REST API with FastAPI and PostGIS</title><link>https://jwilliams.science/blog/fastapi-postgis-geospatial-api/</link><guid isPermaLink="true">https://jwilliams.science/blog/fastapi-postgis-geospatial-api/</guid><description>A step-by-step guide to building a geospatial REST API using FastAPI, PostGIS, and GeoAlchemy2. Covers database schema design with spatial indexes, ST_DWithin radius search, GeoJSON response serialisation, async database access, and practical endpoint patterns used in production mapping applications.</description><pubDate>Tue, 03 Mar 2026 00:00:00 GMT</pubDate><category>Python</category><category>FastAPI</category><category>PostGIS</category><category>GIS</category><category>Spatial Computing</category><category>API</category><category>Tutorials</category><author>J. Williams</author></item><item><title>Introducing GEON: A Semantic Format for LLM-Native Spatial Intelligence</title><link>https://jwilliams.science/blog/geon-geospatial-experience-oriented-notation/</link><guid isPermaLink="true">https://jwilliams.science/blog/geon-geospatial-experience-oriented-notation/</guid><description>GEON (Geospatial Experience-Oriented Notation) is a preprint introducing a new text-based format for encoding places with semantic richness: identity, geometry, purpose, experiential qualities, spatial relationships, and temporal patterns. Evaluated against GeoJSON, GEON achieves 20% fewer tokens while encoding 31% more semantic facts per token.</description><pubDate>Sun, 22 Feb 2026 00:00:00 GMT</pubDate><category>GEON</category><category>LLMs</category><category>Geospatial Data</category><category>Spatial Intelligence</category><category>Urban Computing</category><category>Place-Based Computing</category><category>TechRxiv</category><author>J. Williams</author></item><item><title>Cloud-Native Geospatial: GeoParquet, COGs, and STAC</title><link>https://jwilliams.science/blog/cloud-native-geospatial-geoparquet-stac/</link><guid isPermaLink="true">https://jwilliams.science/blog/cloud-native-geospatial-geoparquet-stac/</guid><description>An introduction to the cloud-native geospatial stack: GeoParquet for vector data, Cloud Optimized GeoTIFFs (COGs) for raster data, and the SpatioTemporal Asset Catalog (STAC) specification for discovery. Covers practical Python examples using rio-cogeo, pystac-client, and geopandas with GeoParquet.</description><pubDate>Thu, 19 Feb 2026 00:00:00 GMT</pubDate><category>Cloud-Native Geospatial</category><category>GIS</category><category>Spatial Computing</category><category>Data Engineering</category><category>Python</category><category>Remote Sensing</category><author>J. Williams</author></item><item><title>Introducing Islamica: A Digital Ramadan Assistant</title><link>https://jwilliams.science/blog/islamica-ramadan-companion/</link><guid isPermaLink="true">https://jwilliams.science/blog/islamica-ramadan-companion/</guid><description>Islamica is a free Progressive Web App with prayer tracking, fasting logs, Qur&apos;an reading progress, and educational modules for daily Islamic practice. All data stored locally for privacy.</description><pubDate>Sat, 14 Feb 2026 00:00:00 GMT</pubDate><category>Islamic Apps</category><category>Ramadan</category><category>Web Development</category><category>PWA</category><category>Education</category><author>J. Williams</author></item><item><title>Spatial ETL Pipelines with GeoPandas and Shapely</title><link>https://jwilliams.science/blog/geopandas-shapely-spatial-etl/</link><guid isPermaLink="true">https://jwilliams.science/blog/geopandas-shapely-spatial-etl/</guid><description>A practical guide to building spatial ETL (extract, transform, load) pipelines using GeoPandas and Shapely. Covers reading and writing spatial formats, geometry validation and repair, coordinate reference system management, spatial joins, and outputting clean data to PostGIS or GeoParquet.</description><pubDate>Thu, 12 Feb 2026 00:00:00 GMT</pubDate><category>Python</category><category>GeoPandas</category><category>Shapely</category><category>GIS</category><category>Spatial Computing</category><category>Data Engineering</category><category>Tutorials</category><author>J. Williams</author></item><item><title>Chora: The First Python Library for Place-Based Computing</title><link>https://jwilliams.science/blog/chora-python-library-launch/</link><guid isPermaLink="true">https://jwilliams.science/blog/chora-python-library-launch/</guid><description>Introducing Chora, the first Python library to model the human experience of place. Built on rigorous theory from GIScience, cognitive geography, and social physics, Chora provides tools for processing GPS traces, detecting routines, mapping emotions, and understanding places as lived experiences rather than coordinate pairs.</description><pubDate>Sat, 07 Feb 2026 00:00:00 GMT</pubDate><category>Chora</category><category>Python</category><category>PyPI</category><category>GIS</category><category>Place Theory</category><category>Spatial Computing</category><category>Open Source</category><category>Research Software</category><author>J. Williams</author></item><item><title>Spatial Narrative: A Rust Library for Spatiotemporal Event Analysis</title><link>https://jwilliams.science/blog/spatial-narrative-rust-library/</link><guid isPermaLink="true">https://jwilliams.science/blog/spatial-narrative-rust-library/</guid><description>Spatial Narrative is a high-performance Rust library for modelling, indexing, and analysing events that unfold across geographic space and chronological time. Built for researchers, digital humanists, and data scientists, it provides spatial indexing, movement analysis, named entity recognition, and multi-format I/O.</description><pubDate>Thu, 05 Feb 2026 00:00:00 GMT</pubDate><category>Spatial Narrative</category><category>Rust</category><category>crates.io</category><category>Spatiotemporal</category><category>GIS</category><category>Spatial Computing</category><category>Open Source</category><category>Research Software</category><author>J. Williams</author></item><item><title>PlaceAgents: Modelling Multi-Stop Pedestrian Itineraries as Platial Flows</title><link>https://jwilliams.science/blog/placeagents-pedestrian-itineraries/</link><guid isPermaLink="true">https://jwilliams.science/blog/placeagents-pedestrian-itineraries/</guid><description>PlaceAgents is an open-source framework for simulating platial pedestrian flows in urban environments. Using OpenStreetMap data, H3 spatial indexing, and interpretable routing algorithms, it models how people chain together sequences of places for errands, work, and leisure.</description><pubDate>Sun, 05 Oct 2025 00:00:00 GMT</pubDate><category>PlaceAgents</category><category>Agent-Based Modelling</category><category>OpenStreetMap</category><category>H3 Grids</category><category>Pedestrian Movement</category><category>Urban Analytics</category><author>J. Williams</author></item><item><title>PlaceCrafter: Curating Urban Functional Regions through Platial Clustering</title><link>https://jwilliams.science/blog/placecrafter-urban-functional-regions/</link><guid isPermaLink="true">https://jwilliams.science/blog/placecrafter-urban-functional-regions/</guid><description>PlaceCrafter is a web-based platform that enables researchers to identify meaningful urban regions through clustering OpenStreetMap Points of Interest. Built with React, Leaflet, and D3.js, it provides interactive clustering, statistical validation, and platial visualisation of how cities are actually used.</description><pubDate>Fri, 03 Oct 2025 00:00:00 GMT</pubDate><category>PlaceCrafter</category><category>OpenStreetMap</category><category>Urban Analytics</category><category>GIS</category><category>Clustering &amp; Classification</category><category>Open Source</category><author>J. Williams</author></item><item><title>Reflection on the Leisure Walking Systems Working Group Impact Project</title><link>https://jwilliams.science/blog/leisure-walking-systems/</link><guid isPermaLink="true">https://jwilliams.science/blog/leisure-walking-systems/</guid><description>A comprehensive reflection on a three-month Horizon CDT Impact Grant project that delivered industry-ready resources for leisure walking systems, exploring achievements, challenges, and broader implications for academic-industry collaboration.</description><pubDate>Tue, 16 Sep 2025 00:00:00 GMT</pubDate><category>Walking Systems</category><category>Research Impact</category><category>Place Theory</category><author>J. Williams</author></item><item><title>Diabetes Disparities in Mexico: A Spatio-Temporal and Marginalization Index Analysis</title><link>https://jwilliams.science/blog/diabetes-in-mexico/</link><guid isPermaLink="true">https://jwilliams.science/blog/diabetes-in-mexico/</guid><description>An overview of our W2GIS 2025 paper analysing diabetes-related hospitalisations and deaths in Mexico from 2005–2022, using the marginalization index to understand how social inequalities shape health outcomes.</description><pubDate>Sun, 14 Sep 2025 00:00:00 GMT</pubDate><category>Health Geography</category><category>Spatial Computing</category><category>Urban Analytics</category><author>J. Williams</author></item><item><title>OS³: Open Source Security Studio - Launching A Hands-On Cybersecurity Teaching Platform</title><link>https://jwilliams.science/blog/os3-security-studio-launch/</link><guid isPermaLink="true">https://jwilliams.science/blog/os3-security-studio-launch/</guid><description>Explore OS³: an open teaching platform with modular labs covering SQLi, XSS, CSRF, SSRF, access control, cryptography, logging, monitoring, and network defence. Ideal for higher education, professional upskilling, and community workshops.</description><pubDate>Sun, 14 Sep 2025 00:00:00 GMT</pubDate><category>Cybersecurity</category><category>Teaching</category><category>Open Source</category><category>Python</category><author>J. Williams</author></item><item><title>Platial vs Spatial: Why the Distinction Matters</title><link>https://jwilliams.science/blog/spatial-vs-platial/</link><guid isPermaLink="true">https://jwilliams.science/blog/spatial-vs-platial/</guid><description>An extended reflection on the difference between the spatial and the platial, why it matters for data, design, and everyday life, and how embracing both can transform how we map the world.</description><pubDate>Sat, 13 Sep 2025 00:00:00 GMT</pubDate><category>Place Theory</category><category>Spatial Computing</category><category>Mapping &amp; Visualization</category><author>J. Williams</author></item><item><title>Platial Atlas: Mapping How People Experience Places</title><link>https://jwilliams.science/blog/platial-atlas-mapping-lived-experience/</link><guid isPermaLink="true">https://jwilliams.science/blog/platial-atlas-mapping-lived-experience/</guid><description>Discover how the Platial Atlas project proposes capturing and representing places as they are lived and perceived by communities, using the PlaceCrafter framework to move beyond conventional geographic boundaries.</description><pubDate>Tue, 02 Sep 2025 00:00:00 GMT</pubDate><category>PlaceCrafter</category><category>Place Theory</category><category>GIS</category><category>Mapping &amp; Visualization</category><category>Open Source</category><author>J. Williams</author></item><item><title>Getting Started with H3: The Hexagonal Grid System for Spatial Analysis</title><link>https://jwilliams.science/blog/h3-grid-introduction-demo/</link><guid isPermaLink="true">https://jwilliams.science/blog/h3-grid-introduction-demo/</guid><description>This hands-on tutorial introduces H3, Uber&apos;s open-source hexagonal grid system that&apos;s transforming spatial analysis. Learn why hexagons outperform traditional grids, set up H3 in JavaScript, and build interactive mapping applications with step-by-step code examples.</description><pubDate>Sat, 16 Aug 2025 00:00:00 GMT</pubDate><category>H3 Grids</category><category>Spatial Computing</category><category>JavaScript</category><category>Mapping &amp; Visualization</category><category>Tutorials</category><category>GIS</category><author>J. Williams</author></item><item><title>Why &apos;Placing Code&apos; Matters</title><link>https://jwilliams.science/blog/placing-code-matters/</link><guid isPermaLink="true">https://jwilliams.science/blog/placing-code-matters/</guid><description>This manifesto-style post introduces the concept of &apos;placing code&apos; - software development that respects geography, culture, and context. Drawing from research in Geographic Information Science and platial information systems, it argues for technology that serves human spatial relationships rather than replacing them.</description><pubDate>Sun, 03 Aug 2025 00:00:00 GMT</pubDate><category>Place Theory</category><category>GIS</category><category>Web Development</category><author>J. Williams</author></item><item><title>Designing a New Website and Blog</title><link>https://jwilliams.science/blog/website-architecture-overview/</link><guid isPermaLink="true">https://jwilliams.science/blog/website-architecture-overview/</guid><description>This article will explore my experience of developing a new website for use as my main portfolio of work. My previous website had been developed and not updated for roughly three years and the new website will support enhanced project and blog-based updates. This article shares a few thoughts about my experiences in designing the new online presence.</description><pubDate>Sat, 12 Oct 2024 00:00:00 GMT</pubDate><category>Web Development</category><category>Tutorials</category><author>J. Williams</author></item></channel></rss>