# d3

D3 (or D3.js) is a free, open-source JavaScript library for visualizing data.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Generating running routes with GPT-6 Astra and ChatGPT Work

DevFeed: [Generating running routes with GPT-6 Astra and ChatGPT Work](<https://devfeed.tech/articles/generating-running-routes-with-gpt-6-astra-and-chatgpt-work-30507.md>)

Original publisher: [Read original article](<https://simonwillison.net/2026/Sep/12/astra-running-routes/>)

Author: Simon Willison

Published: 2026-09-12T23:56:42Z

Content type: opinion

Language: en

Sources: [Simon Willison](<https://devfeed.tech/sources/simon-willison.md>), [Simon Willison's Weblog](<https://devfeed.tech/sources/simon-willison-s-weblog.md>)

Topics: [ChatGPT](<https://devfeed.tech/topics/chatgpt.md>), [Large Language Model](<https://devfeed.tech/topics/llm.md>), [GeoJSON](<https://devfeed.tech/topics/geojson.md>), [Code](<https://devfeed.tech/topics/code.md>), [d3](<https://devfeed.tech/topics/d3.md>)

Tags: [agent](<https://devfeed.tech/tags/agent.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-2-235](<https://devfeed.tech/tags/ai-2-235.md>), [chatgpt](<https://devfeed.tech/tags/chatgpt.md>), [chatgpt-204](<https://devfeed.tech/tags/chatgpt-204.md>), [code](<https://devfeed.tech/tags/code.md>), [d3](<https://devfeed.tech/tags/d3.md>), [d3-15](<https://devfeed.tech/tags/d3-15.md>), [generative-ai](<https://devfeed.tech/tags/generative-ai.md>), [generative-ai-1-981](<https://devfeed.tech/tags/generative-ai-1-981.md>), [geospatial](<https://devfeed.tech/tags/geospatial.md>), [geospatial-85](<https://devfeed.tech/tags/geospatial-85.md>), [gpt](<https://devfeed.tech/tags/gpt.md>), [gpt-6-astra](<https://devfeed.tech/tags/gpt-6-astra.md>), [gpt-6-astra-9](<https://devfeed.tech/tags/gpt-6-astra-9.md>), [llms](<https://devfeed.tech/tags/llms.md>), [llms-1-947](<https://devfeed.tech/tags/llms-1-947.md>), [map](<https://devfeed.tech/tags/map.md>), [openai](<https://devfeed.tech/tags/openai.md>), [openai-463](<https://devfeed.tech/tags/openai-463.md>), [python](<https://devfeed.tech/tags/python.md>), [skills](<https://devfeed.tech/tags/skills.md>), [skills-15](<https://devfeed.tech/tags/skills-15.md>), [work](<https://devfeed.tech/tags/work.md>)

### AI overview

The article describes using ChatGPT Work with GPT-6 Astra to generate 5K and 10K running routes from OpenStreetMap data, producing an embedded visualization and downloadable GPX and GeoJSON files. It also criticizes the lack of visibility into the generated Python code and the loss of that code after thread compaction.

### Source excerpt

Here's a neat thing I had ChatGPT Work with GPT-6 Astra (Max) do this morning: I live at <my address>. Figure out 5K and 10K running routes from me that loop from my house. Use OSM data. It worked for 27 minutes and produced exactly what I'd asked for, as both an embedded visualization and downloadable GPX file and GeoJSON files. Here's that 5K route: When I asked it how it had created the route, it replied: I used Nominatim to locate the address and Overpass to download local OpenStreetMap roads and trails, then calculated the loops locally. Frustratingly, the actual code it ran and exact details of what it did weren't visible to me in the ChatGPT UI. I see this lack of transparency is an anti-feature. By the time I thought to ask for a copy of the Python code it had used, ChatGPT was unable to provide it. This appears to be because the thread had been compacted. I think any LLM system that uses compaction needs to both preserve the pre-compacted text and make that text available via agent tool calls, to protect against this kind of problem. As for displaying the map to me, that used the visualize skill. It created a file called /workspace/el-granada-5k-share.html to embed directly into the ChatGPT UI. Here's a copy of that HTML, which starts like this: <div id="eg-share-loop"> <div class="viz-row"><h3>El Granada harbor loop</h3><span class="text-small">5.1 km</span></div> <div id="eg-share-stage"></div> <div class="text-small text-muted">Map data © <a href="https://www.openstreetmap.org/copyright" target="_blank" rel="noopener">OpenStreetMap contributors</a></div> <style> #eg-share-loop { width:100%; } #eg-share-loop #eg-share-stage { width:100%; margin:8px 0; } #eg-share-loop .eg-share-map { display:block; width:100%; touch-action:none; } #eg-share-loop .eg-share-map text { fill:var(--foreground); font-size:12px; font-weight:400; } #eg-share-loop .eg-share-label { paint-order:stroke; stroke:var(--background); stroke-width:3px; stroke-linejoin:round; } </style> <s

## Week 4: Hobbies, a Plastic-Waste Visualization, and Messaging Apps

DevFeed: [Week 4: Hobbies, a Plastic-Waste Visualization, and Messaging Apps](<https://devfeed.tech/articles/week-4-35575.md>)

Original publisher: [Read original article](<https://meowni.ca/posts/week-4>)

Author: Monica Dinculescu

Published: 2021-01-25T00:00:00Z

Content type: opinion

Language: en

Sources: [Monica Dinculescu](<https://devfeed.tech/sources/monica-dinculescu.md>)

Topics: [d3](<https://devfeed.tech/topics/d3.md>), [data](<https://devfeed.tech/topics/data.md>), [deprecated](<https://devfeed.tech/topics/deprecated.md>), [iphone](<https://devfeed.tech/topics/iphone.md>)

Tags: [d3](<https://devfeed.tech/tags/d3.md>), [data](<https://devfeed.tech/tags/data.md>), [deprecated](<https://devfeed.tech/tags/deprecated.md>), [iphone](<https://devfeed.tech/tags/iphone.md>), [visualization](<https://devfeed.tech/tags/visualization.md>)

### AI overview

A personal week note covering winter activities, hobbies, reading, a plastic-waste visualization made with d3, and frustrations with messaging apps including Hangouts, Chat, WhatsApp, and Signal.

### Source excerpt

Tahoe (where we currently live during this pannie-d) got a ton of snow this week, so I've been in winter mode. Went skiing on Friday, went snowshoeing on Sunday. My calves are on fire. Skiing is pretty safe; everyone is wearing masks, they've closed all the lodges, and tbh nobody should be within 6 feet of me skiing on a good day. I can tell when I accidentally overdo it with the hobbies (which is every time I get excited about a new hobby) because I rapidly swing in the other direction. I painted nothing this week, and I spent all weekend watching the entire season of Bling Empire in one day instead. I knitted most of a hat and then unravelled it all because it had accumulated too many mistakes. It's a really fun knit so I'm not too bothered. I spent a lot of evenings frantically working on a visualization about plastic waste (new hobby alert) that nobody asked for. It started as "lemme do a quick thing to get better at d3 and at asking questions about the data" and it's now a good 8+ hours of work in. Sure wish I would've half assed it, because now it's not done and I don't really want to finish it. Still reading "Because Internet"; also started The Travelling Cat Chronicles. I am really irritated and confused by this Hangouts/Chat situation. I am on an iPhone, and want to send Frances stupid links, hot takes and photos. We can't use our respective phone's Messages app (because hers is over SMS which shits the bed on photos, and mine is Apple proprietary). We were using Hangouts, but it's deprecated, and wanted to use Chat, but it's ... enterprise only and peons can't start new conversations? Also Whatsapp is evil and Signal spams all my contacts when I install it. What the fuck, I just want to talk to non-Apple friends in 2021. February is a perfect calendar rectangle and that is satisfying. Are week notes the new LiveJournal but without comments? Discuss.

## Visualizing an Assassin Puzzle

DevFeed: [Visualizing an Assassin Puzzle](<https://devfeed.tech/articles/visualizing-an-assassin-puzzle-40422.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2018/07/24/visualizing-an-assassin-puzzle/>)

Published: 2018-07-24T08:00:09Z

Content type: tutorial

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Computing](<https://devfeed.tech/topics/computing.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [d3](<https://devfeed.tech/topics/d3.md>), [Demo](<https://devfeed.tech/topics/demo.md>), [Library](<https://devfeed.tech/topics/library.md>), [Software](<https://devfeed.tech/topics/software.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [code](<https://devfeed.tech/tags/code.md>), [computing](<https://devfeed.tech/tags/computing.md>), [d3](<https://devfeed.tech/tags/d3.md>), [demo](<https://devfeed.tech/tags/demo.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [library](<https://devfeed.tech/tags/library.md>), [mathematics](<https://devfeed.tech/tags/mathematics.md>), [programming](<https://devfeed.tech/tags/programming.md>), [software](<https://devfeed.tech/tags/software.md>), [torus](<https://devfeed.tech/tags/torus.md>), [visualization](<https://devfeed.tech/tags/visualization.md>)

### AI overview

This tutorial presents a visualization of an assassin puzzle in which shots bounce around a square like billiards and guards must block possible paths to a target. It explains the d3-based visualization and the geometric functions used to trace bouncing rays and calculate guard positions.

### Source excerpt

Over at Math3ma, Tai-Danae Bradley shared the following puzzle, which she also featured in a fantastic (spoiler-free) YouTube video. If you're seeing this for the first time, watch the video first. Consider a square in the xy-plane, and let A (an "assassin") and T (a "target") be two arbitrary-but-fixed points within the square. Suppose that the square behaves like a billiard table, so that any ray (a.k.a "shot") from the assassin will bounce off the sides of the square, with the angle of incidence equaling the angle of reflection.