Tag: Singapore

  • Week 22.26

    Week 22.26

    I finished reading The Refusal of Work and immediately afterwards saw that Pope Leo had published an encyclical (first time encountering this word) on AI that included some of the anti-work sentiments I’d just read about. I found the following in this tweet:

    Among these ideologies, I consider particularly insidious the one that suggests that every person must earn or justify his or her own worth, to the point of attributing greater value to those who are more efficient or effective. From this perspective, persons end up being reduced to a means of achieving results, a resource to be used and exploited, and are no longer recognized as a proper end in themselves who should never be instrumentalized. The value of persons, however, does not depend on what they achieve or produce. There are rights that apply to everyone simply by virtue of being human, and no human power can legitimately deny or arbitrarily limit them.

    I suppose it makes sense for the Catholic Church to attack a core tenet of protestant belief. But I find it impossible these days to disagree with the idea that working hard and making money isn’t the thing that defines us as human beings. By that logic, we can let AI have the jobs — work justifies their existence, but not ours. What we need is meaning outside of work (and maybe religion).

    I’m now in the middle of David Pogue’s new encyclopedic record of Apple: The First 50 Years, still during the Steve Jobs era. I think it’s a good way to get ready for this year’s WWDC, which will be Tim Cook’s last as CEO before handing it over to John Ternus in the fall. The one thing I’ve taken away so far is that many of the conventions we now enjoy were slapped together by borderline burnt-out teams during hellish crunch periods. Apple’s best years were built on sleep deprivation, divorces, and denigration from their leader. He, of course, paid dearly too. Pogue’s book is the first I’ve seen to draw a faint line between the turnaround year of 1997, when Jobs himself was stressed to his limits and suffered kidney stones, and the eventual pancreatic cancer that would kill him.

    But there’s a great part where Apple’s board tries to convince Jobs to stay on as permanent CEO during his iCEO (interim CEO) period, offering him a million Apple shares and six million more as options. Jobs maintained during this period that he had no wish to stay on, because he was just beginning to enjoy time with his family and running Pixar, saying, “This is not about money, I have more money than I’ve ever wanted in my life.” It’s a bit of a tragedy that he eventually changed his mind and gave so much of the rest of his life to Apple.

    One of the people I used to listen to on my iPod was Sonny Rollins, who passed away this week at the age of 95 (NYT gift article). I think the first time I really took notice of his music was with the recording of his 9/11 concert, which I probably got from eMusic at the time. It amazed me then how he played with such strength at the age of nearly 80, so it’s no surprise he lived that long and only put the saxophone down a few years ago. I’ve been putting his music on all week.

    Side note: I just discovered eMusic is still around?? I discovered a lot of great music in my college days through their subscription plan, where I think I got like 40 tracks to download as MP3s each month. It was like having a budget to buy only two CDs, so you had to choose wisely. Those iPod days were great, and we cherished the ability to carry our entire music collections around. Now we “carry” nearly all recorded music around and don’t appreciate it as much.

    I’m still holding out on paying for “real” AI model access and making do with free DeepSeek for coding. It really works! I added a new Custom mode to Window Box that lets you pop in any YouTube video URL to use as a background scene. So you’re no longer limited to the three mostly static backdrops I made; thousands of live camera streams are fair game. The alignment and perspective may not match exactly, but hey, you get to see moving people and scenery. Here’s one in Venice, and one of Tokyo Station (above), if you need examples to try out.

    Generating code isn’t the only thing you can do for free. I popped by an IKEA for lunch on a weekday and stumbled onto what must be a hack that every retiree knows: you can hang out at the air-conditioned cafeteria for ages and the drinks cost nothing. The place was packed with seniors. When I tried to pay the 50-cent asking price of my coffee (not pictured), I was told that it’s free for members. What’s crazier is that the cups are refillable. So I ended up sitting there reading for an hour instead of going to a Starbucks like I’d planned. Between two mediocre ultra dark-roasted coffees that taste like ashtrays, I’d pick the one that doesn’t cost $5.

    Speaking of food prices, I’ve noticed something alarming recently. The country is running out of sardines in extra virgin olive oil. Leading regional brand, Ayam, only has sardines in tomato sauce — their premium varieties are out of stock everywhere. I’ve checked this across online and physical supermarkets and it’s the same story. There are a few cans of King Oscar still out there, but not many. Shelves are actually empty! NTUC FairPrice has John West brand brisling in EVOO but I can’t recommend them on account of their mushiness. I suppose it’s down to the rising cost of ingredients or shipping difficulties due to war. Hopefully temporary, but I’ve started a stockpile just in case.

  • Week 21.26

    Week 21.26

    Someone suggested that maybe I’ve got ADHD because of how I tend to (over)do things in big phases and then move on to something else. Case in point, this week I focused on reading, and somehow got through about six and a half books. It was Speaker for the Dead that unclogged the system, it was so engrossing that I didn’t feel the usual distractions: the urge to scroll a feed, or switch to a TV show, or check the chat apps. The ability to focus on long-form writing is like a muscle that loses its strength really fast if you’re not constantly training it.

    Here are this week’s books.

    This last book is a fairly academic sort of essay + research project on how modern life is unhealthily tilted towards work — has been colonized by it, even. How work dominates our worldviews, is seen as a source of virtue, and supposedly gives life meaning. It references some incredible antiwork bangers from Bertrand Russell and others, and made a good case way back in 2015 for how we as a (presumably Marxist-leaning) society could make life better for everyone if we just stopped centering work and thought about what else we could do. And that was before generative AI.

    Viewed through the lens of today’s technologies, it’s hard not to see the chance that AI offers for us to rethink society: we could sustain current economic outputs while letting everyone spend less time earning, giving more people the freedom to pursue other things. It’s a Charlie Brown football that’s been offered and yanked away by capitalism many times before, but we can still hope. You may think you have a life today, he writes, but aren’t you really spending that time recovering from work? Are you really able to do the things you want, or have you already been limited to the options that fit neatly into evenings and weekends?

    I plugged this into Claude and it pointed out that I’ve been on sabbatical for months and made a dozen apps, which might be the echoes of work ringing through my bones, a ritual I can’t unremember. I disagree. Work may have been the first to put the tools in my hands, but what I do with them now is self-expression, possible because work isn’t at the center of my thoughts and time.

    It was with this in mind that I attended a talk on Thursday organized by my friend QQ, featuring my former boss, Olof, and a guy named Phil who heads up an innovation office in the government.

    The event’s topic was “Human-Centered AI” — broad enough to go in many directions. Olof gave a preview of the book he’s working on, which argues that play is the future of work: something humans do naturally and joyfully, and therefore a genuine creative advantage over AI. But he remained firmly focused on work as an indispensable part of life, which made Phil’s contribution useful as a counterweight — he suggested to the audience that AI could help them in creative pursuits outside of work.

    I ran into a lot of people that I knew at the event. Many were ex-colleagues from the last couple of companies I was at. It’s times like these that Singapore makes you feel how small (or perhaps how tightly knit) its communities are. Quite a few of them have gone on to work with each other elsewhere, and a significant number have now landed in roles at the Government Technology Agency of Singapore (GovTech). As if to underline the point, one of the people I met at the post-event drinks was someone that YJ told me — just three days prior! — that he wanted me to meet. He was right; I enjoyed our chat and there might be an opportunity to do some fun stuff in AI together.


    If you thought that all that reading meant less vibe coding, you’d be partly right. The bigger constraint was self-imposed: I’m currently not paying for any AI subscriptions, and have made it my mission to see how much I can do with free models. It’s like completing Doom with just the basic pistol, or Jason Bourne beating a guy to death with a book (I tell myself). Any idiot can ship an app with Claude Opus — but can they do it with DeepSeek V4 Flash?!?

    (I’ll probably last another week before caving and resubscribing.)

    Using only free access to Qwen 3.6 Plus, I managed to update Window Box with a slew of upgrades: transition animations between locations, better caching of assets for performance, accurate daylight timings, realistic sunlight movements from dawn to dusk (correctly oriented to the camera angles in each city!), and better handling of wind effects and sounds.

    I also updated a maze, a maze, a maze to address a request I’ve gotten several times: the ability to see your path and the calculated optimal route after solving the puzzle.

    During this time, Google released their new Gemini Flash 3.5 model and made some outrageous claims, such as how it rivals their own 3.1 Pro model in coding ability. After putting it through its paces and wasting quite a bit of time, I can say it’s currently nowhere as smart or reliable (at least when working in chat).

    I wanted to add a page to this site containing a curated “bookshelf” of the best books I’ve read recently. I first made the page using a basic WordPress template, just a gallery of book covers that linked to Goodreads, but found it depressingly old-fashioned. Then I tried to use Gemini Flash 3.5 and DeepSeek V4 Flash to build a modern web app, with a stack of 3D books you could pull out to inspect, and ended up losing an entire afternoon’s work due to hallucinations and corruption.

    The next day, I restarted the project from scratch and got something I was happy with. Only to test it with Cien, who gave me the feedback I knew in my heart but didn’t want to admit — all this faffing around with a fake 3D bookshelf wasn’t any better than simply seeing a grid of book covers. It was actually more annoying. So I redesigned it again, and you can see the results through the Bookshelf link in the site’s navigation.

    Or at bookshelf.sangsara.net.

    And because I didn’t want to wade into code or ask an AI agent each time I need to update the list of books, I built in a visual tool to generate the very code it needs! I’ve named this project Shelf Expression, and will open-source the code on GitHub once it’s sufficiently kink-free. Other people should then be able to just point their AI agents at it and repurpose this to add bookshelves to their own sites.

    It’s becoming hard to remain satisfied with traditional, restrictive CMS systems like WordPress.com when you can vibe code custom pages like this, but I’ll stick with them for now on the basis of boring = stable. I’ve got too much history here to risk a migration at this point, but the day will come, so this really is an existential risk for many companies unless they update their services.

  • Week 20.26

    Week 20.26

    • On Tuesday and Wednesday I acted as a facilitator for an AI vibe coding class that YJ teaches. It’s been a minute since I’ve been in that sort of workshop environment helping participants through activities, but it was fun and I enjoyed meeting the rest of his team. I was happy to join for several reasons: I thought I might learn something new, I was curious to see how “real people” engage with these tools, and he said I could come in a t-shirt and jeans (this is my real non-negotiable).
    • Incredibly, Jose works in the same building (I did not know this) and spotted me through the closing doors of an elevator. So we met up for breakfast the next day and he told me about how he’s been using Zo Computer — a new-ish AI tool that I think struggles to define its value proposition to normies beyond “personal cloud computer”. For the most part, it’s doing what you can do with your own computer, an AI agent, and a web host. I signed up and have been playing around but it still feels like a bunch of features duct-taped together in search of a problem.
    • Coincidentally, the team behind it was in town for a series of AI conferences happening this week. I watched a recording of one of the Zo team’s presentations at one event, and basically, instead of subscribing to a bunch of services like Linktree or Squarespace or Buffer for personal or business needs, you can use Zo to vibe code your own versions which will run on their servers… or sorry, your computer in the cloud. I’ll admit the automation story is useful: paid users can keep services running continuously, so you can script triggers and schedule operations. It’s kinda sorta like having your own OpenClaw setup, they say. I wish I had a need for this, but like I said to someone, I actually like doing some stuff myself and don’t want to automate everything away.
    • While tuning into the livestream of Day 2 of the AI Engineer Singapore conference, I heard a talk by the designer Josh Newton that articulated things I’ve been upset about for the past couple of months. About how AI enables creative and curious people to make great things, but also impatient and lazy people to make soulless things at scale (not his exact words). We need more craft, more intent, more muscle for individual expression so we can have nicer things. The design community is very fond of saying ‘design matters now more than ever’ at moments of existential crisis, but for once I think it’s actually a critical imperative rather than a defensive posture. I’m tired of so many “builders” building for the sake of it. I want to see a piece of the creators in everything that gets pushed out.

    Aside: I’ve been talking to a couple of people about the need for more apps to be created under a “benevolent benefactor” model, i.e. delightful, useful, deeply personal software created by people with no profit incentive, no dreams of a big exit, and no need to surveil users or blast them with ads. Just made for the love of the game, and maybe to give back to society. Michael’s Listless and YJ’s JustNow are two examples. The newly revived Friendster might be another. I think AI can get more of this out into the world. I don’t want to hear about monetization — how boring! How déclassé!

    • My Gemini subscription was ending, and so I got pulled back in for one last job. I thought I would simply update Window Box with a new Tokyo location, but that wound up bringing on a bunch of significant changes. Snow, for one, which I’d intentionally avoided before by choosing Singapore and Hawaii as initial locations. I solved the aesthetic problem of dead plants by introducing the Japanese camellia, which blooms in winter, and the nandina (Heavenly Bamboo) which goes from green to red tones in the cold. But once I added snow and seasons, I started revising the way cloud cover and precipitation were determined, and ended up tuning the environmental sounds, and the animations of rain, leaves blowing in the wind…
    Window Box — Tokyo with a light dusting of snow
    • After seeing how the basic GPT-mini model in Zo Computer managed to code me a simple web app, I started to rethink what free models can do today. So after my Gemini subscription lapsed, I tried adding a transition animation when switching between cities in Window Box, and was absolutely stunned that Gemini Flash (the ‘dumb’ model you can use for free) managed to help me get it done. It certainly wasn’t one shot or perfect, but wow. Very soon we’ll be locally generating (streaming?) live app code on our mobile devices.
    • On Friday night, I met up with Jose (again) and Reg to attend a production of 8 short food-related plays at Wild Rice, chiefly to support our friend Munz who is one of the performers. It’s the culmination of a year-long theatrical incubator program she’s been in, and we came away very proud of her, impressed with all the actors, and some of the writers.
    • It became a bit of a slog near the end, but I’ve finally finished Donkey Kong Bananza on the Switch 2. For a game that’s partly about the power of music, I found the soundtrack pretty mediocre, and for a game that’s partly about a great singer, the vocals in the songs are sadly weak and buried in the mix. It’s not one I think I’ll ever revisit.
    • My book club is reading Speaker for the Dead, the second book in Orson Scott Card’s Ender series (as in, Ender’s Game). I’ve long heard that this book is like the Dune and Foundation sequels: not worth reading because they spin off into weird territory and lack the tight purpose that made the first books great. I’ve finished it and can say that while it does go in a very different direction, it’s undoubtedly worth reading. You don’t even need to remember very much from Ender’s Game, scanning a quick synopsis online will suffice. I’ve been very sleep deprived all week, and even then (!) easily stayed up wide awake past 2 AM in order to finish it.
    • I had to make this stupid House of the Dead image after I had the idea in the shower and couldn’t shake it. In the past, that would mean way too much time in Photoshop for not that great a payoff. Now it’s just a quick prompt to Nano Banana 2.
  • 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: A 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.
  • 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 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.

  • Week 13.26

    Week 13.26

    I finished my sixth app: DataDeck. It simulates a fictional hardware music player called the DataDeck SG-01, or more accurately, a music generator. It reads live, open data feeds from the Singapore government’s data.gov.sg portal and translates them into unique musical compositions.

    My first prototype ingested the tourism stats for International Visitor Arrivals to Singapore since 2008, and when I first experienced the silence of the Covid years, with the beat gradually building back up again after 2022, I knew I was on to something. Data sonification is a cool term for nerds, but hearing the stories stored in the numbers is something anyone can understand and appreciate.

    At about ten days of development time, it’s the biggest project I’ve delivered so far with the help of AI — there’s no saying how long it would have taken me to do on my own. A million years? Instead, in just 10 days: parsers for 10 different datasets, 10 varied musical styles, and 10 switchable themes.

    The inspiration for its interface was the kind of hardware devices my dad had in the 70s and 80s: calculators, microcomputers, and tape decks from companies like Braun, Sharp, Sony, and Texas Instruments. A sort of Rams-ian, Bauhaus-ish modernist school of industrial design. The different color schemes you can choose from evoke specific brands or devices, like Apple’s Snow White-era or the original Nintendo Game Boy (DMG-01) and the Roland TR-808. I especially enjoyed working within the constraints of an imagined hardware UI, so when you switch to a dataset mapped to Singapore’s physical geography, the drum pad buttons get remapped to move a reticle around the map. It makes it feel more real, imo.

    The idea of playing with procedurally generated music using software-synthesized Web Audio was probably seeded years ago when I collected the 0xmusic series of art NFTs, which generated endless musical sequences from code on the Ethereum blockchain. I dare say that DataDeck is more advanced, and with better sounding musical output than those. Plus I’m making it free, and you don’t have to risk social judgement by going anywhere near crypto.

    I’m especially proud of the app’s design and musical qualities. There are a hundred little details in this thing I could mention that were cool to implement, but users don’t have to know or care about. Although it’s an app made for myself by myself, I’m still inordinately satisfied with and impressed by it. I’ve helped deliver a few apps in my career (some of them even won awards), but DataDeck already feels like one of my favorites.

    I think that’s because designing in the real-world is all about the navigation of compromises — technical debt, financial limitations, organizational will, and a lack of time all get in the way of polishing features you know could be great, or fixing annoying bugs that other stakeholders don’t seem to mind. Personal projects are not like that, and acceleration with AI makes them even less so. I made this thing how I wanted, and was able to tweak the mix or rebuild a cassette’s music logic from the ground up twice a day if I wasn’t happy with it.

    I’ve also been thinking about how narrow the term “vibe coding” is. On one hand, one-shotting an app by asking Claude to “build me a kitchen timer” is vibe coding. But using AI to create a complex tool where humans design the screens, sweat the UX, and look after the details is also kinda vibe coding. I talked recently about how the distinction between designing and developing will fade, and making stuff is all that will matter, and so it stands to reason that eventually coding with AI will just be called coding.

    I spent Friday afternoon with Jussi meeting up with two separate friends, both also middle-aged men, who are similarly interested in this evolution of design/development work, and who are working on their own projects with Claude Code, OpenAI Codex, and other tools. We’re all at different levels of familiarity and sophistication, but it was good to meet for a little co-working + Show & Tell time at cafes on a weekday. I think there’s value in forming a little “late boomers’ coding club” for fellow initiates.

    In any case, I’m hella tired, guys. I started on my next app idea but immediately got hit by fatigue on Saturday afternoon and needed a nap. Switching gears from audio generation to working on more visually-oriented functions was too much context switching to do over the weekend. Think I’ll finish reading a couple of books first before getting back to it.

    I know it’s been app-this and app-that around here for the last month and so maybe some readers (or a future me who’s been thrown in ethics jail for AI use) will appreciate hearing about other things. Let’s zoom all the way out then, into outer space.

    The film adaptation of Project Hail Mary is getting such great reviews and most people in my book club have already seen it. Unfortunately, I have to wait because Kim has finally started reading it, about three years after I told her to. Hopefully she’ll finish before the local IMAX run ends, but nothing in this life is guaranteed.

    There’s just something about stories of people in space, either lost or stranded, alone or in a small team, solving problems with limited resources, all the while confronted by the massive universe-facing perspective of being so small and meaningless. Andy Weir’s The Martian really resonated with people, and Project Hail Mary is having its moment too. I also enjoyed Daniel Suarez’s two Delta-V books a few years back. But the ultimate one that has yet to be beaten for me is Neal Stephenson’s Seveneves.

    The book I’m reading now might be a serious contender though. I’ve had Samantha Harvey’s Orbital on my list for the better part of a year, knowing very little about it, except that it’s about astronauts. Now that I’ve started, I don’t want it to end, I want more of everything, more words from this magnificent brain. You’ll know by the end of the first three pages whether this is a book for you. It’s intensely beautiful, unusual writing. It borders on poetry — perhaps too melodramatic for some — actually it steals over the border by moonlight and maps the territory. I don’t know how Harvey knows what it feels like to be in space, and what astronauts think about as they look down on Earth, but she absolutely does. You can’t write like this unless you’ve stowed away on an ISS mission and been through it. It’s a monumental work, and the best book I’ll probably read all year.

    Literally on the other end of that spectrum, the book club has decided to read Michael Crichton’s Sphere, which is set at the bottom of the ocean and probably isn’t very beautiful or philosophical. I read it once, maybe thirty years ago, and thought I only remembered the contours of its plot, plus flashes of the 1998 film adaptation starring Dustin Hoffman. As I read its opening pages, I was shocked at how familiar some of the writing and scenes were. It must have made an impression on me.

    Since the moratorium on spoilers has probably passed, I think it’s okay for me to mention what I recall: it’s about a mysterious ship that a bunch of scientists are trying to study in a deep sea lab. As time passes, they experience unnatural events, and it’s revealed that the titular sphere onboard has been “having an effect on them”. It’s a mashup of The Abyss and Solaris, essentially. I don’t want to rush Orbital, so I’m going to put that aside and work through Sphere as quickly as I can.

    Speaking of space, the deep sea, and being packed into tight metal containers, I picked up a can of my usual Ayam-brand sardines in extra virgin olive oil the other day and felt a weird “thunk” as I turned it over. I’ve handled enough of these cans now to know when something feels off. Opening it, I discovered only two fish instead of the usual three. That sensation was them loosely rolling around in the oil. It wasn’t like these were two large ones and there wasn’t room — someone on the packing line simply neglected to fill the available space and closed it up. At first I was incensed, and then I tried to let it go. We all deserve to make mistakes, and some sardines should get to enjoy a little more personal space. Be good to yourselves, and I’ll see you next week.

  • DataDeck

    DataDeck

    Introducing the DataDeck SG-01.

    Turn on, tune in, and nerd out at datadeck.app.

    Singapore generates (and publishes) an extraordinary amount of data about itself — temperatures, taxi coordinates, dengue clusters, carpark availability, ticket sales at major attractions. Numbers that civil servants read in spreadsheets and the rest of us ignore entirely. The DataDeck asks, “but what does it sound like?”

    Each Data Cassette draws live government feeds from data.gov.sg and renders them as distinct genres. There are ten cassettes in all, each with their own acoustic logic and ways of interpreting the city.

    The Climate cassette pulls real-time NEA temperature and humidity readings across 12 geographic sectors and converts them into lo-fi hip-hop — with chords deepening as humidity climbs. The Transport cassette tracks unoccupied taxis plying the streets and generates a relentless 303-style midnight techno. HDB carparks become polyrhythmic Afrobeat, and the movements of the stock exchange drive a satisfying hip-hop groove. Get money y’all! Check out the sound of visitor arrivals during the COVID years: like musical crickets.

    The controls? Three knobs shape density, tempo, and atmosphere. A mix fader redistributes the instrument balance. AUTO mode hands navigation back to the machine. There’s a user manual built in, should you get lost.

    It’s a music player with no music files. It’s a data dashboard you can close your eyes to. It’s Singapore, rendered in sound. Put your headphones on, and press play.

    Pro tip: If you really love DataDeck, you can save it to your phone’s Home Screen, which gets you a nice icon and a full-screen mode that shows the whole device at once without distractions.


    Disclaimer: I made this with the help of Gemini 3.1 Pro because I’m just an old designer who hasn’t coded stuff since GeoCities. I take no responsibility for any damage you cause yourself or others with this. Thank you.

    Related blog post: Week 13.26