Talkmap Feature
Talkmap Feature
Overview
The talkmap feature automatically generates an interactive map showing all the locations where you’ve given talks and presentations. The map is embedded directly in the /talks/ page.
How It Works
- Talk Metadata: Each talk file in
_talks/contains location information in its YAML frontmatter:--- title: "Your Talk Title" venue: "Conference Name" location: "City, State/Country" --- - Map Generation: The
talkmap.pyscript (ortalkmap.ipynbJupyter notebook) reads all talk files, geocodes the locations, and generates:talkmap/org-locations.js- JavaScript file with geocoded coordinatestalkmap/map.html- Interactive Leaflet map
- Display: The map is embedded in
_pages/talks.htmlusing an iframe.
Regenerating the Map
When you add new talks or update locations, regenerate the map:
Option 1: Using Python Script
python3 talkmap.py
Option 2: Using Jupyter Notebook
jupyter nbconvert --to notebook --execute talkmap.ipynb --output talkmap_out.ipynb
Prerequisites
Install required dependencies:
pip install python-frontmatter getorg geopy --upgrade
Troubleshooting
SSL Certificate Errors
If you encounter SSL certificate verification errors when running the script, you may need to:
- Install/update certificates on your system
- Or manually update the
talkmap/org-locations.jsfile with coordinates
Finding Coordinates
You can manually find coordinates for locations at:
- https://www.latlong.net/
- https://nominatim.openstreetmap.org/
Then update talkmap/org-locations.js in this format:
var addressPoints = [
[latitude, longitude, "Talk Title<br />Venue; Location"],
// ... more entries
];
Files Structure
_talks/*.md- Individual talk files with location metadatatalkmap.py- Python script to generate the maptalkmap.ipynb- Jupyter notebook versiontalkmap/map.html- The interactive map HTMLtalkmap/org-locations.js- Geocoded location datatalkmap/leaflet_dist/- Leaflet library files_pages/talks.html- Talks page with embedded map
Features
- Interactive Clustering: Nearby locations are automatically clustered
- Responsive Design: Map adapts to different screen sizes
- Automatic Updates: Just run the script after adding new talks
- No Separate Page: Map is integrated directly into the talks page
