Joan Perez

About Joan Perez

Joan Perez is an independent quantitative geographer and AI researcher, founder of Urban Geo Analytics. His work focuses on the intersection of artificial intelligence, geospatial data science, and urban analytics, with research spanning urban morphology, demographic dynamics, remote sensing, and machine learning. He develops computational methods and open-source tools to better understand cities and support data-driven urban planning.

The AI Reading Series · Lecture 3: How Language Models Learned to Use Tools

A language model can't check the weather, multiply two numbers reliably, or book a table, it can only predict text. Lecture 3 of the AI Reading Series shows how that limitation was turned into a strength: describe a tool in text, let the model emit a call, let ordinary code execute it. We trace the idea from RAG and WebGPT and prepare you to read Schick et al.'s "Toolformer" with the right questions in hand.

By |2026-10-06T11:29:56+00:00October 6, 2026|Categories: Getting Started, theory|Tags: , |0 Comments

Do Open-Weight LLMs Reason From the Spatial Context They Are Given?

A new paper asks a question geographic evaluation has mostly skipped: once a language model is handed the right local data, does it reason from it, or fall back on what it already believes about the place? Sixteen open-weight configurations, three cities, ten seeds, and one planted false premise per case.

By |2026-10-01T06:21:30+00:00October 1, 2026|Categories: Advanced, Python, Urbanism|Tags: , , , , , , , , , , , , |Comments Off on Do Open-Weight LLMs Reason From the Spatial Context They Are Given?

UVLM v4.0.0 — Gemma 4, the Transformers 5 Migration, and Why This One Is a Major Version

Highlights New model family: Gemma 4 (Google [...]

By |2026-08-17T18:44:00+00:00August 17, 2026|Categories: Advanced, Package, Python, Vision Language Model|Tags: , , , , |0 Comments

UVLM v3.2.0 — InternVL3.5 Joins the Registry, With Zero Notebook Changes

UVLM v3.2.0 adds InternVL3.5 (1B–38B, six checkpoints): 21 open VLM checkpoints across 4 families, one Python interface. The new family appeared in the notebooks without a single notebook edit — plus per-model output files for cleaner benchmarking.

By |2026-08-17T18:43:44+00:00August 12, 2026|Categories: Advanced, Package, Python, Vision Language Model|Tags: , , , , |0 Comments

The AI Reading Series · Lecture 2: How Connectionism Conquered Language

Part 2 of the AI reading series. The previous post ended with AlexNet's 2012 earthquake in image recognition. This one tells the road to language: how researchers turned words into vectors, taught networks to read sequences, discovered attention — and why, in 2017, eight Google researchers decided attention was all you need.

By |2026-10-02T06:50:31+00:00August 11, 2026|Categories: Getting Started, theory|Tags: , |0 Comments

UVLM v3.1.0 — Qwen3-VL Joins the Registry, With Family-Based Model Selection

UVLM v3.1.0 adds a third model family, Qwen3-VL (2B–32B Instruct), bringing the registry to 15 checkpoints. The notebooks gain a two-level family/model selector, the loader picks BF16 automatically on capable GPUs, and the smallest new model runs in about 2 GB of VRAM. Same three-block workflow, same prompts, one more family to compare.

By |2026-08-13T04:45:03+00:00August 10, 2026|Categories: Advanced, Package, Python, Vision Language Model|Tags: , , , , |0 Comments

The AI Reading Series · Lecture 1: Where Machine Learning Came From

The first in a reading series taking you from the artificial neuron of 1943 to today's transformers, mixture-of-experts models and agents. Lecture 1 is a preparatory guide to Cardon, Cointet and Mazières' sociological history of AI, with reading strategy and glossary.

By |2026-10-02T06:49:35+00:00July 24, 2026|Categories: Getting Started, theory|Tags: , |0 Comments

Deploy Your Own Local LLM on Low VRAM in 30 Minutes — A Private Chat Assistant in Jupyter

Run a capable large language model entirely on your own machine — private, offline, and with as little as 8 GB of GPU memory. This hands-on guide sets up a clean Python environment, gets CUDA working even on the newest NVIDIA Blackwell cards, loads a 4-bit quantized model from Hugging Face, and builds an interactive chat widget with conversation memory and a live VRAM gauge in JupyterLab. No cloud, no API keys, no data leaving your computer.

By |2026-08-13T05:06:28+00:00June 2, 2026|Categories: Advanced, Python|Tags: , , , , , |0 Comments

SAGAI v2.0 — A Unified Multi-Model Notebook for Streetscape Analysis

SAGAI v2.0 consolidates the full streetscape analysis pipeline into a single Google Colab notebook and replaces the inline LLaVA-only inference code with the UVLM package, enabling multi-model benchmarking across 11 VLM checkpoints. New features include a multi-task prompt builder, consensus validation with majority voting, chain-of-thought reasoning, truncation detection, interactive Folium maps, view-direction filtering, and support for loading existing polygons as study area boundaries.

By |2026-08-05T07:37:31+00:00May 21, 2026|Categories: Advanced, Python, Vision Language Model|Tags: , , , , , , |0 Comments

UVLM v3.0.0: From Colab Notebook to Python Package — Run Vision-Language Models Anywhere

UVLM v3.0.0 turns a Colab notebook into a full Python package. Run vision-language models locally, in notebooks, or scripts with a simple API and no setup complexity.