• Week 19.26

    Week 19.26

    Brian was kind enough to think of me when he had an extra ticket to see Kraftwerk at their one-night-only local show on Friday. I was not even aware they were still alive, let alone touring. Turns out it’s just one co-founder left holding the project together, Ralf Hütter. After some drama with the tickets — for a moment it seemed like we might not get in — we were treated to an hour and a half of classic electronica.

    One effect of having a discography that spans five decades is that the music varies to an extreme degree. Their early material is rigid, with an almost classical approach to using synthesizers. Everything builds without resolving. This was electronic music before The Drop was invented. But Kraftwerk are necessarily more important than they are fun, which I mean as a compliment. Seeing where the structures and traditions originated helps you understand why what came after sounded so liberating. Their newer material has more swing, more layers and polyrhythms. I think Computer Love and the stuff from that era was my favorite of the night. As Brian said, it was a once-in-a-lifetime experience to see these OGs in action, and when I listened to Daft Punk’s Discovery on the way home I heard it differently.

    The week was also marked by a dentist appointment I’d been dreading for awhile. It was just to get a filling done, but I was told there’d be an injection and drilling involved. The visit was a rollercoaster: it started with an x-ray and the suggestion that the cavity might be in a difficult to reach location, and ended with a closer inspection (in which an injection and drilling were sadly involved) that found… no apparent cavity after all. The tooth has now been sealed with some material that will surely leak microplastics into my mouth, and we’ll monitor it over future x-rays to ensure there wasn’t really anything going on in there. Fingers crossed.

    In other sad news, Amazon Singapore has decided to sunset their Amazon Fresh grocery delivery service. It’s not my main source, but I appreciated their “free” (with Prime) next-day delivery and used it maybe every 4–6 weeks. Lately, they’ve been a primary source for sardines, pasta, and ice cream, if you wanted to know how balanced my diet is. The evil multinational corporation giveth and taketh away.

    I’ll still keep subscribing to Prime though, because it’s letting me do terribly wasteful things like see English language editions of Brutus magazine while in a Tokyo bookstore last week, decide that I don’t want to carry them around all day and get creased, and so order them online for delivery to my home a week later — for virtually the same price. High off the Snoopy Museum visit, I also ordered these two big, lovely Made-in-Japan mugs that will be my daily tea delivery vessels.

    Kim got me a copy of My Beautiful Dark Twisted Fantasy on vinyl for my birthday but it’s only just arrived. I have yet to play it, but the artifact is heavy, substantial, important. It’s no exaggeration to call it one of the best albums of all time, and I think it’s consistently raised my goosebumps for the last 15 years.

    Peishan and James also got me a couple of records, and one of them was a Record Store Day ‘preview’ of two tracks from some upcoming John Coltrane releases that were not on my radar. The Tiberi Tapes are a legendary collection of secretly recorded live sessions of Coltrane in the 1960s, made by saxophonist Frank Tiberi. The recordings were imperfect, but new digital technology has made them fit for release, and Impulse Records is set to unleash a bunch of them soon (it’s Coltrane’s centennial year).

    A few weeks ago, I released Orchids, Once. and several people independently told me that the procedurally generated music was good for having on in the background while they worked. That gave me the idea to make something designed to sit in a browser window on a second screen (or in the background) keeping you company throughout the work day with music and visuals.

    My first idea turned out to be too ambitious — way beyond my current abilities in terms of graphics and animation. I got a prototype working but it wasn’t worth going further. So I pivoted to a new idea yet again leveraging the orchid models I’d already made to get started quickly.

    Window Box is the result. It simulates looking out the window of an apartment, seeing a planter box of flowers set outside the windowsill. I’ve never actually seen one of these in real life; I think I first encountered them on Sesame Street as a kid and thought they were cool.

    You can currently choose to be in Singapore or Honolulu. There’s dynamic real-time weather and lighting pulled from the Open-Meteo API, to reflect current conditions in either location. There’s an incredibly beautiful (if I do say so myself) rain animation system, along with environmental sounds. I also came up with a neat blending technique to transform the photographic backgrounds to reflect time of day and weather.

    Instead of doing more procedurally generated music, I decided people would want real music, so there’s a radio tuner with a handful of curated stations. That includes Apple Music Radio just because I think more people should listen to their shows! There’s also a great Hawaiian station, KAPA-FM, which is a treat when you’re using the Honolulu location.

    And just for you readers of the regular blog, here’s a hidden feature: click the app title in the top left 20 times and it’ll unlock bird sounds to complete the scene.


    Media activity

    • We watched Season 2 of Beef on Netflix. I was primarily excited for the casting of Carey Mulligan, Cailee Spaeny, and Oscar Isaac, but wasn’t keen to see more of the same petty adversarial conflict from the first season. Well, be careful what you wish for — my chief complaint is that it has so little connection to the first season and the concept of beefing, that I think it should just have been a different show. This one raises the class warfare stakes tremendously, goes much darker, and then ends in a tonally unexpected way. Maybe the best Netflix Original in awhile.
    • I’ve been playing more Path of Mystery: Brush with Death, the new Japanese murder mystery adventure game on Switch that I mentioned back in January. It’s an above average game for the genre, and I’d readily recommend it. The chapters are structured and presented like television episodes, which makes it perfect for playing in a couple of short sessions. Each one opens and ends with (skippable) animated credits, and there’s a short “next time on…” video afterwards to give you a preview of the following episode. I haven’t seen this done before, and it adds to the enjoyment of the story that is both interesting and occasionally funny.
    • Speaking of episodic anime, I got back into Frieren to try and finish the first season now that a second season is out. Previous episodes were pretty easy to space out across large spans of time, but the final arc with the First Mage exams is surprisingly addictive and bingable. I watched the last 11 episodes in 24 hours. I’m not one for fantasy settings but Frieren is brilliant — especially how it explores the perspective that comes with a longer lifespan and outliving all your friends.

  • Window Box

    Window Box

    Your browser window with a view.


    Open up at windowbox.vercel.app

    Some apps demand your attention, but Window Box just sits in a corner, keeping you company.

    It simulates a flower planter box on a high-rise window sill, with a blurred city view behind it — the way your eyes naturally see when focusing on something close. The plants are procedurally generated, so no two are exactly alike. The weather is real. When it rains in Singapore, rain runs down the glass. When the sun sets in Honolulu, the light shifts warm and the city outside drops into shadow while the flowers stay lit from inside.

    It is designed to live in your browser across a long work day, maybe on a second screen — something to glance at between tasks, the way you might look out an actual window if you had a great view. Because most people like to work to a little music on the radio, a tuner with curated stations including Apple Music Radio and Monocle Radio is built in. For fuller immersion, turn up the audio generator for wind and rain sounds that match what’s happening on screen. It’s inadvertently a fantastic rainy mood machine.

    Two locations are available: Singapore and Honolulu. Each brings its own botanical palette and skyline. If you live in one of these cities, it functions as a virtual window. If you don’t, it’s a portal into a part of the world where it’s always warm.


  • Week 18.26

    Week 18.26

    We had a pretty good week in Tokyo and are now back with painful foot and leg muscles that haven’t been worked this hard in a while. There was one notable moment of weakness where a decision was made to take a taxi back to Ginza from Meguro, rather than deal with the evening crush in the train system. Surprisingly, it was only about S$30 — one more sign of prices equalizing between Singapore and Japan. You may have seen the same reports I have on the rising cost of living there, and how convenience store onigiri now starts around the ¥200 mark, nearly twice what it was a few years ago. But while the onigiri in Japan may soon cost nearly as much as the versions we get in Singapore 7-Elevens, the two are still incomparable in terms of quality.

    No surprises here, but alcohol continues to be significantly more affordable than in Singapore. I posted a picture on my Instagram of Buffalo Trace bourbon (750ml) going for about S$25 in Meidi-Ya, a nice supermarket. That’s about a third of the price you’ll find in Singapore, if you can even find Buffalo Trace at retail. I’m beginning to form an alcohol and lifestyle arbitrage theory that says if one earns in dollars AND drinks enough, it may make financial sense to live half of each year in Japan.

    Maybe one could sell an apartment in Singapore and fund two small apartments, one in Tokyo and the other in Thailand or Australia (depending on said value of initial apartment). Australia’s reverse seasons might make it possible to live in a perpetual fall/winter state, with an occasional summer when you get too depressed.

    Or when your skin gets too dry. I’m no good at moisturizing, so after just a week I’m beginning to feel my skin noticeably drier. However I’d take lotion any day over the stifling >80% humidity and gloominess that greeted us upon return. Apparently it rained most of the week we were gone; the kind of tropical heat that makes you feel sweaty in every crevice. “Why do we live here again?”, I asked Kim on the way home. Oh right, zero capital gains tax and responsible governance.

    It’s also been a week since I touched my MacBook so I may have broken the app development habit. I just have one tiny improvement I need to make to Crumbs now that I’ve used it to log my locations on this trip…


    Some things I remember doing:

    • I met Michael for lunch on Monday, and like a good friend he brought me to a Sapporo soup curry joint in Yotsuya. There’s always the risk of splashing and curry stains with soup curry, but I think he exaggerated the mess he made because I’ve seen people come into the office with far worse. I think we ended up talking for two hours, and we didn’t even get around to John Ternus and rumors about upcoming products.
    • Kim came out to meet me later and since we were already in the area, we decided to walk down to see the iconic steps featured in Your Name (2016). I cannot believe it’s been 10 years, by the way.
    • At the National Film Archive of Japan, which I might be visiting for the third time, we saw a small showing of Japanese film poster art. It was excellent, and just ¥250 including the permanent exhibition. I instantly recognized two of the earlier posters: Philip Glass’s score for Koyaanisqatsi (1984) was the inspiration for some of the music in my DataDeck project, and I just watched Cleo from 5 to 7 (1962) last week on MUBI.
    • We bought advance tickets to the Ron Mueck show at Mori Art Museum, his first showing in Japan in over 15 years iirc, which was a refreshingly tight collection of 11 sculptures. Some of his work is massive, like In Bed, and the level of detail is so astounding you can easily spend over an hour just looking at them.
    • I say refreshingly because there’s a tendency for exhibitions to pack so much in that your mind just goes numb. That’s what tends to happen when I visit the National Art Center in Roppongi. Still, I love the idea of a building with massive exhibition halls that are regularly rented out by “amateur” art and photography groups showing off their members’ works. I think having such a venue fertilizes the hobbyist landscape and reinforces the value of art. Singapore would do well to have more such places and encourage a forward-looking, arts-attuned society instead of, say, building yet another temple to our origin story.
    • The Tokyo Photographic Art Museum in Meguro is still one of the best. I’ve missed it the past few times we were in town, but there’s nothing like looking at great photos after too many paintings. The free exhibits at Fujifilm Square in Roppongi are also consistently excellent, even as their product lineup becomes more ossified and oversold.
    • We also visited the Snoopy Museum Tokyo in Machida which I will freely admit was a highlight for me. It’s the only official one outside of the Charles M. Schulz Museum in Santa Rosa, CA, and a very well-designed facility — exactly the right size, with something for all ages. When I told Michael we were going, he remarked that it was interesting how relevant and popular Peanuts remains, compared to the likes of Garfield (no shade). I said it was because of how much storytelling latitude it has built in, in no small part thanks to Snoopy’s flights of fancy. Whereas Garfield is reducible to a few things, like a love of lasagna and a hatred of Mondays. To which he observed how it’s weird Garfield hates Mondays at all, because he’s a cat without a job. He just says he hates them to be relatable!
    • Did you know that it was only after 20 years of the Peanuts comic strip that Snoopy stopped walking on all fours like a normal dog and started becoming the odd character he is? I learnt that off a little fact card at the museum, where Schulz is quoted as saying “It was one of the best things I ever did.”
    • I’m more of a cold shower and cold anything kinda guy, and my heat tolerance is very poor. Like some of the hotels we’ve stayed at before, the one we booked this time had a sento, a hot public bath, and after being urged to by Kim I thought I might as well try it. It was fine. Going by how it appears in film, I thought maybe people stayed in the water for quite awhile, but I was ready to get out after 10 minutes, and it seemed the same for other people. Funnily, one guy said goodbye to his wife as she went to the women’s side, and then spent 15 minutes washing himself in the stalls and never even got into the water. Maybe he was another anti-hot tub guy who just got tired of saying no and pretended to do it. Like those salarymen who get fired but don’t tell their families and sit in parks all day with their briefcases.
    • Speaking of the hotel, I’d initially booked us into the same hotel I stayed at back in 2012 when I went with a couple of colleagues from Sweden and the US. The day before our trip, we looked at recent photos online and decided it was probably not sufficiently well maintained, and booked a nicer place nearby. Free cancellations on Hotels.com are a fantastic feature. The new hotel was great, and although our corner room was billed as having 30 sqm of space — an almost suspicious amount for central Tokyo — a lot of it was used for a hallway area. Nevertheless, it was useful for keeping our suitcases out of the way and for the drying of umbrellas. I would definitely stay there again.
    • We had a nice walk through Yoyogi park and Kim used one of the famous transparent toilets. Despite having already conquered public nudity with the sento, I did not experience them myself (there was someone waiting and I didn’t need to go).
    • We were on our way to a coffee shop in Ginza one morning when we spied a line of people waiting to get into a tendon restaurant when it was due to open at 11am. Following the Singaporean/Lemming instinct of letting social signals decide what to eat, we abandoned our plan and joined the crowd. It was very good, foreigner friendly, and great value. ¥1,600 for a large bowl with conger eel, two shrimp, a squid/clam mix, half-cooked egg, shishito pepper, and seaweed.
    • Will told me about the Creative Museum Tokyo in Kyobashi, so we stopped by for the Sorayama retrospective that’s currently on. You may know him through his work designing the first Sony AIBO, and the cover art for Aerosmith’s Just Push Play. His work isn’t for everyone, but I loved how this guy just loved drawing naked female robots, did it all his life to the point of mastery, and now brands like Dior are just dying to collaborate with him. No selling out on his part, the dude just loves his gynoids.
    • At the above venue, I noticed the same phenomenon I saw many times over the week: a lot of people employed to do mindless, redundant work. Like standing at an obvious door to point you in a very obvious direction, or posted near a small bump telling you to mind your step. I hope that this is just what extra labor is deployed to do during downtimes, and that they actually have more to do most of the time, but I’m skeptical. Still, AI can’t take your job if your job wasn’t necessary in the first place!
    • Some time was spent revisiting shops I tend to drop by every few years, like the Nintendo Store in Shibuya, or Village Vanguard in Shimokitazawa, or Tsutaya books at Daikanyama T-Site. The latter two are always fun because there’s so much stuff I would buy if I could teleport them home immediately. If I ever buy that Japanese apartment someday, I fear it might be filled to the edges with magazines and useless tchotchkes.

  • Week 17.26

    Week 17.26

    By the time this goes live, I should be in Tokyo. We picked this week to go because Kim thought that there would be a lull at work. That did not turn out to be true, nor is it particularly good timing by any measure: it will be Japan’s Golden Week holidays, a notoriously busy and crowded domestic tourism season, plus there was just a massive 7.7 magnitude earthquake off the northeast coast this week. I believe the Japanglish phrase would be Ohwellganai.

    24 hours until take off and I still haven’t packed a single item. That’s either a sign I’m becoming a seasoned traveler (not likely) or that I’m taking this trip more casually than usual. Maybe it’s the fact that the weather is pretty mild and won’t require a different wardrobe than what I usually wear. I hope Tokyo is ready for my basic-ass black t-shirt and baggy jeans look. Compared to last year’s month-long stay, stopping by for a week this time feels really breezy.

    I’ll often obsess over what camera to bring on a trip, but this time the decision is much easier. For one thing my top pick, the Ricoh GR III, has decided to completely lock up, physically. All its critical buttons are stuck and gummed up either with dust or crystallized substances — not for the first time, but worse than ever. This doesn’t happen to any other line of camera I’ve owned. The GRs are brilliant little things but their build quality and reliability has sadly been a weak spot.

    Secondly, the cameras in the iPhone 17 series are the best they’ve been in years. I’m okay just shooting with the native app in HEIC and editing photos with its “next-generation Photographic Styles”. Or I could shoot ProRAW and edit them in Halide Mk3 too, but it’s mostly extra work and not essential like it was a couple of years ago when Apple’s Smart HDR lost the plot.

    This week was also a birthday week so there was altogether too much eating and that’s never a great idea before a holiday where you’re already destined to put on a few kilos. This week has involved too many curry puffs, pizzas, roast lamb, pastas, and patés. I didn’t buy myself anything more than a 10th anniversary copy of To Pimp A Butterfly on vinyl. I decided that since I’m managing to get a lot done with my M1 MacBook Air, upgrading to an M5 isn’t something that would really excite me at all. Making the most of this five-year-old machine is more satisfying, so I could conceivably wait for the M6 model.

    This week I once again repurposed existing parts to make more new things. Last week’s work on the orchids was too intricate to use only once (pun unintended). So I ported the math to my procedural artwork generator to create a new style called Orchids Forever, where I can stage them with different lighting conditions and make wallpapers.

    Because Cien said she enjoyed having the music from Orchids, Once. in the background as she worked, I started to think about making a thing that was designed to sit in the background of a workday. The first idea that came to mind was sadly too complex for me to pull off (for now), so I started on another that places a few orchids in a flower box outside a window, looking out over the Singapore skyline. The idea is that it lets people anywhere pretend they’re in Singapore, looking out over a scene that changes with the time of day and actual weather.

    The day after I made it, my ex-colleague Tobi over in Germany said he misses Singapore, so I sent this over to help. Rather than reuse the procedurally generated music from Orchids, Once., which would be completely stripping that work for parts, I integrated a free Apple Music Radio player, which makes me happy because more people should hear their live stations.

    While reflecting on all this, I’ve started to think there are three camps of people making things with AI. The first, like me, wants to design experiences and outsource the coding. The second wants to code and outsource the design. The third just wants to see things made and don’t care much about either.

    This is an enthusiast market, and people are even buying curated Markdown prompt files that promise to enforce design and/or development “best practices,” trying to compensate for not knowing what good looks like. But I’m still skeptical that the general public will want to generate their own custom apps. Most people might create a widget or two to solve a personal problem, but that’s it.

    The real unlock for wider consumer vibe coding will be raising the quality of AI-generated UX design. Nobody scrutinizes generated code, but bad design can be felt instantly. Better design defaults might increase the numbers in camps two and three: the people who just want a thing made and don’t particularly have an idea how it should look or work, but would still notice if it was ugly or confusing.

    Claude Design, released this week, might be a trojan horse for exactly this. Although seemingly positioned as the anti-Claude Code, with a focus on front-end design and visual prototyping rather than coding (making it a tool for the first camp), it’s still going to make design more accessible for all makers, even the code-oriented ones. It’s worth noting Figma’s stock fell 7% after the announcement.

    The secondary effect — already playing out in layoffs I keep hearing about — is a devaluation of designers for common production tasks. This drum is being banged by every dimwit on LinkedIn so you know it’s well underway. Most designers will have needed to start burrowing deeper into their organizations yesterday, into strategy and human-centered decision making roles. Service and business designers should have had a head start, but this is a game of musical chairs and someone’s taking out half the chairs.


    • I watched the Sphere (1998) movie with my book club and while I expected it to be possibly racist or sexist, I didn’t think it would be as offensive as it was. It’s godawful. I didn’t hesitate to give it 1 star on Letterboxd. There must be an interesting story behind how Barry Levinson came to direct an undersea horror film based on a sci-fi hit novel by Michael Crichton, starring Dustin Hoffman and Sharon Stone among others, and have it come out so unwatchable and incoherent. The effects, both practical and computer generated, are laughable. And this was just a year before The Matrix.
    • We finished Company Retreat, the new hidden camera show from the makers of Jury Duty. The premise is that a normal person is chosen to temp at a company that’s going on their annual team-building retreat, except everyone else is an actor. They put him through absurd situations that test his character, and like in the first show, the mark turns out to be an unbelievably good human being. The scale of the con is much larger this time, and the behind the scenes content is as interesting as the main story (if not more so). I think they went just a little too far with some of the characters this time, to the point where you think he must have known this wasn’t normal.
    • I’m currently reading another goddamned Japanese cozy novel, except this one seems to be worth the paper it’s printed on. Letters from the Ginza Shihodo Stationery Shop seemed like an appropriate choice given that district is where we’ll be staying. Like some of these other trash tomes, it’s a bunch of intersecting short stories centered around a titular shop. This time, the stories are actually kinda interesting and have emotional cores that work — stories of everyday people trying to write letters to resolve personal issues. Rob asked if it was appropriate for his 12-year-old (that’s about the reading grade for these books), and I said yes, as long as you can explain the concept of a hostess club to him.
    • I’ve also begun reading Oliver Burkeman’s Four Thousand Weeks, a book that appeared on my radar awhile back but whose apparent premise — life is only 4,000 weeks long, so what are you going to do about it? — scared me off. Then Ted mentioned it when we met up a couple of weeks ago and thought that I’d find its concepts familiar, and in line with how I’m already living. I took that as a tremendous compliment and permission to get started. I read the intro and first chapter on the plane, and they deal with the idea that you should embrace that life has time limits, and accept you’ll never be able to do everything. Not only is that okay, it’s how all people lived before our clock-watching, productivity-obsessed era. I couldn’t help but wonder if I was taking away the wrong conclusions, though, because when I think about how short life is, I think of how Whose Line Is It Anyway? is played. You may recall it’s the show “where everything is made up and the points don’t matter”.
    • It’s Sunday night in Tokyo and I’m in bed rewatching Lost In Translation (2003) on local TV.

  • Week 16.26

    Week 16.26

    We attended my aunt’s funeral on Tuesday. My complaints about the Mandai Crematorium mostly still stand, but they’ve at least moved the ugly signs printed on office paper away from the viewing windows so you can see the casket on its way to the… furnace?

    As I said last week, she was 93 and the family was mostly prepared for this. But there were tears, and some meaningful words were said, and despite my irritation with the undignified air of the Crematorium’s processes, I was struck at a mostly subconscious level with a sense of loss. Because a couple of days later I was thinking about orchids.

    Since I was a child, I’ve known orchids to be a part of my family’s story. My paternal grandparents were enthusiastic orchid breeders as well as co-founders of the Mandai Orchid Garden, where they helped raise the profile of Singapore’s orchids at home and abroad. I was surprised to learn while writing this that orchids are still an instrument of Singaporean diplomacy. Although I never had any interest in them myself, my late grandmother is defined in my memory by her fondness of them, and several other relatives (including the aunt who just passed) had hybrids named after them, created by my grandfather.

    As mentioned last week, I have been experimenting with generative art and it entered my mind that I could try to simulate orchids — creating infinitely unique flowers and plants in code. Now, this is nothing new. Humans have been trying to reproduce natural processes like botany with algorithms almost as long as we’ve had computers. But the more I thought about bringing millions of digital orchids to life, the more I thought about where they would go after. To create a beginning is to guarantee an end. The result is a digital artwork I’ve called Orchids, Once. and it’s a sort of meditation on impermanence.

    You can summon a new orchid into existence, but know that you’ll be the only one who ever sees it. When you leave or reload the page, it’ll be gone. Does the fact that there are potentially billions more make it less special? Or that it cost nothing? Or that it’s not technically “alive”? In any case, I hope people will cherish the brief amount of time they spend with each flower. I didn’t design a “retry” or “new orchid” button because the responsibility of ending a session should rest with the viewer.

    Orchids, Once. also stems from the generative music experience I gained while making DataDeck, and features an ambient soundtrack that’s created in real time as the orchids turn and sway in the digital wind, as unique and unrepeatable as the flowers themselves.

    I had to work with both Gemini and Claude to get this thing in shape. I didn’t save enough screenshots of the development process, but here are two from the prototyping phase that AI would have you believe were good enough to ship, and that look like orchids.

    Many hours of refinement later and I had models that could pass for plants, but had a nasty habit of growing backwards into themselves, or occasionally mutating into unholy jagged messes. I thought they were finally getting somewhere, but then we took a trip to a plant nursery nearby for a little field research. I spent some time looking at dozens of real orchids and taking pictures, and came home with lots of changes to make. I have learnt more about orchid anatomy this week than I had from decades of being in an orchid-breeding family.

    I also can’t help but reflect on the past few weeks of making things in code with AI — this only started on March 1, but it feels like months ago. Orchids, Once. is my 10th “app” (but the 9th released).

    The first few toyed with pulling data from online sources: Collagen pulled album art from iTunes, Urban Jungles pulled weather data from Open-Meteo, SkySpotter pulled air traffic data from OpenSky.

    Then the next few pulled data from online sources and tried to make something new out of them: Library Supercollider mashed up texts from Project Gutenberg, CommonVerse let you play with words from a dictionary, DataDeck generated music from public Singapore data feeds, and Crumbs let you build your own “maps” with location data.

    The most recent ones? They’ve been about generating their own assets out of nothing, without drawing on external data: the GenArt wallpaper/image maker I’m still working on, daily 3D mazes to escape from, and these orchids. These shifts weren’t conscious or planned, but it’s curious to look back and notice it.

    I’ll stop at 10 for a while, and maybe pick things up again after I get back from my holiday.


    One bit of housekeeping: I found the time to revisit my first app, Collagen, and make some improvements I’ve been wanting to see for a while. You can now use images in different aspect ratios, not just squares. And each image can be zoomed and cropped really easily with a new editing overlay. You no longer lose images if you change the grid size, text cells can be edited, and the UI has been given a mild glow up. I feel like I’ve learnt a lot since then, and this v2.0 brings things up to date.


    Media activity

    My book club finally finished reading Michael Crichton’s Sphere and I gave it three stars on Goodreads. In the end, my vague recollections from reading it as a teenager mostly held, although a slightly racist and sexist worldview permeates the text, and I’m sensitive to how much that would not fly today. I’m eager to see how the film adaptation handles that when we watch it together next week, as it was made a decade later.

    The second season of The Pitt ended after 15 episodes and damn I’m going to miss it. This is a show that alerts me to how ignorant I am of certain (most?) social dynamics and other signs people tend to give off.

    Speaking of the series in general so I hope this doesn’t spoil anything for anyone, but suicidal ideation is a recurring theme that I didn’t take very seriously — which is the whole point of the show’s handling of it.

    I go on Threads after every week’s episode to read people’s takes and interpretations, and I’m always learning something. This week some people got mad that men don’t take this suicide stuff seriously, or can’t see it at all and can’t talk to their friends, and I guess I’m a little guilty of that. I didn’t know the character on the show was thaaaat serious, and thought “eh, they’ll walk it off. It’s no big deal, everyone imagines it sometimes.” Apparently not.

    Unintentional death theme continuing: I watched a Japanese film on MUBI: Super Happy Forever (2024). It’s about a widower who goes back to the seaside town where he and his wife met on holiday. It jumps back and forth in time and does a few other things that should yield more emotional impact than it does. I wrote on Letterboxd: I think the ingredients of a proper 4-star movie, the kind you rewatch every five years, are here but not properly assembled. Nairu Yamamoto is so lovely, so magnetic in all of her scenes that she redeems her supremely annoying partner like the best of people do. Shame.


  • Orchids, Once.

    Orchids, Once.

    A meditation on impermanence.


    View the digital artwork at https://orchidsonce.xyz

    Almost every orchid you’ve ever seen was intentionally bred — a slow accumulation of crossings, selections, and genetic accidents that produced something new. This is the same process, compressed into a digital instant. Every visit generates a unique specimen: structure, colors, and proportions assembled from code the way a real orchid is assembled from DNA. No two will ever be alike.

    As it turns in the light, you’ll hear music shaped by the flower’s appearance — the soundtrack itself is a one-time miracle, as unique as the visuals on your screen. Its presence completes the meditation.

    When you close the window, the orchid dies. There is no save state, no gallery, no record of what you saw. Each plant lives only as long as you stay. If you weren’t there, it wouldn’t exist at all.

    There is always another one waiting to grow — but not that one. Never again that one.


    Disclaimer: I made Orchids, Once. with the help of Gemini and Claude LLMs, and take no responsibility for any allergies or other harms.

    Related blog post: Week 16.26


  • a maze, a maze, a maze…

    a maze, a maze, a maze…

    A new maze every day, for everyone.


    Play a maze, a maze, a maze… at amaze3.app

    Every day, a new maze appears. Everyone in the world gets the same one.

    There’s something cozy and comforting about knowing that right now, somewhere, another person is navigating the same corridors, hitting the same dead ends, and having the same moment of doubt about whether they just walked in a complete circle. Some days the maze is generous and you are out in twenty seconds. Other days it will make you work for it, and you will feel the exit before you see it.

    Each maze has a target time based on the shortest possible path. Finish close to it and you’ll earn an S-rank celebration and a shareable stats message. Go slower and you’ll land somewhere between a laudable A and a sad D — either way, there is always the group chat to prove you showed up and tried.

    Three modes: Standard comes with breadcrumbs showing where you have been; Hard Mode removes them and trusts you to hold the map entirely in your head; Chill Mode turns the timer off for people who just want to wander. Themes range from an outdoor garden maze to a retro game dungeon, so you can get lost in a way that feels right for you.

    A new one tomorrow. And the day after. A maze, a maze, a maze.


    Disclaimer: I made a maze, a maze, a maze… with the help of Google’s Gemini 3 Pro LLM. No responsibility taken for wrong turns or damaged self-esteem.

    Related blog post: Week 15.26


  • Week 15.26

    Week 15.26

    I’m looking through my camera roll to remember what happened this week and it’s mostly a bunch of “artworks” I’ve been making. Wait, let me step back: I’ve had an interest in procedurally generated graphics (GenArt) for awhile, and it peaked with the NFT boom of 2021–22, where I spent a relatively obscene amount of money minting and collecting artworks I really liked (not the monkeys). I’m mostly drawn to the idea of mathematically rigid routines producing organic beauty — the contrasts in that, and the unpredictability of what you get when you roll the RNG dice.

    So after my recent experiments in making apps, I wondered if I could get AI to write me code that would generate images based on concepts I described. The answer is, of course, yes! It’s important to note this isn’t prompting for images (like when you use Midjourney or DALL-E), it’s prompting for the math behind making images. And once you’ve created the rules by which it draws different art styles, you can create a nearly infinite number of unique artworks by dialing different variables up and down.

    One example is a “style” I made called Labyrinth, which produces actual, solvable mazes. Depending on the variables you adjust, you can make mazes ranging from tiny to massive, with just one solution, or many. If you asked an image generation AI to draw a maze, it would likely lack the coherence of a real maze, because of the way it operates — focusing on the superficial appearance and not the integrity of its paths. But an AI model can make the math to draw a maze.

    I start most of these by thinking up an artistic production approach, say “take sheets of colored cardboard or acrylic, and punch holes of varying shapes into them, then layer them on top of each other so the holes line up (or not), and randomly spray contrast-colored paint on some of them”. Then I describe the possible variations and variables I want to control to the AI, such as the density of shapes, the thickness of the borders, the ratio between angular and organic lines, and we iterate after seeing some of the results. Just think of all the methods and ideas you might want to play with, and how this lets any old idiot model them on their computers!

    The meta project is that I’ve made a modular app that handles all these different styles for me, whether they require a 2D canvas or WebGL. The app provides a common UI layer that all “styles” can plug into, which allows me to control them. Now that it’s done, I can just focus on experimenting and having fun making new artworks. I daresay a few of these are executed as well as any of those I spent money on.

    I’ll probably release it as a wallpaper generator once I have enough styles built in, if anyone’s interested. But mostly I love having this as a background project that I can dip into, on and off. It allows me to take on other app ideas as momentary “side quests”.

    While making Labyrinth, I showed a maze to Cong, who said “You should do a puzzle maker”. To which I said, “Nah.” And then a minute later… “Although, a daily maze game. Hmm.” It made sense that I could save time by taking CommonVerse’s daily random generation mechanic and combining it with Labyrinth’s logic to make a daily maze challenge. But would it even be fun to trace a 2D maze with your finger and try to solve it? No… so what if it was a 3D maze you had to escape?

    The first prototype took a couple of hours, and I’ve been polishing it for the last few days. I think it’s coming along nicely. I’ll put it out soon, once I balance the difficulty and get more feedback from testing.

    The development of a maze, a maze, a maze… was hampered by a rare bar crawl with Howard and Jussi on Thursday night that gave me a massive hangover lasting into Friday afternoon. When I got home, I was too plastered to care that my vinyl copy of J Dilla’s Donuts had arrived from Amazon US protected by nothing more than a flimsy paper envelope. By the clear light of day I was amazed that they would even do such a thing. The discs are intact, but the sleeve has a bent corner. If I’d ordered from Amazon Japan, I would bet a major internal organ that it would come wrapped in four layers of stiff cardboard, bubble wrap, and a handwritten apology for their carelessness.

    Did I mention we’re going to Japan again? It’ll be a short vacation, in a couple of weeks’ time. Not much on the agenda, just checking in on the state of curry rice and egg sandwiches. Maybe see some nice art. Take some photos.

    Which brings me to the latest betas of Halide MkIII, which I’m very much looking forward to using on the trip. They’ve been progressing the app nicely, and it might be enabling the Holy Grail of iPhone photography workflows for me. Ironically it involves using Halide not as a camera app, but just as a photo editor. You can shoot compact (lossy, JPEG-XL compressed) ProRAW photos up to 48mp with the default camera app, then edit them in Halide to have the same look as their Process Zero photos! What this means: you get all the benefits of computational photography at time of capture, including noise reduction and night mode, but you’re also free to dial it back and get natural, “real camera” photos in post if the scene calls for it.

    As much as I like these side quests, I think making my own photo editor would be biting off entirely too much to chew, so I’m still rooting for these guys to crack it.

    While writing this post, I got the news that an elderly aunt passed away at the age of 93. She had been in reduced health since the Covid years, but by all accounts she went very peacefully and I guess you can’t ask for much more than that after a long life. The extended family’s Chinese New Year routines fell apart in recent years after she pulled back from organizing them, so it was fitting that some of us got to reconnect at her wake on Sunday evening.

    See you next week.