101 Field Guide
0. The stack in one page

The whole stack, in one page.

HTML names the parts. CSS decides how they look. JavaScript reacts when someone interacts. An API moves data between systems. Python automates and analyzes behind the scenes. GitHub stores the history, Vercel publishes the URL, Supabase remembers data between visits.

That is the entire mental model. Every tool on this site is one of those jobs wearing a different name. When something breaks, ask which layer owns the problem: structure, style, behavior, data, or deployment.

One complete project

HTMLNames the parts: headings, buttons, forms, the map container.
CSSLayout, color, spacing, states. People read layout before text.
JavaScriptListens for events, manages state, updates the page in place.
APIThe request/response contract between your page and any other system.
PythonScripts, notebooks, GIS analysis, data cleanup, backend logic.
GitHub + Vercel + SupabaseHistory, public URL, and memory between visits.
<button>Show open shelters</button>      <!-- HTML: the part exists -->
button { background: crimson; }          /* CSS: it looks pressable */
button.addEventListener("click", load);  // JS: something happens
fetch("https://api.weather.gov/alerts")  // API: data arrives

Skip ahead: the rest of this tab is not prose. It is working tools. Section 1 runs live SQL against a real Red Cross Parquet file in this page. Section 4 is a searchable browser of all 1,497 Calcite icons. Start there.

1. Live: SQL on Red Cross data

Parquet is useful only if it disappears behind a better Red Cross question.

Esri's June 2026 ArcGIS Online update introduced Parquet feature layers in beta. The idea is simple: keep large, read-only spatial data in a columnar format so web maps can draw and filter it faster.

That does not automatically make it useful day to day. The useful version is a tool that answers questions like where do risk, hardship, population, and Red Cross operating geography overlap? Parquet is just the fast read path underneath.

Not useful enoughHand-building beta Parquet layers

If the workflow is manually managing a new beta layer type, it will not beat normal ArcGIS layers, CSV mirrors, FeatureServers, or existing app patterns yet.

Useful as plumbingFast governed reads

Parquet helps when the data is big, read-only, refreshed from a trusted source, and queried by apps, notebooks, DuckDB, or agents.

Actually usefulRisk + hardship radar

The daily-use surface should be a plain question tool over Red Cross data. The user should not need to know Parquet is involved.

The live demo below uses Red Cross canonical data from data.jbf.com. DuckDB-WASM runs SQL against the public county Parquet file inside this browser page. No iframe, no server-side database, no staged screenshot.

SourceRed Cross dataCounty, chapter, region, state, ZCTA, tract, and division master exports.
EngineDuckDBSQL reads Parquet directly without a separate database import.
Map layerArcGIS JSResults become client-side graphics, not a hosted FeatureServer replacement.
Best fitRead-onlyReference and analytics data that changes on a governed refresh cycle.
BeginnerCSV reads rows. Parquet reads columns.

If you only need a few fields, a Parquet reader can avoid hauling every column through the query.

IntermediateGeoParquet adds spatial metadata.

Geometry, coordinate system, extent, and type metadata make the columnar file usable in GIS workflows.

Why it mattersReference data gets lighter.

Canonical Red Cross geography can support notebooks, dashboards, agents, and map demos without creating another source of truth.

Run a real Red Cross Parquet query in this page.

The buttons change the SQL, DuckDB reads county_master.parquet from the public data site, and the table redraws from the returned Arrow result.

Not run yet
SQL sent to DuckDB-WASM
Loading query...
What this proves Waiting for a live query.

Click Run query to load the browser database engine, register the public Parquet file, and rank real Red Cross county data.

Query result
Results will render here.

Honest answer: do not sell this as a new everyday ArcGIS workflow yet. Sell it as proof that a governed Red Cross data spine can power fast question-answering tools without creating another source of truth.

2. Data to wow people

The spectacular demo is not "look, a file." It is "show me where risk and need collide."

The public-safe Red Cross data spine already has enough to tell a strong operational story: geography, chapter hierarchy, population, household hardship, social vulnerability, natural hazard risk, FEMA disaster history, and ZIP/tract lookup context.

That means the peer demo should ask a human question first, then reveal that Parquet makes the answer fast and portable.

Rows121,992Across census tract, ZCTA, county, state, chapter, region, and division grains.
Fields267Governed public-safe fields available through the data platform catalog.
Sources17Census, ACS 2024, ALICE, CDC SVI, FEMA NRI, FEMA declarations, and Red Cross hierarchy.
Best storyRisk radarRank places by hazard risk, household hardship, population, and Red Cross chapter/region.
StrongestRisk + hardship radar

Rank counties or chapters where hurricane, wildfire, flood risk, ALICE hardship, and population stack up.

UsefulChapter briefing generator

Pick any chapter and summarize counties, population, hardship, NRI hazards, SVI, and FEMA declarations from one governed row set.

Technical flexZIP to Red Cross lookup

Show a ZIP/ZCTA resolving to county, chapter, region, division, ACS 2024 indicators, and ALICE status.

Spectacular query recipe

PopulationHow many people sit inside the geography?
ALICE hardshipHow many households are below the survival threshold?
NRI hazardsHurricane, wildfire, inland flooding, tornado, heat, winter weather, and more.
FEMA historyHow often has the county appeared in disaster declarations?
Red Cross hierarchyWhich chapter, region, and division owns the operating context?
Parquet + DuckDBRun the query directly against the governed file and map the answer.
Example query result
Miami-Dade, Harris, Broward, Palm Beach, Hillsborough, Orange, Lee, Hidalgo, Bexar, and Polk rise to the top when population, ALICE hardship, hurricane/wildfire/flood risk, and FEMA declaration context are combined.
Why peers will care
It turns a raw geography database into a decision-support question: where should readiness, staffing, messaging, or chapter briefings get attention first?
What not to oversell
This is a public-safe reference demo. It does not include live shelter status, person-level data, donor records, private AGOL layers, or source-family fields that have not passed approval gates.

Recommendation: keep the live iframe as the technical proof, but frame the story as a Red Cross risk radar. The impressive part is not that Parquet exists; it is that one governed data spine can answer a real operations need in seconds.

3. Parquet limits

The beta limitations do not kill the idea. They define where it belongs.

ArcGIS Parquet feature layers are promising, but the June 2026 beta is not a drop-in replacement for every hosted feature layer. Treat it as a high-performance read-only reference surface, not as the operational edit layer for live incident work.

Use itLarge read-only reference layers

County, chapter, region, ZCTA, tract, risk, demographic, and other canonical refresh outputs are good candidates.

Be carefulWeb-map visualization beta

It works in current web clients using the latest ArcGIS Maps SDK, but publishing and app support are still evolving.

Do not use itEditable operational records

Shelter status, DAT incidents, live field updates, offline workflows, or anything needing direct editing still need other layers.

Read-onlyYou cannot edit the layer directly.

Updates happen by overwriting the data, which fits governed reference refreshes but not live operations.

Creation pathIn this release, ArcGIS Data Pipelines is the creation path.

That makes the beta easy for no-code data engineering, but less flexible than publishing from any script or CI job.

Client supportUse latest ArcGIS Maps SDK web clients.

Older app runtimes and unsupported ArcGIS apps may not understand the layer type yet.

No offlineDisconnected use is not supported.

That matters for field work, shelters, and response workflows that must keep working without connectivity.

Coordinate systemWGS 1984 storage only in the beta.

Use WGS 1984 or Web Mercator basemaps. Projected-coordinate workflows need another surface for now.

Map Viewer analysisNot an input to Map Viewer analysis tools yet.

It is for fast visualization and query, not the whole ArcGIS analysis pipeline.

Charts and propertiesCharts are not supported, and layer styling changes live in the web map.

Symbology, popups, fields, labels, filters, effects, and aggregation can be configured in a map, but not saved back to the layer item as universal properties.

Field and geometry limitsNo Z/M values, time-only, or timestamp-offset fields.

Those unsupported types are ignored or unavailable in the June 2026 beta, so schema design matters.

Arcade caveatFeatureSet Arcade expressions may struggle on large datasets.

Keep popups simple for big layers, and push heavier logic into prepared fields or a separate app query.

Roadmap gapPro and Enterprise support are future-facing.

The beta is web-first in ArcGIS Online. Broader Enterprise, Pro, offline, charts, projected coordinate systems, and more publishing paths are on the road ahead.

Verdict: worthwhile, but not universal. For Red Cross, this is excellent for big canonical read-only geography and analytics surfaces. It is not the right storage layer for editable operational workflows, offline response, or private sensitive data that has not passed source-owner and suppression gates.

4. Calcite icons

Calcite is the design system the SDK ships with — including 1,497 icons.

When you build a custom app on the ArcGIS Maps SDK, you also get Calcite: Esri's open-source component and icon system. This is a live reference for every icon in @esri/calcite-ui-icons v4.5.0, grouped by category, with a curated hall of fame and click-to-copy markup.

Click any icon to copy its full <calcite-icon icon="…"></calcite-icon> tag — ready to paste into an app, or into another AI conversation where it self-labels as a Calcite icon.

BeginnerIcons are named, not drawn.

You reference an icon by name and the component renders it — no SVG files to manage.

IntermediateOne tag, any scale.

<calcite-icon icon="drone-quadcopter" scale="m"> drops a crisp icon into a custom SDK app.

Why it mattersOn-brand for free.

Using the same icon set Esri uses keeps a custom app visually native to ArcGIS.

Loading…
Scroll in to load the icon library.
The odd & unusual · a curated hall of fame

Alongside the everyday arrows and folders, Calcite ships icons for surveying hardware, drone fleets, indoor routing, raster arcana — and at least one piece of fruit.

The full library · all 1,497, by category
copied
copy blocked here — select and press Ctrl/Cmd+C:

Beginner rule: if you are building on the SDK, reach for a Calcite icon by name before drawing your own — the set is huge and already on-brand.

5. GitHub, Vercel, Supabase

Build, store, publish, and remember.

Git and GitHub track your project history. Vercel publishes the project to the web. Supabase gives an app a database, login system, storage, authorization rules, and backend-like services when a static page is no longer enough. These are not the same thing, but they often sit next to each other in one real project.

  • Git is the version tracking tool on your machine.
  • GitHub is where the tracked project can live online.
  • Vercel is where the project can become a public URL.
  • Supabase is where an app can keep structured data, user identity, file storage, and authorization rules.

See it live, not abstract: Codex 101's working-set panel shows this repo's actual GitHub remote, Vercel URL, and branch instead of a generic diagram.

6. Everyday agent phrases

Use these when something should not disappear into chat.

Some instructions are meant to be shortcuts. They save you from re-explaining the whole checklist every time you want a useful pattern preserved.

Preserve one thingPromote this to a standard.

Use this after a result is good enough that future agents should know how to reproduce it.

Rediscover many thingsRun a standards sweep.

Use this when you know useful workflows, docs, or skills exist but you cannot remember where they live.

Working setName the project first.

For real project work, the agent should identify the repo, local path, GitHub remote, live URL, registry status, and handoff state before editing.

Daily shortcutPreserve a pattern

Use this exact phrase when a map, workflow, report, prompt, or app structure should become part of your durable working system.

Promote this to a standard.
Daily shortcutFind forgotten standards

Use this when you want the agent to search memory, skills, AGENTS.md, CLAUDE.md, project docs, and recent repo work for reusable patterns.

Run a standards sweep.
Example from the screenshot
Jeff Franzen RC Map Style Lab is exactly the kind of result to promote: a direct ArcGIS SDK vector basemap authoring pattern with live preview, style inspector, JSON export, standard map controls, and default Esri popups disabled.
Canonical app
Open the Map Style Lab

Plain version: say Promote this to a standard for one excellent thing, and Run a standards sweep when you want the agent to find the reusable things you have already built.

7. Modern Python stack

Five Rust-built tools, tested in a real repo, on real Red Cross data.

2026's Python tooling wave is Rust underneath: uv, Ruff, Polars, and DuckDB are all Rust engines wearing a Python interface, and marimo is the notebook that fixes what made Jupyter fragile. Instead of describing them, they were installed, benchmarked, and run against the real 3,153-county Red Cross canonical table in a standalone lab repo.

uvReplaces pip, venv, poetry, and pyenv. One command installs deps and runs the script, no manual environment step.
RuffReplaces flake8, black, and isort. Formats and lints the whole repo in well under a second.
PolarsReplaces pandas for big files. Same questions, multithreaded Rust engine underneath.
DuckDBSQL directly over a CSV or Parquet file. No server, no import step, no separate database.
marimoA notebook that is a plain .py file. Change one cell and every dependent cell reruns, reactive instead of hidden state.

Demo 1: Polars vs pandas, same questions, 5 million rows

Identical read/groupby/filter work, run three times each, best time kept. Correctness came first: a 1,000-row self-check asserted both libraries computed the exact same per-group totals before any speed number counted.

5,000,000 rows, pandas vs Polars
pandas Polars

CSV parsing is the blowout, Polars' multithreaded Rust reader against pandas' single thread. Parquet read is close for both, because Parquet already does the hard work; the format matters more than the library there.

Demo 2: DuckDB, real Red Cross data, zero import step

DuckDB queried the canonical county_master table directly from its CSV, the same 3,153 FIPS-keyed counties used across Red Cross apps. No database server, no load step. Grouped on the code, displayed the name, same rule as every other Red Cross tool.

Divisions by ALICE-below-threshold households (rollup on DCODE)
  Southwest and Rocky Mountain Division   875 counties   11,624,684
  Southeast and Caribbean Division       621 counties   11,472,668
  Northeast Division                     218 counties    9,720,723
  Pacific Division                       273 counties    9,118,770
  North Central Division                 741 counties    7,161,864
  Central Atlantic Division              425 counties    5,424,175

The rollup wrote straight to Parquet and read back, still no server. A self-check confirmed the six-division sum matched the raw column sum exactly: 54,522,884 households, no rows dropped in the GROUP BY.

Demo 3: marimo, a reactive notebook that is a git-diffable file

Same county data, wrapped in a notebook with a division dropdown. Picking a division reruns the summary stats and county table automatically. There is no "Run All," and no stale cell holding yesterday's answer. The whole notebook is one plain .py file, so it reviews and diffs like normal source code instead of a JSON blob.

Insight 1The speedup holds across every row-touching operation.

Polars beat pandas by double digits on reads, groupby, and filtering. The gap narrows for Parquet because the format already does columnar work Polars would otherwise have to do itself.

Insight 2DuckDB removes a whole category of plumbing.

Skipping the import step keeps every query current with the source file. There is no separate loaded copy for someone to forget to refresh.

Insight 3Correctness has to come before speed.

Every demo here runs a --check flag first. A fast benchmark that computed the wrong answer would be worthless, so each repo carries an assert-based self-check alongside the stopwatch.

Adopt now, no downsideuv + Ruff

Zero-risk foundation. Faster installs, faster CI, one formatter instead of three overlapping tools.

Adopt when data gets bigPolars + DuckDB

pandas is still fine for small, familiar files. Reach for these once a file is multi-million rows or the workflow is repeated SQL over Parquet/CSV.

Earns its place selectivelymarimo

Jupyter still wins for quick scratch work. marimo is worth the switch when a notebook needs to survive review, live in git, or drive an interactive picker.

All three demos, their generator scripts, and the self-checks that prove them live in the standalone research repo, kept separate from this teaching site so experiments never risk the deployed build.

Plain version: these numbers are real terminal output from this machine, reproducible with uv run and no manual setup. Every claim here has a repo behind it.

Glossary

Words that stop sounding mysterious.

Search a term, or scroll the list. The definitions stay plain on purpose. This is vocabulary for getting oriented, not documentation for experts.

Advanced shelf

The second pass can get more technical.

These ideas matter, but they should not interrupt the first beginner path. Keep them here until the foundation is comfortable.

Packages and dependencies

Reusable code your project installs instead of writing everything from scratch.

Environment variables and secrets

Private values like API keys that should not be pasted into public frontend code.

Authentication

How apps know who someone is and what they are allowed to access.

Databases and schemas

How structured data is organized so apps can query it reliably.

Testing and verification

How you prove a page or workflow still works after changes.

⌂ All sites