Tag: Books

  • 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.

  • Week 11.26

    Week 11.26

    If you thought I was going to stop after last week’s two apps, I wouldn’t blame you. I’ve been having poor luck staying focused on new hobbies and pursuits over the past year; they all just seem like too much work for too little payoff and I drift off. Vibe coding seems different so far because it lets me start making weird things that I want to see, without being dependent on anyone else’s time or generosity.

    If you think in terms of music albums/careers, then Collagen was the mixtape that I put together to see if I could be a real musician. Urban Jungles was a big leap forward, the debut album, if you will. It had way more polish and was usable by almost anyone (whereas Collagen had what you might call a niche audience).

    Which brings us to the sophomore curse or slump. The second album tends to be over-ambitious, myopically conceived, and underwhelms audiences looking for more of what made the debut good. There are exceptions to this mythical rule, like Radiohead’s The Bends, Lorde’s Melodrama, and D’Angelo’s Voodoo. By this logic, my next app was statistically going to “fail” by being a harder one to get into.

    I ended up making two apps again this week: SkySpotter and Library Supercollider. Each one has a separate page on this site that shows and explains what they are, so you should stop here and go read them before coming back.

    Like a sophomore album, SkySpotter probably reached a little too far. It took the real-time weather data angle from Urban Jungles, added the more complex dimension of real-time air traffic data, and then threw in rendering a first-person 3D world as a bonus challenge. I started refining the concept and prototyping it on Sunday afternoon, and then worked on it for two full days on Monday and Tuesday. I literally forgot to eat lunch, and was still messing with it at 11pm both nights. It was like a job.

    Gemini 3 struggled. The Canvas chat became so long and convoluted that it won’t even load now in the iOS apps — I have to use the web interface. It hallucinated making changes, and introduced new bugs each time I made an improvement. It built planes with reversed wings and nose cones pointing backwards. Working with bugs in a 3D app was so blood-boilingly frustrating that I wanted to give up.

    I actually did give up… on implementing a VR mode for Apple Vision Pro. We got it to half work but the skybox sphere was too far away and would keep turning black. Rather than risk corrupting the working regular version any further, I decided to cut it.

    I’m proud of SkySpotter because it’s pretty damned cool to lie in the virtual grass and watch real planes go by. Even as someone who doesn’t care about planes more than the average person! But it was a technical challenge first and a passion project second. So if that was my over-produced sophomore studio album the label breathed down my neck for, then the next release would be its opposite: a scrappy, self-funded back-to-roots project recorded directly to tape in a Nashville studio over an inspired couple of days.

    Library Supercollider was an idea that came to me all of a sudden after I’d finished SkySpotter. I’d been interested in the concept of cut-up poetry since I was in university (popularized by Brion Gysin and William Burroughs around the 1960s), and I believe it occurred to me back then that someone could make a computer program to cut up and mash two classic texts. I just didn’t know it would be me, twenty years later.

    I expected it would take me the next couple of days to get working, being that it requires the somewhat complex-sounding downloading and processing of entire ebooks in the background of a web app. I didn’t know if it could even be done. So imagine my surprise when I had a working prototype by lunchtime on Wednesday. But between polishing the experience and overcoming download limits with Project Gutenberg servers, I wouldn’t be done until Saturday morning, making it a longer project with different challenges — comparatively less frustrating, more educational.

    I understand that it’s not an app for everyone — you might read a page and conclude that it’s worthless gibberish. Maybe it takes the sort of person who likes abstract art and free jazz. But personally I’m so pleased with this project that I’ve bought two domain names to go with it: librarysupercollider.com and the superior smashmybooksup.com, which I’ll retain for a year as a ‘marketing URL’.

    In all seriousness, I think this is the finest work of my two-week career as a builder of software! The user experience for remixing and reading the resulting texts is brilliant, if I do say so myself. The steampunk UI and animations are completely unnecessary but bring me joy (notice the moving gears in desktop view). I had to come up with caching and proxy solutions to make the app more reliable under load. I even got a little into the weeds: installing node.js and Vite on my Mac, running scripts in the terminal, trying to compile a macOS port to get around problems (eventually unnecessary).

    Even if I were a skilled and experienced developer, I can’t see how I would have made these apps in two weeks; from writing to designing and coding them up, plus preparing documentation and website copy (plus one very dubious video ad). Deploying Library Supercollider to its own domain made the reality click for me, a feeling kinda like publishing your first thing on the App Store. It says: this thing is now real and can be used by real people.

    Then I came across this article in the NYT Magazine, entitled “Coding After Coders: The End of Computer Programming As we Know It”. It notes an interesting inversion of what we’re seeing in other fields — AI is taking away the drudgery of programming and leaving the human, soulful (and fun) parts.

    “The work of a developer is now more judging than creating.”

    In that way, I may not have magically joined the ranks of coders overnight, but I could probably say I’m developing. At my job, I used to direct the form of apps in a way so removed that I could only claim the role of design, but not the larger making. Part of the handwringing in design circles today is precisely about how designing and developing are merging, and soon only making will remain.

    Not everyone will bother to turn their ideas into reality, and fewer still have the experience and vocabulary to prompt polished apps distinct from the models’ averaged-out defaults, but those who persevere will be bringing tools and toys into existence the likes of which you may have been waiting decades to see.

    What’s next? Well, I might have a couple of ideas…

    One thing all this app-making has done is bring me back to my Mac. I usually spend most of my computing time on my iPhone and iPad, but there’s no substitute for a Mac when it comes to managing local files, running scripts and compiling code. I’ve had coders like Michael make this point to me before, but I never got it because I never needed to sync a local repo with GitHub or anything before.

    So a side effect of spending long stretches of time on my five-year-old and long-neglected M1 MacBook Air is that I’m wondering “Why did I ever stop? This thing is great!”

    It’s worth noting that this week Apple’s newly released MacBook Neo has been getting a ton of praise on my social feeds for being an affordable and all-round capable machine at an unbelievable $599 price point. I got a tear in my eye as I read this essay by Sam Henri Gold: “This Is Not The Computer For You” — it perfectly encapsulates what it was like to grow up on computers and teach yourself things, even on PCs.

    Too much screen time is awfully bad for you, so on the weekend I touched some metaphorical grass by taking our niece out to Disney on Ice at the Singapore Indoor Stadium. It’s extremely well-timed, with the world still coming down from Alysia Liu’s gold medal, and Singapore being in the midst of a Disney craze — a Disney Cruise offering has launched after delays and is now at the local docks, with fireworks and drone shows along the bay at night.

    These were Live Photos of some stunts

    I have no deep affection for Disney IPs but appreciate the amount of effort and coordination that goes into making magic, and it clearly works with so many adults into this stuff. What’s interesting is that while ice-skating can get pretty boring after awhile — it’s all the same moves over and over, around a static rink — adding a layer of characters and storytelling works to keep it fresh over an hour and a half.

    Oh, and our niece is 9, and by way of introducing her to the MacBook Neo, I asked her what computer she uses. I swear, her response was not far off the punchline in that Apple ad that everyone but me seems to hate, in which a girl who’s been using her iPad all day for creative things is asked what she’s doing on her computer, and she responds “What’s a computer?” Will iPads become open enough to support kids learning to (vibe) code? Or will nature heal in a post-post-PC revival led by the MacBook Neo? In any case, that ad was prescient.

    Bonus: Steve asks the same question in a different context (around 1:30). You must watch this video, it’s breathtaking. He’s 28 at this point. In addition to confidently describing things like Street View, mobile wireless computing, LLM chatbots, and the App Store, there’s a part near the end where he says “What we need to do is get away from programming. People don’t want to learn programming, they want to use computers.” He was talking about providing more finished software products to customers, because writing custom software was the norm then, but it’s an eerily relevant quote!

  • Library Supercollider

    Library Supercollider

    Go to SmashMyBooksUp.com or LibrarySupercollider.com

    In 1959, William S. Burroughs took a pair of scissors to a page of text, rearranged the pieces, and taped them back together. His argument was that linear language was a control system — that by cutting it up, you could slip between the lines and find what was actually being said. Library Supercollider is the logical conclusion of that idea, scaled to over 10,000 books from the Project Gutenberg archives. CERN could never imagine.

    Pick any two public domain texts and collide them. The engine samples a selection of pages and forces two authors who never met into a shared narrative space they never consented to. How it’s taped back together is up to you:

    • Paragraph level: Preserves some structural dignity.
    • Sentence level: Grammar survives, but sequence does not.
    • Word level: Sweet, nonsensical poetry.

    A source tracking mode colour-codes the wreckage by origin, in case you need to know who to blame for a particular sentence. The interface is intentionally a slot machine, and what emerges is not literature, exactly. It is also not not literature — which puts it in good company with many award-winning books! Burroughs believed the cut-up revealed hidden structures beneath the surface of language. Library Supercollider gives you the tools to find them for yourself.

    Desktop view
    Mobile view
    Mobile reading view with three modes

    And just because I had some time and Veo credits to spare, I thought I’d try my hand at making an over-the-top video ad to show it in motion on social media. Which meant a portrait video. Definitely stepping out of my comfort zone here.


    Disclaimer: I made Library Supercollider with the help of Google’s Gemini 3/3.1 Pro LLM. The authors of Project Gutenberg’s texts were not consulted, but they are hardly in a position to object.

    Related blog post: Week 11.26

  • Week 10.26

    Week 10.26

    Last week I got started vibe coding with Gemini 3 Pro and was happy enough with the collage-making app I made that I deployed it to Netlify and posted a separate writeup for it here on this site. I also decided to rename it to Collagen, as in Collage-Generator, thanks to a suggestion from Michael.

    For my second project, I wanted to go much further and test the LLM’s ability to code up something more complex, with real-time 3D modeling and rendering. But what to make? One shower later* and I had a concept I was excited to try out: An app called Urban Jungle that would be a weather visualizer, depicting a world where humans have disappeared and our cities have been reclaimed by nature.

    I could see it clearly in my head, and had the idea (in retrospect, a brilliant one that you should absolutely steal) that vibe coding projects should start just like real ones — with concept art. Taking the time to visualize what you want is the first test of whether it deserves to be built. It aligns the team behind a single vision, with fewer chances for miscommunication and wasted time.

    I prompted Nano Banana 2 to generate a screenshot of Urban Jungle as if it were a finished product, describing it exactly how I wanted. The result was astoundingly close to what I’d imagined. With this visual in hand, I was able to brief the coding AI that much faster. Sure enough, the first prototype it spat out nailed the isometric view angle, UI, and core functionality.

    That it could achieve a pseudo-3D effect with CSS and standard web technologies, writing the whole thing in a minute, was already blowing my mind. But like any difficult client, I thought “why not ask for more and see how far I can push my luck?”

    The next version (v1.0) was a total rewrite of the graphics engine, now in full 3D using three.js. Each city is procedurally generated to be unique, with different forest/jungle topographies depending on the region. The increased detail meant I could add decaying buildings, pylons, and roads. When you tap on the trees, flocks of birds scatter. When it gets cold, the vegetation dies, and below 0ºC the ground becomes covered in ice and the birds disappear. I thought… ‘this is great! I think we’re done!’

    But I should have known projects like this are never done. Next came v2.0 which rewrote the architecture to allow it to act like a proper weather app. You can now simulate the weather for any city over the next 24 hours, scrubbing through time with a slider. As you do, the lighting and climate effects change dynamically. It generates live sound effects for wind, rain, birds, and thunder. You can pan and zoom around the model with your fingers. There are now drifting clouds and proper lightning that strikes the earth during storms.

    Comparing the concept art with the ‘finished’ product, and I’d say I got as close as one could hope with a web app contained in a single HTML file. Here’s a standalone post about the app, which brings me to another advantage of vibe coding with an LLM: these things write their own “App Store”-like product copy!

    Try Urban Jungles at urbanjungles.netlify.app

    Edit: I couldn’t leave it alone and after writing the above, made so many changes I had to implement a version history link on the front page. Now in v3.1, there’s an animated starfield in the night sky, and a freakin’ VR mode for Apple Vision Pro! It uses WebXR to place you inside a 3D environment with the city model floating in front of you. And after a couple of people suggested I add iconic landmarks like the Eiffel Tower, I decided that we could have a few as Easter eggs in major cities. Customizing every city to get full landmarks coverage of the world would be too much, even for me. But err check back next week, you never know.

    It strikes me that generative AI vibe coding is modern day Lego. It lets kids and adults alike build silly (or serious) things straight from their imaginations. It’s extremely fun and educational to express yourself in this way, if you just look at it as an advanced toy. The difference is that no one is using Lego to build a working car, or furniture, or anything that can be exchanged for money. But LLMs are already used in the building of most commercial software, and the proportion of their contributions is only going to grow.

    But as a hobbyist with little coding experience, I’m afraid about how desensitizing this new ability can be, and how it will dull our ability to wait for good things. It will heighten our time preference, in other words. While it was downright exhilarating to see my idea come to life in minutes instead of weeks, or never, I know it has already rewired my brain. I expect this now. The next app I make will be judged more harshly — they all will, now that I know how “easy” this is. Patience is going to be impossible, and that’s bad for everyone.

    *But what was that asterisk up there with the shower thought? It occurred to me later that maybe I came up with Urban Jungle because of The Wall which I read last week. To reiterate, it’s a survival story that takes place after an Event seemingly decimates all of humanity save for our female protagonist. She lives in a lodge in the Austrian Alps, getting by on limited matches, ammo, and medications. She’s constantly battered by storms and weather conditions, fighting a slow, losing battle against nature. That imagery must have stuck in my head.


    After that recent aggressive reading spell, I slowed down and decided to chill with one of those cozy Japanese books that are still so popular — you know the ones, set in convenience stores, or bookstores, or cafes, or the backseats of taxis, where absolutely nothing important happens apart from a mild mental breakdown brought on by social anxiety and ennui, aka living in Japanese society. I’ve semi-enjoyed a few of these before, most notably Michiko Aoyama’s What You Are Looking for Is in the Library.

    But even those lowered expectations could not have prepared me for the absolute waste of paper/pixels that is Atsuhiro Yoshida’s Goodnight, Tokyo (translated by Haydn Trowell and published by Europa Editions). I mention all involved parties because the blame for this should be shared. Multiple people started work on this, knew what they had, and decided to keep going. I can only guess the motivating factor was profit and cashing in on this cozy Japanese book trend. I hope it was worth it.

    I am now reading Olga Tokarczuk’s Drive Your Plow Over the Bones of the Dead (translated by Antonia Lloyd-Jones), and it is soooo much more deserving of your time. Then again, she’s a Nobel laureate — perhaps not a fair fight. But that’s the thing about books versus things like Michelin restaurants: the good ones cost about the same.

    I’ll leave you with some non-AI photos I took on a walk yesterday as a palate cleanser.

  • Week 9.26

    Week 9.26

    • The featured image above is the result of having Geese’s Au Pays du Cocaine in my head all day. The line about a sailor in a big green boat and a big green coat made me think of Puffer Jacket Snoopy, and of course I had to realize the joke.
    • We got the sad news that Deliveroo is shutting down operations in Singapore. This comes on the back of an acquisition by DoorDash who must have run the numbers and decided that a 7% share of the local food delivery market after a decade wasn’t worth investing further in. We use it all the time and prefer it over Grab and Foodpanda — it is by far the better app and their subscription service is better value for money, but we’ve seen this movie before. It’s like how Uber lost out to Grab; the market doesn’t always choose efficiently.
    • I will probably switch to Foodpanda because Grab as a brand has the same icky halo as, say, Facebook or Spotify.
    • Google released Nano Banana 2, the new version of their hit image generation model. This one is cheaper to run and kind of almost as good as Nano Banana Pro, so they’re making it the default for everyone. Paid users can still access the Pro model, but it’s hidden behind some menus. It’s a regression in quality, a slight improvement in speed, and most importantly, a boost to Google’s bottom line. Since I only do silly things with these tools, it doesn’t bother me tremendously, but imagine the same happening at an enterprise level for more important work.
    Screen recording of an AI panorama
    • One of the new things Nano Banana 2 can do is generate very wide panoramic images, so I asked it to render some “panoramas taken with an iPhone” in various locations. I then upscaled those and opened them in my Apple Vision Pro. They don’t have the photorealistic quality of images from Nano Banana Pro, and the resolution leaves a lot to be desired, but they’re still immersive and impressive when viewed in this way. You can see where this might go.
    • There’s been a lot of talk lately about how AI vibe coding could upend the SaaS market, if not replacing dependable enterprise tools with individually created ones, then at least giving IT departments a billion more unapproved apps to worry about. A viral essay from last week posited that AI coding could kill DoorDash, though I’d say they did a good job of that themselves out here. The other oft-discussed idea is that AI could replace the App Store, and everyone will just make their own apps instead of buying them from developers. Michael has been blogging about vibe-coding his own to-do list app based on Clear. I’ve been wanting to try this myself, making more little tools of my own to solve niche problems, but the opportunities have been slow to materialize.
    • This week the right idea presented itself and I made a web app using Gemini: an album cover collage maker that searches for the artwork or lets you upload your own. I’ve looked online for something like this before but only found a few that were quite lacking. Making one to my own specifications took maybe five minutes of prompting and testing. Then I thought it would be nice if you could drag the images to different locations. Gemini added that feature like it was nothing. I’m pretty hyped that even someone like me with zero current coding knowledge could will this into existence. If you’d like to try it, I’ve deployed it at usecollagen.netlify.app.
    • Otherwise it was a sort of decompression week where I just read a lot, listened to the records I bought/ordered last week, and was regrettably glued to my phone watching day trading losses (Chekhov’s gun has fired!) and social media feeds.
    • It took a couple weeks of dawdling but I finished John Le Carré’s Call for the Dead, his first novel featuring the spy George Smiley. I may continue reading the series, seeing as his son Nick Harkaway (whose work I really enjoy) has decided to continue his father’s legacy and written one more already: Karla’s Choice. This one was a little dated and not particularly thrilling, but a fine introduction and scene setter.
    • It was immediately followed by Adrian Tchaikovsky’s The Expert System’s Champion, sequel to The Expert System’s Brother which I read at the end of last year. I recommend both as examples of sci-fi stories set so far in the future that humanity has looped back around to the beginning. It reminds me of the “middle chapter” in Cloud Atlas, if you remember that.
    • Then I read Hu Anyan’s I Deliver Parcels in Beijing, a modern memoir that reportedly did well in China when it came out in 2022. It details the author’s dual career as a writer and on-and-off gig economy worker, which is made more interesting by also being a portrait of what it’s like to live in the lower brackets of Chinese society today.
    • I also had time to tackle Rob’s recommendation of Marlen Haushofer’s The Wall, which was written in the 1960s but doesn’t feel that way, unlike Le Carré’s spy novels. He called it the best book he read last year, so I could hardly say no. It starts off like an intriguing sci-fi novel: a woman visiting friends in the Austrian alps wakes up one morning in the log cabin to discover she’s alone, and there’s an invisible wall separating her from the outside world. Things then focus on survival and what it means to live and be human in solitude, and in nature. Which, given that I’ll be home alone next week while Kim is away again for work, means I’m already in the appropriate headspace.
    Some of the better books I’ve read this year
  • Week 8.26

    Week 8.26

    • It was a rainy Chinese New Year week, which is a rare occurrence if our collective memory serves correctly. The holiday usually occurs sometime in late January, and my impression is that it’s always scorching when we’re out visiting relatives. The gloominess added to a feeling of intense tiredness, and I was glad to see the end of the week. If social batteries were like lithium-ion ones, I’d say mine is aged and doesn’t hold a charge like it used to (more on this later).
    • While my parents were visiting with my in-laws, the topic of where our dads got their haircuts came up, and I used Gemini’s Nano Banana model to visualize a bunch of alternative styles for them to consider. It was pretty funny to see our old men in dye jobs and top knots, with loud matching outfits like floral jackets. The real reason for this was of course to demonstrate how realistic and easy these deepfakes are in 2026, and hopefully they’ll be a little more wary of scams.
    • There are fewer kids and unmarried young adults to give angpows (red gift envelopes with cash) out to these days, but it still adds up. To try and make up the deficit, I decided to make a return to day trading (really just gambling) directly on my phone while out and about between appointments. I’m glad to report that I not only avoided losing all our money but managed to hit my goal by the weekend!
    • If you were wondering how the showdown between Gemini and Claude has been going since last week, I think Claude is still way ahead in terms of writing and editing. Not just producing output, but being able to understand what makes a piece work and replicate it. Gemini seems to take away the wrong conclusions when analyzing text.
    • I saw Rob a couple more times for beers and a visit to the National Gallery with his kids. We were joined by Aqila and her daughter, which was really nice. The whole outing tanked my social battery again, in part due to the swarms of Chinese tourists in town this week — the gallery was fully packed and some sections of the French Impressionists exhibition were painfully overcrowded despite allocated entry timings.
    • On my way home from that, I stopped by the record shops in the basement of The Adelphi and broke my 4-week no-vinyl streak. I picked up The Beatles’ Abbey Road and R.E.M.’s New Adventures in Hi-Fi, telling myself it was fine since these are some of my favorite albums. I should have known that once you open the door just a crack, there’s no shutting it. The next day, I ordered Mac Miller’s Circles and Lorde’s Melodrama off Amazon. Kanye’s My Beautiful Dark Twisted Fantasy is waiting in my cart. These are some of my favorite albums, okay!?
    • We decided that it was time to start on The Pitt, given that seven episodes are out. We binged them immediately and now it’s going to be hard switching to a weekly schedule. It’s more of what we liked about the first season, but I do wonder how they’re going to sustain this over the next few seasons. How many eventful single days is it realistic to have, and how much variety can you get within that constraint? These hospital shows are all built atop the same GSWs, industrial accidents, cancers, and mysterious illnesses, but the relationships and characters usually have time to develop over a season. The Pitt’s real-time concept doesn’t allow for that — the progression happens off-screen between seasons, and the audience puts the pieces together in the first few episodes. You can withhold a few characters’ reappearances until midway through (as in season 2), but that structure is too transparent to keep using every year.
    • I finished playing the first Paranormasight on the Switch, and it’s probably the only game with a branching narrative — as in, the kind where you are literally shown the story map — that I’ve actually enjoyed. These Japanese story-based games with the multiple endings that you have to keep replaying and retrying events to complete are usually a pain in the ass, but this one works because it embraces the meta-game angle completely. You’re an outsider, outside of time and space, and your jumping between the events is what unlocks progress. Characters in one “scene” might be stuck and paused until you motivate some others elsewhere to do something, which changes the circumstances in the first instance.
    • I read George Saunders’ Lincoln in the Bardo, an “experimental novel”, on someone’s recommendation and let me just say I am not passing on this recommendation to you. It didn’t help that I know and care very little about Abraham Lincoln, or that aspect of American history, but it’s not really about him anyway. It’s about his son’s ghost being lost in the graveyard amongst hundreds of other ghosts, and through their archaically written little vignettes you get a sense of what life was like in that era and also how the author is a massive wanker. The New York Times ranked it the 18th-best book of the 21st century. Agree to disagree!
  • Week 7.26

    Week 7.26

    One of my irrational fears that hasn’t gone away with growing older is that of going to the dentist. I’ve put it off over and over, and was pretty sure I’d make it last year but didn’t. I’ve done my best to handle things at home, even flossing daily which they always say you should do but I’m convinced no one actually does. This week I finally made an appointment to go, and it wasn’t as bad as I feared. They did find a cavity that needs patching up, but the appointment for that is only in a couple of months.

    One thing that felt off was a recommendation that I get a certain procedure done — not only because I’d like to avoid pain wherever possible, but because it was prescribed before they’d even looked in my mouth. I’d only just said that it was my first visit in a while, and they said ‘okay you should get this done’.

    Because it’s 2026, I uploaded my x-rays to Gemini 3 Pro for a second opinion. It analyzed the scans confidently (but of course) and told me the same things, but in even greater detail. It did not think the procedure was necessary, and gave me clarifying questions to ask the dentist next time. When it comes to a nervous person like me, it provided a better experience than a human dentist could because it was available to answer my many more follow-up questions, at all hours. This longer “consultation” made me feel better, although I’m well aware that taking medical advice from a machine that just says things isn’t the smartest move. But I know people do and will because it’s really easy, and so once again I’m saying this is really dangerous territory.

    Why am I using Gemini so much, and what happened to Claude? Google decided to play dirty, I guess. They’re offering three months of their Pro AI plan (essentially Google One with 2TB of storage + access to Gemini Pro, Nano Banana Pro, and Veo) at a 90% discount. That’s about S$2.80 a month. These models are all so incredibly close in raw performance, that for someone like me who’s not using them for coding, the main differences are down to tone, character, and perhaps ethical alignment. I’m already sold on Claude for text-based work, but I thought I should spend some time getting a feel for how Gemini differs. Especially since it’s going to be at the heart of Apple’s AI features at some point this year.


    Friend and former colleague Rob is back in town for Chinese New Year. I thought I’d last seen him maybe two or three years ago, but it’s actually somehow been closer to four. The quickening pace of time’s slipping through the fingers at this age is alarming. The last time he was around, I’d just printed off some stickers of my Misery Men drawings and given him one. I had just gone back to work after my brief sabbatical. We were still wearing masks indoors (as seen in the linked post’s featured photo). Is there a German word for how relationships can pause and park themselves outside of regular time, so that four years feels like so much less?

    A few of us met up for craft beers and Thai food on Sunday, with the reminiscing and catching up going past midnight. Here’s a privacy-preserving photo-turned-courtroom sketch made with Gemini’s help.


    Media activity

    • I finished watching all 48 episodes of The Apothecary Diaries anime series on Netflix. It’s about an unusually educated girl, raised in a red light district, who gets kidnapped and sold to the imperial palace as an indentured maid where she gets to flex her skill with poisons and medicines. It’s set in a fictional country resembling China in the Tang Dynasty. Nothing about this should appeal to me, but it was one of the more enjoyable low-stakes shows I’ve seen recently.
    • I still haven’t finished reading Sleeping Dogs. But I did finish playing The Hokkaido Serial Murder Case a few weeks ago but forgot to say so. As a faithful remake of a retro game, it can’t be blamed for some of the dated gameplay. The art could definitely be better though — it would be a fine game for $20, but unfortunately is priced at $44.99.
    • It’s been a year since we were in Tokyo and I bought the Japanese supernatural murder mystery game Paranormasight, largely because it was set in the Ryogoku/Sumida district where our apartment was. In last week’s Nintendo Direct, a sequel was announced and so I decided it was finally time to get started on the original. It’s turned out to be quite good, with a dynamic visual presentation that goes beyond the usual VN style of talking figures in front of different backgrounds. The gameplay is constantly breaking the fourth wall as well: one challenge where you die after hearing a cursed sound is solved by going into settings and turning the volume down.
    • While feeling stressed out about the dentist, I played Jusant on the PS5. It’s a beautiful, dialogue-free game where you slowly climb a massive mountain and put together what happened to the people who used to live on it. It was fairly quick to finish and now I’m curious about Cairn, another game about scaling a mountain, albeit more realistic about the physical difficulties involved. Jusant’s nameless hero is practically superhuman and his arms are way too skinny for the insane amount of climbing he has to do.
  • Week 6.26

    Week 6.26

    • A quick follow-up on one of last week’s topics: it turns out that some posts on Moltbook may have been faked because there were security holes allowing people to get on there and post directly (instead of being a bot-only place as promised). Doesn’t change the main point that future agents will collaborate not just on one computer, but sync up across wide networks with effects most of us can’t fathom. Look at the crowd that gathered to discuss Clawd a couple of days ago, to see how much excitement there is for this box that says Pandora on it.
    • I’m too tired to dwell on this much more today! Keeping up with the AI space is still a full-time job, and I’m not going to try. But Claude Opus 4.6 was just released, along with demos of what it can do in Cowork mode, which is very impressive if true. Apparently these models are also able to tell when they’re being evaluated by safety/alignment teams, which makes it very hard to know how they’ll really behave in the wild. Look at this example where a model can infer the user’s cultural background with just a few words, owing to the words they choose. These are tools, except other tools don’t do things like this.
    • I read a fantastic sci-fi short story that sort of involves AI: Julia, by Fernando Borretti. If you also enjoy fiction that drops you into a context and makes you swim, and then shows you strange and beautiful ideas as you break above the surface, you’ll love this. Like how China Miéville uses ornate language in The Book of Elsewhere to suggest Keanu Reeves’s… I mean the protagonist’s immortal, mystical otherness, Borretti uses a dense, intellectually dominating host of references here to illustrate the POV of an artificial mind at the end of humanity’s time. I haven’t stopped thinking about it.
    • What will we do when all the jobs are gone? A young entrepreneur in our neighborhood has started a home-based business selling smashburgers, and we bought some for dinner midweek. They were good, and I’m slightly afraid of what this proximity will do to my waistline. For those unaware, this was a bit of a trend last year and local media outlets like ChannelNewsAsia ran stories (example) about how such businesses were springing up as a result of low employment opportunities and rising rents.
    • Retreating further into the virtual world is another option. A bunch of new experiences became available on the Apple Vision Pro recently, and I caught up with some of them. The cutest is an immersive documentary on Apple TV called Top Dogs (two 15-min episodes), which looks at the annual Cruft’s dog show in Birmingham, UK. You get really up close to some of these beautiful animals, and the urge I felt to reach out and pet them was extremely strong. It wouldn’t be the same seeing this on TV. Here you get a sense of their size and presence, see them in incredible detail — everything but smell them. Apparently there are 25,000 dogs at the convention center each year, but I imagine these are all shampooed and much more pleasant than your average wet dog.
    • There’s also Retrocade, a game on Apple Arcade that uh… simulates an arcade. The game is playable on other devices, but on Vision Pro you get life-sized arcade cabinets standing in front of you, playing licensed retro titles like Space Invaders and Bubble Bobble. The only thing that breaks the illusion is of course that you can’t reach out to grab the sticks and mash the buttons. Instead, you have to use a connected game controller.
    • Speaking of emulating old hardware, I played and finished a game on Switch (also available on PC) called The Operator. It’s one of those where the entire UI is a computer’s desktop and you have to chat, look into files, and do hackery stuff to experience the story. I think this can be filed along with the other murder mystery games I’ve played lately. It’s fairly short at under four hours, almost completely linear, and not something you’d play twice. Wait for a sale, I think.
    • You know who else is a hacker? The lead character in Apple TV’s Tehran, a show that came out in 2020 and has since been renewed for a fourth season. We watched Episode 1 back when it came out, liked it enough, but for some reason completely forgot to go back until this year. It’s been topping the charts lately, maybe because of the recent civil unrest in Iran. Having just finished Season 1, I can say it‘s a really good espionage thriller, and we’re keen to keep going.
    • Oh and check this out. Someone has managed to license Isaac Asimov’s Foundation series and made a free-to-play (i.e. shitty) mobile game: Foundation: Galactic Frontier. It even has an Apple TV logo appear on startup?! And the next day, I saw this insane animated ad for it pop up on Instagram and couldn’t believe my eyes — I took a screenshot to prove it. In all fairness the actual game isn’t anything like this, it’s just a heinous misrepresentation that probably has Asimov spinning in his grave.