Lie back in the grass and watch planes fly over. That’s it, that’s the idea.
Every other flight tracker gives you God’s view — cold and omnipotent, a screen full of blips moving across a flat map from thirty thousand feet above the action. Detached from the thrilling hum of jet engines and the sizzle of rain. SkySpotter puts you at ground level, either laying with your head down, or seated comfortably for a bit of plane-spotting. Watching real aircraft crossing real weather, in a 3D world designed at human scale.
It pulls live ADS-B data and renders it against procedurally generated airport runways anchored to real-world coordinates, in weather matching current conditions out there — fog, storms, clearing skies, stars coming out after midnight. Five vantage points are available: Changi Beach (Singapore), the TWA Hotel (New York), Myrtle Avenue (London), Jonanjima Seaside Park (Tokyo), and Al Garhoud Park (Dubai).
Climb to bird’s eye height if you want the lay of the land. But the view worth staying for is flat on your back, watching the underside of something enormous drift silently overhead while the sound catches up.
Disclaimer: I made SkySpotter with the help of Google’s Gemini 3/3.1 Pro LLM and take no responsibility for any damage or missed connections.
Last week I got started vibe coding with Gemini 3 Pro and was happy enough with the collage-making app I made that I deployed it to Netlify and posted a separate writeup for it here on this site. I also decided to rename it to Collagen, as in Collage-Generator, thanks to a suggestion from Michael.
For my second project, I wanted to go much further and test the LLM’s ability to code up something more complex, with real-time 3D modeling and rendering. But what to make? One shower later* and I had a concept I was excited to try out: An app called Urban Jungle that would be a weather visualizer, depicting a world where humans have disappeared and our cities have been reclaimed by nature.
I could see it clearly in my head, and had the idea (in retrospect, a brilliant one that you should absolutely steal) that vibe coding projects should start just like real ones — with concept art. Taking the time to visualize what you want is the first test of whether it deserves to be built. It aligns the team behind a single vision, with fewer chances for miscommunication and wasted time.
I prompted Nano Banana 2 to generate a screenshot of Urban Jungle as if it were a finished product, describing it exactly how I wanted. The result was astoundingly close to what I’d imagined. With this visual in hand, I was able to brief the coding AI that much faster. Sure enough, the first prototype it spat out nailed the isometric view angle, UI, and core functionality.
That it could achieve a pseudo-3D effect with CSS and standard web technologies, writing the whole thing in a minute, was already blowing my mind. But like any difficult client, I thought “why not ask for more and see how far I can push my luck?”
The next version (v1.0) was a total rewrite of the graphics engine, now in full 3D using three.js. Each city is procedurally generated to be unique, with different forest/jungle topographies depending on the region. The increased detail meant I could add decaying buildings, pylons, and roads. When you tap on the trees, flocks of birds scatter. When it gets cold, the vegetation dies, and below 0ºC the ground becomes covered in ice and the birds disappear. I thought… ‘this is great! I think we’re done!’
But I should have known projects like this are never done. Next came v2.0 which rewrote the architecture to allow it to act like a proper weather app. You can now simulate the weather for any city over the next 24 hours, scrubbing through time with a slider. As you do, the lighting and climate effects change dynamically. It generates live sound effects for wind, rain, birds, and thunder. You can pan and zoom around the model with your fingers. There are now drifting clouds and proper lightning that strikes the earth during storms.
Comparing the concept art with the ‘finished’ product, and I’d say I got as close as one could hope with a web app contained in a single HTML file. Here’s a standalone post about the app, which brings me to another advantage of vibe coding with an LLM: these things write their own “App Store”-like product copy!
Edit: I couldn’t leave it alone and after writing the above, made so many changes I had to implement a version history link on the front page. Now in v3.1, there’s an animated starfield in the night sky, and a freakin’ VR mode for Apple Vision Pro! It uses WebXR to place you inside a 3D environment with the city model floating in front of you. And after a couple of people suggested I add iconic landmarks like the Eiffel Tower, I decided that we could have a few as Easter eggs in major cities. Customizing every city to get full landmarks coverage of the world would be too much, even for me. But err check back next week, you never know.
It strikes me that generative AI vibe coding is modern day Lego. It lets kids and adults alike build silly (or serious) things straight from their imaginations. It’s extremely fun and educational to express yourself in this way, if you just look at it as an advanced toy. The difference is that no one is using Lego to build a working car, or furniture, or anything that can be exchanged for money. But LLMs are already used in the building of most commercial software, and the proportion of their contributions is only going to grow.
But as a hobbyist with little coding experience, I’m afraid about how desensitizing this new ability can be, and how it will dull our ability to wait for good things. It will heighten our time preference, in other words. While it was downright exhilarating to see my idea come to life in minutes instead of weeks, or never, I know it has already rewired my brain. I expect this now. The next app I make will be judged more harshly — they all will, now that I know how “easy” this is. Patience is going to be impossible, and that’s bad for everyone.
*But what was that asterisk up there with the shower thought? It occurred to me later that maybe I came up with Urban Jungle because of The Wall which I read last week. To reiterate, it’s a survival story that takes place after an Event seemingly decimates all of humanity save for our female protagonist. She lives in a lodge in the Austrian Alps, getting by on limited matches, ammo, and medications. She’s constantly battered by storms and weather conditions, fighting a slow, losing battle against nature. That imagery must have stuck in my head.
After that recent aggressive reading spell, I slowed down and decided to chill with one of those cozy Japanese books that are still so popular — you know the ones, set in convenience stores, or bookstores, or cafes, or the backseats of taxis, where absolutely nothing important happens apart from a mild mental breakdown brought on by social anxiety and ennui, aka living in Japanese society. I’ve semi-enjoyed a few of these before, most notably Michiko Aoyama’s What You Are Looking for Is in the Library.
But even those lowered expectations could not have prepared me for the absolute waste of paper/pixels that is Atsuhiro Yoshida’s Goodnight, Tokyo (translated by Haydn Trowell and published by Europa Editions). I mention all involved parties because the blame for this should be shared. Multiple people started work on this, knew what they had, and decided to keep going. I can only guess the motivating factor was profit and cashing in on this cozy Japanese book trend. I hope it was worth it.
I am now reading Olga Tokarczuk’s Drive Your Plow Over the Bones of the Dead (translated by Antonia Lloyd-Jones), and it is soooo much more deserving of your time. Then again, she’s a Nobel laureate — perhaps not a fair fight. But that’s the thing about books versus things like Michelin restaurants: the good ones cost about the same.
I’ll leave you with some non-AI photos I took on a walk yesterday as a palate cleanser.
We have always known, somewhere beneath the noise, that the cities we build are temporary. That the concrete will eventually crack. That something green and patient is waiting.
Urban Jungles shows you the present — your present — transposed onto a world that has already moved on without us. The rain falling on your city right now is the same rain soaking the ruins in the app. The cold front rolling in tonight will strip the canopy bare, just as it strips the leaves from whatever remains.
It is a diorama of grief and relief in equal measure. A miniature planet after humanity, held in your hands.
Every city is searchable. Every hour of the next day is walkable. Step forward and watch the light change, the temperature drop, the landscape respond. Hear the sounds of wind and rain passing through empty streets. Orbit the ruins in full 3D — pan, tilt, inspect the overgrowth up close. The shadows track the actual sun, the stars come out at night. Tap the trees and birds scatter.
Spin it slowly. Let it rain.
Disclaimer: I made Urban Jungles with the help of Google’s Gemini 3/3.1 Pro LLM and take no responsibility whatsoever for any damage you do with it.
P.S. If you use it on an Apple Vision Pro, a button for VR mode will appear on the toolbar. It is exactly what you think it is.
A simple tool for making collages, specifically with album cover art.
Most collage tools are either bloated with unnecessary social features or too restrictive to be useful. Collagen is a single-purpose utility designed to solve a specific friction: the tedious process of manually sourcing high-resolution album art, aligning it in a grid, and then realizing you want to swap the top-left for the bottom-right. It turns a multi-step design chore into a fluid, drag-and-drop experiment.
Features
Integrated Sourcing: Queries the iTunes database for official, high-resolution artwork (600×600) so you don’t have to hunt for covers or deal with low-res thumbnails.
Tactile Reordering: Drag and drop tiles to swap positions instantly. The layout logic handles the movement so you can focus on the visual flow.
Flexible Dimensions: Define your grid up to 10×10. The preview and export scale dynamically to match your rows and columns.
Hybrid Content:
Search: Instant API pulls for mainstream releases.
Upload: Support for local files (obscure imports, demos, or personal photos).
Text Tiles: Add context or labels with custom text tiles. Features automatic contrast (white/black) and a choice between a clean sans-serif or a classic serif typeface.
Borders: Toggle between borderless, white, or black frames. The logic includes outer edge padding for a symmetrical, finished look.
PWA Architecture: Built to be “Added to Home Screen.” It caches assets locally on your iPhone for faster subsequent loads and works as a standalone app.
Export: One-click generation of a high-resolution stitched PNG. It uses a dedicated image-proxy pipeline to ensure every tile renders correctly without the “blank square” errors common in browser-based canvas exports.
Disclaimer: I made Collagen with the help of Google’s Gemini 3/3.1 Pro LLM and take no responsibility whatsoever for any damage you do with it.
The featured image above is the result of having Geese’s Au Pays du Cocaine in my head all day. The line about a sailor in a big green boat and a big green coat made me think of Puffer Jacket Snoopy, and of course I had to realize the joke.
We got the sad news that Deliveroo is shutting down operations in Singapore. This comes on the back of an acquisition by DoorDash who must have run the numbers and decided that a 7% share of the local food delivery market after a decade wasn’t worth investing further in. We use it all the time and prefer it over Grab and Foodpanda — it is by far the better app and their subscription service is better value for money, but we’ve seen this movie before. It’s like how Uber lost out to Grab; the market doesn’t always choose efficiently.
I will probably switch to Foodpanda because Grab as a brand has the same icky halo as, say, Facebook or Spotify.
Google released Nano Banana 2, the new version of their hit image generation model. This one is cheaper to run and kind of almost as good as Nano Banana Pro, so they’re making it the default for everyone. Paid users can still access the Pro model, but it’s hidden behind some menus. It’s a regression in quality, a slight improvement in speed, and most importantly, a boost to Google’s bottom line. Since I only do silly things with these tools, it doesn’t bother me tremendously, but imagine the same happening at an enterprise level for more important work.
Screen recording of an AI panorama
One of the new things Nano Banana 2 can do is generate very wide panoramic images, so I asked it to render some “panoramas taken with an iPhone” in various locations. I then upscaled those and opened them in my Apple Vision Pro. They don’t have the photorealistic quality of images from Nano Banana Pro, and the resolution leaves a lot to be desired, but they’re still immersive and impressive when viewed in this way. You can see where this might go.
There’s been a lot of talk lately about how AI vibe coding could upend the SaaS market, if not replacing dependable enterprise tools with individually created ones, then at least giving IT departments a billion more unapproved apps to worry about. A viral essay from last week posited that AI coding could kill DoorDash, though I’d say they did a good job of that themselves out here. The other oft-discussed idea is that AI could replace the App Store, and everyone will just make their own apps instead of buying them from developers. Michael has been blogging about vibe-coding his own to-do list app based on Clear. I’ve been wanting to try this myself, making more little tools of my own to solve niche problems, but the opportunities have been slow to materialize.
This week the right idea presented itself and I made a web app using Gemini: an album cover collage maker that searches for the artwork or lets you upload your own. I’ve looked online for something like this before but only found a few that were quite lacking. Making one to my own specifications took maybe five minutes of prompting and testing. Then I thought it would be nice if you could drag the images to different locations. Gemini added that feature like it was nothing. I’m pretty hyped that even someone like me with zero current coding knowledge could will this into existence. If you’d like to try it, I’ve deployed it at usecollagen.netlify.app.
Otherwise it was a sort of decompression week where I just read a lot, listened to the records I bought/ordered last week, and was regrettably glued to my phone watching day trading losses (Chekhov’s gun has fired!) and social media feeds.
It took a couple weeks of dawdling but I finished John Le Carré’s Call for the Dead, his first novel featuring the spy George Smiley. I may continue reading the series, seeing as his son Nick Harkaway (whose work I really enjoy) has decided to continue his father’s legacy and written one more already: Karla’s Choice. This one was a little dated and not particularly thrilling, but a fine introduction and scene setter.
It was immediately followed by Adrian Tchaikovsky’s The Expert System’s Champion, sequel to The Expert System’s Brother which I read at the end of last year. I recommend both as examples of sci-fi stories set so far in the future that humanity has looped back around to the beginning. It reminds me of the “middle chapter” in Cloud Atlas, if you remember that.
Then I read Hu Anyan’s I Deliver Parcels in Beijing, a modern memoir that reportedly did well in China when it came out in 2022. It details the author’s dual career as a writer and on-and-off gig economy worker, which is made more interesting by also being a portrait of what it’s like to live in the lower brackets of Chinese society today.
I also had time to tackle Rob’s recommendation of Marlen Haushofer’s The Wall, which was written in the 1960s but doesn’t feel that way, unlike Le Carré’s spy novels. He called it the best book he read last year, so I could hardly say no. It starts off like an intriguing sci-fi novel: a woman visiting friends in the Austrian alps wakes up one morning in the log cabin to discover she’s alone, and there’s an invisible wall separating her from the outside world. Things then focus on survival and what it means to live and be human in solitude, and in nature. Which, given that I’ll be home alone next week while Kim is away again for work, means I’m already in the appropriate headspace.
It was a rainy Chinese New Year week, which is a rare occurrence if our collective memory serves correctly. The holiday usually occurs sometime in late January, and my impression is that it’s always scorching when we’re out visiting relatives. The gloominess added to a feeling of intense tiredness, and I was glad to see the end of the week. If social batteries were like lithium-ion ones, I’d say mine is aged and doesn’t hold a charge like it used to (more on this later).
While my parents were visiting with my in-laws, the topic of where our dads got their haircuts came up, and I used Gemini’s Nano Banana model to visualize a bunch of alternative styles for them to consider. It was pretty funny to see our old men in dye jobs and top knots, with loud matching outfits like floral jackets. The real reason for this was of course to demonstrate how realistic and easy these deepfakes are in 2026, and hopefully they’ll be a little more wary of scams.
There are fewer kids and unmarried young adults to give angpows (red gift envelopes with cash) out to these days, but it still adds up. To try and make up the deficit, I decided to make a return to day trading (really just gambling) directly on my phone while out and about between appointments. I’m glad to report that I not only avoided losing all our money but managed to hit my goal by the weekend!
If you were wondering how the showdown between Gemini and Claude has been going since last week, I think Claude is still way ahead in terms of writing and editing. Not just producing output, but being able to understand what makes a piece work and replicate it. Gemini seems to take away the wrong conclusions when analyzing text.
I saw Rob a couple more times for beers and a visit to the National Gallery with his kids. We were joined by Aqila and her daughter, which was really nice. The whole outing tanked my social battery again, in part due to the swarms of Chinese tourists in town this week — the gallery was fully packed and some sections of the French Impressionists exhibition were painfully overcrowded despite allocated entry timings.
On my way home from that, I stopped by the record shops in the basement of The Adelphi and broke my 4-week no-vinyl streak. I picked up The Beatles’ Abbey Road and R.E.M.’s New Adventures in Hi-Fi, telling myself it was fine since these are some of my favorite albums. I should have known that once you open the door just a crack, there’s no shutting it. The next day, I ordered Mac Miller’s Circles and Lorde’s Melodrama off Amazon. Kanye’s My Beautiful Dark Twisted Fantasy is waiting in my cart. These are some of my favorite albums, okay!?
We decided that it was time to start on The Pitt, given that seven episodes are out. We binged them immediately and now it’s going to be hard switching to a weekly schedule. It’s more of what we liked about the first season, but I do wonder how they’re going to sustain this over the next few seasons. How many eventful single days is it realistic to have, and how much variety can you get within that constraint? These hospital shows are all built atop the same GSWs, industrial accidents, cancers, and mysterious illnesses, but the relationships and characters usually have time to develop over a season. The Pitt’s real-time concept doesn’t allow for that — the progression happens off-screen between seasons, and the audience puts the pieces together in the first few episodes. You can withhold a few characters’ reappearances until midway through (as in season 2), but that structure is too transparent to keep using every year.
I finished playing the first Paranormasight on the Switch, and it’s probably the only game with a branching narrative — as in, the kind where you are literally shown the story map — that I’ve actually enjoyed. These Japanese story-based games with the multiple endings that you have to keep replaying and retrying events to complete are usually a pain in the ass, but this one works because it embraces the meta-game angle completely. You’re an outsider, outside of time and space, and your jumping between the events is what unlocks progress. Characters in one “scene” might be stuck and paused until you motivate some others elsewhere to do something, which changes the circumstances in the first instance.
I read George Saunders’ Lincoln in the Bardo, an “experimental novel”, on someone’s recommendation and let me just say I am not passing on this recommendation to you. It didn’t help that I know and care very little about Abraham Lincoln, or that aspect of American history, but it’s not really about him anyway. It’s about his son’s ghost being lost in the graveyard amongst hundreds of other ghosts, and through their archaically written little vignettes you get a sense of what life was like in that era and also how the author is a massive wanker. The New York Times ranked it the 18th-best book of the 21st century. Agree to disagree!
One of my irrational fears that hasn’t gone away with growing older is that of going to the dentist. I’ve put it off over and over, and was pretty sure I’d make it last year but didn’t. I’ve done my best to handle things at home, even flossing daily which they always say you should do but I’m convinced no one actually does. This week I finally made an appointment to go, and it wasn’t as bad as I feared. They did find a cavity that needs patching up, but the appointment for that is only in a couple of months.
One thing that felt off was a recommendation that I get a certain procedure done — not only because I’d like to avoid pain wherever possible, but because it was prescribed before they’d even looked in my mouth. I’d only just said that it was my first visit in a while, and they said ‘okay you should get this done’.
Because it’s 2026, I uploaded my x-rays to Gemini 3 Pro for a second opinion. It analyzed the scans confidently (but of course) and told me the same things, but in even greater detail. It did not think the procedure was necessary, and gave me clarifying questions to ask the dentist next time. When it comes to a nervous person like me, it provided a better experience than a human dentist could because it was available to answer my many more follow-up questions, at all hours. This longer “consultation” made me feel better, although I’m well aware that taking medical advice from a machine that just says things isn’t the smartest move. But I know people do and will because it’s really easy, and so once again I’m saying this is really dangerous territory.
Why am I using Gemini so much, and what happened to Claude? Google decided to play dirty, I guess. They’re offering three months of their Pro AI plan (essentially Google One with 2TB of storage + access to Gemini Pro, Nano Banana Pro, and Veo) at a 90% discount. That’s about S$2.80 a month. These models are all so incredibly close in raw performance, that for someone like me who’s not using them for coding, the main differences are down to tone, character, and perhaps ethical alignment. I’m already sold on Claude for text-based work, but I thought I should spend some time getting a feel for how Gemini differs. Especially since it’s going to be at the heart of Apple’s AI features at some point this year.
Friend and former colleague Rob is back in town for Chinese New Year. I thought I’d last seen him maybe two or three years ago, but it’s actually somehow been closer to four. The quickening pace of time’s slipping through the fingers at this age is alarming. The last time he was around, I’d just printed off some stickers of my Misery Men drawings and given him one. I had just gone back to work after my brief sabbatical. We were still wearing masks indoors (as seen in the linked post’s featured photo). Is there a German word for how relationships can pause and park themselves outside of regular time, so that four years feels like so much less?
A few of us met up for craft beers and Thai food on Sunday, with the reminiscing and catching up going past midnight. Here’s a privacy-preserving photo-turned-courtroom sketch made with Gemini’s help.
Media activity
I finished watching all 48 episodes of The Apothecary Diaries anime series on Netflix. It’s about an unusually educated girl, raised in a red light district, who gets kidnapped and sold to the imperial palace as an indentured maid where she gets to flex her skill with poisons and medicines. It’s set in a fictional country resembling China in the Tang Dynasty. Nothing about this should appeal to me, but it was one of the more enjoyable low-stakes shows I’ve seen recently.
I still haven’t finished reading Sleeping Dogs. But I did finish playing The Hokkaido Serial Murder Case a few weeks ago but forgot to say so. As a faithful remake of a retro game, it can’t be blamed for some of the dated gameplay. The art could definitely be better though — it would be a fine game for $20, but unfortunately is priced at $44.99.
It’s been a year since we were in Tokyo and I bought the Japanese supernatural murder mystery game Paranormasight, largely because it was set in the Ryogoku/Sumida district where our apartment was. In last week’s Nintendo Direct, a sequel was announced and so I decided it was finally time to get started on the original. It’s turned out to be quite good, with a dynamic visual presentation that goes beyond the usual VN style of talking figures in front of different backgrounds. The gameplay is constantly breaking the fourth wall as well: one challenge where you die after hearing a cursed sound is solved by going into settings and turning the volume down.
While feeling stressed out about the dentist, I played Jusant on the PS5. It’s a beautiful, dialogue-free game where you slowly climb a massive mountain and put together what happened to the people who used to live on it. It was fairly quick to finish and now I’m curious about Cairn, another game about scaling a mountain, albeit more realistic about the physical difficulties involved. Jusant’s nameless hero is practically superhuman and his arms are way too skinny for the insane amount of climbing he has to do.
A quick follow-up on one of last week’s topics: it turns out that some posts on Moltbook may have been faked because there were security holes allowing people to get on there and post directly (instead of being a bot-only place as promised). Doesn’t change the main point that future agents will collaborate not just on one computer, but sync up across wide networks with effects most of us can’t fathom. Look at the crowd that gathered to discuss Clawd a couple of days ago, to see how much excitement there is for this box that says Pandora on it.
I read a fantastic sci-fi short story that sort of involves AI: Julia, by Fernando Borretti. If you also enjoy fiction that drops you into a context and makes you swim, and then shows you strange and beautiful ideas as you break above the surface, you’ll love this. Like how China Miéville uses ornate language in The Book of Elsewhere to suggest Keanu Reeves’s… I mean the protagonist’s immortal, mystical otherness, Borretti uses a dense, intellectually dominating host of references here to illustrate the POV of an artificial mind at the end of humanity’s time. I haven’t stopped thinking about it.
What will we do when all the jobs are gone? A young entrepreneur in our neighborhood has started a home-based business selling smashburgers, and we bought some for dinner midweek. They were good, and I’m slightly afraid of what this proximity will do to my waistline. For those unaware, this was a bit of a trend last year and local media outlets like ChannelNewsAsia ran stories (example) about how such businesses were springing up as a result of low employment opportunities and rising rents.
Retreating further into the virtual world is another option. A bunch of new experiences became available on the Apple Vision Pro recently, and I caught up with some of them. The cutest is an immersive documentary on Apple TV called Top Dogs (two 15-min episodes), which looks at the annual Cruft’s dog show in Birmingham, UK. You get really up close to some of these beautiful animals, and the urge I felt to reach out and pet them was extremely strong. It wouldn’t be the same seeing this on TV. Here you get a sense of their size and presence, see them in incredible detail — everything but smell them. Apparently there are 25,000 dogs at the convention center each year, but I imagine these are all shampooed and much more pleasant than your average wet dog.
There’s also Retrocade, a game on Apple Arcade that uh… simulates an arcade. The game is playable on other devices, but on Vision Pro you get life-sized arcade cabinets standing in front of you, playing licensed retro titles like Space Invaders and Bubble Bobble. The only thing that breaks the illusion is of course that you can’t reach out to grab the sticks and mash the buttons. Instead, you have to use a connected game controller.
Speaking of emulating old hardware, I played and finished a game on Switch (also available on PC) called The Operator. It’s one of those where the entire UI is a computer’s desktop and you have to chat, look into files, and do hackery stuff to experience the story. I think this can be filed along with the other murder mystery games I’ve played lately. It’s fairly short at under four hours, almost completely linear, and not something you’d play twice. Wait for a sale, I think.
You know who else is a hacker? The lead character in Apple TV’s Tehran, a show that came out in 2020 and has since been renewed for a fourth season. We watched Episode 1 back when it came out, liked it enough, but for some reason completely forgot to go back until this year. It’s been topping the charts lately, maybe because of the recent civil unrest in Iran. Having just finished Season 1, I can say it‘s a really good espionage thriller, and we’re keen to keep going.
Oh and check this out. Someone has managed to license Isaac Asimov’s Foundation series and made a free-to-play (i.e. shitty) mobile game: Foundation: Galactic Frontier. It even has an Apple TV logo appear on startup?! And the next day, I saw this insane animated ad for it pop up on Instagram and couldn’t believe my eyes — I took a screenshot to prove it. In all fairness the actual game isn’t anything like this, it’s just a heinous misrepresentation that probably has Asimov spinning in his grave.