Happy Banana Day (105/365)

I leave you this week, before handing off the next week to my colleague, on a happy but cautionary note.

Bananas feed much of the world’s population. Bananas are a staple crop. This map is designed to celebrate National Banana Day.

However, there is a menace haunting banana plantations. An airborne wilting disease that kills Cavendish Banana (i.e., the yellow banana that much of the Western world equates with banana today). It’s likely bound to wipe out the banana as we know it within 50 years.

Bananas are not fruit. They are herbs. They have no seeds. Thus, there is no way to save seeds in a vault, so to speak, to bring the species back in the future. We already lost the world’s favorite species of yellow banana many decades ago. Baby boomers may recall the Gross Michel yellow banana, which was the banana that predominated in the west until it went extinct after World War II. It no longer exists; though, its flavor is often what is mimicked and still considered the true banana flavor in candies. It was richer – I’ve been told – and creamier. It was replaced by the similar looking Cavendish banana.

But… there is no similar-looking or tasting yellow banana to replace the Cavendish when the wilting disease, presumably, wipes them all out. (For an interesting read on the topic, check out Banana by Dan Koeppel. High recommend!)

So enjoy your yellow bananas now so you can tell future generations what they are missing out on.

This map shows banana production in millions of tons by country over the past 60-some years. Each decade provides an annual average for the decade. As usual, you can map individual decades, change the classification schemes used, change the number of classes, and also highlight which countries of the world are already impacted by blight.

P.S. If you really like bananas, you can also view what a giant banana orbiting at 440 km above the Earth’s surface would look like here. This is one of the more compelling videos I’ve ever found on YouTube. I hope you enjoy it as well.

View Map Here

WebMapGPT Prompt

# Intent
A map showing banana production over the decades around the world to celebrate National Banana Day in the US.

Also, I want to raise awareness of Banana Wilting Disease and its potential impact on this important crop.

# Map Overview
Equal Earth projection using natural earth countries without lakes joined to the attached CSV file using the ISO3 country abbreviation column.

Remove Antarctica. Ensure the world map stretches to fill the screen left-to-right, even if the entire world is not visible at once.

## Mobile Map Guardrails
On mobile devices, including iPads, requires that the device be tilted to landscape mode to view and interact with the map.

# Attribution Modal
The attribution modal must be invisible when the map loads. It will be shown when a user clicks on the “i” (information button). When visible, it will close/become invisible as soon as a user taps or clicks anywhere outside of the modal. 10px border radius on the background.

## Attribution Modal Contents
Contents should include reference to Natural Earth datasets and prominently present the data sources below.

### Data sources
Original data from [Food and Agriculture Organization of the United Nations (2025)](https://www.fao.org/faostat/en/#data/QCL) with major processing by [Our World in Data](https://ourworldindata.org/grapher/banana-production?tab=table&overlay=download-data). More processing and decade averages created using [Spatial Dataset Doctor GPT](https://chatgpt.com/g/g-69433babe5648191b56993ba465bc3fe-spatial-dataset-doctor-alpha).

### Other Attributions
– Prompt Cartographer: [Ian Muehlenhaus](https://www.linkedin.com/in/ianmule)
– Tool: [WebMapGPT](https://www.webmapgpt.com)
– Campaign: [#365DaysOfMaps](https://mapdesign.icaci.org), Map Design Commission of the International Cartographic Association
– APIs used

The map should be a choropleth map showing total percent change in banana production between 1960s Annual Average and 2020s Annual average. Exclude from the choropleth coloration any countries that have no data in the 1960s and only 0s in 2010s and/or in the 2020s column.

Show the choropleth with a light yellow to dark unripe banana green color ramp. Countries without banana production or that have been excluded should be shown in a banana brown color with banana yellow boundaries. Countris with yellow choropleth fills should have banana green boundaries, and those with green fills banana yellow outlines.

# Info Window
When the user hovers or clicks on a country show a pop-up window (without arrow pointers) with a light, banana yellow background and dark green text with the following info. No outline. The pop-up should have rounded corners.

Include the following information in the popup:
– Country Name
– 2010s Average Rank (highest average is ranked #1)
– Decade Average Annual production as a table for each decade in the dataset (i.e., 1960s – 2020s).
– For countries on the provided Banana Wilting Disease list, please include at the bottom, in dark red print, a warning with a red exclamation mark at the start to catch attention or similar symbol, that the country is exposed to the {wilting_disease_types}, threatening their banana production.

# Title
Title the map like a journalist might across the top, left-aligned: “Global Banana Production”
Subtitle: “Percent change in average annual production 1960s-2020s and exposure to Wilting Disease”

# Hamburger Icon
In the upper right, include a hamburger button that has the following options:
– Revise Visualization
– Attribution

Clicking the attribution button will open the attribution/sources modal discussed above.
Clicking Revise Visualization will open a different modal explained below

# Visualization modal
– In the visualization modal, stylishly include an option to change the classification scheme, number of classes, and fields being mapped on the map.

## Allow users to do the following via interaction
### 1. Change the classification scheme between Natural Breaks (default), Equal Interval, Standard Deviation, Quantiles, Arithmetic, or Unclassed classifications.
### 2. Change the number of classes. Default is 5. May change it from 3-7 classes. A quaint slider would be ideal but I leave it to you to design. Disable this when the “unclassed” scheme is selected, obviously.
### 3. Which field to map
Default map is percent change in average annual tonnage between 1960s and 2020s.
The user is allowed to show average annual production for any decade of their choice. Provide in a dropdown list.

When the field being mapped changes, update the map accordingly maintaining the currently selected classification scheme and number of classes.

## Disease exposure.
Please provide a list of the different Wilting Disease categories (as collected off of the attached screen capture of a map above). Above the list have a title similar to “Wilting Disease Types” and underneath that in fine print, filter countries based on exposure.

Allow the user to multiselect countries based on whether or not they are exposed to any of the different wilting disease categories. Make those not exposed, including those with no production, 50% transparent. If none of the diseases are selected, show all countries as normal.

## Closing Modal
Ensure that the modal can be closed or disappears when the user clicks outside of it.
Ensure this modal starts closed when the map loads.

Attachments:
– CSV Banana Dataset
– Map image (with list) of different banana wilting disease ranges. Please use this to classify cities on the map for the country filters. You may peruse the internet to finalize the categories for these if interpreting the map proves too difficult. Thanks!

Happy Moment of Laughter Day (104/365)

Happy National Moment of Laughter Day, America.

You certainly can use it. You’re being led by a (allegedly) senile narcissist and going through hegemonic decline at a steady clip. It’s rough going – both here and for the rest of the world.

Laughter doesn’t cure anything, but it does kill the pain of the uncontrollable.

Though simple to create, I’m quite happy with how this map came out. I actually quite like the symbology and the vibe I get looking at it – a Hallmark condolence card for a traumatized nation.

Originally, I was trying to get Google Gemini to create a laugh track for an animated map of laughter, but my endeavor failed miserably. I am sharing the results of that endeavor, because in many ways, the results are as maniacal sounding as the US actually feels right now – a horror show, in my opinion.

United we laugh… and hopefully, live to pick up the pieces. 

Google Gemini Image Creator Prompt

Please draw an artistic map of the United States in colored pencil where every state is represented by the profile of a laughing, smiling, friendly looking person. Make sure the people included are diverse in age, race, and a good mix of female and males. All pictures should be of people laughing and coming out of where the state borders would be, with some overlap of one another, etc. Only include the 48 contiguous states, please. The image is meant to be used to celebrate the Moment of Laughter Day. No text should be included on the map except at the top somewhere in handwriting “Enjoy a Moment of Laughter”.

 


And creepy Google Gemini laugh-track musical results… too scary to use.

Link to several of them… The first one gets very weird about halfway through. Like a Terry Gilliam film without the film.

https://gemini.google.com/share/0381d2943a29

P.S. I swear I hear Jabba the Hutt’s little laughing monster sidekick in one of these.

 

 

 

Happy Scrabble Day (103/365)

Happy National Scrabble Day!

I always stunk at Scrabble. It didn’t help that my mother was trained as an English teacher. She loved spelling, definitions, grammar — all of it — and took no mercy on her children, regardless of our age. (For the record, she still skunks me at Bananagrams too.)

But I do enjoy the game. In fact, I love all games! I play Euro boardgames, nerdy deck-building card games, and tactical war games with my local gaming friends several week nights or weekend days most weeks.

And as an analog game addict, I was thrilled to see a game with its very own day — that wasn’t Monopoly. (Curses!)

I like designing games too, in my spare time, so I thought… let’s combine Scrabble with Geography for this map.

Moreover, it’s fun to see where people visit our prompt maps from, so I thought… why not let people record their scores and see how they do compared to others? So I added a little database so you can store your high score like you’re playing Pole Position at an arcade on the Italian Riviera in 1983! (That’s what my brother spent his summer doing. He was so proud having the highest score for kilometers around!)

## How to Play

A country name will be randomly selected. You will be shown the letters required to spell it.

Simply drag the letters to spell the country name. Once you’ve spelled it right, you’ll hear a little ding and be shown the next random country to spell. You earn points based on the real-life Scrabble value of the letters in the country name.

View Map Here / Play Game Here

You get three passes. (I admit, there are some questionable ones in there. I blame Natural Earth data for those… “StGeorge and Isl”?) Save those passes for when you really need them! 🙂

After that, your score is frozen. You can keep playing if you want. Or you can record your score and see how you compare.

The countries fill in as you solve them and their point totals are added to a list you can see.

This works on mobile too. I tried it. It’s a little easier in some ways dragging letters on mobile. (Though, the map is not very big. You can zoom if you like.

Have fun! And play more games; they keep people young and may help prevent dementia.

Original Web Mapper GPT Prompt

# Intention
I would like to make a fun, puzzle map for International Scrabble Day on Monday.

For this map, I would like to have a world map where someone is shown a scrambled country name.

They need to unscramble the name by pulling and placing the letters in the correct order (some squares at the bottom of the map where Antarctica would be. (I ask that you exclude Antarctica from the map for the interactive board area.)

Once a country is correctly spelled, it is automatically filled, and the points for that country (based on the Scrabble point values for the letters in the name just spelled) is added to a score board.

If a user completes the entire map, the map will be filled in with countries and they will be able to enter their first name, last name initial, and country of residence on a User Score board that is maintained on the server and shown when the user clicks a button that will be described later.

# Map Area

Please use natural earth countries without lakes boundary data. Equal Earth Projection. Remove Antarctica and islands smaller than 300 square kilometers.

## Map Interactivity

Allow the user to zoom in on the map up to five times full extent and pan the map. Do not allow the user to zoom out past the map’s full extent nor pan off the edge of the map.

## Map Coloring. The app background should be light gray with random, intermittent, and very light tiles and squares in pink and blue in the same style of a Scrabble board. Make it lighter than a scrabble board, though. Just game board light with light papery texture.

The countries should start off with light gray, semi-transparent (65% alpha) fills. The border outlines should be 100% alpha and the baby blue from the Scrabble board, full value and saturation (unlike the background blue).

## When a country name is spelled correctly
The country will fill with a wood-tile grain style fill (like the letter pieces in Scrabble.) Make sure they tile to fill without gaudy interruptions in the image in large countries like Canada and Russia, etc.

## Country click
When a user clicks on a country, nothing happens if the user has not yet filled in the name successfully or been offered an opportunity to fill in the name.

### Country name concluded
If the user already successfully spelled the name, the country is filled in with wood grain, and the user may click on the country and see the name of the country as well as its point value based on Scrabble letters. (You will have to look up the value of different Scrabble letter points in English and determine this when coding. Sorry, I’m not sure offhand.)

# The Scrabble Game
At the bottom of the map (where Antarctica would be) will be the game area.

You will randomly select one of the countries in the Natural Earth Dataset and provide a number of blank square spaces at the bottom center of the map that the user must fill in.

Additionally, you will provide all the letters required to fill in the spelling, one for each blank square at the bottom, scattered over the center of the world map at different, random angles between -45 to +45 angles from standard reading level so they are all right-side up but look truly dispersed on the board. Ensure that the letters are mixed and NOT in the correct order to spell the country name easily. (The game is figuring out what country name to spell.)

The user will drag each letter to a square and drop it. When dropped, it should be made to fit correctly (and at the correct angle). The user will spell the country name. The user may move letters that have already been dropped to other spaces (so they can correct misspellings). If another letters is already in that space, they will swap spaces. If a new letter is dropped onto a space that already has a letter in it, the originally placed letter will be displaced to just above the space it was in so the user can use it again in a different space.

Once a user spells a country’s name correctly, make a light ding noise (like a help desk bell sound) and randomly select another country from those remaining (i.e., that haven’t yet been played) and set up the new game board. Also, make sure the country that they just spelled fills in on the board as described above in the map section.

When the user spells the name correctly, automatically add the Scrabble point total to the scoreboard, which I will be mentioned in more detail later. Keep a sum.

The user will get “Three Passes.” Each pass is -50 points. However, when used, have the letters move and arrange themselves to fill in the spelling. Do the ding, flash “-50” on the screen briefly, and fill in the country. Subtract 50 points from the score. Negative scores are possible.

The pass button should be to the right of the empty spelling squares for each country. When the user hovers over the “Pass” button, tell them how many passes they have left. Once they have used all three passes, remove the button from all forthcoming spelling challenges and instead replace the button with a “Record My Score” button.

When the user clicks the “Record My Score” button, show a score-modal in the middle of the screen. The score-modal should be titled: “Join our leaderboard”. It should contain two fill-in input text boxes.

– Name/Alias: {they fill in an alias name. Ensure no derogatory, sexual, or vulgar words are allowed please}
– Country of Residence: {country where they live}

Add a save button.

Once saved, update the modal to show all saved scores with Alias, Country, and Total Score in table format (without borders) in descending order from highest score to lowest. Add a scroll bar if enough people record their score that you need to scroll down. Maintain this scoring database on the backend. (I have my own Ubuntu/Apache server, so if I need to do something on the backend to make this happen, I can.)

Make sure that the user can close out the save and high scores dual modal by click a close button “X” in the upper right.

# Title
Place the title in the upper left of the map, on a navbar header. Use a traditional Scrabble-title like font from Google Fonts.

Title = “International Scrabble Day!”

# Information
On the right side of the navbar header, have an “i” icon for information.

When the user clicks on the “i”, have a modal pop up with simple, straight-forward, and inviting directions on how to play the game.

At the top of the modal please place an obvious but not gaudy “High Scores” button and when clicked replace the text and info in the current modal with a table (styled the same as the high scores table above) showing Alias and Score for the Top 10 scores currently saved. There should be a small “X” button inside the scores text to get back to the information modal content.

At the bottom of the modal include styled hyperlinks mentioning “Created for free with Web Mapper GPT” with a link to the provenance file, and then some text to “ICA Map Design Commission” with a hyperlink to “https://mapdesign.icaci.org”. In the provenance put “Idea and design by Ian Muehlenhaus.”

# Mobile devices.
The following directions pertains to only handheld mobile devices:

– Please make this mobile device friendly by ensuring the user is in landscape mode for it to work.
– Have the title bar disappear after 8 seconds. In the lower left corner add a button to click that shows the title bar again, or hides it if it is showing. (A show/hide button, so to speak).
– Ensure the letters are large enough to click on and drag with a fat finger. 🙂

Thank you.

Any questions before you begin? If not, proceed. If yes, stop and ask before concluding. Thanks!

Happy Drop Everything and Read (DEAR) Day! (102/365)

Happy drop everything and read day!

Beverly Cleary shaped millions of American children’s reading habits. She was a prolific author of children’s literature from the 1950s onward. Sadly, she passed away at 95 in 2021. However, her stories and books live on and are still widely read today — including by my kids when they were in grade school.

Her most famous character, arguably, was Ramona Quimby. (Ramona was a pest!) In those books, there was a reading group or initiative that Ramona took part in called: “Drop Everything and Read.”

The idea of celebrating Drop Everything and Read Day on Beverly Cleary’s birthday was born.

Though I went on a diatribe against capitalism and the death of writing careers two days ago in Friday’s post (Map 100 in this series), I want to assure you that I also enjoy reading and I do encourage young people to read. So this map is a mea culpa, in a way.

Each state shows the number one Google-searched children’s book and young adult fiction book in 2023 (I believe… the exact date should be in the pop-up window).

Each state is also colored based on the percent of the state population that is 0-18 years of age using US Census data.

Originally I was going to color the states with the appropriate book covers, but alas… darn copyright laws, make such free advertisements nearly impossible to pull off. Sorry! 🙂

Happy Drop Everything and Read Day! And thank you for all the great stories and memories, Beverly Cleary!

View Map Here

 

Data Creation with Perplexity Pro Prompt

Can you create a simple state-based dataset of most popular children’s book state-by-state based on 95 percent group and also Fusion Academy’s Young Adult most popular books by state and combine them into a single dataset. Also, if possible create a separate field using the most recent Census population survey/estimate data 2023 or later for each state showing percent of total population aged 0-18 or ~5 to 18 years of age (wherever the closest census breakdown is, please).

This dataset will be used in a map to celebrate “Drop Everything and Read Day” on Beverly Cleary’s birthday. Thanks! (P.S. Please include a column with state abbreviations too.)

WebMapGPT Prompt

Hi there. Sunday is Beverly Clearly Day or Drop Everything and Read Day (DERD).

To celebrate, I’m creating a simple US state map that displays either the top searched for children’s book and young adult book by state.

# Intent
To highlight young adult and children’s literature to celebrate Beverly Cleary’s contribution to reading.

# Map
Please use a US state base map in equal area albers or similar projection with Alaska and Hawaii placed in the lower left.

Each state should be filled with the book cover of the book represented by the data. States should have white outlines.

I’m not sure where images of book covers are on the internet, but I imagine Wikipedia probably has some good images, perhaps Amazon, or Google Books?

When a user clicks on a state, a pop up should appear (without an arrow) with the following information laid out similarly:

<div>
<h3>{state} ({state_abbr})</h3>
<p><strong>Children’s pick:</strong> {children_book_95percentgroup}<br>
<strong>YA pick:</strong> {ya_book_fusionacademy}<br>
<strong>Population under 18:</strong> {pct_under_18}%</p>
<p>Compiled for Drop Everything and Read Day using state-level book-interest studies and ACS 2023 Census profile data. We love you Ramona Quimby!!! We miss you Beverly Cleary.</p>
</div>

There should be a toggle switch in the upper-right of the map to switch between Children’s / Young Adult.

When toggled, have the book covers change to the appropriate book cover for that book type in each state. You may tile book covers to fill each state.

Splash screen title at start that is open in a modal:

Title: Happy Drop Everything and Read Day
Subtitle (60% font size of title): Top Children’s and Young Adult Book Google Searches by State

Beneath, a brief bit about “DEAR” Day and Beverly Cleary.

Sources for the data spelled out.

Smaller and more subtle font:
List of tools used to make the map: APIs, Made with WebMapGPT (webmapgpt.com), Ian Muehlenhaus (linkedin.com/in/ianmule), Map Design Commission of the ICA (mapdesign.icaci.org), and with links to the websites where applicable and Ian’s LinkedIn profile are. Provenance link.

I’m attaching an EXCEL dataset and some data source and provenance information. Thanks!

 

Happy National Cheese Fondue Day! (101/365)

I knew going into this that this map was going to disgust me. But I couldn’t resist. Besides, it’s a Saturday, so hopefully it doesn’t get too many looks.

I like fondue well enough, but how do you make a cheese fondue map without it looking like… well… yeah.

Alas, here it is. I can only say that Monday’s Map (103/365) will more than make up for this. I’m hooked on visiting that one right now, and I’m pretty sure others will be too. Until then… bon appétit!

View Map Conversation and Map Image on Google Gemini Here

The Prompt (Google Gemini – Image)

I would like to make a tasteful cheese fondue map for Cheese Fondue Day.

I would like to see a world map, with generalized elevation in a stereographic style projection (circular), layered in cheese fondue. The image should look like a print map and appear as though it is a photograph of cheese fondue dumped on elevation model paper map. Have waves and drips, etc.

 

Happy Encourage a Young Writer Day! (100/365)

We made it to 100! To celebrate, I thought I’d make a map showing that LLMs are not destroying white-collar, cerebral creative jobs on their own. Oh, no! The internet did a number on many of those first. In particular, on careers in writing and publishing.

To be up front: I adore writing. Nothing gives me the joy of parroting my way through explaining my own thoughts and emotions using words and syntax I’ve stolen throughout my lifetime of listening to people talk and reading the New Yorker. (This is why I empathize with LLMs; they are no more stochastic parrots than humans. We have no original linguistic thought or writing ourselves. Every word I write, I read or heard somewhere else, thousands of times, and I am parroting and placing these words in an order that seems logical and to make sense. It’s no different. It’s plagiarism.

All writing — LLM-based or now — is plagiarism. But plagiarism is only a crime in a capitalist world-economy that has commodified reasoning… copyright laws are literally the commodification of communicating free-will thought and reason — much as property laws are the commodification of geography.

What cracks me up is that LLMs are stripping the veneer off the shortcomings of the social (and economic) construction of copyright laws. Hmmm… maybe Marx was on to something? ! But I’ll leave that to the David Harveys of the world to bicker about in copyrighted academic publications.

Writing is also why I dig prompt cartography. Language is merely human code for engineering our own and others’ beliefs about the world and changing people’s behaviors. That’s all. It’s a programming language we use on ourselves. Viewed that way, it’s absolutely brilliant!

As a wayward teenager lost in Hungary in 1993/1994, reading English translations of Jozsef Attila and Orkeny Istvan in cafes while cutting class, I decided I would grow up to be a writer someday. It became my life’s goal. I even entered my undergraduate degree as an English Major.

And why not? The world was once full of writers. My family knew a bunch of them. My mother had a writing business at one point – Said Write, LLC. My second best man’s — meaning the best man at my second wedding in this case — dad was full-time poet! Imagine that!

The woman neighbor next door to us growing up was a journalist for the local newspaper. My parents were friends with a couple of full-time magazine writers. We knew the editor of Lake Superior Magazine, which was a full-time job back in the day… unbelievable!

And then it hit me… I don’t know anyone today who makes a living writing. We all have to write. And I know people who have written novels. I’ve written screenplays and non-fiction books, but I don’t know anyone who holds a career in writing. (And yes, I know there are still journalists. Just not nearly as many.)

Now… there was the big blog phase in the mid-2000s. But even blogs are no longer a major thing like they once were compared to podcasts and influencer videos. And what about all those newspapers and book publishers that got shutdown, merged, downsized, and sold off? Including Rand McNally Atlas even being bought and weeded out by a Hedge Fund… not even atlases are sacred?!?!) And what exactly doesn’t Taylor & Francis Group not own in academic publishing, I ask, in all sincerity? (Aside from Springer – keep it real, Deutschland!)

I realize that many of my former colleagues in academia may be livid right now. They write. They have careers. True but… you don’t officially get paid for your writing. In fact, you often have to pay Taylor & Francis Group to ensure your writing can be read (i.e., to make it open to anyone outside of academia). Rather, you get paid to do research and report on your findings. Writing is one form of communicating your results. I would argue it’s probably less effective than a podcast or vlog, but writing still possesses a higher stature even if it goes largely… well, unread.

I digress again… it’s what I do best… particularly while freewriting!

So where was I, ah yes, encourage a young writer day…

I began thinking: my daughter loves writing. But how can I possibly encourage her to become a writer? (Similarly, my sister-in-law loves calligraphy. But I wouldn’t encourage her to become a calligrapher right now; she’s already struck out as a yoga instructor so…)

I simply can’t encourage any young person to pursue a career in writing. All I can do is encourage someone, like my daughter, to write for enjoyment — similar to how I don’t encourage her to become a professional videogame player, but to play Baulder’s Gate for enjoyment purposes. 

Encouraging young people to only write for enjoyment also happily removes a lot of the problems young people have with writing.

Writing for enjoyment means you don’t have to worry about what others think of your writing or following others’ prescribed notions of what constitutes writing versus what doesn’t. You can try new tools.

Not a gifted writer… or perhaps you have dyslexia like someone in my family does?

No worries! Spellcheck, word processing, or writing outlines of your ideas and feeding them to LLMs to spit out more clearly counts as writing. Because it is… writing is using tools to communicate your ideas in code that other humans (that share your natural language) can interpret and do with what they want. No human has ever written anything without technology.  No human has ever written anything without plagiarizing everything they’ve ever heard, read, or seen. LLMs are just the next technological step.

But I then remembered, and coming full circle, the death spiral of writing for a career started way before LLMs.

Video may have killed the radio star, but internet killed professional, career-based writing jobs with health insurance and benefits.

At least, that was my hypothesis, which I decided to explore in today’s map.

I went and downloaded US Census data to map the number of writers per square mile by county in the US in 1990 versus in 2023. I used the US Census’s Business something or other data, which changed a bit in classification scheme since 1990s but is roughly the same.

Again, I love writing. I encourage young people to write using whatever tools they want — pens, pencils, word processors, paint, or LLMs. (Lord knows, an LLM would have written this more clearly than I just did.)

I do not advise anyone assume they will be able to feed themselves making it their day job, though. More like a passion project similar to this 365 Days of Maps Campaign. Just for fun. Just to make people think. Just to poke some sleeping bears.

Happy Encourage Young Writers Day!

P.S. For those of you that think I’ve committed some sort of writing blasphemy… perhaps I have. But I promise Monday’s map makes up for this – it requires impeccable spelling! 😉

View Map Here

Data compilation and cleaning:

Spatial Data Doctor GPT

Original Prompt Used in WebMapGPT

I would like to make a sad map for Friday’s National “Encourage a Young Writer Day”.

The map should use the two attached datasets, or a combination of them, to do the following:
Show the difference in the number of people employed in writing and publishing jobs between 1990 and 2023 by county in the US.

I have two geojson files. One shows different employee counts by type of writing/publishing employment, count of employers, as well as total payrolls in thousands of dollars in 1990 and the other shows total people employed and either payroll or count of employers in 2023.

Though they use slightly different categories (due to technological changes), the evidence is clear — there are fewer writing jobs.

Please come up with a map design of the United States that is equal area (with Alaska and Hawaii in the lower left) that does the following:

Shows total number of people employed in writing and publishing (regardless of field) in 1990). Also shows the total number of people employed in writing in 2023 by county. Also shows the change in count as a percent between the two years (using a purple (decrease) to green (increase) diverging color ramp. (You may have to add separate values within a year per county and then subtract the count differences between the two datasets per county to show change over time. Sorry about that. Feel free to clean or create a new geojson, etc.)

For counties that are missing data from both years, please still include the boundaries but use a light gray fill with no boundary outline.

Once the data is prepped, I provide some guidelines for the map design below beyond the projection, which was discussed above.

# Intent
To show how bleak the future of writing looks, not to mention LLMs replacing a lot of the human writing grunt work.

# Communicative Goal
– Tongue-in-Cheek Satire for Young Writers’ Day
– Informative about just how much the internet changed the writing and publishing landscape and hinting at AI changing it

# Interactive panel
Should allow users to change which map they are looking at, as well as the number of classes in the dataset and visualization technique.

## Three Mapped Datasets:
1. 1990 Writers/Publishers
2. 2023 Writers/Publishers
3. Percent change between the two

### For datasets 1 and 2
Allow the user to change the classification scheme. Default scheme is natural breaks, six classes.
– User may choose among: natural breaks (default), equal interval, arithmetic, standard deviation, unclassed.

User may select between 4 and 8 classes on a slider for each classification scheme, except for unclassed, in which case the slider will made inactive and when the user hovers over it a tool tip will note: “Change classification to select number of classes.”

### For dataset 3
Default classification scheme is diverging in arithmetic chunks for 0% change. User may select number of classes. They may also select unclassed diverging from 0%. Color scheme is the same as above, except the middle color is white. Purple is heavier negative percent and green is heavier positive percent growth.

# Map Layout
Interactive panel should be in lower right-hand corner of hte map with some padding from edge of window. Title should be: “Writing Opportunities”

When the user clicks on the panel, it should minimize. When they click on it again, it should open again. When the map loads, the panel should be open. A legend should be included in the panel.

The title should be in a header across the top, left-aligned. “Never tell a writer the odds…” in a handwritten display font, preferably a bit modern cursive. (Use Google fonts or similar open font.)

On the right of the header, right-aligned wiht some margins from the right window border, have an small “i” button. When the user clicks that a modal opens with sources and information, as well as a link to www.webmapgpt.com and attribution information for the API. Please note the datasets came from the Census: County Business Patterns and were filtered to writing and publishing jobs.

# Styling
– Popups should be white with light drop shadown and have an arrow to the county.
– All divs with borders or fills should have border-radius values of 10 or less.
– Colors… let’s go for faded typewriter ribbon style and graphite pencil.
– Fonts: let’s go with typewriter fonts in the pop-up windows and in the legend, etc. Title will be handwritten as described above.

Colors: Purple = decline/low, Green = positive/growth (try to find a color ramp that mimics Color Brewer but isn’t ungodly bright.

County outlines should look like they were drawn in pencil with light line thickness variation and grayness density.

Background of HTML page should be lined paper with a light texture and very light blue lines.


Once it concluded, I realized my error in the original instructions and added a second prompt to recreate the choropleth maps to show derived values based on number of writers per square mile.

Happy Winston Churchill Day (99/365)

Winston Churchill… the man, the myth, the cigars… Today is officially Winston Churchill Day.

Here is a story map of his life to celebrate. Single prompt. If I were to revise, I would remove the lines, but alas, I’m excited about other maps more than this one, so I’m moving on.

View Map Here

Original Web Mapper GPT Prompt

# Intent
Create a biographical, interactive map about Winston Churchill for Winston Churchill Day. The map component should look early twentieth-century antique (font selection, yellowish textured paper vibe, and muted, matte color print style).

The goal will be to walk through Winston Churchill’s life, both the highs and lows, beginning with his birth, boarding school life, and then political and military adventures, and culminating with his death.

We don’t need all of the details, just the biggest highlights as found on https://en.wikipedia.org/wiki/Winston_Churchill and/or in his autobiography.

Please include at least 15-25 highlights / major moments from his life and career.

# Audience
Random internet people interested in Winston Churchill, cartographers interested in prompt cartography, and people that see the link when it’s shared in a post on LinkedIn.

# Map Style
The maps should be tileset based – Web Mercator is fine. Please find an open and free to use tileset that looks antiquarian or World War II map style. (I don’t care if it’s an Esri base map, CARTO, Stamen, Mapbox, or even made by the PLA, as long as it looks antique and is in English.) If you must, you may add some masking, etc., to give the map text and muted colors.

The user must not be allowed to zoom out to space. In fact, the panning bounds should be limited to no more than 10 degrees latitude or longitude beyond the dataset extent and the user must not be allowed to zoom out past the total data extent. The map may zoom in as far as necessary up to a metropolitan area zoom level (not sure what level that is exactly but limit it around there).

# Locate the Data
Each places should be located on the map as a point and color coded (in period-appropriate colors by category).

# Story Pane
The map should have a floating pane that is draggable (by clicking and dragging on the header) and movable. When the map loads, it should start in the lower right, with modern margins (e.g., 5-10px) from the edges of the browser window.

The title of the pane should be “Churchill’s Journey” and the first event (probably his birth I’m guessing, should be loaded and zoomed in on with the map to start.

If there is a picture available, load the image link URL into the panel. If it’s landscape, have it at the top of the panel. If it’s portrait mode, have it fill 2/3s of the panel’s width or less and ensure the image isn’t larger than 150px in height (constrain width based on that).

Below, place Event Title followed by the Year as a title.
Below that the category using the same font color as the categorical point symbol.
Then, the place and country (when available).
Below that the description.
Below that the URL to any follow-up sources.
Below that a
In the panel, if there is a picture, it should be

At the bottom, a small button on the left that says “Previous” and when clicked goes to the event preceding the current one, and on the right a button that says “Next” that goes to the next event.

In this way, the user can go through Churchill’s entire life one event at a time.

# Title in the upper left

Come up with some stoic and concise title for a map about Winston Churchill celebrating him.

Use a Serif font from Google fonts that works for early Twentieth Century.

# Filters
In the lower left have a minimized panel floating with the same margins as the story panel on the lower right, but in this case from the left and bottom browser windows. (Symmetrical margin spacing is what I’m saying.)

It should be labeled “Filter by Category”. When clicked, it should open and show the different event categories in alphabetical order and in the color of their symbology. They are multi-selectable and all are selected by default.

When only one is selected, only that category’s events are shown on the map and the panel updates to the closest event from where it was currently in the order of viewing. If more than one is selected, all events from both are shown and the panel updates simiarly. If none are selected, all events are shown by default. Make it intuitive and logical.

Beneath the filters put a button called “Sources”. This should open a modal with APIs used, Web Mapper GPT hyperlink, data source(s) (i.e., Wikipedia), and any other important info — i.e., a link to a provenance.json.

Happy Theatre Day! (86/365)

Happy Theatre (or Theater?) Day!

Today’s map is a bit weird. I decided to ask Perplexity to create a dataset of renowned playwrights from different countries that are perhaps not famous but have done work that has received awards or is known internationally.

I get tired of English, so I asked the playwright’s description in their preferred or native language. So you won’t be able to read about all of them necessarily, but you’ll be able to see their names and famous plays in English — if you speak English.

Anyway, the map is kind of simple aside from the fact that the countries are filled with their playwright’s bios and may languages are represented herein.

This one took a brief follow-up prompt because originally the bios weren’t contained/masked by the country boundaries and running amok. A couple of follow-up lines straightened things out and I’m off working on tomorrow’s map which… is so much fun! 🙂

Also, Perplexity ran out of gas when creating the dataset, and I didn’t really care that much, but you’ll notice a few larger populated countries missing from the final map… i.e., France and the US.

View Map Here

Tools Used

  • Perplexity: data collection
  • Web Mapper: map creation

Web Mapper Prompt

Hi, I would like to make a map for Theater Day on Friday, May 27. I have collected a JSON dataset of famous playwrights from around the world. Each of their descrdiptions is in their native language, for fun. I am wondering if you can do the following: Please create an Equal Earth projection map with the title “All the world is a stage…” in the upper-left-hand section. Then, as a subtitle: “Highly regarded playwrights from around the world.” — Using the provide JSON dataset, please join it to a countries geometry dataset. Use medium gray boundaries for the countries. White background with the playwright’s description (in their native language) filling the entire country at a random angle between 45 degrees and 67 degrees (where zero degrees is at the top and 90 degrees is standard left-to-right horizontal text). The text should be light gray and turn to bright crimson red when the user hovers over a country. For countries without playwright listed, or incomplete data, simply create a country with a very light gray fill. No base map needed. Just the countries. When a user selects a country, have a beautiful, minimalist popup appear with the details about the Playwright and all the information, with a scroll bar. Have hte Playwright’s name as the title. Use 85% black for the text. White background, no transparency. A very minimalist map with beautiful text-based fill from their bio, descriptions, etc. If you have any questions or run into any issues, please let me know. On mobile devices make sure the map fills the window and is centered vertically. Also make sure it can only be viewed in landscape mode. Allow zoom up to 5 times the full extent. Do not let people pan outside of hte map or zoom out into space. On mobile make the title a header across the top, minimal. On the desktop version, have it float over the map in the lower lefthand corner, quite large. Add an info button next to the title. When a user clicks it, a modal opens with the a source showing the APIs used, link to a provenance file, and a link to the JSON file used to create this map. Give credit to Web Mapper GPT and Ian Muehlenhaus. Thanks.

Happy Purple Day! (85/365)

March is Epilepsy Awareness Month and today is the day – Purple Day! (As a Minnesotan, I almost felt compelled to do something Prince related, but… the day is too important to belittle it with a cultural reference to a dead musician I never really listened to.)

Epilepsy impacts millions around the world, is absolutely debilitating, and can be fatal.

In fact, we lost a wonderful cartographer to epilepsy back in 2008 – Ben Alden (Edina, Minnesota).  He was a graduate student at the University of Minnesota and my Teaching Assistant in the Cartography course I was teaching there. He passed mid-semester, and he’s not forgotten.

Ben, this map is for you! Even more fitting as, because you were 10 years younger than me, you were obsessed with KML and creating maps via code, instead of GUI interfaces (i.e., Macromedia Freehand was what I taught with back then). You were convinced code would replace GUI in map design.

Not only were you right, Ben. Today coding by human is being replaced with natural language. Today mapmakers don’t have to learn how to code or use a GIS at all. Instead, they can create a detailed epilepsy dataset showing death count, incident rates, estimate ranges, five different classification schemes, varying classification counts, across three different years (2010, 2020, and 2023) in a single request (i.e., prompt).

And yes, the map is equal area, uses Color Brewer style ramps (until a user decides to go up to 10 classes, of course), and has an interactive side panel, interactive multi-select legend, detailed info window popups that are interactive and allow the user to change the year being shown updating the underlying map, and works on mobile devices too.

The following map was created using a single prompt in Web Mapper/WebMapperGPT/WebMapGPT… whatever you want to call it, which in turn, is merely ChatGPT built via a single system prompt.

And I guess what I’m saying is…

Stochastic parroting of sound and syntax (i.e., natural language) is perhaps the most direct means of expressing human thought, and for many of us, who prefer writing or speaking to coding or clicking GUI buttons, it’s definitely a marvelous way to produce maps.

P.S. Hey, Ben… I hope you’re up there nodding with approval. It’s come full circle. You were really on to something back in 2008. 🙂

Epilepsy death counts/rates and incident counts/rates around the world. View Map Here

Single Prompt Producing This

# Audience and Purpose
General world audience. Created for Purple Day to focus on people with epilepsy and funding for finding cures and researching the disease.
# CSV Dataset
I have a CSV dataset of epilepsy rates by country around the world in three different years (attached). The CSV dataset has up to three entries per country (one for 2010, 2020, and 2023) and also includes an ISO3 column for easy joining to freely available datasets like Natural Earth.
Please connect this CSV dataset to a country polygon file set available online to finalize the dataset. We will be visualizing this.
Below is a list of the field names and their definitions:
– ISO3: the country’s ISO3 abbreviation
– Country: the natural language name of the country in English
– year: the year this feature’s data represents
– deaths_count: number of deaths of epilepsy
– deaths_rate: the estimated epilepsy death rate
– deaths_lower: the lowest possible death rate
– deaths_upper: the highest possible death rate
– inc_count: epilepsy incidents count
– inc_rate: epilepsy estimated incidents rate
– inc_lower: epilepsy incidents lowest possible rate
– inc_upper: epilepsy incidents highest possible rate
# Devices
## Mobile and Handheld
Will largely be handheld device, I imagine. Since it’s a world map, must require landscape orientation to view on handhelds. Ensure that title is minimal on handhelds and across the top. Include mobile friendly icon button(s) and when the user taps outside of a modal or panel, hide it to show the map. Popups should be over the selected country and compact. They should disappear automatically as soon as someone clicks/taps anywhere outside of it.
There can be a legend that pops up from the bottom of the screen and disappears when you click outside of it. Legend contents will be discussed later.
## PC / Laptop
Full featured. Load map with Legend open and Attribution modal hidden. Title should float in upper left of map with no header bar across the top. Title should have a 70% transparent background behind it that gradients to 15% transparency from the upper-left of the text box to the lower-right (diagonal). Use white as the color. A panel should slide out from the right-hand side and be open at the start. The left side of the panel will have a thin gray bar that, if the user wants, can be clicked on to minimize the panel. When minimizing, the panel should slide left-to-right smoothly and conclude with the same thin gray bar resting on right side of the window, the same thickness on the screen as it was when the panel was fully extended. If the user clicks on this bar when it is resting on the right border of the window, the panel must slide open (from right-to-left) again. And back-and-forth.
# Map Area
We will be mapping the whole world. If possible, please choose an Equal Area or Equal Earth projection. if this is not possible due to the nature of the data or capabilities of the APIs you decide to use, feel free to use Web Mercator.
I don’t care where the projection is centered, but ideally on the Prime Meridian.
Please remove Antarctica from the map. It is not required.
## Mobile Devices
On mobile devices, I have noticed that when the user rotates their phone to landscape, sometimes the map hugs the bottom border of the screen. Please ensure that the map area rests in the center of the display vertically and fits horizontally. Thank you.
# Background / Basemap
Please use a black background. If we are able to successfully merge/join the CSV to a country dataset, then please don’t use a basemap other than the country boundaries. If not, use a dark, simple basemap.
# Data Visualization
## Desktop / Laptop
I would like you to visualize the dataset in several different ways. The default view will be Natural Breaks with 5 classes and a Color Brewer-inspired color ramp from off-white (or light yellow) to dark purple. Lower rates are off-white/light-yellow. Higher rates are dark purple.
However, the user will be able to reclassify the datasets in several ways, so you will need to create styles and plans based on what interactivity they are allowed to do. Also create 5-class schemes for the following classification schemes:
– Equal Interval
– Quintiles
– Standard Deviation
– Unclassed
Also, please plan to for the user to be able to change the number of classes for all of the schemes, except unclassed, using a number between 3 and 10.
All of the maps will use the same color ramp except Standard Deviation, which will use a diverging color ramp with medium gray in the middle class, pure white for the lowest class, and dark purple for the highest class.
Controls for the different schemes will be placed in the panel and discussed shortly.
The country borders will be an unsatured bright yellow.
## Mobile / Handheld
The mobile and handheld map will have only two classification schemes, which can be switched using a toggle in the legend: natural breaks with five classes and unclassed. Same datasets and representations as on the desktop map. IMPORTANT: on mobile, only data for 2023 will be visualized. The other years will be omitted from the visualization.
# Info Windows / Pop Ups
Users must click on a country to get an info window or popup. No hovering!
Do not use arrows pointing to the feature you clicked on. Just show a rectangular info window, please. The border should be 0.5 thick and white at 50% transparency.
The pop up window background will be the same as the classification color currently assigned to the country (depending on previous user intarctivity, etc.). If the backgroudn color is yellow, white, or light gray, use a dark purple font. If it is medium or dark purple, use a white font.
## Desktop / Laptop
The pop-up on computers and laptops will contain the following information:
– Country Name as the title
– The currently selected year (as chosen in the Pane). Represent this prominently but not dominently near the title.
– Estimated Deaths: {deaths_count}
– Estimated Death Rate: {deaths_estimated}
– Smaller, subdued font: “Rate Range”: {deaths_lower} –-> {deaths_upper}
– Estimated Incidents: {inc_count}
– Estimated Incident Rate: {inc_rate}
– Smaller, subdued font: “Rate Range”: {inc_lower} –-> {inc_upper}
Also, include three buttons at the bottom, one for each year in the dataset: 2010, 2020, 2023. The year currently being shown (typically the one selected from the legend or panel) should be highlighted and unselectable. The other years should be selectable. When a user selects this, the entire world map changes underneath to that year, but the info window stays open and the data in the info window updates as well. Also, that year become highlighted in the info window and unselectable, and the other year that had been selected is now selectable.
## Mobile / Handheld
The pop-up on mobile devices will contain the following information:
– Country Name as the title
– The currently selected year (as chosen in the Pane). Represent this prominently but not dominently near the title.
– Estimated Deaths: {deaths_count}
– Estimated Death Rate: {deaths_estimated}
Only 2023 data is available on mobile versions of the app, so no need for a year selector.
# Sources Modal
The sources modal MUST be hidden when the map loads. Once loaded, the sources modal must disappear again as soon as the user clicks anywhere outside of it. When it is opened via user interaction, please stylistically (in a manner that does not class with the underlying map) provide the following information to the user:
– Map Projection
– Dataset Source (please identify, it was some online world database, as I recall)
– Provenance JSON download
– Prompt Cartographer: Ian Muehlenhaus (link to https://linkedin.com/in/ianmule)
– Created as part of the Map Design Commission of the ICA’s 365 Days of Maps Campaign. Follow here: https://mapdesign.icaci.org/.
– Made for free using Web Mapper: https://www.webmapgpt.com/
– Map APIs / Geometry Attributions: {determine_and_list}
## Special Rule for Mobile / Handheld
Ensure that there is space for the user to click outside of the modal to make it disappear. If space is an issue, add a scrollbar to the modal to allow all the information to fit.
# User Interactivity and Map Manipulation
User interaction will occur in two places primarily: in the map area and in the panel.
## Map Interactions
Users must be able to zoom in and out on the map up to five times the original extent. Users may not zoom out past the original map extent, however (i.e., never out into outer space). When the user zooms all the way out, the map should be at full extent and fit the viewport appropriately.
Users may pan the map using one finger or click-and-drag on a mouse. However, they may not pan more than rougly 10 degrees latitude and/or longitude north, south, east, or west of the full extent.
## Desktop / Laptop Panel Interactions
In the panel, the user must be able to manipulate the following:
– Year being shown
– Data being shown: Death Rate OR Incident Rate. No count data as choropleth.
– Classification scheme
– Number of classes (except for unclassed)
– Multiselect legend (except for unclassed data):
– when one or more classes are selected, the map keeps those countries the color they were, and all others go to 80% transparency
– when the user clicks on the same selection again, it becomes deselected and changes back
– when no classes are selected, all regain complete visibility
When the user has selected the Unclassed visualization, a legend should be shown with a small not underneath saying that the legend is not interactive.
Add a “Clear” selections button prominently but not dominently below the legend.
## Mobile
There is no panel to interact with. However, on mobile, the legend is interactive and follows the same multi-select and deselect rules as desktop.
There is no option to change number of classes or class type.
# Panel Design
The panel should look modern professional – 2000% more like Apple or Google Maps than Esri Calcite.
Arrange the interactive components in a logical order and chunk interactive tasks into logical sections. Avoid putting boxes inside of boxes and instead use horiztonal dividers or font tweakes, etc.
Align all components left. Use contemporary styling techniques and use plenty of white spacing without losing visual balance within the panel itself, please.
At the bottom of the panel, have a “Sources & Attribution” button that opens the sources modal.
# Overall styling
I hate super-rounded rectangles. But I also don’t like sharp edges. Be consistent and round all boxes and component at 10px.
Make the map modern, purple, and not corny. It’s meant to support an important day. Thanks!

Continue reading

Happy National Awkward Moments Day! (77/365)

Happy National Awkward Moments Day!

This is a day I can relate to, as my children say I’m the most awkward person they’ve ever met. I’ve always been awkward; as a teenager I fought against it. As an adult, I have come to fully embrace it; life is far more enjoyable that way.

So in honor of National Awkward Moments Day, and as a tribute to my kids, who have been collecting (and continue to collect) my most awkward, inane, and downright confusing quotes since 2019, here are some of my more awkward moments that have left family members scratching their heads and the nearby public wondering about my sanity over the past seven years.

I also asked Web Mapper GPT to add an absurdity scale and date filter based on Monty Python-esque level of insaneness, so you can filter them by this.

The only time location might matter is the quote regarding: “You abducted my wife!” It is shown in Minnesota somewhere but was actually yelped at a pushy border patrol agent in the Sydney International Airport. There is a longer story, but the short of it… never accuse Australian Border Police of abducting your wife, even if, by definition, you feel like they have. 🙂

I’m not saying any of these are worth reading. But it’s all awkward crap I’ve said while completely sober, and my kids will be appreciative that their years of dad documentation has resulted in some useful self-deprecation. 🙂

Apologies in advance for anything, anyone, anywhere may find offensive. I don’t think there is, but I am anxious as to whether I’ll hear from the Testudines Dentistry Association regarding one or two of the comments.

I sincerely believe everyone has an inalienable right to be offended; but unfortunately, no one has any right not to be offended. 🙂

View Map Here

Web Mapper GPT Single Prompt Conversation

Hi there. I have a list of awkward statements I have made in public or to my family throughout the past six years or so.

I would like to make a minimalist, comical, goofy map for Awkward Moments Day on Wednesday, March 18.

Dataset Prep

My thought is, we give each of these “Ian-isms” in the list a faux lat-long coordinate and date (between October 2019 and January 2026) scattered around Dane County, Wisconsin (particularly in the McFarland Village, Monona, Sun Prairie, and Madison areas), in Duluth, Minnesota (particularly the east hillside region and a few north of town near Island Lake), and in Andover and Plymouth, Minnesota.

Note: the geography and dates should be related. Earlier dates (2019-2022) should be in the Wisconsin places mentioned above. Quotes with dates from 2023-2026 should be in the Andover, Duluth, Plymouth areas. Early quotes on the list should be in Wisconsin (about 1/3 to 2/5ths). Later quotes in Minnesota.

Data Absurdity Level

Please give each quote an absurdity ranking compared to all other quotes in the document based on your knowledge of non-sequtior humor and gags. Some aren’t that funny. Others are insane. A few are outlandish. Give it an Absurdity score based on how likely it is to be said in a Terry Gilliam film, Monty Python sketch, or by Steve Martin. Don’t compare them to those comics specifically, but rank my quotes based on all other Ian quotes. Once ranked in order quantile the quotes from 5 (most absurd) to 1 (most rationale). Then add that score to a new field called Absurdity Level in the dataset..

Symbology

Each comment gets point on the map. Avoid overlapping them too much. If there are a lot of points in one spot, please cluster them.

The point symbol used for these should be a cartoon text bubble with “WTH?!?!” in it. I’ve attached a PNG version of the bubble you may use. It should grow bigger as the person zooms in. Maximum width 25px, minimimum width 9px.

Symbol Interactivity

When the user hovers over or clicks on a symbol, add a highlighter style, pastel, semi-transparent light blue around the icon symbol and have a tooltip (text is right-aligned) protrude -1x, -1y from the end of the dialogue pointer on the bubble. Have the tooltip top be level with -1x, -1y coordinate above. And have the quote extend outward from there over a yellow-post-it note style background. The font used here should be marker or Sharpie style, though not necessarily bold. Feel free to use any Google Fonts you like. Underneath the quote, show the date.

Title

The title should be “Crap Ian’s (Actually) Said” It should be an action cartoon style title, splashing across the upper left of the map, two lines. Use cartoony display font, please, and some dramatic styling or beveling to make it look like a comic title of sorts.

Somewhere, perhasp in the lower left or lower right of the map, but not covering the data in McFarland area of Wisconsin, add a subtitle in Comicbook font that says: “In this map: documented ‘Ian-speak’ that the Muehlenhaus Family is still trying to decipher.” Much smaller font but same style and fitting the aesthetic.

Basemap

Please find a minimalist, light gray basemap to use that centers and is restricted to showing only the upper midwest where these awkward statements have been uttered (Minnesota, Wisconsin).

Over the light gray or positron basemap, please add a white mask at about 60% transparency that will hide most of the underlying details. I want the icons and statements to pop, since the locations are made up and guesttimated anyway.

Basemap interactivity

Again, restrict panning to the upper midwest. Do not allow someone to zoom out beyond the extent of the data plus 5-degrees lat long any direction. Do not allow people to zoom all the way in on the map. The furthest they should be able to zoom is to the point where every quote is individual and not overlapping.

Sources

In the sources modal, which should be hidden, display attribution for the APIs and base map being used. For family, mention: Muehlenhaus Family collected quotes since 2019. Copyright 2026, Muehlenhaus Family. All Rights Reserved.

Then mention Web Mapper GPT once.

Filters

Somewhere inconspicuous, you should add filter panel (that starts closed) that is in comic book font. Once open, it should be in comic book font again and allow users to filter points by date range and multi-select absurdity level. When these options are selected, the map should update to show only those points. There should be a “Clear” button in the filter panel that allows the map to be reset.

— Overarching theme of this map is minimalist base map, bombastic title, funny little text bubbles, colorful quotes, and a complete, quixotic embrace of the absurdity of thinking like Ian and being awkward!

Attached Files

  • ians_sayings_one_per_line.md
  • WTH?!?! SVG map icon created in ChatGPT