Archive: August, 2025

I don't care for "personality media"

posted by Jeff | Saturday, August 30, 2025, 2:15 PM | comments: 0

Yesterday, Diana and I went to Epcot for lunch, as our favorite time of year, the Food & Wine Festival, has started. It was crazy busy, which I would expect later in the day, but not at lunch time. It was also hot, in a gross way, so we didn't stay very long. We started in the Odyssey building, where in recent years they've had wings and beers and ciders. I had the plant-based "chicken," which was meh but in a great sauce, and a cider flight. There weren't a lot of tables, but Diana found one, giving us a chance to sit and look through the passport for other things we wanted to try over the next few months.

I notice there's a guy leaning over a table next to me, and I hear him talking with his phone propped up on the table. I assumed that he was just video calling someone, but on second glance, I realized that the only thing on the phone was him, and with the red icon, it appeared that he was live streaming himself. Eating. I desperately wanted to know how many people were interested in watching a guy eat by himself at a theme park. I'm sure it's a non-zero number, which is enough to make me kind of sad.

The Internet is an amazing, potentially democratizing technology, because it evens the playfield in being able to make things and share them widely. It's true for everything from selling stuff to distributing a feature film. It does frustrate me that so much of this is now dominated by platforms, but as someone who was able to pay their mortgage for years in the pre-platform era, with an unreal amount of advertising revenue potential, I can say first hand that at least the same pipes connect any person with anything out there. That's powerful.

The guy live streaming lunch wasn't hurting anyone, I know that. The loads of ephemeral "content" (the word used for anything that isn't art, journalism or something else useful) is mostly harmless, unless you consider the growing inability of people to go a minute without doomscrolling harmful. What bothers me is the two-sided economy of people who think that they're interesting enough to broadcast and the people who want to spend a lot of time watching it. And while there are some number of people who benefit from this, mostly it gives free stuff to the platforms to surround by advertising. It seems like attention whoring, and that's icky.

When I bought my first semi-pro video camera, I was intent on telling stories, but not my stories. The world is filled with fascinating people and situations that have nothing to do with me. In the cases that I've turned the camera around on me, it seems pretty boring. But this "personality media," for lack of a better term, dominates not just the Internet, but much of linear cable TV. Again, it seems like attention whoring, which lacks humility, curiosity and empathy. Aren't we missing a lot of that already, in our society?

Fortunately there are a lot of bright spots. The makers, science educators and tech enthusiasts that I watch put out a lot of great video, and those are not "content creators." They're inventors, teachers and journalists. Many of them host what they do, but they tend to be interesting personalities, and they're mostly telling stories. I wish that more people would aspire to that level, exercising humility, curiosity and empathy. What we don't need is another dude screaming at his phone telling us he's our boy doing some shit that everyone will forget in minutes.


The people who fear rainbows

posted by Jeff | Tuesday, August 26, 2025, 5:30 PM | comments: 0

On June 12, 2016, a man entered the Pulse nightclub on Orange Ave. here in Orlando, and killed 49 people, while injuring 53 more before he was killed by police. I would imagine that this horrified most Americans, but it was extra real and frightening if you lived here. It was the first time I ever scoured Facebook for the "marked safe" posts from friends. It was the worst mass-shooting in American history until the Vegas shooting the next year.

The community came together in extraordinary numbers in the days after. A makeshift memorial popped up in front of the Dr. Phillips Center, and the first of several vigils was held there. An estimated 50,000 people showed up for another around Lake Eola, where the bandshell was eventually painted rainbow colors. The massacre was extra hard on the LGBTQ and Latino communities, as one would expect. The Tony Awards had a very somber tone, as it felt strange to celebrate art (Hamilton, no less) after a tragedy of that scale. I imagine that most of the country moved on in the coming weeks, but locally, I'm not sure if the edges will ever be dulled. Anecdotally, it seems like everyone here was not more than a degree or two away from a victim.

Over the years, there has been a lot of talk about a permanent memorial, a foundation that has since disbanded and debates among community leaders and government about what to build. The club and its distinctive sign are still there, and there's a continuous cycle of notes, flowers and such left there. There's also a crosswalk painted with rainbow colors. Somehow, this has become a controversial issue.

Last week, the Florida DOT came in the middle of the night and painted over the rainbow. This was apparently by order of the governor, who said that roads couldn't be "commandeered for political purposes." Unsurprisingly, people came out and chalk painted over the crosswalk. Eventually some people painted over it, and FDOT painted over it again.

One could argue that if the law prohibits the markings, then that's the law. It wouldn't be the first stupid thing that the state spent time and money on. But when Desantis insists that it's a "political purpose," what does that mean? Is remembering 49 people who were gunned down political? If it is, then virtually every memorial everywhere is political. Is spreading messages of love and kindness political? Only if you're a sociopathic asshole, I suppose.

In these stupid culture wars that are designed to demean and threaten people, not to mention distract you from actual problems, there's a subculture of people who appear to fear rainbows. You know, the things that every kid first draws with their first box of crayons. They live in a bizarre world of their own, where they truly believe that queer people somehow pose a threat to them, and even more ridiculously, are trying to recruit people into their "lifestyle" (with rainbows!). There are a lot of levels of willful stupidity to unpack there, but to paraphrase Yoda, fear, anger and hate lead to suffering, and it ain't the white heterofolk who are suffering.

There's a wider trend where some folks are anxious to classify people and cast them out for being different. It's gotta stop.

(image from Orange County Government)


My cycle of inaction

posted by Jeff | Sunday, August 24, 2025, 1:11 PM | comments: 0

I keep talking about how I'm not doing the "maker" activities that I used to. Dare I say that I have found some amount of identity and purpose in doing those things. I'm bothered by the inaction, and I can't exactly figure out what it is in my head that causes it. It's odd that we have this concept of free will and consciousness that suggests that we can do anything. But we can't.

As I write this, I'm in the place that I find myself in frequently on the weekend when Diana is working. There are a half-dozen things that I think I want to do, and I can't start any of them. This cycle has been going on for months. To my credit, it's a focus when I see my therapist, and I think that I am making some progress. If I were to try and distill it down to something, it would be that classic fallacy of, "If I can just [condition A], then I can [condition B]." For a lot of folks, that probably goes like, "If only I were rich, then I could do anything." That's not me though. I know that "B" is any of those half-dozen things, but I'm never exactly sure what "A" is. I'm not even sure that it's a tangible condition as much as it is things occupying my ADHD thought spiral brain.

Maybe it doesn't even matter what's in there, because I think that there are ways to make it go away, or reduce it enough to break the cycle of inaction. Music helps. Having things to look forward to is also a good thing, if somewhat counter to the act of being present. That 5mg of THC before bed makes sleep possible. Social interaction seems to whittle down the noise temporarily as well. And sometimes, the thing seems so essential to do that I dive in. It feels like that used to be the thing that drove me, but with time everything seems to compete. I suppose some of that is routine work and parenting.

I think I'm turning a corner. I wrote a little code this week, and while it's hard to keep in it, at least I'm doing it. The passage of time seems to be an emerging motivator.


The fascinating brain on Spelling Bee

posted by Jeff | Thursday, August 21, 2025, 5:45 PM | comments: 0

The primary thing that I use my phone for these days is the New York Times Games app. I'm bored with social media time wasting. I play the mini and full crosswords, Wordle, Connections, Strands, Tiles, and even the new Pips. What I just started recently was Spelling Bee, which for some reason I tried years ago and didn't care for it. It's straight forward enough, as it shows you seven letters, and you have to make as many words as possible, always including the center letter. Word length I believe drives score, and each puzzle has different score levels depending on how many words there are. Puzzles with more words require you to get more words to reach the top level, which is "genius." Who doesn't want to be a genius?

I made some assumptions at first about what was easy or hard, but after three weeks, it turns out those assumptions were wrong. In fact, I can't tell you exactly what makes it possible for me to reach genius. I'm on a four-in-a-row streak this week, but in prior weeks I usually hit that level two or three times. I thought that more available words would be easier, but that isn't the case. I think it's the combination of letters available, as they relate to my vocabulary, that are the deciding factor in terms of difficulty.

For example, last week there was a puzzle with 71 possible words, using the letters I, A, U, N, G, C and R in the center. I got to amazing, with 40 words. You can rattle off quite a few because of the "-ING" that can be formed, but every root word needs the R. I was pretty excited to get "accruing" and "uncaring," which use all of the letters. "Ingraining" also felt like a win. But I was still 47 points off genius (272), and I ran out of gas.

But even with a puzzle that had 30 words, I had a similar result. Y, O, I, H, A, L and D in the center. Genius only required 83 points, and I was still 24 short. My brain kept getting stuck on "holiday," which was the first word I guessed. There is an "-LY" suffix that can be used a bit on this one. That's what you look for, prefixes and suffixes, the latter of which is often helpful because you can use many root words that end in "e" unless the suffix is there.

It's fascinating though to see how your brain does pattern recognition, and how it can be different depending on the patterns. I know that there are diagnostics that can measure a person's ability to recognize patterns, but I suspect that the endless variations on what constitutes a pattern means that those tests might not be entirely useful. It's like the difference in people where some navigate by way of landmarks, others by way of spatial relationships (I'm the latter).

Oh, and I may lose sleep if I can't at least get "amazing," the level just below genius.


A sincere attempt at coding with AI, 2025 edition

posted by Jeff | Thursday, August 21, 2025, 5:00 PM | comments: 0

About a year and a half ago, I wrote about my first experience using AI tooling to write code. My expectations were low, but with a very narrow focus on trying to accomplish one thing, largely driven by math I don't know, it eventually got me to where I wanted to be. It would have been more trial and error without it, and in retrospect, I'm not sure if it saved time. These days, people are predicting the end of the software engineering profession, or at least, a radical change in it that requires less people. I'm more skeptical, because among other reasons, AI is not wise and doesn't understand concepts as readability, maintainability, etc. It learns this stuff from existing code, and if you've done this for any length of time, you'll know that most code isn't very good. This is also a very old code base, and while some of it is solid, some of it's janky. I imagine that's also true of most code bases out there. It's amazing that computers work at all.

Still, I decided I would try implementing a new feature in POP Forums, specifically an "ignore" feature, so you can not see posts by certain other users, leaning on the AI as much as possible. As much as I'd like to try to do this as if I were new to coding, I don't know how I could fake that. Instead, my attempt involves playing dumb about approach, and going from there. Next steps were what I know from experience to do, so frankly I'm throwing it a bone here. I used JetBrains' Rider IDE, with the Github Copilot agent using GTP-4.1.

Chapter 1: What's the approach?

I started by asking this:

How can I implement a feature that allows a user to ignore posts and topics by other users? The ignoring is based on a list that the user maintains. Ignored topics in all of the topic lists (by forum or recent) appear in a muted color, and posts appear collapsed in a muted color, though the user can click on them to view. The implementation should use existing conventions for data access and project organization.

It responded with a data model that assumed I wanted to match ignore ID's on topics, which I did not. It also included an extraneous ID and time stamp. It also listed some API endpoints and Vue markup, neither of which I use anywhere in the main front end (though it's used in the admin). It gave some example method signatures for the repository level, and CSS that ignored the fact that I was using Bootstrap. So basically, it doesn't know what context to consider.

I gave it context, pointing to existing code, and it kept chatting back abstract examples. I finally told it that wasn't helpful, and it dropped the examples and gave me a narrative:

Understood. For your scenario, integrate the ignore logic into your existing data access and view model construction layers. Fetch ignored user IDs for the current user, and when building view models for posts or topics, set an IsIgnored flag if the author is in that list. This keeps the logic consistent with your current architecture and ensures the view receives all necessary info to render ignored content appropriately. No changes to the SQL table are needed based on your description.

This is wrong right up front. You don't put logic into data access, so that's bad advice. Meh, OK, I'll move on to see what kind of action it gives me with code completion.

Chapter 2: Let's save and get data

I started by defining the database table in a SQL script and the simple model class with UserID and IgnoreUserID. The autocomplete suggested "IgnoredUserID" instead of "IgnoreUserID" to match the database. Even though by convention I capitalize "ID" everywhere, everything it generated refused to do this. I asked it to generate a repository class to Add, Delete and GetList, using Dapper (the mini-ORM library I use) and the extension methods used in other classes (simplifies getting connections and stuff). Aside from not capitalizing "ID," the get list was totally wrong. It sort of looked right, but it put a return value to use "AsList()," which is not even a thing. When I told it this, it told me that yes, it's not a thing. Why did it suggest it then?

Then I tried to coax it into doing a join with the user table to get the name as well, for display in the user's list of ignored users, and no prompt seemed to get it there, even after I defined a new model to include the name. Next I asked it to get a list of UserID's that represented the intersection of the user's ignore list and a list of UserID's passed in as a parameter. That list comes from the posts that will be displayed. I told it to use the method that gets user signatures as an example, and it nailed this first try. Mind you, I basically told it how to do it, so it sure better get that right!

The service layer is mostly a wrapper around the repository, but not the method that gets the list of ID's to ignore. To match the convention of the signatures, avatars and such, it takes the user and list of posts as parameters, which means it has to use the UserID from the former, and get a list of ID's from the latter. I tried several ways to tell it how to do this, and each time, it gave weird results that didn't return what I asked. It also didn't check to see if the user was null, so it didn't even know to do basic null checking.

Chapter 3: Front end

I expected this to be easy for the machine, but it didn't go to the solution I expected without me being prescriptive. I started with this:

Using Bootstrap and as little custom CSS as possible, how can I make the div starting on line 22 be collapsed and replaced with the text "ignored?"

This was admittedly not a great question, because it lacked the context that I wanted the user to be able to click on it and expand the div to show the hidden post. It suggested a simple "if" in the view. Then I made it clearer:

I want the markup to still be there regardless of isIgnored, because my next question will ask how I can click on the ignored div and make it un-collapse.

It gave a solution to render both, but ended on, "The next step can add interactivity to toggle visibility." OK, so why not just give that to me then? I cycled with the robot three more times, trying to refine a solution that was "elegant" and "only required a little CSS," but it wouldn't give me the Bootstrap solution, which is just a matter of adding attributes to the div and button markup. Finally I just asked it outright, "How can I do this with Bootstrap Collapse?" I was intentional about this line of questioning for two reasons. First, I wanted to act as if I didn't know that there was a specific Bootstrap solution for this, as someone who didn't have experience with it. Second, I wanted to see if it had any deep contextual understanding of the Bootstrap library. This matters because so much of software is composition, using existing solutions from frameworks and libraries to make a thing. In this case, it was steering me toward inventing something instead of using what already existed.

I didn't bother asking the AI to help with the user's maintenance of their ignore list.

Conclusion and observations

As I said earlier, a lot of people like to debate the value of AI in the world of software engineering, and I've been generally skeptical of what it can do. That hasn't really changed. There are a lot of people who spend a lot of time and energy trying to convince others that AI coding (or worse, "vibe coding") is a game changer and huge productivity booster. Others even believe it makes humans obsolete. If you question these beliefs, you usually get the response that "you're doing it wrong." The one study that tries to measure time savings actually concludes that coding takes longer with AI.

For a very long time, when you couldn't figure something out, you searched the Internet for solutions, which led you to blogs and, more often than not, questions on StackOverflow. AI should be a good replacement for that, and to an extent it is. What I keep coming back to though is that it often suggests code that doesn't even compile, or recommends method calls that don't even exist. I suppose that's a variation on the "hallucinations" problem in other AI use cases. It confidently makes stuff up. My admitted confirmation bias is that the lack of ability to reason and exercise wisdom creates hurdles for AI to be what people want it to be.

I'm not down on the technology though. I think a lot of the problem in this context is that AI is treated like a panacea for which chat bots are the solution. The fix is to make them more contextual, which is to say integrate them with compilers and feed them specifics about related libraries and frameworks. There also has to be a better feedback loop with the humans who understand what is "best" in terms of technique. I think we're a long way off from making machines demonstrate wisdom and creativity, and the garbage in, garbage out phenomenon applies. Human and documented context can help. Self-training as a machine seems unrealistic, for now.

If I think about what tools over the years have helped with productivity the most, it starts with the refactoring tools. I remember the first time I used Resharper with Visual Studio. It was like playing chords on a piano, only it was keyboard combinations, to improve stuff in a hurry. Automated build mechanisms, testing frameworks and a hundred different open source libraries all made coding faster, and better. I'm not sure if AI, as we know it now, can be an abstraction over coding, but combining it with advancements in languages may help get it closer to that. For now, it's a leaky abstraction, because you need to understand how it works and how to game it to make it even a little effective.


Online view is still not real life

posted by Jeff | Wednesday, August 20, 2025, 10:13 AM | comments: 0

I've seen a couple of folks suggest to me that life looks great for me, from where they're sitting. This is just a reminder that everything you see online is a fraction of what life is actually like. It's not that I'm trying to misrepresent myself, because I'm totally out of shits to give about what anyone thinks, but I certainly filter what I'm willing to share. The truth is that this year has been one shit show after another for us. The good parts that you see are the relief bits.

Everyone is dealing with something. Try to keep that in mind and don't be a dick.


Mourning new adventures and possibilities

posted by Jeff | Monday, August 18, 2025, 12:41 PM | comments: 0

Part of my Monday ritual is going out for lunch, usually to Chipotle. It helps me kind of ease-in to the work week, have a moment for myself, while I read up on tech news. There's a new location amidst Disney's college program apartments, slightly closer to me and without many traffic lights. Today, when I pulled in, a young woman was coming out with her burrito, and got into her car next to me. I couldn't help but notice that the little Toyota Corolla, possibly the same year as the one I had last, was filled with what I assume was all of her worldly possessions. Her license plate was from California. Given the location, it's probably reasonable to concur that she was here to work for the rat and move into one of these spots.

The whole scene made me kind of excited for this total stranger that I'll never see again. I could see it in her body language, that she was out of her element, but at the same time, she was in a completely new place where it felt like anything was possible. Just describing it, and relating it to my own life, feels exciting.

My relationship with new adventures and possibilities is complicated. Pivotal times in my life fit into this bucket, and despite any uncertainty or discomfort, they were exciting. Starting college was likely the biggest of these times, but starting my first few jobs were also like that. Certainly moving to Seattle, with a baby on the way and new wife, is the biggest of new adventures. Moving to Orlando was a close second.

But I also got into ruts that were hard to break out of, which I now better understand to be a symptom of autism. I know from my own post-mortem of my first marriage that I was stubbornly set on staying put in the area, when getting out of Ohio was probably what I needed more than anything. I sat in several jobs that were clearly dead-ends and not interesting in those days, too. There were a lot of routines I had that felt safe and comfortable in, and I think that closed me off to what could have been.

Midlife has brought me to a place where I crave new adventures and possibilities, but I'm crippled by realities and risks that may or may not be real. Most of this revolves around the need to have enough financial security to get my kid into adulthood and set up our third act. People refer to that as retirement, but as I wrote a few weeks ago, what I'm really looking at is the ability to work only on things that bring meaning and purpose. A friend of mine calls it the "fuck off" career stage. All of the chaos and uncertainty in the world makes that future look even murkier.

So when I saw that young woman from California, I felt connected to her situation. I realize that so many of my dreams, the school dreams especially, must indicate a desire to have those opportunities again. Or maybe I want do-overs, able to approach them with knowledge and wisdom I didn't have before. Maybe I want that kind of sustained high associated with those transitions. I know a lot of people talk about the feelings of starting a new school year, or kissing someone for the first time, and while those are powerful and intense feelings, transitioning into a big change of scenery is something else.

I don't know what this sort of thing might look like, and regardless, I don't feel like the time is right. I mourn those opportunities. I mourn that I can't think of them, and that I think I can't exercise them. Meanwhile, I look at things like a couple buying a drive-in movie theater and think, why can't that be me? I don't know. Fear and anxiety turn off opportunity.

The optimist in me believes that what I'm really doing is being patient. Being able to shake things up feels inevitable, and it's just a matter of time. Not a lot of time.


Our semi-broken energy plant (again)

posted by Jeff | Sunday, August 17, 2025, 10:00 PM | comments: 0

On July 4, our energy gateway, which is basically a switch to manage solar, battery and grid electricity, stopped measuring the various inputs and outputs. What this means is that, in the event of a grid outage, we couldn't use the battery and solar. As a reminder, the reason this is necessary is so as not to back-feed power into the grid when line workers are potentially working on it. This is the second time it died, and possibly from lightning. Stuff happens. At least the solar was still being used, as I could see the utility meter spinning backwards, meaning our excess generation was going back to the grid.

But again, Tesla Energy is slow as hell. It's all under warranty, but getting them to actually dig into the problem and then schedule someone to come out and look at it took a total of six weeks. As with our previous experience, the techs who come out to do the actual work are fantastic. It's the dumb bureaucracy of the company that makes everything take forever. The last time was much worse, with call after call, being stuck off-grid, etc. Where I got lucky this time was that the tech happened to have the right part on his truck (the sensor module). He also proactively noticed that one of my inverters was not sending telemetry back to home base, which is used to measure the output guarantee of the solar. He didn't have any parts for that, but indicated that they'll work that problem separately.

The strange thing about wanting the backup is that we've used it exactly once, for a few hours, when Hurricane Milton came through last October. Most of the nearby infrastructure is underground, so it tends to stay up pretty consistently. Beyond that, it has kicked on during some minor brown-outs for a few minutes, but that was it. I guess it's like any property kind of insurance. You almost never need it, until you do.

I guess I could say that Tesla was better this time, but I wouldn't classify them as good. The only reason we used them for the solar was because the battery was going to be "free" from auto referrals a decade ago in our Model S days. I use the quotes because we still had to pay for the installation and extra hardware. I thought, cool, it'll all be one system, and it will share the app that the cars use. There are a ton of other vendors now and most of them use local installers who also provide support and maintenance.

My inner data nerd is also without six weeks of usage and generation data, which isn't great.


Imagine being a person...

posted by Jeff | Friday, August 15, 2025, 3:00 PM | comments: 0

Last night, we were hanging out in our spare room with a couple of foster kittens that we're watching. Poor things got returned to the shelter after the adopting family found that their child was crazy allergic to them. These little guys just want to cuddle when they get sleepy, and they're the sweetest things.

Imagine being a person that isn't capable of having that sort of moment with kittens, or puppies, or human babies. Those are the people running our government now.

Imagine being a person that wakes up every morning, not with optimism or a desire to improve the lives of others, but to show contempt for people they don't know or understand, intent on punishing others for not fitting in their box. Those are the people running our government now.

Imagine being a person that has had exceptional opportunity in life, but feels so entitled that they must ensure the people without opportunity remain oppressed. Those are the people running our government now.

Imagine being a person that believes facts are points of view, where science, data and evidence will not sway them from the things that they want to believe. Those are the people running our government now.

Imagine being a person that thinks that some people are more American than others, not based on any legal definition, but on the basis of skin color, ethnicity, sexuality or political affiliation. Those are the people running our government now.

In normal times, I would probably feel bad for people who are like this. I'd like to think that I'm an empathetic person. But when people like this are actively hurting others, and doing harm to our reputation, basic decorum and democratic norms, it's nearly impossible to exercise that empathy.


Trip report: Disney Treasure, August 2025

posted by Jeff | Tuesday, August 12, 2025, 9:17 PM | comments: 0

Seeing as how I'm a completionist at certain trivial things, it made me squirm that we haven't yet been on the Disney Treasure, which launched in December. The ship took over the Fantasy's Caribbean itineraries, usually a week long, so that's part of the reason for the delay. The last 7-night we did was just before the holidays in 2022 (not counting some one-off Fantasy voyages to the new island). But we figured a week in August, just before school started, made sense. Whether it was east or west (we did east) didn't matter, as none of the ports on either one are super interesting. I wish they had San Juan on the east route, since it's in the neighborhood.

The Treasure is the second of four Triton-class ships (I guess they're now referred to as Wish-class, but whatever), so its layout and overall structure is nearly identical. What's different is the themes and layouts in the venues, and the decor almost everywhere. While the Wish took on more of a classic fairy tale theme, this one leans into more modern Disney IP and theme park stuff. It starts with the grand hall atrium, which is themed to a Middle Eastern style that, as you'd expect, uses Aladdin and Jasmine as the brass statue. It is overwhelmingly better in my eye, because the amount of detail is so deep. The columns have all of these hand-crafted tile murals, and you'll find the onion-shaped arches in everything. The chandelier is particularly impressive.

After getting our dinner time adjusted, and a hot stone massage for me, we tried to at least see all of the venues and their differences. The first big change, and my favorite, is that the central venue used for a variety of things, called Luna on Wish, is Sarabi. It has a lot of warm, earthy tones and African inspired styles, but otherwise is similar with a video wall behind the stage and a very similar lighting rig. Before the week was done, we would see musicians, a magician, a really great comedy show inspired by Indiana Jones stories, and I managed to get on stage, quite by accident, playing some Star Wars trivia. The guy who won was a bigger nerd than me.

On deck 4 around Sarabi, you'll find the same two movie theaters, with only slightly more comfortable seats than the Wish. On deck 5, there's the multipurpose Triton Lounge, also the same and mostly used for trivia, drawing classes and such. In place of the Keg & Compass sports bar, you get the Periscope Pub sports bar, which is vaguely a 20,000 Leagues theme, I think. It has a ceiling where you can see sea critters swimming over you. This is also where they have all of the beers, but the excellent staff there were more than adept at making great cocktails.

The piano bar on deck 3 on this one is called the Scat Cat Lounge, and it has a better layout than its Wish equivalent, with the bar backing to the atrium windows and offering an atrium bar, which the Wish doesn't have. Next door, in place of the Hyperspace Lounge is the Haunted Mansion, and it's awesome. There are some robust videos online that show the making of it (also check it out for the Coco dinner show and Moana theatrical show), so I won't go deep into it here. Being a fan of the ride on either coast helps, but regardless, the effects around the room, along with the sound design and lighting, are a huge achievement. Simon was particularly enamored with everything in the room, so he had quite a few of the bottled mocktails available there. One of our Dominican bartender friends that we've met on two previous cruises was also there, so it was great to catch up.

The common area venue there, which is odd on these ships because it's flanked by the high end retail shops that are closed in port, is a Jungle Cruise inspired bar and performance area called Skipper Society. Again, if you're a fan of the ride, you'll find all kinds of stuff there to make you smile. There is nightly music here, sometimes trivia and other activities, so it's more like the D-Lounge on the previous ships than it is a bar. The furniture is particularly cozy in this one. It's the one place that get extra busy in spurts, because it's not adult exclusive at any time of day. It has no doors.

The coffee shops on 4 and 5 are essentially the same as the Wish, though these are called Hei Hei (the rooster from Moana) and Jade Cricket, a Mulan reference. The themes match as you would expect. Hooks Barbery, the place to get a haircut and shave while sipping an old fashioned (smoked!) is on 4, and along with the salon and Bibbidy Bobbidy Boutique, are about the same. The main dining in 1923 and Worlds of Marvel are also the same as on the Wish. I didn't go to the kids club open houses, but Simon reports that Vibe, the teen club, is essentially the same. I saw that the Hero Zone, the indoor gymnasium, if you will, is about the same as well, and features the Incredicourse certain days.

Also the same, in a negative way, are the adult arrangements and promenade. They still stash the Cove area for adults, with an infinity pool, bar and coffee bar, way aft on deck 13. It feels totally disconnected from everything, and we spent like 15 minutes sitting in the water there. I still wish they grouped the adult bars together as they do on the other ships, because if one is crowded, you can just roll to another one. They're never all crowded. I will say that, to their credit, the bars are more family friendly during the day, which is why Simon spent so much time in Haunted Mansion. My other gripe is the lack of a continuous loop promenade deck, which is particularly valuable on these longer itineraries. Being able to walk that loop a few miles is great when eating is kind of a sport most of the time.

We did a mixology and martini tasting again this cruise, both of them in The Rose, the bar that precedes the upcharge fancy restaurants, Palo and Enchante. It's intimate because they can only park about 10 people at the bar, otherwise people doing Palo brunch would be walking in between people and the bartenders. An amazing bartender, Natalija from Croatia, walked us through some stuff that I haven't seen before, and we have new things to try at home at some point.

Our second night of dinner was in Plaza de Coco, which of course references the movie. This is the Arendelle venue on the Wish, but it's dinner and live music while you eat. The menu is, I'm told, authentic Mexican food (I'm not an expert), and I love that they serve fresh, warm tortilla chips instead of bread. The musicians are excellent and I really enjoyed the performance. After a series of excellent tables for the Frozen show, unfortunately we were literally as far as possible from the stage this time. Not ideal, but not deal breaking.

On Monday, we did brunch in Palo, had our usual dishes, and needed a nap afterward. I really like the experience, because it is what most would consider "fine dining," especially in terms of impossibly good service, but it's food that picky people like me will still eat. Our waiter was Ukrainian, and we had a brief chat about his family, which has entirely relocated to Italy, where they are safe. It's upsetting to hear those stories, in part because I guess there isn't much I can do. I can't imagine having to relocate my entire family, leaving everything behind, to escape war. If there's one consistent thing about cruising, it's the opportunity to view the world through the eyes of people from other parts of the world.

We generally don't go to very many of the theatrical shows anymore, because we've seen most of them a bunch of times. In fact, Beauty and the Beast plays here as well as the Dream and Fantasy. While the Beast transformation is excellent, we have seen it. And the old jukebox shows are meh, though they seem to be phasing those out. The signature show here, however, is Moana, and it is really extraordinary. I say that as somewhat of a theater snob. The current cast is shockingly good, because I expect some kind of ceiling for a cruise ship (where Actors Equity and IATSE don't exist). The principal players are also mostly Pacific Islanders, though oddly not the guy playing Maui, as best I can tell. The transformation of the giant puppet of Te Ka to Te Fiti is really great. It reminded me a little of seeing King Kong on Broadway (total spectacle, but forgettable plot and music), just on a smaller scale. I'm not normally easily impressed by theater tech, but this was amazing. The lighting was also the tightest and most interesting I've seen on a ship, and it served the story. A lot of love went into the stagecraft.

I won't bother you with a lot of other details, because it's pretty boring if you're not me. These cruises to the Bahamas and Caribbean are not what I categorize as "adventure" vacation, where you visit a bunch of new places and see amazing things and culture and art and whatever. If you're cruising around Europe, or anywhere else really, sure, that's adventure. But this sort of thing for me is a chance to completely turn my brain off and not have to be accountable for anything at all. Someone cleans the room twice a day, I can get good food and beverage at any time (which is all included, except alcohol and specialty coffee), there is literally some activity to do at all times if you want, and if I want to nap with my stateroom door open while the waves crash against the hull, I can do that. Everything is freakishly clean, and the way they schedule everything, people are generally spread out so instances of crowding are rare. And as I've said before, with families retiring after dinner or the second theater show, hanging out in a quiet bar and meeting people is easy, casual and not crowded.

Disney cruises are not getting any cheaper, but I will say that the quality has continuously improved. It was never low, but I think it's getting better. That's surprising partly because I have to imagine that staffing these ships has to be challenging, given the long hours day after day. They finally got wise to the fact that tattoos, beards and authentic hair are not actually threatening, so they no longer limit themselves the way they used to. It takes a certain personality to do that work, and the people taking it on are really, really good at it. Think about the friendliest people you've encountered at a Disney theme park, and level them up and put them in every role. That's what you'll experience. And yes, gratuities are not part of the base cruise fare, but I have no hesitation giving the recommended amounts. We've even singled out bar staff to tip.

Unfortunately, I woke up with a sore throat on Thursday, which did not fade. Friday it turned into a sinus thing that was even more uncomfortable, so by the time I left on Saturday morning, I was pretty miserable. Not an optimal way to end things.

I'm not sure when we'll be on this ship next, because again, we don't do 7-night itineraries often. We will do the next ship, the Destiny, next year. It will be deeply Marvel influenced, and they haven't yet revealed everything about it yet. The only thing I know for sure is that the atrium will be African/"Wakanda" themed with Black Panther as the statue, and it too will have Haunted Mansion.