Tom MacWright

2025@macwright.com

Placemark Sunday

I got an hour or two of focus to garden Placemark, and got this done:

  • I fixed a pretty annoying bug in which 'transient' updates were added to undo history. In practice, this means stuff like drawing a feature: as you're drawing a rectangle, you click, drag, and resize the rectangle. The rectangle does exist in the application during that time, but those in-between states you don't want to include in undo history. You want one history state before the rectangle was added and one after it was added. I fixed this, which was quick. Thanks to Luke Butler of Matrado for the assist!
  • The 'lasso' selection tool is now powered by Mapbox GL instead of Deck.gl. I switched to Deck.gl for some parts of Placemark as an optimization and mostly regretted it: it's a different rendering paradigm and has been pretty unstable.
  • It's now on React 19. This was not very fun: you upgrade one thing and you have to upgrade a bunch of other stuff. And React 19 hasn't really done anything for me recently: I like that refs are less special, but other than that most of the new stuff in React 19 is about server rendering, and that's irrelevant to Placemark. Anyway, this meant a lot of upgrades. It's more "modern." This also triggered an update to geojson-rewind and polyline.
  • I implemented support for GeoSPARQL-style WKT in betterknown and now Placemark has that version, so you can import that kind of data if you want to.

I've been thinking about Placemark in the following ways, priority-wise:

  1. Simplifying it to make things more maintainable.
  2. Maybe introducing new 'basic' features like sharing maps again, but architecting them in a way that lets it still operate at near-zero cost to me.
  3. Eventually thinking about modularity. But this would require a lot of work and concentration, and is dangerously like an idea that sounds good in theory but is not good in practice.

My previous Placemark updates: switching to Vite, cleanup.