More from John Wiseman
Two projects at the intersection of geospatial data and AI. First, a semantic search engine for aerial imagery, fine-tuned on OpenStreetMap-tagged data. Second, WARP—a custom neural model that learns embeddings of aircraft flight trajectories, trained on roughly a million aircraft tracks. Given any flight path, WARP can instantly retrieve the most similar trajectories from history. It enables applications from OSINT and anomaly detection to safety analysis and flight planning. The same latent structure that made word2vec transformative for language now becomes available for aircraft behavior. Presented at Spec.LA on December 18, 2025. I'm going to quickly show two things tonight. The past few years I've been working mostly in geospatial, aviation, and AI, and that's what these are. One is geospatial semantic search and the other is a foundation model for aircraft. I believe they're both extremely valuable and useful. # Both projects are about embeddings. Embeddings are points inside a latent or conceptual space. Parts of that space that are conceptually similar are closer together. There are neural models that will generate an embedding of an image or text or other things. With the right model, an embedding of a photo of a golden retriever is close to the embedding of the text "golden retriever" and far from the embedding of an image of an aircraft boneyard. # I showed an early version of PIMINTO at Spec a long time ago. I've refined it a lot since then. It uses a model that's fine tuned on satellite imagery and text describing the imagery based on OpenStreetMap tags. I'm going to give a live demo of the new site, which is public. piminto.obliscence.com | Demo video # Next is WARP, which is a model I'm building to create embeddings of aircraft paths. Back to aircraft, big surprise. # I trained the model on about a million aircraft tracks, pretty much everything that flew in the western U.S. over the course of a week. # At this point training takes 18 hours on a 4090 GPU. # I've come up with a custom architecture for this task. # I kept feeding the single file into GPT o3 or GPT 5, either asking it to critique the code or describing specific problems I was running into. Sometimes I'd paste a CSV of the loss curve. It would give me detailed descriptions of what to do next, and I'd paste those into Cline with Sonnet 4.5 doing the actual coding. # How does it do? # I hoped that if I took a few thousand trajectories and clustered their embeddings I would see clear separation and similarities. But that didn't really happen. A few extreme examples looked good, like skydiving aircraft being outliers, but otherwise I couldn't really make sense of it. But then I read someone who said sometimes clustering just looks nonsensical even if the embeddings are good at capturing similarity. # So I wrote an interface to let me compare any of the million trajectories. I can select one trajectory and it will almost instantly show me the other most similar trajectories in the database. In this screenshot the blue is the query trajectory and the red is the most similar trajectory it could find. This one isn't too bad. The altitude and speed profile are very similar but not exactly the same. Promising. # This is the signature of touch and go practice. This is a good match. # These are two different skydiving aircraft. They climb up to altitude, everyone jumps out, then they race back to the field. # These are two different flights by the same aircraft. But what does it really look like? # This is pretty cool. This looks like two training flights, by the same aircraft but on different days. Each time following the same route and including kind of a loop and then some tight circles. # These are two different Thales Watchkeeper drones, flying on different days over Fort Bliss. As a reminder, I chose the track on the left and then the system searched the database in a fraction of a second and determined that the track on the right was most similar to it. # This starts to hint at some potential uses. Both of these helicopters are doing some sort of utility work in forest. Hauling something maybe. Again, the track on the left is the query track, and the one on the right is the best match. # These are two different aircraft on two different days, dropping sterile fruit flies on different parts of Los Angeles. There are many other aircraft flying these sorts of lawnmower patterns, for example doing LIDAR collection, but it determined the one on the right is the most similar. # A useful aircraft embedding model unlocks a lot of interesting and valuable use cases, similar to how word2vec and text embeddings unlocked a whole class of semantic search, clustering, retrieval, anomaly detection, and analogy-style reasoning over language—except now the same kind of latent structure becomes available for aircraft behavior, trajectories, and operational patterns. # # { img.style.cursor = 'pointer'; img.addEventListener('click', () => { lightboxImg.src = img.src; lightbox.classList.add('active'); }); }); function closeLightbox() { lightbox.classList.remove('active'); } document.addEventListener('keydown', (e) => { if (e.key === 'Escape') closeLightbox(); });
More in technology
Associate Professor Cathy Wu uses reinforcement learning to help map out improvements to transportation and other multifaceted systems.
After living with Apple’s 27.0 OSs since launch, I have some more annoyances to get off my chest. This time, it’s all about how tabs and menus have gotten worse. I’ve already ranted about the Liquid Glass material in general, but these two design changes in particular have really been grinding my gears. I’ll reiterate that Apple’s latest OSs look substantially nicer to me than the previous set… but that only makes these setbacks more glaring. Also, many of these issues aren’t nearly as bad in light mode — but I use dark mode exclusively on all platforms. Apple offers this appearance setting, so I think it’s fair to criticize them when it’s not holding up. First up, let’s talk tab bars. I think these looked awful in the original Liquid Glass redesign, and in 27.0 they look even worse. Below is an example of three tab bars from Safari in macOS. All of them are in dark mode. The top example is from macOS 26 with the “clear” Liquid Glass setting, the middle is macOS 27 with the default (mid-slider) version of Liquid Glass, and the bottom is macOS 27 with Liquid Glass at its most tinted. In each, the middle tab is selected (though I think the word “tab” is being quite generous to these globs). In macOS 26, there was practically no difference between the clear and tinted versions of tabs. Similarly, the clearest and default/middle tabs in macOS 27 are effectively the same. Because of this, I’m leaving out the redundant examples. Even though I still think it’s ugly, I vastly prefer the macOS 26 version of these three options. It offers the most contrast, and it makes more sense in dark mode: the background is darker and the foreground of the active tab is lighter. The middle example is what tabs look like in the default (mid-slider) version of Liquid Glass in macOS 27. There’s now only a very faint outline around the active tab, and practically no difference in background colours. To me, this is unreasonably subtle. The effect is even worse when there are a lot of tabs open. Lastly, there’s macOS 27 with the fully tinted Liquid Glass setting. It’s better, but it still looks less correct to me than the tab design from macOS 26. It’s difficult to put into words how much I loathe the look of this new tab bar design. I don’t mind the more “bubbly” look of Liquid Glass throughout the 27 OSs for the most part. It gives UI elements more dimension than in the 26 OSs. But it doesn’t work for tabs. Because the bubbly look is inside a trough, the active tab’s glass effect ends up looking like a blur on the top and bottom. This reduces contrast further and makes the active tab harder for me to pick out. Even in dark mode with full tint, I find the active tab less visually clear than in 26’s clear mode. Now, I’m sure there are at least a few people reading who don’t see what the fuss is about. If that’s you, I assure you that the difference is more stark when you’re not comparing things side by side. It’s not impossible for me to pick out the active tab, but I think it’s trickier than it needs to be! But, if you still don’t believe me, here’s a little experiment. Which of these do you think is most legible? The text/background colours in the above image are based on the foreground/background colours used in the tab bar instances above. First is clear in macOS 26, then the default from macOS 27, then fully tinted in macOS 27. I think they’re all pretty awful, but I prefer the macOS 26 clear version. Again, this is because I’m using dark mode. In dark mode, light text appears on a darker background. Similarly, active UI elements have a lighter background than their surrounding elements. I’m sure there are counter-examples, but this is how just about everything else works in Apple’s own apps! It should be noted that Safari uses the system default tab bar design. I also see this design in Apple’s Terminal app, in Pixelmator Pro, and elsewhere. I don’t use Xcode daily anymore, but you’ll also find them there — though in true Xcode fashion, they’re ever so slightly nonstandard and also don’t respect your tint setting. Below is a screenshot of Xcode using my current settings of dark mode with fully tinted Liquid Glass. Up next: menus. Below is an image showing four versions of the same menu in macOS. Top left is macOS 26 clear, top right is macOS 26 tinted, bottom left is macOS 27 default (mid-slider), and bottom right is macOS 27 fully tinted. It’s a similar story here. In macOS 26’s dark mode, I had no problem with system menus even when Liquid Glass was set to clear. In macOS 27, even in the fully tinted mode, the menus have much lower contrast. They also now lose all of Liquid Glass’s refractive effects when at their most tinted. I think this is less of an issue than the tab design changes, but it’s still a downgrade. Again, I’m certain many people don’t care about this. Some might wonder why I’m not turning on accessibility settings to help with these things, if they bother me so much. I’ve flirted with this (especially the “Increase Contrast” setting), but those settings have many knock-on effects. 1 But honestly, I don’t think accessibility settings should be required to have a reasonable amount of contrast in a design system. Maybe Apple disagrees, but I really hope more dark mode tweaks are coming. The “Increase Contrast” setting is under System Settings -> Accessibility -> Display -> Increase Contrast. Interestingly, you can use this setting along with the clearest version of Liquid Glass to almost get back to how things looked in macOS 26’s version of tinted. However, it adds contrast-y lines around many UI elements that I find extremely distracting. It also alters colours on some elements to, strangely, make them less contrast-y. It feels unevenly applied and poorly implemented in several apps. ↩
Trump wants to add a citizenship question and ban questions on race
I recently watched the talk by Scott Jenson titled "Are we really going to use the same Desktop UX forever?" https://www.youtube.com/watch?v=V7AfAcQwLW0&t=445s. He's a great presenter, really articulate and concise. The kind of speaker that you'd