Work in progress.

Some things are broken round here.

  • How I run PhotoPrism with Docker Compose and reverse proxy

    If you, like me and many others, have started to feel uncomfortable about one company knowing everything about you, moving off the Google ecosystem is the natural first step. There are lots of alternatives for the main features: for search, there is DuckDuckGo, which is improving all the time and has now fully replaced Google search for me. There is Fastmail, Proton Mail and many other alternatives for email. For photos, Google Photos and iCloud Photos reign supreme.

    I have attempted over the last couple of years to move off Google Photos. Each time, I've been let down by problems in bandwidth and download speeds. If you have vast amounts of data, it can get very difficult to work with the raw data you obtain from Google Photos using a graphical user interface. Each time I've tried to do that I've ended up with corrupted files or incomplete data.

    For this reason, I eventually designed this plan.

    PhotoPrism in Docker Compose

    With a reverse proxy into a photos.mydomain.com address and https.

    To be honest, while I know my way around servers I don't have a lot of experience with containers, networking or security. I did not want to attempt this project until I succeeded in getting a beginner's version of all that up online.

    Choice of self-hosted photo software. I looked mostly at PhotoPrism and PhotoStructure. Both of these projects appeared closest to the sort of self-hosted Google Photos-esque application I was looking for. Many other photo projects are far closer to web 1.0 style web galleries. In my case, I had more than a quarter of a million photos and videos strewn across multiple clouds. I have ADHD, and it has been very difficult for me to organize things.. anything.

    Hardware. I decided that I wanted to lease a server in Europe, because there are very good deals to be had there. Hetzner, OVH and an assortment of related companies like SoYouStart, Kimsufi, I've used most of them at various times in the past. It's relatively affordable to get up and running on a server run by any of those companies using used or old parts. For the most part it works out cheaper than trying to own your own hardware right now (in the midst of a global chip and memory shortage). Many people certainly do this sort of work on a NAS or a Raspberry Pi, but I knew I wanted something with many more cores. I got a Xeon E3 server to start, but may upgrade later. $27 a month is not a bad deal at all for a dedicated server with those speces (16GB RAM, relatively decent uplink).

    Source of data, and download method. As mentioned previously, I have not had much luck with retrieving my data from Google in the past. This time, I decided to completely avoid downloading my data to local storage, knowing that even with decent desktops and laptops I would still struggle with handling all of this data. I decided to download the backup files directly into my server instead. I decided to do a Google Takeout of all of my Google Photos from my G-Suite domains (several!) and my personal account's Google Photos. You can do the same by going to the Takeout page. I decided to send Takeout data directly into OneDrive, where I have a temporary premium account solely for this purpose. I've noticed I can fetch data from OneDrive at very high speeds using rclone, at least 2-3x faster than from Dropbox or Google Drive.

    Rclone, a fantastic tool I can't live without. I have been a huge fan of Rclone for a while now. While it works amazingly well for Google Drive and Dropbox, there are known limitations with rclone for extracting and moving Google Photos that I did not want to deal with. Mainly, using rclone for this purpose strips EXIF data, a known limitation of Google Photos' API.

    When my Google Takeout is complete, I rclone to download from OneDrive into my server.

    rclone copy onedrive: servername:/home/username/destination -P

    For a 200GB backup of my Google Photos, Takeout gave me 4 files that were 50GB each. That took rclone around a few minutes to transfer at 80-100MB/s.

    I then unpacked all of the files into a single folder:

    cat *.tgz | tar zxvf - -i

    That gave me a single folder of all of my photos in a folder named Takeout.

    Installing PhotoPrism using Docker Compose. The official Docker Compose instructions are pretty easy to follow. For reference, here's my docker-compose.yml file.

    Accessing your photos using a reverse proxy For security, you don't want to access your self-hosted photos at SOME.IP.XX.XX:PORTNO or yourdomain.com:portno. You'll want to access it at a domain, preferably one you own. This was the hardest part for me: there are many ways to get a reverse proxy going, and I didn't know very much about all of that.

    I decided to use LSIO's swag container. In a nutshell, LSIO provides very well-maintained Docker images for many popular homelab projects. You can easily stand up a wiki, a PVR, or even niche things like a self-hosted Markdown editor. I've used many of their images in other projects and I love how easy it is, how helpful the community is. The swag container was the one I spent the most time on.

    It's helpful to read the docs and initial setup info. Once you figure out the ins and outs of how things are set up in this container, you can easily get https://yourdomain.com, https://anysubdomain.yourdomain.com or even https://yourdomain.com/subfolder up and running. Of all of the 'beginner' methods of learning to set up services with reverse proxies (and there are many: you can use Traefik, Caddy, docker gen, etc), this wound up being the one I felt I learned most quickly.

    In summary, you want to:

    1. Set up DNS
    2. Get an SSL certificate for all your domains and subdomains
    3. Edit the proxy configuration files

    Read the docs, or ask for help; it took me, someone with not a whole lot of infrastructure experience but who knows a bit of Linux, a couple of days to set it up correctly.

    The swag container has many built-in templates that makes this easy, once you learn its quirks.

    Screenshot of PhotoPrism showing lots of dogs in the pictures

    Photoprism has Tensorflow built in. Their pre-trained model doesn't get everything right (for example, it marked a plate of squid as 'baby'), but it is pretty good. My wife is placing a bet with me that I probably have more than 20 000 photos of Cookie. The moment of truth will probably be in a day or so, when all 200 000 ish photos I've got (over the last 20 years) are finally imported, indexed and tagged.

    I was able to set up PhotoPrism in Docker Compose in this manner, and access it at https://photos.mydomain.com. While I'm currently importing and indexing a quarter of a million photos, I've been happy with the speed, performance and features and have decided to sponsor the project. It's nice to see people working on useful software that works well and looks good.

    I'm pretty happy with the progress I've made on this. I might make a tutorial for the more complex parts of this project later.

  • 21 Days of Indoor Projects

    Talk about great timing. Three days into our 14 day quarantine in Singapore, that got extended to 21. I found plenty of things to do.

    Cooking in a small space

    • I have some experience cooking in tiny spaces with limited equipment and ingredients, from camping and travel adventures
    • Food is provided during this quarantine period, but we requested that the hotel change all of our catered meals to 'salads only' since we expected lots of food delivery from friends and family
    • We got takeout the rest of the time, and very occasionally 'cooked' with the rice cooker and 1.0L electric travel multi-pot

    Most often, we made soft-boiled eggs and I've developed a fairly robust recipe for it. I used to make it at home on the stove, but found that with some adjustments it worked out well in the electric multi-pot as well.

    How to make soft-boiled eggs in a hotel

    You'll need a kettle, and a vessel that holds heat well that has a cover. Or just a travel-sized multi-pot.

    1. Boil water in multi-pot
    2. Turn off the heat when it is boiling vigorously (bubbles are rolling on the surface)
    3. Add 4 large room temperature eggs into the multi-pot. Make sure the eggs are completely submerged in the hot water. Cover.
    4. Set a timer for 8 minutes, get ready to have more boiled water (from the kettle) by the end of 8 minutes
    5. At 8 minutes: add fresh boiling water to the multi-pot
    6. Set a timer for 4 minutes
    7. After 12-13 minutes in total, take out all the eggs and put them in a bowl. Cover with tap water
    8. Crack each one. If they are still too runny, put the rest back in the multi-pot for an additional minute or so

    You're basically trying to keep the water temperature at around 165F / 75C that whole time. This takes a bit of trial and error. It really depends on the size of the eggs. And your pot!

    Various computer projects

    High speed media server

    Even though I already have a home-based Usenet media server, I was unhappy with the i3 CPU and slow Internet speeds from its data center. I decided to switch my entire setup, prioritizing uplink speeds. I picked a data center that was promising 20Gbit/s speeds. I moved all of my services over to it within the afternoon and was happy with the performance. I'm a fan of the -arrs services for automation and organization.

    Chromecast in hotel networks

    Chromecast is a nifty little gadget but it has notable issues in networks you don't control. Like in hotel rooms. I was unable to set up the Chromecast on the hotel TV because it can't complete setup. There is a port forwarding issue.

    I managed to get around it by using my laptop as a wifi point, but that was somewhat unwieldly. In the process, I learned that tools like Connectify work for this precise purpose. Not having my Win10 laptop on this trip, I used Mac OS X's built-in Internet sharing feature. My hotel room has a weird setup where the TV needs to have the network cabled plugged in to even boot up, and turns off after some time if the network cable isn't there. So in my workaround, I was able to get Chromecast to work but the TV would keep shutting down.

    It looks like the company behind Connectify also has a suite of related services like Speedify that would have served me well back in my road-warrior days. Those days are long gone, but I am interested in any and all technology that is travel-adjacent.

    Next time I spend extended amounts of time in hotel rooms, I will probably bring my Roku stick instead. It appears Rokus don't have the same setup problems because they create their own temporary networks during the setup process.

    Eventually, we went back to basics: a laptop connected to the TV using a HDMI cable. It's not as convenient as other media consumption methods we're used to, but at least it works.

    And with the high speed media server setup, we were able to watch things at significantly higher quality and speeds.

    Data liberation

    Towards the end of my 21 day quarantine period, I started a data liberation project to completely wean myself off Google. I don't think I'll be done before I leave; it's a huge endeavor.

    I started by using rclone to mount all of the Google Drives that I have access to. Then I setup a separate server on Hetzner, which will be for my personal cloud only. I selected Hetzner because of the variety of hardware available, friendly price point, and the ability to quickly attach storage through storage box add-ons. Most /r/SelfHosted and /r/HomeLab projects describe DIY projects using hardware that you put together. Having just built a gaming PC at the start of the global chip shortage of 2021, I do not have the desire to acquire any more hardware at this point. Leasing servers is the way to go for me.

    My main priority is to move all my files from legacy clouds (mainly, the several G-Suite drives I still pay for because I have been procrastinating at moving my data).

    Using rclone, I've managed to send all of the data from different drives into my server, where I then dedupe files using rmlint.

    I now plan to setup seafile and use that as my personal cloud, accessing these files on files.mydomain.com using the built-in reverse proxy features from the swag Docker container.

    Photo liberation

    I also have multiple copies of photos from different Google Photos (different accounts), and iCloud (several accounts as well). I am doing the same thing as what I did for my data: pull out all the photos into one location (my server), dedupe, and then make them available through photos.mydomain.com using either PhotoPrism or PhotoStructure.

    On privacy

    While my data liberation projects are definitely privacy-driven, I have simply become increasingly unhappy with certain consumer products, even the ones I pay for. Drive is extremely slow once you've got terabytes of data. Transfer speeds are abysmal. As my thoughts on technology and privacy change, I have also begun to take the steps to remove Google from most aspects of my online life. Search, for me, was replaced long ago by DuckDuckGo. Email is now Fastmail, which I am very happy with. At this point, it is important to me to be in control of my data. I also like the idea of being able to directly support the developers who work on the tools listed above, through sponsorship or subscription. I've noticed that my views are not fringe, and many people are likewise interested in taking such steps. Sadly, it won't be an option for everyone because of the barriers involved. (For those, perhaps a solution like Helm might be the way to go)

    When I'm out and about in my daily life I only have an hour or two of free time a day, more on the weekends, to work on things like these. Today is day 18 of my isolated quarantine before I'm let out into the general public. I have completed most of the above projects (though photos work is still ongoing..). I will share more specifics about the server work when I can!

  • Intersectional Grieving

    I am processing a metric ton of grief this week. I am at once in pain at the violence that the Singaporean state (and many states) is inflicting upon trans people, with the support of transphobic people of all backgrounds, including gays and lesbians who really should know better than to weaponize their own identities towards our trans siblings. I am at a loss for words on how to process the fact that a man shot and killed eight people in Georgia this week, most of them Asian women. That not one, but several, Asian and Southeast Asian elders were randomly targeted and assaulted no more than 15 minutes from where I live.

    It's a lot.

    Because I am from everywhere and nowhere, sometimes at all at once, I feel the grief of all of these communities simultaneously as a queer Southeast Asian lesbian cis woman of Chinese ethnicity currently now living amongst the Chinese diaspora in America. All of the different shapes of grief simply collapse into one giant mess.

    There are many reasons why I don't feel like I get to participate in any of this. I am not the same kind of immigrant, therefore I don't feel like I get to speak for the Asian women of a different background whose lives in America are so different from mine. I am not Asian-American, and I therefore don't carry with me the same degrees of pain that many Asian-Americans have felt since birth or since they got here. I speak English and am not singled out very often for being 'different', where I live here, because "I sound American" (I have different English accents, you should listen to me speak at home or elsewhere in the world. My English accent is a chameleon with of a life of its own that I do not understand). I am Singaporean, and not generally perceived to be a threat by other governments; extremists of most persuasions do not have a specific beef with me.

    None of this week's grieving is specifically about me.

    I watched with horror as I see a list of victims presented with mangled names. Soon C. Park. Hyun J. Grant. Yong A. Yue. It was a mistake that was quickly corrected, but I could not help but feel the indignity of having their names mispronounced in death on a literal medical examiners' table, after a lifetime of mispronunciations. After already having made the concessions of taking on easier names, of putting your family name at the end of your name, even if it didn't make any sense.

    I am ashamed that I paid two hundred and fifty dollars to delete my Asian names from my legal papers, that I kept a hint of the name that my grandfather gave me as initials: L T, just so that I can have an easier time at the DMV. At the time, I did not feel like anybody else needed to know. It would be mangled, anyway.

    I am a queer woman who has moved to this country not for more money or more opportunities, I did not move here to escape war or political oppression (well, kind of, but I cannot possibly compare it to the people who have literally fled for their lives). In the grand scheme of things, the math of my intersectionality still works out for me: Queer English-speaking cis women with the right passports working in tech = there aren't many other places that we can call home.

    But it doesn't help that some weeks more than others, things don't make sense precisely because of all of the other things. What will my life be like as an Asian elder in this community? Will I have to learn kungfu so that I can beat up my assailant? What will our children's lives here be like, as the mixed children of Singaporean-Malaysian-Chinese-Indian-American lesbians? Will someone make the leap from overt benign racism, into simply overt racism, when I least expect it? Will the person who keeps calling me Chinatown as I walk past him one day, when he's having a bad day, do something a little more? Do I represent the kinds of opportunities he feels I've taken away from him?

    I recall a conversation I had in my teens with a teacher. I had written a letter, never sent, to the US ambassador of Singapore. Dear ambassador, it went, I think I am gay and I cannot think of any country I can be myself in other than yours.

    A teacher caught wind of it. A teacher who had lived in America, to be clear. For her faults (she was extremely nationalistic, to a fault, and also probably a racist), she explained that I would be giving up one part of myself for another. Sure, you can be gay there, but you're going to be a minority in other ways. At the time, I was outraged. What a thing to say! If anything, I should be ashamed of being a member of the oppressive ethnic majority here in my own country! (I am! Still!)

    But it means that I am never really in fear of anything overt or covert back home. That many people trust people who look and sound like me. It also means that I don't really have anything to prove. I don't have to be particularly successful. can be a doctor lawyer engineer if I wanted to. If I wanted to, I can be anything I want to be back home. Or nothing, if I chose. There is no expectation riding on me to represent my community. My community is my society.

    Here, even if I feel like many of the struggles of the Asian-American community are not my own, I am starting to be subsumed by it. The things that live in my head: am I Chinese? Am I Southeast Asian? Am I (some very specific group of some ethnicity)? Are really just my struggles. I am reminded me the Singaporean Chinese people like me, who, unlike me, were actually victims of racial assault elsewhere. I am reminded of Vincent Chin, who was killed by people who were angry at perceived Japanese domination in the auto industry in Detroit, despite not being Japanese at all. I am reminded of the Chinese-Filipino Asian elder who was beat up, obviously, because he looked Chinese, even if they might not see themselves that way. I am reminded of all of the micro-aggressions of the ni-haoing crowd directed at all people who look like they should know the term and who sometimes face violence when they do not respond, even if they are Thai, Hmong, Vietnamese, Korean.

    Ultimately, we all play our bits in white supremacist structures that overtly support these acts of violence by calling them 'just a bad day'; that covertly support more acts of violence by playing down our grief. If you are grieving this week, and I say this particularly to the people who don't feel Asian enough, who don't feel Asian-American enough, to Black-Asian people who have to hold the grief of all of their communities at once, your grief is valid. I won't pretend there's a single imagined community here that will support all of your grief, but your grief and despair is valid and you can feel whatever you want to feel about any and all of it.

    We shouldn't have to be attacked for how we look or who we are; and we shouldn't have to minimize our grieving because of how our cultures are perceived, grossly and inaccurately, by the same people who are the cause of our grief.

    Maybe one day I will have more eloquent thoughts on this topic, but for now, this is it.

  • Travelogues, Ten Years On

    It was the summer of 2004.

    I don’t remember things like seasons before 2018 (I did not live somewhere with real seasons until 3 years ago). Unless they had to do with travel. In 2004, I was a college freshman in a school in Singapore that was also the only one at the time which followed American semesters, terminology, and that conferred you with things like summa cum laude when you graduated. Accordingly, we were also the only school that used things like, “summer”, “spring”, “fall”, “winter”.

    Summer of every year in college was glorious. I knew it at the time, probably, but maybe didn’t know exactly: all four summers would be the best days of my life. Just endless amounts of time to not-study, for I was not a very good student (my undiagnosed autism and ADHD then made it very difficult for me to stay engaged)), and unlimited amounts of time to really just do whatever the hell I wanted.

    Like many students in Singapore, it had always been an ambition of mine to study abroad. I wanted to live and study somewhere with... seasons. In hindsight, I probably just wanted the space and bandwidth to figure out things like ‘am I gay’, ’can I do certain things recreationally’, ‘is there a path beyond let’s marry some man at 25 and have babies and live in a HDB flat’, and I probably wanted those things more than I wanted to study abroad.

    The realities of a middle class life in Singapore set in quite quickly. The deal I struck with my folks was: ”If I stay and study in Singapore (the economically sensible thing), I guess I can... travel... regionally... with the tens of thousands of dollars that you’d be saving?” (They said yes, but that I still had to pay for those things myself. Years of studying amongst real-life Crazy Rich Asians did not leave me with a reasonable understanding of money.)

    Much later, some family friends remarked at Chinese New Year: Mr and Mrs Tan, isn’t it marvelous that you allowed your daughter the space to go out and see the world? To which, they laughed: there is no allowing or disallowing with her. She’s so strong-willed, our options with her have always been: ok do what you think is best. Just remember to tell us about it. As soon as you can.

    (Thanks mum, dad! If you’re familiar at all with Singapore, you’ll know that that’s... exceedingly rare. I feel extraordinarily lucky.)

    And so I worked two to three jobs all through college in order to fund that life. It helped that I loved a good deal so I made it my goal to get the best prices on everything. If I had $100 in my bank account that was me going off to a nearby country for two weeks. It also helped that I was fine with—perhaps even saw it as a teaching moment, or a story to be written about ten years later—that I really wasn’t bothered by things like creature comforts. I was also not bothered by creatures. $2 rooms in Kolkata and $5 beds in Bangkok. Those felt more free than the small bedroom in a high-rise building I grew up in. Now that I’m a little older, I know those felt liberating because those were different from the comforts I grew up with, that I could always return to. They were novelties. They were stories to tell.

    I hope I have better stories to tell now.

    —-

    In the summer of 2004, I woke up every morning and I got into a little boat. I paddled aimlessly. I tried not to knock my head with the oar. My ex, bless her soul, did most of the paddling. We walked around from bed to beach to estuary lazily with all the time in the world. Of college kids who had April to August to do whatever they wanted. Most of our peers were doing internships, chasing good jobs: I wanted to row boats badly and wear not too much clothing for as long as I could.

    The plan was hazy. We would get up from bed a few days from now, whenever we felt like it, and head for Cambodia. We would take several modes of transportation from the beach towards the mainland, where we would board a minibus for a town named Trat. Then we would find a motorbike taxi, and we would tell them to head to the border. There, we would disembark from the motorbike taxi, and then we would find a car, any car, headed for Phnom Penh. That trip involved an overnight stay in a small Cambodian town. We weren’t fazed by it, but we weren’t prepared either. Especially not with the minimal clothing that was the ethos of my travel at the time.

    On arriving in this small Cambodian border town, we checked in to a room in a wooden structure that had seen better days. Our budget was $2, so we couldn’t complain. As with all such huts in Southeast Asia, the highlight of the room was the dirty and dusty mosquito net. It’ll only be one night, I told myself.

    As we walked around the small Cambodian town the main people we saw who were not working in the hotels, who were not pedaling autorickshaws, were older men from a certain continent with clear persuasions of the nature that would lead them into criminal trouble back home. Being as sheltered as we were, we felt relatively carefree and perhaps even safe. After all, we were... almost 20. We were expired goods for the men who came to this town.

    As a person on the spectrum, the true nature of the things that I saw and the sticky situations that I may have been in only revealed themselves later when I was already detached from that moment. Ah, so that’s... what it was. I mention this because I have been frequently guilty of saying that I never ran into any trouble traveling solo; perhaps I was truly lucky. Perhaps I, as an autistic person who has a complete inability to read new social situations, just didn’t see what was right there. This episode comes back to me sometimes as I think of the leering men who said things to me like, I can no longer be with western women, they don’t know how to treat men and they are not attractive. At that time, I simply did not have the context. I certainly found it weird and strange, but today I would have the tools and the experience to have found... disgust, perhaps.

    That night was over relatively quickly. The next morning, we climbed into an old Toyota Camry that was bound for Phnom-Penh.

    Five other people climbed in.

    [To be continued..]

  • Life in Anxious HD

    Before I came to this country I led a very different life.

    My luggage was never unpacked. My passport was tethered to my body. My weeks often began with breakfasts in Yangon on Mondays and ended with drinks on Jakarta rooftop bars on Fridays. On weekends, I might retreat into a Balinese forest alone or return home.

    Home was one of Asia’s most expensive cities. At least, it was where I paid rent and where I have the largest number of relations of all kinds. Home didn’t feel like home since I was never home for more than three days at a time, from the moment I graduated from college. I could never buy a gym membership anywhere. I simply didn’t know where I would... be.

    My life here is quite different.

    I have not left my neighborhood much in the past year. The longest trips I have taken have been occasional bicycle trips across the Golden Gate Bridge, where I sometimes like to cycle to my favorite bakery and then put my bike on a bus home (just say no to the hills of Sausalito). So many people are writing stories about how other countries are doing pandemics differently. This is mine, except I stayed on and am in it for the long haul, fully cognizant of all of the ‘benefits’ I am missing out on.

    My friends are having brunch and cocktails back home and I know in my bones that would be me, if I was in Singapore right now, too. Because I am bougie like that and I know it.

    But I am not at brunch. I am huddled at home, like I have, every night this year. My dog is asleep next to me, farting ceaselessly. I have canceled all holiday plans. We are not going anywhere.

    During the work days, I work with a team of thirty something brilliant and kind individuals who, together, are trying to make a difference for the city we love during this difficult time. At nights, I put on an apron and trudge to an empty kitchen near my home to churn, literally, batch after batch of ice cream so that I can bring some joy to people in real time.

    It feels like exactly where I need to be.

    It wasn’t always an easy feeling, though. In conversations with therapists I have learned that the inability to make plans for the future, any future, is causing everyone all kinds of anxiety. For international folks like us with our lives strewn all over the world, it has been a special kind of logistical challenge. When will we ever see our families again? In all these countries?

    Back in March just before shelter-in-place came upon us, we already knew the extent of the damage of this virus from news from Asian cities. We semi-seriously considered waiting out the pandemic in Singapore, where a good healthcare system and mollycoddling levels of government support seemed like a good idea. From rumblings from an assortment of compatriots I gathered that nonstop flights might end from San Francisco; that if we went home now, things will be safe; that you really don’t want to be stuck here in this country with its impossible healthcare system and not have any help figuring out something so unprecedented.

    Occasionally, I dial in to Zoom conversations hosted for Singaporeans on the west coast. They always kick off these meetings by sharing latest stats. We marvel at the numbers. We laugh at the charts that are made showing how we have significantly less confidence in the American government’s handling of this pandemic compared to our own. We run through the numbers of how many of us have decided to weather it in Singapore or hunker down here in the Bay Area.

    Somehow, those of us with not entirely clean cut Singaporean lives are hunkering down. Our partners cannot return with us. Our children cannot. I continue to be frustrated by the inability to plan for the future in any form. So I churn more ice cream.

    If I were in Singapore, I would be at brunch. I would be checking in to all the locations I visit throughout the day with the app that every citizen has access to. I might be walking down a quiet residential street like my parents were when I called them a few days ago, and the biggest concern of my day might be that I paid too much ($5) for a bowl of fishball noodles.

    But before I get to brunch, I would have to find my way to Los Angeles, the closest city where I can still get on a plane home. I would only be able to board the Singapore Airlines plane if I had my bright red passport, which I do, but that my wife does not. On entering the plane, probably in business class (as I would have upgraded with the miles I have studiously collected over the years), I would sink into the leather seat and feel relieved when I am given a copy of the Straits Times by a person who can pronounce my last name the way it is supposed to be pronounced (Tanh, not tan as in what the President does to get his famous orange color). I would sleep for the entirety of the sixteen hours, because I sleep like the dead in both economy and business class (and at the back of a boat or upper bunk of a train). I would land and I would hear the familiar sounds of Singlish, Malay and Hokkien at the precise moment the plane doors open onto the aerobridge.

    Heat and Hokkien always hits me like a wave. I would scan my passport and then be whisked to a five star hotel where I would be strictly quarantined, before I can be released back into the world. Then, depending on the outcome of my tests, I would either be eating fishball noodles with my parents, or declared an ‘imported’ case by state media.

    I will not be at brunch for a long, long time.

    Instead, I have not cut my hair since January. My dog is so unused to being more than one foot from me that she now wanders to the bathroom if I am there for more than a minute. I am sequestered in my 300 square foot apartment that somehow has space for two humans, two animals, and all of our life’s possessions. My wife has bolted a fold down desk onto a wall. When either of us needs to use the bathroom, we flatten between the chair and the wall, sometimes without appropriate amounts of clothing (usually me). At various points of this pandemic, especially during the combination election and pandemic anxiety weeks, I plot and plan and figure out logistics. I carry bags of laundry to a laundromat at quiet hours, and wish I did research on how there are rarely any washers or dryers inside American apartments.

    That is my way of dealing with anxiety. I figure out logistics. Which is an activity that is, in itself, anxiety-inducing. But never mind. I write to the immigration departments of various Caribbean countries. I research golden visas in Taiwan. I look at Estonia. I do all of this first for the animals, and then for us. All the countries that require any amount of animal quarantine are crossed from the world map that is in my mind. So no UK, Australia, New Zealand, Singapore or Hong Kong. Immigration departments write back and I promise to pay them some time after November 4, 2020. I never do.

    I scan the news for information about 45’s latest immigration-busting moves. I realize, for the first time in a while, that we literally have nowhere else to go. I stay up until 7 in the morning to watch a needle tick in one direction or other in an election I cannot vote in. I dabble in more logistics, this time reading in other languages. Reading in my second and third languages will be less anxious, I tell myself, because I won’t understand all of it. It doesn’t work. I freak out again, just in other languages this time.

    Seventeen days ago I woke up with needles pointing in not so bad places. I ghost Carribbean immigration officers. My love story with ‘Murica continues. Another tragedy strikes. America crosses 12 million cases; yet more than a million people are expected to fly this week for a holiday that celebrates genocidal activities. 95% of my state is on a 10pm curfew. My city, which has high levels of mask compliance and some levels of official responsibility, might join the rest of the state very soon. Life goes on. All I know is life will not need to be in the Carribbean.

    The sun sets at 5pm and I turn on a ten thousand lumen lamp for several hours so I don’t get sad.

    From time to time, my wife and I wonder: what will our life be like in Singapore, right now? We think of our beautiful apartment in the forest there. We think of our many brunches. We think of chicken rice. But mostly, we think of how we will not have a life in Singapore at all.

    She wouldn’t be allowed in. Right now, because of the pandemic. But also always, because she won’t be allowed to be my wife.