On Friday, July 21, we left Portland around 8:30 am, arriving in Joseph at 2:30. We checked into the Kokanee Inn, which was a cozy, charming little place with a super friendly staff, a few common areas with books to borrow, and cold beer in the fridge. Our room was Denali-themed. We met a family visiting from Brussels.
We headed to Wallowa State Park at 4 for a show by Hunter Noack. He takes a grand piano out to remote locations and plays classical music. It’s a totally magical experience that’s such a contrast from experiencing that music in an auditorium. I really enjoy being able to walk around, explore the area, and be moved by the music in a way that’s not possible in a traditional concert setting. I highly recommend checking out one of his shows. Here’s the website with event info: https://www.inalandscape.org/.
After the show, we grabbed dinner in downtown Joseph and then settled in for an early night.
We woke up to some smoke, so we did some Googling to see if it was safe to hike and decided to go for it.
It was a hot 9-ish miles up to Ice Lake. We took several breaks along the way for our intrepid adventure husky, Loona, to cool off.
We got to Ice Lake around 4:30 and set up camp. We all took a quick dip in the lake (it lived up to its name!) and then got dinner going.
The bugs were horrendous. We all donned our long sleeves and pants but still got eaten alive anyway. I’m literally still itching bug bites as I type this two weeks later. I’d recommend bringing a bug net and some heavy deet if you go in July.
We played several rounds of The Mind, a fun, quick card game that Glenna and Robert had brought, and then called it a night.
The next morning, we woke up to a beautiful, smoke-free sunrise over the lake. We had a quick breakfast and then hiked back down.
We stopped for lunch at Terminal Gravity Brewing in Enterprise, a favorite spot in the area, and then headed back to Portland, catching a spectacular sunset over Mt. Hood on the way.
It was a great weekend, and I’m looking forward to going back to the Wallowas again soon.
]]>I booked a kayak tour for the morning. I ended up being the only one who booked, so I got a private tour. The guide was really personable and we talked for several hours. He had grown up in the area and had been kayaking the bay since he was a kid. I had so many questions about what life was like on the floating villages, and we talked about that for awhile. He pointed out the karsts that had names, one of which was Turtle Island, aptly named. We got pretty close to some of the oyster farms, which made me better appreciate the scale of the operation. They covered a huge area where they were set up. We stopped a couple times, once to pick up some wild oysters he said he was going to cook for his family, and another time at a karst with a small beach to take a quick dip in the water. He said he did both kayak and multi-day hiking tours, which seemed like a pretty strenuous line of work, but he said he really enjoyed it.
I put together this video of the kayak tour:
Back at Quiri, I grabbed a quick shower and checked out of the hotel. I’d decided to switched to staying at a hostel called Secret Garden because I liked the artsy aesthetic and I wanted to meet some people. The host at Quiri was super friendly and gave me a ride up the hill to the hostel with my luggage, which was a huge help. It was too close to justify calling a taxi, but just far enough away to be a pain in the ass to lug my stuff to.
After checking in, I read by the pool for a bit. I talked with a woman named Alina who was sitting next to me. She was from Holland and had just completed a rotation as a nurse in a neonatal unit in southern Vietnam. She was here on a 90-day visa and using up the last 30 days to explore.
In the late afternoon, Andy and I checked out Tung Thu Beach, a less crowded beach that was more popular with the locals than the one I’d been going to. On the walk over, we passed some people playing volleyball, which had apparently become really popular. I didn’t remember that from 23 years ago; back then, soccer seemed to have that level of popularity here. There were no lockers at this beach, but it wasn’t crowded. We piled our stuff on a small tarp Andy had brought and got in the water. The water ended up being pretty dirty, so we didn’t stay too long. Andy’s hostel was just up the road from mine, so we agreed to meet for happy hour after rinsing off.
Happy hour at Secret Garden was really chill. By 5 pm, probably a dozen people were hanging out at the tables drinking beer. Waiting for Andy to arrive, I started talking to two women, Maddie and Chelsea. They were both in their early 20s and solo-traveling through Vietnam. They mentioned that they’d connected on the Hostelworld app before arriving. As someone who usually stayed in hotels, I’d never heard of this chat feature of that app and thought it was brilliant. Great way to connect with fellow travelers before you arrive somewhere. I was also struck by the fact that so many women were solo-traveling here. I read later that Vietnam is one of the safest places in Southeast Asia, with violent crime being almost non-existent.
After Andy arrived, we all went to dinner at “Yummy 2” restaurant just down the road. It was a favorite of Andy and mine, and lived up to its name. Apparently there’s a Yummy 1 just up the road. I also had read some reviews of people getting food poisoning at Secret Garden, so I wanted to play it safe.
After dinner, we all split up to go to our separate hostels, as everyone else had early mornings.
I listened to the live music at Secret Garden for a bit, then turned in. I was just winding down,
brushing my teeth, when I noticed a couple massive, hairy legs sticking out from under the sink.
“Oh fuck me,” I said out loud. I slowly peeked under to find the biggest, scariest-looking spider I’d
ever seen. I don’t even have a problem with spiders. I usually put them in tupperware and set them free
when I find them in my house. But this thing was a monster. Now wide-awake, I started Googling everything I could.
I quickly assessed that it was a huntsman. Harmless to humans, but with a painful bite.
Still, I wasn’t keen on sharing a bathroom with it. I grabbed the hose from the shower and tried to spray the spider, but the water pressure was pathetic. The spider shook the water off its legs, crawled out from under the sink, made its way over to the toilet, and vanished behind it.
Well, fuck. I closed the bathroom door and tried to get some rest. I ended up sleeping really fitfully; it was hot in the room, I had to pee but didn’t dare, and my throat was scratchy. I woke up at 4 am with a full-blown cold to the sound of a rooster crowing. I gave up on getting back to sleep and read for a bit.
The spider had relocated to the ceiling in a corner opposite the toilet, so I felt safe peeing, at long last. I still watched it warily the whole time.
At noon, I caught the bus to Hanoi. I checked into the Scent Premium again because I’d liked it last time I was there. I spent the next couple days in Hanoi.
Some highlights:
I also visited Hoa Lo Prison, where John McCain was a POW during the war. That was a pretty fascinating experience. There were a bunch of exhibits of French brutality toward the Vietnamese and stories of heroic Vietnamese prison breaks. But when you get to the section on the Vietnam War, it’s totally whitewashed. They have a bunch of photos of POWs playing chess, smiling, and getting free medical care. It was pretty surreal. I’m pretty sure John McCain not being able to raise his arm above shoulder level wasn’t from a chess injury. But the whole thing got me questioning areas where Americans whitewash our museums and leave stuff out. Where I landed was that we really don’t talk much about Japanese Internment or how horrific it was that we used atomic weapons on civilians twice.
I thought about visiting Angkor Wat, but the forecast for the next several days showed extreme heat and lightning storms, so I decided to save that for another trip.
I flew back to Da Nang for my last few days in Vietnam. I booked a room at the M92 Hotel, which was just a few blocks from the beach. The first thing I did after I arrived was walk to the beach. I was blown away by how much Da Nang had changed since we were here in 2000. Back then, the beach was quiet and serene, sprinkled with fishing boats. Now, it felt like Vegas, with massive hotels and resorts lining the beach and crowds of people everywhere. I felt lucky to have experienced it before it had become so commercial. I walked down the beach for a bit, trying to spot anything that looked familiar. I Googled our old hotel, the Tourane, but nothing turned up. It seemed to be long gone. At one point, I thought I found a place that looked like where it used to be, but it was hard to tell.
My Khe Beach: Then and now
I woke up pretty early, had a light breakfast at the hotel, and then took a long walk on the beach. It was relatively quiet compared to the evening before; the massive crowds of people were gone. There was a corporate team-building retreat of some sort happening at the part of the beach where I entered from the road, which served as a useful landmark. Along the walk, I spotted a few jellyfish and starfish in the water and some fishermen setting up their boats for the day.
After getting back from the beach, I caught a taxi to the Linh Ung Pagoda. It features a massive statue of Lady Buddha (the tallest one in Vietnam) and I remembered seeing it from the beach as a kid and being curious about it. I’d also read that there were sometimes monkeys that roamed the grounds. When I got there, I spent maybe 20% of my time exploring the complex and 80% of the time watching the monkeys and people interacting.
The monkeys were incredibly bold and very comfortable with people. I watched them steal at least a dozen popsicles, often by running up and grabbing them out of people’s hands. This was by no means unwitting on the part of the people; many of them walked up with half-eaten popsicles in hand and laughed when the monkeys took them. The whole spectacle was simultaneously fascinating and sad. There were signs everywhere to not feed the animals, and the monkeys were probably horribly diabetic. I wished that they wouldn’t sell ice cream at all so close to the monkeys, and at the very least to have a security guard to enforce the rules. The trash cans were also completely open, and I also watched several monkeys raid those. For all of the things I love about Vietnam, they still don’t have a very good culture around how they treat animals. I know there are efforts being made to increase conservation, and I hope that continues to progress. I read and recommend this NYT article called Vietnam’s Empty Forests for more context on that.
On a funnier note, I was walking toward the temple entrance when I heard a loud slap on the ground. I glanced down just in time to see that a huge snake had fallen out of a tree and was slithering towards a boy. “Snake!” I yelled. The kid jumped like 3 feet in the air and the snake darted off under a trash can. Then we both looked at each other and busted up laughing.
I caught a cab to the orphanage where we had adopted Julie. Or at least I hoped it was still an orphanage. I had found a picture of an address in one of our old photos and looked it up. When I got there, I recognized it immediately. The entrance was blocked by a gate, however. I was so curious to see what it was like now and how it had changed, but I felt uncomfortable just walking in the gate even though it wasn’t locked. I tried calling the phone number listed on Google Maps. No answer. I noticed a doorbell and rang that. A very confused elderly woman at the house next door answered, clearly having just awoken from her nap. I apologized profusely. After a few minutes, I gave up and walked to a nearby Vietnam War-themed coffee shop. I still found it so strange that the war is used as an aesthetic in so many places here, given how brutal it was. I remembered what my dad had said about 2/3 of the current population being born after the war. Maybe that explains at least some of the phenomenon.
I caught a cab to the Han Market. It was very crowded, hot, and I was still fighting my cold, so I didn’t stay too long. I wandered around the area in search of banh mi. There seems to be a siesta culture to some degree here, where a lot of restaurants shut down during the heat of the day and reopen in the evenings, so I had kind of a hard time finding anything. Finally I stumbled across a couple who had a cart and ordered from them.
I wandered across the dragon bridge to walk off lunch. It was brutally hot out. I decided to just catch a Grab back to my hotel, crank the AC, and play Zelda for a few hours. I popped back out of the hotel around 7 pm to grab dinner. Thus far, I wasn’t very impressed with the food in Da Nang; it was mostly either fine dining and resorts, with not a lot of really good local spots that I was able to track down. I went to get pho at a place across the river near the dragon bridge. This was strategic, as it was a Sunday, when the bridge shuts down to breathe fire. Yes, you read that right. They bridge has giant flamethrowers and water hoses built in, and every week at 9 pm on Saturday and Sunday, hundreds of people gather to watch the dragon shoot fire and water.
It was delightfully quirky and exceeded even my high expectations. I stood probably 100 feet away and could still feel the intense heat of the flames. When it shot water, kids ran around in it. It felt like such a communal, unifying event for the city. It was basically a big block party. Even the boats on the river pull up near the bridge to view it. It made me wish that Portland had some kind of weekly event like this. Maybe really we just need to convert one of our 11 bridges into a dragon 🤷♂️🐲.
Afterwards, I wandered around the night market, which was also really entertaining. There was such a huge variety of things for sale, everything from selfie sticks to knockoff Legos to fresh seafood. One vendor was singing karaoke to promote her booth.
My hotel arranged a driver for Ba Na for early this morning. It was a 45-minute drive out to the cable car station through some beautiful lush jungle.
This place was a BLAST. I shared a cable car up with this really fun group of friends who were a mix of doctors and surgeons. They had gone to medical school together and were out here for the day. They said it was a two-hour drive to Ba Na from where they lived. They spoke very little English, but we got by with passing the translator app back and forth. I ended up spending the entire day with them.
Ba Na Hills is this amusement park that’s a mashup of Buddhism, Harry Potter, Disney, Jurassic Park, with a French Village thrown in there for good measure. It was as if someone with severe ADHD in a place with no copyright laws suddenly inherited a billion dollars, dropped some acid, and built a theme park in the jungle. And somehow it worked. It was incredibly entertaining and a highlight of the trip when I look back on it.
At the entrance, there’s this Instagram-famous bridge held up by Buddha hands.
]]>On today’s agenda was visiting Van Long, a nature reserve that’s home to a massive variety of wildlife, including the endangered Delacour’s langur, a species of monkey. The langur is critically endangered, with only about 250 left on the planet. A very lucky few tourists get to see them, so we were hoping to be among them but expecting not to be.
We knew it was going to be a hot day, so we got an early start. We woke up at 5:30 am and the driver picked us up at 6 sharp. This put us at Van Long slightly early. We hung out on the hammocks in front of the ticket office until they opened a little after 7. She got tickets and I ordered us some cold coffee from the shop next door. As we left for the dock, the woman at the coffee shop smiled and said, “Good luck monkeys!” We were hopeful.
The dock was a short walk up the road. Our boat driver was so kind and friendly, and the early morning water was placid and peaceful. We saw several species of birds flying by and fishing in the water. As we rounded a corner, about 20 minutes into the ride, our driver pointed at the trees in the distance and whispered, “Monkeys!” They were far enough away that we had trouble spotting them at first, but I gradually noticed movement in the trees. As we got closer, I saw the distinctive black and white fur of the langurs. There were three of them in this spot, playing in the trees. We were completely gobsmacked by how lucky we were to see them.
Shortly thereafter, we saw two more langurs on a cliff. And then another one on a different cliff. We couldn’t believe our luck! The driver also took us into a couple beautiful caves, and we saw a man heading out to fish for the day. It was a wonderful morning. We left a generous tip. We were so grateful for the experience and for his eagle eyes in spotting the monkeys, and we also hoped he would be able to take the rest of the day off; it was supposed to be another scorcher, and being on the boat would mean being exposed to the sun all day.
We spent the rest of the morning touring Bai Dinh Pagoda for four hours. It’s the largest Buddhist temple complex in Vietnam. It was a massive place. At the top of the pagoda, there was a pretty incredible view that gave us a sense of the scale of the complex. The mercury cracked 102 degrees while we were here, and we were dragging by the end of it. And then we realized we were super lost. It took us a few attempts to find the exit, and we had to take several shuttles and walk through two different gift shops to finally get there. We spent the rest of the day taking a dip in the hotel pool and soaking in the room’s AC.
Once things cooled off, we grabbed happy hour drinks in town, a short walk from our hotel. On the way, the sun was setting over the rice fields, which made for a beautiful scene. In town, there were several karaoke buses. We were half tempted to stay out late and visit one, but we had another early morning planned to get ahead of the heat.
We spent the day exploring Cuc Phuong National Park, which was about an hour and a half drive from Ninh Binh. A few highlights:
In the early afternoon, we caught a small tour bus to Hanoi, arriving around 5 pm. We checked into our hotel, a lovely, fancy place called Scent Premium in the heart of the Old Quarter. We spent some time wandering around the neighborhood. The traffic and crowds were a bit of a sensory overload from the relative quiet of Ninh Binh and Phong Nha where we’d spent the past week. We had dinner at a small restaurant in the Old Quarter, got a beer at Hanoi’s famous Bia Hoi (Beer Street), people-watched for a bit, then wandered back to the hotel. On the way back, I impulse-purchased a goofy banana-print outfit I’d seen several people wearing around Vietnam.
We booked a 3-day, 2-night cruise through a company called Dragon Legend. We’d done our homework and chosen that company because the reviews mentioned that their route was off the beaten path, and the boat was smaller than most of the others. This all bore out and we were really happy with our decision! The cruise was a highlight of the trip.
Coincidentally, some of the first people we met were a couple from Portland who had just gotten married in Hawaii and were on their honeymoon. The passengers were mostly couples, but there was one group of friends from Australia and a mom and her son from Florida. Everyone was super friendly and we had a great time getting to know each other over the course of the cruise.
The first day, we took a shuttle from Hanoi to Ha Long Bay. We boarded the boat around noon and they had a delicious lunch prepared for us. Naturally, I wore my ridiculous banana-print outfit all day. I wanted to go for maximal tourist aesthetic.
After lunch, they took us on a tour of a floating village, which included a tour of a pearl farm. I found the whole thing pretty fascinating. I couldn’t imagine living a majority of my life on the water with all the logistics involved; to name a few challenges: procuring fresh water, getting food and electricity, dealing with trash, taking care of a family, and so on. Yet, there was an entire thriving ecosystem to support the village. A large boat made the rounds every day with fresh water from the mainland. Some of the houses had solar panels. Others were close enough to the mainland to have electricity from power lines that had been strung underwater (and hopefully well-insulated). A floating market supplied villagers with clothing and other goods.
I didn’t journal very much for the rest of the cruise, as we were busy enjoying the experience, but here are some highlights:
After getting back to the mainland, we decided to relocate to Cat Ba Island. That had been on our radar as it had been recommended as a place with a bunch of caves and active outdoor activities. The cruise company dropped us off in the Haiphong area. We caught a taxi to the nearest dock that had boats to Cat Ba. Originally, we were going to wait for the ferry, but opted for a speedboat since that would shave off a couple hours of travel time. We shared a boat with this sweet Vietnamese family. The daughter, who was probably 12 years old, had an old-school digital camera and showed me some pictures of her hamster, who she described as “very lazy.” The boat dropped us off at the north end of the island. We shared a 45-minute taxi with the family to Cat Ba Town.
We checked into our hotel, the Quiri, and then wandered around the town for a bit.
]]>I started off the day with a Duo call with my family to recap and catch up after yesterday’s meeting with Julie’s birth family. We were all still pretty emotionally impacted by it, and talked over some of the new things we’d learned, like how Julie’s mom was herself adopted, how the family lived on a farm, and how Julie’s mom worked as a housekeeper. Julie seemed genuinely interested in visiting Vietnam someday, which I was happy to hear.
We had a delicious poolside breakfast at the hotel. Breakfast here consisted of a lot of fresh fruit, which I loved.
After breakfast, we walked to the old town in Hoi An. Our first stop was the “Man Emporium” tailor we’d stopped by last night. I picked up the shirts I ordered and damn, they fit great! I’d never had anything tailored before, because, well, I’m not a gazillionaire, and 10/10, would tailor again. I’ve never had a shirt fit so well. I decided to order a third shirt. Each shirt was $55, which was probably more expensive than I would’ve paid if I’d gone further into old town, but still a pittance in comparison to what I’ve paid for shirts in the US.
We grabbed some banh mi at Banh Mi Queen for lunch, which was delicious and light. Bao, our driver, took us to the My Son ruins, about an hour’s drive away. It would’ve been ideal to have a tour of them, but there just wasn’t time and we’d rather have seen them without that context than to not see them at all. It was a humbling place; seeing a once-thriving civilization reduced to ruins amid a lush jungle.
We saw ruins in group F that were devastated by bombs. I felt a sense of the arbitrary devastation of war. And a sense of impermanence. The jungle was slowly reclaiming the ruins. I wondered what the ruins would look like in 100 years, or 1,000.
There was a group of women there in beautiful blue dresses. They shared fruit with us as we waited for the shuttle. Two tiny kittens played. A thunderstorm rolled in with lightning and rain just as we were leaving. We were grateful for our timing.
Bao dropped us off a short walk away from the tailors so I could pick up my extra shirt.
We had a delicious dinner with some Hoi An specialty cuisines at a place that made the food right in front of us, then grabbed a beer from a street vendor right by the water on our walk back. We sat and watched the colorful boats go by for a while, then headed back to the hotel. It was a beautiful way to spend the last night in Hoi An.
Bao picked us up at 10:30 and drove us the 3 hours to Hue. I found myself unexpectedly tired and slept for most of the ride. We stopped at this beautiful fishing village called Lang Co to take a few photos.
Our hotel, the Hue River Villa, was tucked into this little alleyway and was right along the river. The people working there were so nice and helpful. They helped us get our luggage all the way from the street down the alleyway, and showed us a map with us of what to see here.
Overall, I wasn’t as much of a fan of Hue. It was the most in-your-face place we’d visited so far. Multiple people tried to sell us weed. They’ll pull right up on the sidewalk in front of you on their motorbikes and wave the baggie in your face. Every other person is trying to sell you a cyclo ride. Crossing the street was utter chaos and gave me a lot of anxiety at first. I gradually got used to it; you just have to be predictable, walk at a steady pace, and traffic will flow around you.
We went to Madam Thu’s for a late lunch and got a sampler platter of local foods, which was delicious (I feel like I’m overusing that word, but it’s accurate).
We visited a mall in the middle of town, which ended up being a pretty fascinating experience; the grocery store was full of foods I’d never seen before, and we bought a few snacks to try. One floor had an arcade, and it was really strange to see a Rambo game toward the front.
We were pretty exhausted from the trip and from a day of walking around, so we went back to the hotel around 7 and read for awhile.
We spent the day touring two mausoleums and the pagoda.
We got lunch at Cozy Cafe, which was indeed cozy and also delicious (there’s that word again). Our favorite part was the Hue rice cakes, which are a local specialty.
We were feeling a little mausoleum’ed out, so we took a short break after lunch and hung out at the hotel. Also the new Zelda game, Tears of the Kingdom, had just released, so I downloaded it and played that for an hour. It was a blast! I appreciated the creativity of the puzzles and open-ended way in which the game mechanics encouraged you to solve them.
We left our hotel to check out the citadel at 4:00. We thought it would be a 20-minute walk, but it took over 45 min. By the time we got there, it was dumping rain. We had the hardest time locating the entrance, and the rain got progressively heavier. By the time we found the entrance, we were soaked to the bone. We decided to just grab a taxi that got us back to our hotel in a few min.
We got showers and just hung out in the room, listening to the rain. At one point, I made a beer run from the fridge outside. The rain was so heavy that I accidentally ran back and let myself into the wrong room. I was quickly steered in the right direction by the surprised couple who were fortunately fully clothed and just hanging out in their room, too.
We found an umbrella and grabbed a late dinner from a restaurant around the corner. I hit a wall halfway through dinner; I was exhausted.
We caught a super early bus to Phong Nha. The Hue River Villa staff were so kind. They booked the bus for us, handled payment (bundling it in our bill), and made us an early breakfast to go so we could eat on the road.
Unbeknownst to us, it was a guided tour bus (we thought it would just be point-to-point transportation), which was actually great. It was helpful to learn more about the DMZ and the devastation wrought by the war.
We stopped at a Catholic Church, picking up some banh mi and iced coffee for lunch. A church service was in progress in the distance as we ate. Everyone was dressed in vividly-colored traditional clothes and singing. I found it fascinating seeing how Catholicism had taken on a distinctly Vietnamese flavor. Even the Virgin Mary and Jesus statues had a Buddhist aesthetic.
We arrived in Phong Nha around 11:30 and got lunch at the Treehouse Cafe. Long, the manager at the Phong Nha Farmstay, picked us up to drive the 10 min to the hotel.
Our room was huge, with two bathrooms, two hammocks, and a balcony on both sides, and featured a stunning view of the verdant rice fields.
We took a long bike ride around the rice fields on some of the hotel bikes. We crossed a bridge into a local neighborhood. It was so cute seeing all the kids running around playing.
Most of them said “hello” and waved. Some of them chimed, in a friendly, singsong intonation, “fuck you,” and then giggled. It cracked me up. They were clearly practicing the most important English words, haha.
Dinner at the hotel was the most expensive we’d had so far, but was so fresh and delicious. I ordered fish, which came with vermicelli noodles, grilled veggies, and rice paper. The traditional way of eating here is to roll the food up in the rice paper, along with some fresh herbs (usually mint). I was such a fan of that style of meal that I’ve continued to make it at least a couple times per week after I’ve returned to the US.
We watched an episode of Yellowjackets and then crashed around 8:30.
We’d booked a cave tour which we got up early for. The hotel had prepared omelets and coffee for us first thing.
Unfortunately, the tour bus never showed up. I hopped on a WhatsApp chat with Thao, their coordinator, and learned that they’d had an issue with their system yesterday and didn’t see that my payment had gone through, so we were never confirmed for the tour. They were able to rebooked us for the following day.
We arranged a private driver from the hotel to get us to Paradise Cave instead, which was also on our list to see here. It was stunning–A massive, ancient cavern with some really interesting rock formations. I wondered what it must’ve been like to have first discovered and explored it.
Afterward, we went on a hike at the Phong Nha Botanical Garden. It was a slightly cooler day, plus the hike was shaded, so it was a nice way to spend the afternoon. We even got a swim in under a waterfall in the park.
We woke up early and had breakfast at the hotel before being picked up by the tour company. Our Eurocentric group of spelunkers included people from France, the UK, Finland, Austria, and Switzerland; We were the only Americans.
On the way to the Oxalis office, we passed by a village full of “floating houses.” These are essentially small houses that are built on top of barrels and tethered to poles. This area floods heavily every year, so people stash their possessions in the houses, migrate to the mountains during the rainy season, and then return to their houses when the floodwaters recede. I found this such a fascinating way to live. A life of extremes, of constant change and adaptation. Of being in rhythm with the natural cycles of the seasons, rather than fighting against them.
Before entering the cave, we were asked to wear long-sleeved shirts to protect ourselves from stinging plants. Apparently Vietnam has some pretty gnarly variants of poison ivy. Having had a previous exposure to that, I was not in a hurry to repeat the experience. I showed up in a short-sleeved tee but was able to buy a long-sleeved high-viz shirt from the tour company for $16. The punishingly hot and humid weather made the hike to the cave entrance challenging, but we took frequent water breaks and had access to water filters if needed.
The cave itself was breathtaking. It’s part of a massive network of caves that was only recently discovered and is still being mapped out. We walked about 300m into the cave, passing several pretty otherworldly rock formations. We eventually arrived at an underground river. They had us turn our headlamps off and do a short meditation session in total darkness. It reminded me of sensory deprivation tanks, which I’ve always wanted to try.
After the cave, we hiked to a camp in the jungle where we were treated to a filling lunch of banh mi, veggie rolls, and watermelon. The camp was impressive, complete with composting toilets and changing rooms. During the rainy season, the whole thing is torn down and stashed away.
We also got a refreshing swim in the river near the camp before making our way back. The hike back was still brutally humid, with a lot of elevation, and I was soaked with sweat by the time we reached the van. Thankfully, they had cold beers waiting for us. We did a Vietnamese cheers to a successful day of caving.
“Mot, Hai, Ba, Yo!” (One, two, three, cheers!)
Overall, the Hang Tien cave adventure was an unforgettable experience. The unique rock formations and scenery, coupled with the challenging hike and refreshing swim, made for a great day. It was easy to make conversation with others on the tour, and the guides were hilarious.
10/10, would Hang Tien again.
Here’s a YouTube video I put together of it:
After getting back from the cave tour, we booked an overnight bus to Hanoi via our hotel.
I was a little curious about this bus, so I started reading up on the company that ran it and pretty quickly realized that I was feeling horrified to get on it. The reviews were mostly 1-star, mentioning people being yelled at, cockroaches running around everywhere, bathrooms that didn’t work, and some aggressive driving.
By sheer luck, there were a few women from India who were also departing the hotel that night and waiting in the lobby. I asked them what their plan was, and they mentioned that they were taking the sleeper train. We decided to join them. Around midnight, we shared a taxi to Dong Hoi and boarded the train.
Long story short, our night on the sleeper train was pretty comically bad. We had the hardest time even locating the car we were supposed to be in. When we opened the door, we discovered that there were already two people in the lower bunks who had four cats in small cat backpacks who were super not happy we were there and meowed off and on through the night. The AC wasn’t working, so it was hot and stuffy, and the cat dander was just floating around in the air. I have pretty bad cat allergies, and they immediately flared up.
We weren’t sure where to put our luggage, so we crammed it under the beds and table. We quickly noticed that the car was full of cockroaches. At some point during the night, the AC did kick in, and I somehow managed to sleep almost five hours.
Definitely if I ever take another sleeper car, I’d probably just book the whole car to have some privacy. But it makes for a funny story. Like, it was such a bad experience that it was funny even in the moment.
We weren’t totally sure where to get off the train, but I had cell service so I just kept watching the map as we approached Ninh Binh. We got off and left the train station, bleary-eyed and blinded by the bright sunlight. We were about to book a Grab taxi, but found this really kind taxi driver in front of the train station and booked a ride with him.
At the hotel, we unpacked, did laundry, and made plans for the day.
We caught a Grab to Hang Mua and hiked to the top. It was a brutally hot, 98-degree day with 80% humidity. We stopped probably every 10 steps on the climb up the mountain. The view from the top was worth it, though. A pretty stunning view of the surrounding area and the river.
We went to Trung Tuyet restaurant for lunch. It was this really charming, small family restaurant with the sweetest woman running it. We were the only ones there, and lunch was delicious.
]]>I was so prepared for this trip. In February, I applied for and got my visa, booked my flights, made a rough itinerary, and booked a few days in a hotel. What could go wrong?
I had an uneventful flight to LAX, grabbed dinner there, then leisurely made my way to the gate.
“Passport and visa, please,” the gate agent said. I handed them over. She looked at them for a moment, then a puzzled expression came over her face. She pulled a coworker over and asked him something quietly. He looked at my documents, and nodded in agreement.
“Your birthday doesn’t match your passport,” she said. She showed me.
Vietnam, like much of the rest of the world, uses the day-month-year format for dates. I recalled vaguely using autofill to fill out many of the fields in the application.
“Oh,” I said. “Well, they can just correct that when I get there, right?”
She shook her head. “We need to correct it before you get on.”
I found out later that it was strict China Airlines policy to not deliver a passenger to a destination where they would be denied entry. The agent told me to sit while they called Vietnam immigration.
I sat for about 20 minutes, and then the agent came back. “It was denied,” she said. “We pulled your bags for you.”
I felt like I got hit by a ton of bricks. This couldn’t be possible. Completely frazzled and frustrated, I walked out into the midnight Los Angeles air, not sure even where I was going to stay. I caught a Lyft to the nearest cheap hotel I could find. I tried to sleep but my brain was still going full-tilt. I finally managed to get in a few hours of tossing and turning before rising again.
The next day was a blur. I canceled all my flights and was able to recover half the cost. I tried applying for a new visa on my phone but the Vietnamese immigration website was broken on my phone, so I hauled my luggage to the Inglewood Library half a mile away. The security guards were really confused, but I explained my situation and they helped me get a temporary library card so I could apply for a new visa on one of the computers. I knew it could take up to a week to get the visa issued, so I came up with an alternative plan to fly to Taiwan in the interim, because there were no visa requirements.
I booked a flight there for the next morning which had an 18-hour layover in Tokyo. I knew the Vietnam visa turnaround would be slow, so I had some time to kill and thought it would be fun to visit Japan again. I got a hotel near the airport so I could get there early. Feeling a small sense of relief that I had salvaged some of the wreckage that was now my trip, I grabbed a few beers at the hotel bar and looked at things to do in Taiwan. I crawled into bed pretty early. As I drifted off, I felt grateful for everyone who had helped me today–from the library security guards who got me the library card to the guy at the hotel who upgraded my room for free. I slept like a rock.
The flight to Japan was about 10 hours. It was during the day, so I didn’t get much sleep. I mostly read and played Advance Wars on my Switch.
I landed in Haneda. Japan’s quarantine before customs was pretty impressive. They had this carpet that disinfects your shoes, and a pretty sophisticated thermal camera system to detect anyone running a fever. While in line for customs, I ran into a dad who was wearing a Bend, Oregon shirt. I chatted with the family briefly and explained that I grew up there. Small world.
I found a tiny, cheap hotel off of the first train stop from the airport and checked in there. I spent the evening wandering around Akihabara, aka the “Electric Town” and one of my favorite areas when I’d last visited in 2005. It was fun walking through all of the arcades there. I stumbled across this drumming game that I’d played a bunch with my host family on my trip in 2003, which I was surprised to see. There seemed to be several multiplayer games that people would play on banks of computers right next to each other. A few of the gamers had their phones on tripods and were streaming themselves playing.
I had dinner at a sushi train restaurant. Afterward, I grabbed some green tea ice cream, a favorite treat. I was struck, especially having come from the particularly dirty city of Portland, by how Tokyo seemed to simultaneously have zero public trash cans and zero trash. I Googled it and discovered that this had been a change due to the 1995 sarin gas attacks on the Tokyo subway. Apparently people are just really good about carrying their trash with them until they get home. The respect and consideration of the Japanese for their surroundings never ceases to amaze me.
I was tempted to visit a maid cafe, a staple of Akihabara, for the novelty of it, but ran out of time, alas. Next time, Tokyo. I managed to sleep about 6 hours, which is about what I expected, given the jetlag. I grabbed a surprisingly delicious breakfast at the hotel before heading back to the airport.
I landed in Taipei around 11:30 am. I originally planned to stash my luggage somewhere and hunt for a hotel, but saw that the lockers cost 80 dollars. I learned, to my slight embarrassment, shortly thereafter that Taiwan’s currency is also called the dollar and is much less valuable than the US dollar. I found a cheap hotel about half a mile away and set off for it on foot with all my stuff. I felt completely ignorant and lost. I knew nothing about Taiwan. I wasn’t even sure what the rules were for crosswalks. It was muggy as hell. My brain felt foggy from the jetlag.
I stashed my stuff at the hotel and set off to explore. One of the first things I noticed was how many museums Taipei had. I thought the Stock Museum sounded particularly interesting. English-language tours had to be booked in advance, but they were nice enough to give me a private tour on the spot. It actually ended up being really fascinating learning about Taiwan’s economic development and how it had become a manufacturing powerhouse. I was glad that I’d visited that museum first.
I spent the next few days exploring Taipei while waiting for my visa to get processed. Some highlights:
I ran into someone who had the same visa issues I’d had with Vietnam, and they pointed me to a private company which expedites visas that had helped them sort it out. I’d seen things along these lines on Google, but it always struck me as a scam. But having this validation from someone else, I decided to give it a shot. I paid $300 for the expedited visa and was immediately contacted by an employee there. I was so grateful for this, as it had been nearly impossible to get ahold of anyone at Vietnam immigration. They promised to have my visa processed by the next business day. I was so relieved and immediately booked a budget flight with Tigerair to Da Nang.
Getting on the flight ended up being a headache. They needed my visa printed, so I ran down the escalator to 7/11 and struggled to get the printer to work. It was completely in Chinese with no English option. Finally got it with help from a cashier. Then, my luggage ended up being over the weight limit, resulting in a $150 fee on a $200 flight. I was hemorrhaging so much money by this point to just fucking get to Vietnam that I just shrugged exasperatedly and paid it. Then they needed return flights booked, so I hurriedly booked those. The transaction ended up going through twice on my phone. I got it refunded later, but yeah, headache.
I landed in Da Nang at 5:30 pm and caught a ride to Hoi An. It was a relaxing, 45-minute drive down there. I spent the evening wandering around the beautiful, lantern-lit Hoi An waterfront and ate some delicious street food for dinner.
The next morning, my driver Bao took me up to Da Nang and I met with Julie’s birth family. It was an incredibly emotional, loving, meaningful time with them, one that I’ll remember the rest of my life. I was able to set up a FaceTime call with Julie. This was the first time she had seen her mom since she was 18 months old. We learned during this conversation that her mother lived on some farmland about 45 minutes’ drive from Da Nang. She kept chickens. As a child, her mother struggled with mental illness, and she herself had been adopted by her aunt and uncle. The farmland she lived on belonged to them.
I spent the afternoon exploring Marble Mountain, a favorite spot from my last visit to Vietnam. One of the things I remembered most starkly was climbing all of the stairs to get to the temples. Funnily enough, they had built an elevator in 2011. It totally felt like cheating, so I took the stairs.
I grabbed drinks in Hoi An that evening. Afterward, I wandered around more of the shops in the old town. I stumbled across a shop called the “Man Emporium” that had some good-looking tailored clothing. I ordered two shirts.
]]>I’ve got a huge mix of thoughts swirling in my brain about the trip. Firstly, I’m incredibly excited to explore the central and northern part of the country. Our trip in 2000 was more abbreviated by necessity, and we were somewhat limited in our activities with a new toddler in tow. We primarily visited Da Nang and Ho Chi Minh City (formerly Saigon). Hoi An was my favorite place we visited on a day trip, and I remember wanting more time there. I’m going to spend the better part of a week there and visit the Mỹ Sơn ruins that date from the Champa Kingdom in the 4th century. We’re also very much looking forward to taking boats around Ha Long Bay.
I reached out to the adoption agency to try to make contact with Julie’s birth mother while I’m there. It’s always been a mystery to us who she is and what her life has been like. There are no guarantees that we’ll be able to get in touch, but I wanted to make a best effort. I know Julie has a lot of complex feelings about the adoption, so I checked in with her first, and am being conscientious about the level of engagement she wants in the process.
My dad recommended several books to me on the subject of adoption, which I’ve been reading in advance of the trip. My favorite has been Somewhere Sisters by Erika Hayasaki. She captures so many of the complexities of the adoption experience and provides a lot of history of the politics of Vietnamese/American adoption. The Harvard Book Store recently hosted an insightful conversation with her and sociologist Indigo Willing that I also recommend. On that topic, it’s an especially interesting time with domestic politics so focused on abortion. The right side of the political spectrum views adoption as a solution to the debate, when in reality it’s much, much more complicated than that.
Geopolitically, it’s a pretty turbulent time to visit SE Asia. North Korea keeps hurling ballistic missiles off the peninsula, China/Taiwan tensions are probably the highest they’ve ever been, and wildfires in Burma, Thailand, and Laos have given the region some of the worst air on the planet the past two months. If I’ve learned anything after three years of pandemic/inflation/supply chain snarls, it’s that you can’t take travel for granted anymore. So even with a sprinkle of trepidation from perpetually overconsuming the news, I’m grateful to be able to make the trip.
]]>Along the way, with AI at maximum hype this year, I’ve wondered if it were possible to use it to upscale the footage to 4k.
Indeed it is!
Here’s an example of some old interlaced 480p footage on the left, with a processed frame on the right.
I rendered this using Topaz Labs AI. After doing a bit of research, the options for using AI to enhance your videos boil down to:
I initially downloaded the trial of Topaz, but they have this watermark they throw over your footage, so I didn’t feel like I could tell how it was performing. I took the plunge and spent the money on it, because they offer a 30-day return policy. I ended up being really impressed with it.
Okay, so you shelled out the money for Topaz. Now what?
The best place to start is with the models. Topaz provides these pre-trained models for enhancing your footage:
They also have some frame-interpolation models:
There’s also a non-AI film grain option. I found that adding a little bit of grain helped make my upscaled footage look more natural. Without it, sometimes footage would look a little too much like a painting.
My version (v3.2.0) doesn’t allow manually picking the models, which I notice that earlier versions did. Instead, it seems more focused on the use-case first, and then it picks the model for you. I wish I had the option for more manual control, or chaining the models together in a pipeline, but there’s not a way to do that as far as I’m aware.
The footage I’m working with is interlaced 480p NTSC. I found the best results using these options:
Note that yours may be different, depending on the input encoding and resolution! Do some experimenting and find out what works best for you. Topaz has a “preview” option for quickly rendering a small amount of your video so you can get a sense for the output.
I’ve been really impressed with Topaz, overall. I’ve got an aging 2015 iMac that buckles under the load of rendering any clips longer than a couple minutes. I’d like to see if I can spin up an EC2 instance with a beefed-up GPU to see how quickly I can render clips with it.
Some additional reading:
]]>Nota bene: In reading IntelliJ docs for this post, they refer to the “caret” to mean the blinking line in a text editor. In all my years in software, I’ve always called it a “cursor.” I realize now that I’ve been misinformed. According to this wiki entry on interfaces:
The cursor is the graphical image that represents the mouse. It can either be an arrow for pointing, a hand, an hourglass, or an I-shaped text selector. The caret, on the other hand, is the blinking object that is used to enter text.
So I’ll be calling it a caret here.
This seems like a logical place to start. Say you’ve got a few lines of text, and you want to quickly make a change to them. e.g. maybe you want to paste in a word at a fixed point on all of the lines.
You can hold alt
and drag your mouse to put a cursor on each line you want to make changes to.
To uppercase or lowercase your selection, use ⌘ + shift + u
.
On macOS, you can expand the scope of your selection with ⌘ + w
. I can’t tell you how many
times I’ve manually selected a method and didn’t grab the correct number of closing brackets,
so this is one that I’ll be making much more use of now that I’m aware of the hotkey for it.
Note that if that hotkey doesn’t work for you or if you ever forget the hotkey,
the feature is called extend selection
and you can look it up by that name
in the Actions menu (⌘ + shift + a
on macOS).
As far as I can tell, there’s not a way to do this out-of-the-box in IntelliJ, but there is a plugin for it called Lines Sorter Plus.
Once installed, it can be invoked via the Edit
menu or by alt + shift + l
.
IntelliJ has this handy feature called Live Templates, which allow you to type out an abbreviation and the IDE will expand it for you. Live Templates are context-aware, so the same abbreviation can be configured to work differently depending on which type of file it’s used in.
Live Templates support variables, and have expressions that can be used for their defaults.
For example, on this site, I have a CDN for images so I don’t keep those in version control. I store the images by the date of the post, and often end up repeating typing the date when I’m writing a post. Let’s automate that.
First, I’ll create a Live Template with variables.
Next, I’ll add date expressions to default those variables.
Et voila. When I expand that text, those are automatically filled in.
]]>Fast-forward 22 years, and I returned home from a trip to visit my family with that camera and several boxes full of tapes. Thus began my journey into digitizing them.
I was surprised to find that MiniDV players are really difficult to come by these days. I was hoping to find a machine that could play back several of them in parallel, so I could capture multiple streams at once and speed up the process, but no dice. The ones I did find were on the order of $300-$500 and could only play a single tape at a time.
Luckily, the camera’s tape deck still worked for playback, so I didn’t need to solve that problem (for now, anyway. Time will tell if the tape heads hold up for the duration of this project 🤞🏼️).
The camera had a 4-pin Firewire 400 connection for output. I ultimately needed to connect that to my 2015 iMac, which takes either USB or Thunderbolt 2 as input.
In subsequent years, before the whole Firewall interface was scrapped, Firewire 800 was introduced as the successor to 400. Luckily, it’s backwards-compatible with 400. So I realized I’d need to convert from Firewire 400 to 800 to Thunderbolt 2.
The cables and adapters I went with:
I was able to find all the cables and converters I needed from B&H.
As the process progressed, I realized that the tape heads would get dirty after digitizing 10-20 tapes, resulting in video artifacts and the hardware making squeaking noises as it played back tapes. I was grateful to find that I still have a DV head cleaner. I definitely recommend having one handy. I see a few of them available on eBay for $10-$30.
It’s easy to clean the heads; just pop it in like any other tape and press play for 10 seconds.
This is where things got a little hairy. I was able to get the camera connected to the computer fine, and even could see a video feed via Quicktime. Unfortunately, Quicktime kept pausing recording if there were any gaps on the tape. I tried capturing via Premiere and, while it could control the camera, there was no video output or a way to record it. I subsequently discovered that Premiere just doesn’t support MiniDV at all anymore, as of January 2022.
I was able to get iMovie to capture video, but there was no audio.
🤦🏼♂️️
Then I stumbled across this post by Léo Bernard, who solved a similar problem using a set of open-source tools. In particular:
And this worked for me! Both video and audio are now capturing ✅️. The one downside to these tools is that neither of them has a GUI, so they require some terminal commands. If you’re comfortable with that, though, the capture process was pretty straightforward.
For posterity, the commands to set up those tools are:
brew tap amiaopensource/amiaos
brew tap mediaarea/homebrew-mediaarea
brew install ffmpegdecklink dvrescue mediainfo
brew link --force ffmpegdecklink
To use them, list the input devices with:
ffmpeg -f avfoundation -list_devices true -i ""
In my case, I found that the camera was called FV20
.
Then, capture the raw DV footage with:
ffmpeg-dl -f avfoundation -capture_raw_data true -i "FV20" -c copy -map 0 -f rawvideo video.dv
I’ve found that an hour of raw DV footage uses up 12-14GB. I’m thinking that I probably won’t re-encode it for storage, as I’ve got plenty of room on my NAS. I’ve got on the order of about 100 tapes to capture, so at worst, that’s 1TB.
There also might be a valid use case for having it raw down the road. I’ve heard of some AI video processors that can upscale footage to 1080p, for example. So I’m intentionally erring on the side of storing more data.
To split the raw footage into clips, use:
dvpackager -e mov -s video.dv
I also found Léo Bernard’s script for prepending dates to the filenames really useful:
for f in *.mov
do
DATE=$(mediainfo --Output="General;%Recorded_Date%" "$f" | cut -c1-19)
SAFE_DATE=$(echo "$DATE" | sed -e 's/://g' -e 's/ /_/g')
mv "$f" "$SAFE_DATE"_"$f"
done
Some of the raw DV clips, even after being split up, ended up being on the order of 5-10 GB. I mentioned earlier that I didn’t mind storing them on disk like this, but uploading many files of that size to Google Photos would take a long time and burn quota there. For smaller files, I didn’t bother, but for larger ones, I decided to encode them.
I’ve been a Handbrake user for many years and decided to use that. Under the hood, it runs ffmpeg, but having the GUI is nice, and you can queue things up for batch processing.
I used its 480p30 fast encoder for my footage. This compressed a 2GB file down to 246MB without a visible loss in quality.
Here’s what I’m using for video settings. Peak framerate doesn’t really matter; it allows you to have an input video source with a mix of different framerates, but mine is 30FPS. I have that set because it’s the default and maximizes compatibility.
RF is short for “Constant Rate Factor,” and is essentially a measure of video quality. Handbrake recommends an RF of 18-22 for 480p video, so I set mine to 22.
Update, 3/17/23: I noticed that my Handbrake output files didn’t have the correct metadata. I looked into it and that checkbox is misleading; Handbrake doesn’t support passing through video recording date and there’s an open ticket to handle this.
I’m not an expert in video metadata, but, in any case, Google Photos isn’t correctly sorting my Handbrake-encoded files. I’m going to look into how viable this is with just ffmpeg directly.
]]>The process of digitizing thousands of old family photos involved using up several hundred more gigs of storage space, and prompted me to rethink my family’s backup strategy.
To give you a picture of my family’s IT footprint, we’re all Apple; I’ve got an iMac, my parents have an iMac and a MacBook Pro, and my sister has a MacBook Air. Our aggregate data footprint is just shy of 3TB.
Up until this year, I’d only had Time Machine backups on my and my parents’ iMacs, and then all of our computers backed up to Backblaze for cloud backups. Backblaze was great; the setup was easy and the service was reliable, it just became hard to justify paying $280/year for cloud backups when cloud storage is so cheap. On AWS Glacier, for example, we could store all of that for under $3/month, and Amazon is constantly sending me surveys in exchange for AWS credits.
$100 for a 10-minute survey? Why yes, thank you, Mr. Bezos
So essentially the problems with our strategy were:
I bought Synology NASes for myself and my parents. I picked up the 2-bay DS220+ for my parents and the 4-bay DS923+ for myself. They’re a little more expensive than entry-level NASes, but I chose them because they’re very easy to set up, and have a GUI with an app store for installing packages, like Tailscale and Glacier backups.
I bought 5x 8TB WD Red Plus drives, which gave my parents’ NAS 8TB and mine 16TB, with the Synology Hybrid RAID (SHR) configuration. I chose the WD Red Pluses because they’re able to spin down when idle to save power.
Next, I needed a client to actually do the backups. I tried out a few different backup clients, and I liked Arq the best. I set up all of our computers to do hourly backups to our respective Synology boxes, and to do daily backups to AWS Glacier Deep Archive. Arq’s backups are incremental, and you can configure them to go as far back as you want. I set ours up to store daily backups for the last 30 days, weekly for the last 8 weeks, and monthly for 6 months. Probably overkill, but hey, storage is cheap. I also added some shared network folders on the Synology boxes so we could share data between multiple computers. I set up the Synology boxes to do a daily backup of those to AWS as well.
The upside of using Glacier Deep Archive is that it’s extremely cheap to store data on it, at $0.00099 per GB at the time of this writing. The downside is that they charge for ingress and egress, so you pay a little more upfront and in the event of an emergency. That tradeoff was fine with me, as this is intended to be for emergency data recovery and is redundant to the Synology backups.
If one of our houses burns down, we’ll probably be occupied with more important things and can spring for the slower retrieval pricing from Glacier.
Overall, our costs were:
But I expect these to last 7-10 years. So that upfront cost of $1,250 with minimal monthly costs on AWS is significantly less than we’d pay for Backblaze over that time. And it gives us redundant local backups for as many new computers as we might acquire during that time.
Originally, I thought I could put all of our computers on a Tailscale VPN and then share a folder from my NAS with my parents and sister but this was slooooow. Home upload speeds in 2023 are still pretty throttled (even on gigabit, I only get about 50Mb/s).
So I opted to instead sync files between our NASes. This way, we could each access the files quickly, and any changes on either end would eventually sync. Resilio sync fit the bill really nicely, and they already had a package for Synology. As icing on the cake, they have an iPhone app that I can also use to download any files from there. This made it really trivial to share our family photos as raw files between locations.
Though it sounds like a Harry Potter spell, Resilio is actually a peer-to-peer service which syncs files between devices. Which I think is pretty magical.
I still need to figure out a better workflow for photos. Right now, I have photos in Google Photos, iCloud, and a bunch of raw files on the NASes. If I wanted to migrate to a different photo service, it would be a huge pain, as I’ve made some metadata changes in each one. So I’d like to unify that more, now that I have the storage to keep all of those offline. But that’ll be a story for another post 😄️.
]]>