Our current theme park usage

posted by Jeff | Sunday, August 18, 2019, 2:57 PM | comments: 0

We've now lived in The OC for a little over six years. We acquired Walt Disney World passes quite literally the day after Simon and Diana arrived (I was down a week earlier). We were in the midst of the rainiest July on record for Orlando, but it felt totally amazing. To this day, I can enter those parks and have fuzzy feelings that remind me of vacationing here.

While it does feel more routine at this point, I still don't take it for granted at all. It's hard not to have a little smile as you walk over the bridge and see the Tree of Life, or take in the smells on your first Food & Wine Festival visit, or whatever. This year, renewing our passes had a little more sting though, as the total cost for three of us was $1,900, about $500 more than it was when we arrived in 2013. We went about 22 times last year, which is the fewest of any year if I had to guess, so the per-person cost for each visit was $28. Keep in mind most visits are around four or five hours, not full days.

This is a really weird situation now: We have passes to all three of the majors. Disney has been continuous, but now we have SeaWorld (which includes Aquatica and Busch Gardens Tampa), because a friend working at corporate generously gave us his friends-and-family passes, and Universal, because they had an 18-month deal for the price of 12 that I could not resist. Since April, we've visited each park at least once per month, so I think our total park visit count has actually increased a bit.

One consistent theme is that I see the different standards that the parks operate on. SeaWorld parks are beautiful and have pretty good food, but ride operations just aren't very good. Last weekend we watched a kid start the kiddie train with a mom still fastening her kid's seatbelt (and they let him keep operating with a supervisor watching). Universal has generally poor quality food at every turn, but ride operations are hit or miss depending on the ride. Disney is on another level with everything they do, and even counter service food is more than passable as a meal.

The Epcot Food & Wine Festival is around the corner, which will mean a lot of spontaneous visits, even for lunch now and then. The concert lineup isn't very strong this year, but last year they did a good job with more chicken dishes and fruity drinks. I can't wait.

There's never a shortage of things to do here, that's for sure. Theme parks aren't everyone's thing, and that's OK, but our family has a good time year-round visiting, and it's particularly nice to go when friends from out-of-town are here.

The struggle is (always) real

posted by Jeff | Thursday, August 15, 2019, 8:56 PM | comments: 0

This has been a tough week. Simon has completely missed his first week of school, and given the timing of his last fever, he should technically stay home tomorrow. There's literally nothing I can do about it, but it breaks my heart to see him miss the first week and all of the getting-to-know-you stuff. Work has been very challenging lately, in part for reasons I can control, but also reasons I can't. We worked through a big issue with the HOA this week, which I honestly wasn't that deep into, but I still had to contribute in any way that I could. I'm also preparing to entertain family this week. I'm mentally pretty spent.

Here's what really freaks me out though: It seems like regardless of your achievement, success (whatever that even means), age or experience, life is always something of a struggle. I think about the challenges that Simon has, and he's only 9, relating them to my own childhood experience. I think about Diana and her migraines. I think about my completely strange career path and all of the turbulence to get here. No amount of cruises or driving in electric space cars makes life feel like less of a struggle. I am not a Type-A overachiever personality by any stretch, but is anything ever easy? Is life a struggle in every context, or do we make it that hard?

I'm sensitive to this in part because I've largely tried to avoid miserable people. I don't want to be that guy. I know that I don't need permission to feel overwhelmed, exhausted or otherwise suboptimal, but I don't want to be one of the people who never seem happy. There's a whole lot of happy in my life, but some days it's hard to see when I feel so beat down. It comes in waves, and I'm in a big wave right now.

Meh, I just need to vent. After all these years, I'm still not good at balancing out life. I see a therpaist about every six weeks, and it's almost always the topic... understanding myself and how I move through the world in a way that leaves a positive effect without giving twice what I take. That's harder than it sounds. Idealistic, 20-year-old me would be horrified to know how deeply I want to leave a positive mark. I don't need the recognition (well, maybe a little recognition), monuments, fame or anything like that, I just want to die knowing I moved the needle in the right direction. That's hard when it's a struggle.

Six weeks ago, I was flinging bread off the side of a boat at fish over a tropical reef in the Bahamas. That was not a struggle. Gotta keep that in perspective.

Behold, the Lego Millennium Falcon

posted by Jeff | Sunday, August 11, 2019, 5:12 PM | comments: 0

I waited about 20 months, which is pretty good self-control, before I finally bought the Ultimate Collector Series Millennium Falcon. But it was my birthday, and I decided that I deserved it. It is, in fact, glorious.

Judge me if you want, but spending $800 on the biggest Lego set ever created is pretty much what any adult Lego fan with disposable income would do. There are over 7,500 pieces in this thing. The next largest set in my collection is the roller coaster at 4,124 pieces, then the Disney Castle at 4,080. I'm not sure what the total build time was, but if I had to guess, it was probably around 30 hours.

I find myself stressed more than I'd like lately. I imagine it's a combination of work, parenting and just every day life. But the one thing that sets me at ease consistently is sitting down to build one of these big sets. I put on some tunes, grab a beverage, and start at step 1. I'm using my hands and my mind and turning a mess on the table into something cool. It's very satisfying.

Simon has a few of the small Star Wars sets, but I haven't bought any of them myself. The Death Star always seemed kind of neat, but I never pulled the trigger. The Millennium Falcon is arguably the most unique and junky space ship in science fiction, and it's an enduring work of art. I'm gonna cry a little when I finally see the one next door at Disney's Hollywood Studios. What makes it so interesting, and such a great candidate for a Lego model, is all of the detail and texture. Most of the surfaces on this thing are rich in that detail, and it looks amazing.

The build starts with a frame, and from there you snap the interior rooms into it, and then attach panels around everything. You don't want to "fly" it around making "pew! pew!" noises, because it's not durable like that. One of the last pages in the instructions actually shows how to carry it around so as not to break it.

The finished product has the original radar dish, which you can swap out for the replacement that appears in the newer movies, since the original was clipped off in the final Death Star battle. It comes with old Han Solo and the younger version minifigs, so you can pair them with Rey and Leia as appropriate. You'll also find BB-8, C-3PO and of course Chewbacca. There's a pair of little porgs too. The instruction book has a rich history of Millennium Falcon Lego sets, and stuff about the design of the ship in the movies. Also you should know the book is spiral bound and weighs 7 pounds.

I didn't find anything super challenging about the build, because they're really good at writing instructions, but some of that texture on certain panels can be a little tedious at times. You definitely have to count out all of the parts before each step to make sure you get them all on the model. There's a lot of rotating and flipping given the scope of this beast.

I really enjoyed this build, more than any other set (the Disney Castle is a close second, if you're wondering). The disassembly should be interesting. As I mentioned last year, I do disassemble to the numbered bags used in the original packaging. The fun is the building, not just the finished product. I wouldn't drop $800 to build it once. This one will probably be pretty easy, if a little time consuming, because most of the 17 bags are just panels over the frame.

Overall, I strongly endorse this set. When it was announced, it seemed a little ridiculous, but I think it's entirely worth it now that I've got it. I look forward to rebuilding it for years to come.

I wrote a tiny library: POP Identity

posted by Jeff | Sunday, August 11, 2019, 4:20 PM | comments: 0

Many years ago, I decided to take advantage of the third-party "social" logins that were available in conjunction with the evolving ASP.NET frameworks. Being able to sign in to something using a Google or Facebook account is convenient. When I went down that road, the tough part is that it was so heavily baked into the Identity libraries and Entity Framework. After much digging and looking at source code, I was able to decouple it enough to use it in POP Forums, but what a pain. It evolved a little when ASP.NET Core finally shipped, but it was still a lot of magic.

A few months ago I started looking at ways to make the forums run in a multi-tenant environment, and the external login stuff just wasn't compatible, because it has to be configured at start up. That doesn't work when every tenant has different client ID's and secrets. I started to think about this as high level as possible. What was I really after? All I wanted was to get the third-party's ID for the user, and maybe the name and email if I could get it. Most of these services are using OAuth2, which is a pretty simple protocol to use, where you bounce the user off of their server, and exchange the resulting token for the claims you're looking for. All of that complexity seemed pretty unnecessary.

So I wrote a little library to make it work called POP Identity. I put the intention right in the readme:

This is for people who think that the existing ASP.NET Core external login system is too much magic, or too tightly coupled to Identity and/or EntityFramework. It didn't evolve much from the old OWIN days. It has the following goals:

  • Be super light-weight, handing off just enough mundane detail to the library.
  • Allow code to change client ID's, secrets and other parameters at request time, as opposed to the built-in framework that sets this all at startup. This makes it appropriate for multi-tenant situations.
  • Allow the developer to persist the resulting data (external ID's, name, email, etc.) in whatever manner makes sense. This library has no persistence.
  • Defer authorization logic to the developer. It doesn't setup any claims identity... that's up to you.

Phil Haack recently made the correct observation that it's pretty rare that you get identity claims from third-parties and make it durable for use in your application (a few days after I started this mini-project... timely!). There really isn't a need for auth schemes and more configuration in startup to enable all of this if you're not using the Identity libraries and the persistence that goes with it. My sample shows how you can get these basics and bake them into whatever you need them for. In POP Forums, I get a little more serious, first with a single controller action that redirects you to the appropriate service, then a callback action that either logs you in based on an ID and provider match, or starts a workflow to associate your social account with a new or existing account in the forum app. No references to the Identity libraries. The only part I'm leveraging from the framework is the sign-in mechanism that creates a cookie to identify the user. From then on, I use simple middleware to check that the user's request is legit and that they are in fact still a user in good standing (and cache the user data for the duration of the request). That might all require a longer post to describe, but the important part is the calls to POP Identity.

I haven't built anything for general use in a long time, and I remember why I don't want to ever write frameworks or generic libraries. Even if you're the clever idiot who figures out how to break it, you have to try and account for those situations. That's exhausting! I figured this was so limited in scope that it would be easy, but I started poking holes in it right away when I added it to the forums. For now though, it supports Google, Facebook, Microsoft and any generic OAuth2 provider that returns JWT's. Twitter still uses old OAuth, so I didn't bother with them.

A 9-year-old view on mass shootings, Trump and other news

posted by Jeff | Monday, August 5, 2019, 7:56 PM | comments: 0

Diana and I will typically watch the evening world news, generally NBC's 6:30 show. With a journalism education, I can't say that I always agree with how they rank things as newsworthy, but I do believe they report truthfully and have an appropriate amount of depth for a 22-minute show. Simon tends to wander in or out, and we're generally pretty careful about not letting him see anything particularly disturbing, but we instinctively didn't think we should hide the weekend's shootings from him. He has to do active shooter drills at school, and a little context seems appropriate.

The distraught family members mourning their loss seemed to upset him the most. But it's interesting to hear his angle on things that we've never really talked about. On guns: "You should only have guns to protect yourself, not murder lots of people!" He associated "big" guns with bad guys. I explained to him that it's not so much the size as what the technology enables.

"When I grow up, I want to have cameras around my house so it's secure." I felt like I had to ease his fears a little there, and explain that it's pretty rare that anyone gets shot, but especially at home.

The next story was about President Trump, and his carefully scripted speech denouncing hate crimes. Understandably, the story showed how contradictory he has been, with any number of things that he's said previously. This is an area that I've been particularly careful with, because while I think the guy is a toxic embarrassment to our nation, I don't want to diminish the seriousness and importance of the office. Again, a child's view is one that adults often willingly dismiss. "Why does anyone like him? He's so mean to everybody. He's not nice to people." That isn't the first time he's said that in response to news, and I've tried to explain to him that no other president in my lifetime has ever been like that. (I didn't tell him "from either party," because he's not going to know what that means.) The kid is no stranger to bullies or unkind people. Kids can be real dicks to each other, and he knows what that looks like.

Maybe this is partly the ASD, and his general disregard for social contracts he can't reconcile, but racism is completely over his head. I mean, I'm happy that's the case, but he can't rationalize that it even exists. Certainly that makes sense, given that he's never gone to school in or lived in a place where most everyone around him was white. I hope his generation does better than every one before it.

He has weighed in on other topics as well. Weather stories are disturbing to him, and he's asked about the frequency of tornadoes and hurricanes. The science is a little mixed on that, I told him, because there is possible correlation between location, strength and other factors, but frequency is a harder one to pin down. But there are clearer links between climate change, which is scientifically attributed to human causes, with sea level rise, drought and wildfires. He doesn't understand why gasoline cars are still a thing either, because they're "stinky." That's five years of EV-driving for him.

Simon is fond of the kicker stories in the news, which inevitably involve a person overcoming adversity, or something with pets, or anything that otherwise reminds you that human beings don't all suck. It's a relatively simple truth that we all need to be reminded of. Sometimes 9-year-olds have the best view.

Wanting to retreat

posted by Jeff | Sunday, August 4, 2019, 12:51 PM | comments: 0

There was only one notification on my phone when I woke up this morning. It was from the New York Times, mentioning the shootings in Dayton, a day after those in El Paso, and a few more after the deaths in Gilroy.

This is not unfamiliar territory. On the morning of June 12, 2016, Facebook was encouraging me to check in and mark myself "safe," for reasons that weren't immediately clear. A few minutes later I was watching TV, where every local affiliate was on Orange Avenue, blocks away from where Diana and I work, reporting that someone shot a bunch of people at Pulse, and no one was really sure how bad it all was. Knowing that Pulse was primarily a gay nightclub, I frantically started checking the social media of my local friends, hoping they were OK. By Tuesday, I found all of my friends were not involved, but they were far from fine. It was their community that was attacked, and few people were more than one person away from someone who had died.

The next few days will be predictable. People rightfully outraged by the violence, especially given its hate and racist fueled origins in El Paso, will demand action. Gun rights advocates will insist that there's nothing anyone can do, that the guns aren't the problem. They might even suggest more people should be armed, which is a wholly insane suggestion when it happens in a Walmart in Texas.

And then nothing will change.

The same cycle will occur with the environment, which is also objectively in trouble. Money in politics will continue to keep the system broken, and it won't change either. The president will say something else that's racist, and people will cheer him on.

I look at my boy, and wonder how things are going to turn out for him. I'm not optimistic. I thought that after the last recession, we as a society were moving in a responsible and accountable direction. In the last four or five years, I've seen the opposite. It makes me want to retreat into a cocoon somewhere, sleep it off, and hope things are better when I wake up. Hope, unfortunately, is not a strategy.

Today was a good day

posted by Jeff | Friday, August 2, 2019, 9:48 PM | comments: 0

 I was talking with a candidate at work about time off, which happens to be unlimited. Maybe that sounds like something ripe for abuse, but on average I believe people take about three weeks off per year. All things considered, that's actually pretty good in America, if well below what Europeans take.

For people at my career stage, you'd probably start with four weeks off even if they keep track. In my first year, I took 16 days off, and none of that time was five straight days that included a non-holiday. You could look at that two ways. The first is that I'm really dedicated to my job, and that's good. The second is that I may have been neglecting my priorities as a father and spouse. The reality is probably somewhere in the middle.

Summer went by fast, and suddenly I realized that we were coming up again on the start of school. Simon has one last camp next week, and then it's back to the classroom. My window for family time was slamming shut. So last week, faced with an insane amount of meetings, I made a day off for today happen. Originally we planned to go to Busch Gardens Tampa, but the rain forecast was dire, so we went to Universal instead (where most of the rides are indoors). When the rains did come, I spent time with Diana just binge watching some Veronica Mars.

Today was a good day.

I can't let time get away from me like that anymore.

Being heard is a skill

posted by Jeff | Friday, July 26, 2019, 2:30 PM | comments: 0

I pride myself on being a thorough communicator. I think I write reasonably well, and I try to be clear and concise to convey the right information at the right time. As it turns out though, being heard is really a separate skill. Just because you're saying the right things to the right people at the right time doesn't mean that you're being heard.

This is an important distinction, and one I've learned about again this week. I've been expressing a series of concerns at work for some time, putting the words on "paper," but haven't followed up to make sure that the message was received. The concerns manifested themselves in a production problem, which got people's attention, but that's certainly not the kind of attention that anyone really wants. I take responsibility, because the larger category of work that I was advocating for should have already had buy-in and started, but I wasn't heard.

Being heard means that you can confirm that your message was received, it was considered, and it was acted upon (even if that means confirming that it was being dismissed). It's the follow-up. As my career has progressed, and I've had to operate in larger operating units, I've learned that this is an important skill. The more moving parts there are, the more important it is.

I built a comprooder

posted by Jeff | Saturday, July 20, 2019, 10:54 PM | comments: 0

About 14 years ago I bought my first Mac. Prior to that I had a continuously evolving desktop computer that I replaced or added components to. I bought a lot of video cards, and every other year or so I replaced the motherboard and CPU. Hard drives were almost a constant replacement, either because they were never big enough or they would sometimes fail (at one point I even did tape backups). But that first Mac I bought was the first one that used an Intel CPU. It was the first MacBook Pro, and you could do Bootcamp to dual-boot into Windows if you needed it (I did). A year after that I bought a Mac Pro, the classic "cheese grater" design. I replaced that in late 2009 with a 27" iMac, and replaced that one in 2015 with another iMac. I got a lot of mileage out of those computers.

Last year, I felt the squeeze on my laptop, a 2014 MacBook Pro (before they made the keyboard suck and added the useless touch bar). 8 gigs of memory wasn't enough when I needed to run Windows in a VM and Docker containers. I scored a really amazing HP laptop, and a year and change later I absolutely love it still. Windows is definitely not as refined as OS X, but only because they retained the classic administrative stuff in addition to the newer UI. But the hardware was so great. HP did a great job, and frankly there are great equivalents from Dell, Lenovo and others. I can roll with Windows as the primary OS.

For more than a year, Simon has been playing Planet Coaster on a Bootcamp partition on my iMac. It ran OK, but not great, especially for that high resolution monitor. Planet Zoo comes out later this year, and that looks amazing. But while I love my HP laptop, I really wanted a proper muscle computer for my office. Honestly the iMac is still pretty great. Apple's 5K screen alone is completely worth it. But as was the case for laptops, Apple has continued to stick to price points that don't match the value of the innards. For the longest time, if you really wanted the good stuff, even with a self-built machine, Apple was competitive. In the last two years or so, that stopped being the case.

So I figured, what the heck, I want a project to put a computer on my desk. 4K monitors finally became a real, bona fide thing outside of the Mac world, and Prime Day got me thinking about it even more when an LG monitor went from $480 to $300. Digging in deeper, I found a bunch of stuff was on sale, including a nice Corsair case and liquid cooling unit, a good video card. My budget was $2k (the last iMac I bought was $2,500), and at the end of the day landed at just $1,800 for some really great components. Here are the specs:

I also ended up with a big 1000W power supply from EVGA, after returning a 750W model that had cables that were too short. On the advice of a friend, I also bought a liquid cooler for the CPU because it's very quiet and would make it easier to overclock the CPU, if I so desired. Times sure have changed since the last time I looked at those. Back in the day, you had to add your own water, but these come as a sealed unit now!

So while I haven't built a computer in 14 years, some things are generally the same. Some things aren't, like the fact that there are no external facing drive bays. The top performing CPU's still cost in excess of a grand, but you can get crazy good stuff for less than $400. AMD recently introduced a line of great midlevel CPU's, and back in the day I had a few as well that were way cheaper than the Intel equivalent. In this case, the online consensus and data suggested that non-hyperthreading Intel CPU's benchmarked the best for gaming and for video editing (something I may potentially do more of), and even then, the cost difference was around $30. So I went Intel this time with a piece that seems to be a sweet spot on the performance/price curve. Plus, being unlocked, I can overclock the shit out of it if I want. Initial testing shows I can push it to 5GHz, well beyond the 3.6GHz it's rated for. Granted, I have to crank up the liquid cooler and fans to keep it from melting, but it's possible.

Despite inflation, the best non-top-of-the-line video cards seem to be in that $500 range. Apparently AMD forced that issue as well with a recently introduced line of GPU's, but that's been good for everyone. The 2070 cards offer a pretty crazy amount of pixel pushing without costing four figures, so I figured I'd get big-ish with one to make it last. The most I ever spent in the old days was probably $250, so this was a big deal to spend $430. I felt like this was OK given my ability to stay in budget overall, though I probably could have spent a hundred dollars less and still clocked some solid results. Regardless, on my first try running Planet Coaster, I was able to run it at 4K resolution, all effects on, and still maintain low 30's frame rates. If I overclocked the CPU, I could get low 40's. I know gaming nerds think you need 60fps, but for a sim like that, your eyes don't care as long as it's consistently higher than 30. Also, I can't believe how big video cards are now compared to 14 years ago.

Having SSD's in laptops (and my most recent iMac) now for about 8 years, I'd never go back to mechanical drives. These tiny M.2 slots offer crazy fast throughput, and a terabyte drive was under a $100. That's nuts. Choosing that was a no-brainer. This thing boots Windows in a few seconds. The motherboard makes it silly easy to overclock the CPU, and without pushing it too hard, I was able to do 5GHz, but settled on a more conservative 4.6GHz. It has 8 actual cores, and I'm amazed at the development workload I can give it. Should be interesting to see how I can load test my forum app, though realistically, I'd never allocate 8 cores or that much RAM to it in production.

The building went about as expected. As was the case back in the day, you don't want to spend too little on a case, because if you do, the inside will be made of razor blades. This Corsair case was one of the Prime Day deals or deal of the day or whatever. $100 for a case with tempered glass and LED lit fans seemed reasonable enough. It's fairly well designed, with good rubber gasket knockouts to hide most of your cabling on the back side. The power supply sits on rubber feet so as to isolate any vibration there. The top has a magnetic cover that you can pull off and clean. In my case, the radiator for the liquid cooler is up there, so with two fans I imagine it pulls in two fifths of the air. My only complaints are that the PSU cover is a little difficult to seat, and it would be nice to have a little more thickness on the back to route the power cables and other stuff. Getting those to sit flat was not something I entirely succeeded with, and there's a barely perceptible bulge at one corner.

The biggest fail was that the first power supply I bought couldn't adequately reach the motherboard and the video card when routing the power cables through the back of the case. Also, still surprised that video cards need their own power these days. The replacement I got (yay Prime Now!) does a full, over-provisioned 1,000W, and the cables detach at the PSU itself, meaning I don't have tons of unused cables sitting in there.

The thing I forgot is that these motherboards ship with old firmware, so in cases like this where the CPU is significantly newer than the motherboard, but uses the same socket, it'll be out of date. Windows kept blue-screening on install, when I remembered this old BIOS problem. I snatched the newer version to find the old one was more than a year old. After flashing it, the install went perfectly fine.

I haven't done any serious development with it, but can't wait to try it out. Simon keeps noticing all kinds of graphics effects that he couldn't see before on Planet Coaster. I'm looking forward to seeing how it looks when I run a full stack of products on my app (web app, SQL, Redis, ElasticSearch, Azure storage). It's fun to go back to these days of modular comprooders, knowing I can swap something out if I want. I don't know if I ever will, but it's nice to know I can. It was deeply satisfying to build.

Conservative: I do not think it means what you think it means

posted by Jeff | Saturday, July 20, 2019, 1:40 PM | comments: 0

I see the word "conservative" thrown around a lot in politics, and by people who self-identify as right-leaning. I'm pretty sure that they're just using it like one does in a sports rivalry, in part because anyone who disagrees with them is immediately labeled as a liberal. That's not entirely surprising, because the people they do agree with have done a good job of framing everything as an us versus them debate, so if you're not with me, you're against me. I'm disappointed that people are so willing to be manipulated like that, to feel safety in numbers for a position they can't even explain.

For real though, if we are to consider what "conservative" means in the context of modern American politics, the people identifying as such are completely wrong. Let's start with one of the fundamental tenants of conservatism: fiscal responsibility. While Reagan in many ways can be considered one of the key figures in modern conservative terms, he gave little more than lip service to fiscal responsibility. He started us down the road of increasing budget deficits, by cutting taxes and increasing spending. Ironically, relative centrist Bill Clinton was the only president in my lifetime to achieve a budget surplus. Reagan ran up consistently high deficits, both Bush's did better, Obama offset initially high deficits with lower ones, and Trump is back to high deficits. Our debt to GDP ratio is getting dangerously high, and you can thank the "conservative" president and Congress for that.

Conservatives also favor more civil liberties and less restrictions. That starts with getting out of bedrooms and healthcare, and we're seeing the opposite with the constant attacks on the LGBTQ+ community and women's health. Worse, the so-called conservatives root this toxicity in religion. If you're really conservative, you're not interested in getting involved in religion or forcing your religious views on others. Getting out of religion was a founding principle of this nation, and that sentiment is enshrined in the Constitution.

So whatever this current notion of "conservative" is, it's not. Sure, there are variations on the theme when you tack on a modifier, but they turn the core intentions into generally vile and inhuman emotions. Don't be that person.

2018-2019 Orlando Broadway Series review

posted by Jeff | Monday, July 15, 2019, 11:10 AM | comments: 0

To say that this was our best season yet at the still shiny Dr. Phillips Center for the Performing Arts is selling it short. This year was beyond great. We didn't get the add-on this year, which was Jersey Boys, and I'm OK with that. I saw Hamilton three times to make up for it. This is way overdue, so the shows aren't particularly fresh in my mind, but I'll do my best.

Hello Dolly

This is one of those classic musicals that I feel obligated to see, since my education needs some catching up. As revivals go, this one was selling Betty Buckley over the title. She's over 70, and won a Tony for Cats. Honestly, the most I knew about this show was the song they use in the movie Wall-E, but I knew the premise.

It was entertaining, for sure. Buckley was charming and frankly pretty good for her age. It turns out, she called out the rest of the run (Wednesday is our night) in Orlando, and word is that the understudy was pretty amazing. Still, I liked the show and it made for a fun date night.

White Christmas

This isn't technically an old show, it's just a 15-year-old show based on a really old movie. It's one of Diana's favorite movies, and I end up seeing it most years. I admit I'm not fond of old movies, but this one does convey a sense of innocence with its quaint misunderstandings and what not. The show is everything that you like about classic musicals, with lots of dancing and big numbers. It's the kind of old school spectacle that I associate with those Hollywood golden age musicals, but it's far more exhilarating when it's live on stage.


I called this one out and already wrote a review, because I saw it three times. First time I got what I think was the last seat, and it was opening night. Second time was our normal subscription time, then the third time was a matinee with Simon and Diana. The #PhilipTour was something special, for sure.

Fiddler On The Roof

This was the sleeper of the season. It seems there's always one non-Equity show every year that ends up being kind of "meh." This was that show. The lead playing Tevye was solid, and the two oldest daughters did OK, but that's where the skill ended in this show. The choreography was the same drill, over and over again, mostly people moving around in circles. Overall it was disappointing. Old shows don't need to be "fresh" per se, but I do expect them to be well crafted considering what ticket prices cost these days.


OK, so this isn't technically a part of the season, but it's the second straight year that we did it, and it was awesome. As much as I know there are a million things to do in New York, it's impossible not to love going to the city and seeing as many shows as possible. I already did reviews for those shows: King Kong, The Prom, Waitress and Harry Potter and The Cursed Child. Yes, Waitress was a repeat for us (played Orlando last season), but I regretted not seeing it a second time. The big surprise was The Prom, which was so, so great, and I feel fortunate that we got to see the original cast.

Dear Evan Hanson

Hanson was one of the two shows I tried very hard not to learn too much about. I knew the basic premise, but I tried hard to avoid hearing the music. I just wanted to wait and see it for myself, knowing full well after the hype that it would certainly tour. I relented the day of the show, when I listened to the original cast recording.

Without giving too much away, a miserable bully kid commits suicide, and one of his regular victims is mistakenly thought to be one of his friends. He runs with it, persisting the lie, and inadvertently takes up the cause of making sure that lonely kids are heard, so they know that they matter. It's timely given the rise in teenage suicide. The story works pretty well to a point, but in the second act you have to wait a little long for Even to be found out. The pay off comes a little late, when there's still stories to tell about the wreck that frankly all of the characters embody.

But the music is pretty great. The swelling and amazing "You Will Be Found" is worth the price of admission alone, but others like "Requiem" and "So Big/So Small" are the kinds of songs that are emotionally exhausting in a good way, that force you to feel. It's a great body of work, even if the second act needs a little work.


Anastasia came out in a rough year to compete, with Hamilton and Waitress, two of my favorite shows ever. School of Rock was that year as well. Calling this an adaptation of the film, which is often incorrectly attributed to Disney, is a stretch, because it only uses a few songs, in a show that's otherwise too damn long. Seriously, it needs editing because it just drags on, even after the conflict has resolved itself.

Still, it's a solid show despite the length. The performances were all pretty good, especially the lead, with beautiful sets and one of the more clever uses of video walls and projection, with probably the best blending to practical scenery that I've seen. I liked the music, even though half of it was somewhat forgettable. Like I said, the show just needs some editing.

Come From Away

This is another show where I knew the premise, but I avoided learning anything more. It's about 9/11, and the 38 planes that were diverted to Gander, Newfoundland, Canada shortly after the terrorist attacks. There were 7,000 people added to a town of 9,000, so what happened next involved a lot of stories to tell. To that end, they tell a lot of stories based on the real people and events of that week. The story is told in one continuous stride, without intermission, about 100 minutes straight (bummer for concessions at the theater). The cast plays multiple people, usually a plane person and a local from Gander, and they change so quickly that they often have costume changes right on stage, adding or removing a jacket or hat. It all works surprisingly well, and with a set that's little more than chairs.

The rapid story development keeps things moving, certainly, but it also conveys a sense of urgency, which was undoubtedly felt on the ground that day. It's surprisingly funny for a show about 9/11, but it also has some deeply moving parts where the action seemingly takes the air out of the theater. There's a brilliant arrangement for a song called "Prayer" that uses what I find is often called "The Prayer of Saint Francis," but it's mixed with lyrics in Hebrew, Hindu and Arabic, to really drive home the point about the common points of religion. Then there are other songs involving fatigue, anxiety, fear and other dark feelings. It's emotionally exhausting, even to listen to the soundtrack, but at its heart, it's a show about how people can come together in the worst of situations. There are some real happy endings though, and the finale, as the band keeps playing when the lights come up, is amazing.

This is my second favorite show of the season, and if it's still running next time we visit New York, I'm pretty sure we're going to see it again.

The horrible archetype alpha software developer

posted by Jeff | Monday, July 15, 2019, 10:05 AM | comments: 0

There was this crazy Twitter thread where some dude extolled the virtues and value of the "10x developer." I thought he was just trolling, but then he doubled down about how serious he was. The larger community called him out pretty hard, but it's still surprising that anyone would think this way. A socially challenged guy (it's always a guy) who codes 12 hours or more a day, every day, praised for "getting shit done," doesn't communicate well, feels entitled because of the volume of work that he does... that's the alpha dev. You don't want him, I assure you.

I saw examples of this pretty early in my career, and I still see it constantly. It's not just young, smart, college drop outs, either. I've seen guys who have operated that way for 30 years and are still employed. The worse flavor of it, dude was two years from retirement. They're terrible to work with, they're the only ones who know about the innards of the software, they believe they're untouchable and they rarely help out the junior folks on the team. They're also pretty much at the center of the toxic bro culture that seems prevalent at a lot of companies, and especially in the valley.

That's not to say that senior developers, true battled-tested folks who have worked in large teams on large scale things, aren't extremely valuable. At a previous job, when I was still writing code, I worked for a company that hired those folks almost exclusively (until they couldn't find any more). That was a dream situation, unsustainable as it was in terms of hiring and cost. But even when the company started spreading out with a better mix of junior and mid-level developers, those good senior devs wrote maintainable, scalable code, and they were generous with their time with the rest of the team.

Is there a multiplier for their output? You might be able to argue that, but what they provide is different. They can lead by example, in code and in process. They know how to work with people from all parts of the business. They're thoughtful about the decisions they make and the long term impact they have. They understand the balance between urgency and importance, and can advocate for the resolution of non-obvious technical challenges. Best of all, if you set them up right, they're going to train their eventual replacements.

But that guy on Twitter and his mythical creature? You don't want one of those.

Why self-help and best practices aren't

posted by Jeff | Thursday, July 11, 2019, 10:45 AM | comments: 0

It's astounding at how big of an industry "self-help" has become. Ditto for the countless books about business and professional development, as well as countless consultants and bloggers, are a big deal. Even in software, we have so many experts that are anxious to prescribe process and practice for you.

I think that self-improvement is a noble and even necessary pursuit. However, if there's anything I can generalize about all of this stuff it's that it's... generalized. It's all high-level, starting points, abstract, general. Its usefulness is limited because it's not contextual. Real life has a lot of nuance.

So what do you do with that? You engage professionals who can work with you in context after you've exhausted the usefulness of the general stuff. I can read a book on self-confidence, but if I'm going to really have a shot at improving it, I need to see a therapist. I can read a book about how some CEO worked hard to be successful, but I have to consider that person is an anomaly and an exception to the rule. I can see a talk on implementing some stellar best practice at work, but my chances of success with it are higher if it's done by someone who has experienced using it in a similar situation.

The harsh reality that I've come to accept is that experience (or inexperience) plays a huge role in everything we do. I know, duh, we do really stupid things as teenagers, somewhat less in our 20's, and by the time we really have things figured out, we're closer to retirement, or empty-nesters, or unfortunately on non-first marriages. Experience seems to be the only thing really indicative of long-term success, which makes sense considering how environment becomes such a huge influence early in life.

If that reality is bona fide, then I wish someone would have explained that to me around the time I was in college. The early success in my first career came rapidly because I pursued experience, but the advice I was given was to be relentless. That relentlessness only served to make me tired, in retrospect. Today I'm back to looking for the experience, and have worked very hard to build a network of people who can help me with that. TED Talks and books aren't enough.

$90 per dose for a drug, that's totally fine, right?

posted by Jeff | Wednesday, July 10, 2019, 12:16 PM | comments: 0

Diana's neurologist would like for her to take a drug when her migraines get particularly bad. The "good" news is that insurance will cover four doses per month, and after that, they cost $90 a hit. Wrap your head around that.

Simon has been on and off various ADHD meds, as it takes some amount of experimentation to find what works, and it changes over time since little humans are constantly changing. Some of them have been well over $100 per month. Yes, I'm complaining, but it could be worse. If any of us were Type 1 diabetics, we would have to spend far more on insulin just to stay alive. This while politicians make stupid comments about eating better or getting in shape (if you don't know the difference between Type 1 and 2 diabetes, look it up).

I'm in the fortunate position that my line of work means I can reasonably pay what I have to make sure my family gets what they need. What's annoying is that this is after I spend nearly $10,000 on health insurance per year, and my employer frankly gets an OK deal on insurance compared to some. But what does someone do who makes less or doesn't get any employer-subsidized insurance? If you answered, "They get sick and die," yeah, that's pretty much it. Even a $50 co-pay for some people is the difference between making rent or not.

The frustrating thing about this is that the people so against overhauling the health care system are the people who are likely hurting the most. Explain to me why this current state is OK?

I don't have any solutions. I'm not a clever economist, I only see people in every other civilized nation not have this problem. Huh.

Silly abstract questions in tech interviews

posted by Jeff | Monday, July 8, 2019, 7:58 PM | comments: 0

I encountered yet another Twitter post where a guy is super proud of the abstract brain teaser question he asks of interviews. Why is this still even a thing?

If you're not familiar, there is a long history of the big and famous tech companies having interview processes with all kinds of ridiculous and abstract questions. The justification for this usually goes along the lines of, "It shows how people think," or, "We want to filter out people who aren't good at critical thinking." It's usually splashed with some arrogance about how great their process and company is, and how important the job of software development is. And nothing proves that you're innovative like explaining why manhole covers are round!

Learning how to interview software people is often like learning how to exist in a relationship. So if your parents engaged in a toxic relationship, that might seem normal to you. Similarly, this interviewing process is learned behavior and I'm surprised at how often smart people persist doing things in a way that ultimately probably doesn't serve them. Microsoft used to be that way, and I know Google and Amazon often still do it. Valley startup types are known to take it one step further by testing to see if you'll even donate blood and work 80-hour weeks for a cash-out that won't happen.

I've been hiring and interviewing people on and off my whole career, and I've been a part of some really amazing, high-functioning, innovative teams (and only one of them was on the West Coast). My interviews in every one of those situations was consistent: I was quizzed on practical knowledge, applied to real situations. I was also probed for soft skills as appropriate, but never for some nebulous "culture fit," which tends to be code for "drinking buddy" or "not better than us." I was often tested for broad conceptual knowledge, but rarely for encyclopedic knowledge that was easy to look up.

Let's break it down. Hiring people is hard, because the indicators for success are really only discovered in the course of a person actually doing the job. You can usually sniff out the fakers and bullshit, but sometimes they show up and you know pretty quickly that you made a mistake. It's certainly happened to me. So your best bet is to test the ability of a developer by seeing if they can... wait for it... write code. The depth to which you do this depends in part on the career level that you're hiring for. It's not inappropriate to have a junior or mid-level developer actually write code in front of you. For more senior people, at the very least you want them to look at actual code and see if they can identify anti-patterns and ways to optimize things or design a larger system. At every level, you need to ascertain what they actually did at previous jobs, and be on the look out for "we" and "they" and no context that includes "I."

If you're a manager and accountable for a development team, then you are probably measured on things like the volume of work performed, the quality of the work, the overall execution. You aren't going to be judged on whether or not your devs know why manhole covers are round. That's not a proxy to the ability to deliver code that advances the business, so why would you assess that in your interview process? The ability of a candidate to answer abstract nonsense is only indicative of their ability to interview, not perform the job.

Return of the radio dead air dream

posted by Jeff | Sunday, July 7, 2019, 11:30 AM | comments: 0

It has been years, but I had the radio dead air dream the other night. The way that this usually goes is that I'm in some situation where I'm back on the air at a radio station, and I can't find the next CD to cue up a song, so I'm transmitting silence. (And give me a break about it being CD's... that's what we had when I was working professionally as an "air personality.")

This particular instance of the dream was interesting, because it bled a little into the moving into a dorm dream, and I remember a ton of the context and feelings. I was moving into a college dorm, but apparently that already happened. I was returning to a broadcast complex on campus that was totally unfamiliar, so not where I went to school. The radio station was dormant, which makes sense since my last visit to my college station some years ago was rarely on the air during the day (and it's a damn shame). At this point in the dream, I remember now feeling very adult, that my intention of being there was to teach others. That's a little presumptuous, because I haven't been on the air in almost ten years, but dreams never make any kind of chronological sense.

So when I couldn't find the next song, or any CD's at all (ha! maybe that was the problem), I remember the intense feeling that I had to set a good example for the kids who would be learning from me. When the failure occurred, I remember calmly trying to diagnose the problem and not freaking out, much in the way that I would today approach debugging software instead of pounding my keyboard in frustration. That's a distinctive difference in this instance of the dream, in that I did not experience the normal anxiety that I associate with it.

Still, there's a lot to unpack here. I'm not sure why I still think about radio, with a decade since that last air shift for fun at my college station, and 13 years before that when I did it professionally. I'll always tell people it was a lousy, low-paying profession, full of egos and nonsense, but spinning tunes for people is fun, and I was pretty good at it.

The teaching angle makes a lot of contextual sense in my life now. Obviously I'm a parent, but I'm also in the largest scope leadership position of my career. Professional development is intensely important to me, sure, but I don't teach software developers in an instructional sense. Heck, if I'm hiring right, they should all be better at it than me. But that accountability for people getting better, that obviously weighs on me and I take it seriously. I think it's healthy to worry about that sort of thing.

I imagine there's a little bit of desire there to prove myself as well. If I had to be top technical guy at work and less of a manager, there would be some areas that I'm definitely not experienced enough even if I conceptually understand those areas. That's a minor motivator for continuing to work on my open source project, for sure, to maintain some street cred so I'm never the out-of-touch manager. I've worked for those people before and they suck.

Suboptimal vacation

posted by Jeff | Wednesday, July 3, 2019, 5:22 PM | comments: 0

We just got back from our annual 5-night cruise with two stops at Disney's Castaway Cay, and it didn't go well, to say the least. Diana started with a minor sore throat about a week ago, which turned into full-on bronchitis. We hoped on Saturday, while in Nassau, that a solid afternoon and evening of rest would help, but it did not. The worst part of it was that she couldn't lie down without going into coughing fits, so there was little rest to be had. We got her to the doctor within a few hours of disembarking the ship, for a treatment including a nebulizer, a steroid and some antibiotics just in case, to head off any potential for pneumonia.

I didn't really get bummed out about the situation until today, after leaving the ship. In the moment, I think I was just trying to take care of everyone. I did my best to take care of Simon (and we had some quality beach time, for sure), while Diana got to rest. Simon has become very independent on cruises, fortunately, and he largely can do whatever he wants. That means me and Diana could hang out in a bar and meet people from all over, usually, but she was obviously in no shape for that. I was really looking forward to that time together.

I'll bitch and moan, because it's the week of my birthday, and get over it just as fast. I still think that we banked a lot of vacation karma when it all went sour on the trip to Cedar Point to do a GKTW fundraiser (the great water main break), but maybe we cashed those points in on two relatively great trips to NYC the last two years. Mostly I feel bad for Diana though, because while I was splashing around in clear ocean water, she felt like barfing up a lung in 200 square feet of stateroom. She's the one who deserves a do-over.

The hate energy

posted by Jeff | Tuesday, June 25, 2019, 10:30 PM | comments: 0

I've seen a lot of musicals in the last six months about not hating on people. Dear Evan Hanson was about kids who struggle to fit in. The Prom was about letting go of your dislike for that "LGBQ-teen" who wants to bring her girlfriend to the dance. Come From Away best shows the ability of humans to come together in extraordinary times of crisis. It takes place in Gander, Newfoundland, Canada, on the week of 9/11, when 38 planes are diverted there with 7,000 people aboard from all over the world, stuck in a town that only had 9,000 to start with. Spoiler alert: They make it work.

We stayed for a talk-back after the show when it came to Orlando, and one of the leads, who plays a gay Californian and an Egyptian man in the show, told us the story about one of his best high school friends. The friend was an all-star athlete, adored by his classmates... until 9/11. As the child of Pakistani parents, he was immediately viewed as a pariah in his community, for no other reason than his religion and his parents origin. The actor believes that playing that role, of the Egyptian that some don't wish to understand, honors his high school friend.

As terrible as 9/11 was, for awhile at least, people seemed willing to take care of each other. President Bush at the time made an impassioned speech about the need to not cast Muslims as terrorists, because, "In our anger and emotion, our fellow Americans must treat each other with respect." Heck, it was kind of like that after Irma a few years ago, around the neighborhood, even though it was mostly issues of debris, down trees and minor roof damage. People helped each other out when things were hard.

Now, there's so much energy put into hate and distrust. Politicians want you to hate brown people and rich people, depending on the side of the aisle they align with. Some crazy assholes are calling for gay people to be executed by the government, on behalf of their church, no less. Racism is persisting among young people, the ones I would expect least likely to engage in such behavior. Women are still trivialized in all kinds of professions as inferior. This is all going on in 2019.

I try not to be judgmental toward these people, but it's hard not to. I don't know where they find the energy for it. First of all, I can objectively observe that none of these groups of people pose any threat to me. (Dear white, straight, men: You've always had it better than everyone else, and you still do.) Given this condition of non-threat, I see even less reason to possibly spend any time using my valuable energy toward hating anyone, with the exception of willfully ignorant people, because that's a choice. I mean, imagine how freeing it would be if you could let go of the psychic cost of expressing hate. There are no useful outcomes for expressing hate. None.

Current vs. ideal state

posted by Jeff | Thursday, June 20, 2019, 10:30 PM | comments: 0

Almost a year ago, I wrote that scaling is always the problem. I had recently started a job where I had to scale, along with the business, and the team and process that I had in my charge. That continues to be part of the challenge, but I've also come to realize that problem solving is better approached by figuring out the ideal state and working backward from there. Concentrating too much on current state makes it harder to even see the ideal state.

Let's say you have to build a wooden box. You have some of the wood to frame it, but not enough to cover the sides, and you have some screws and a screwdriver, but no drill. Looking at it from a current state point of view, you have a number of constraints that make it difficult for you to finish the box. That's demotivating, for sure, but it also makes it harder to see what the box could be. You aren't thinking about hinges for a lid, or a knob, or even paint. There are elements you don't have on hand, so the ideal is further away. But if you could step away, and think, "What do I really want a box to be?" it leads you somewhere better. In this case it probably leads you to go to the hardware store and get what you need.

I think I instinctively knew this, but don't always apply it where I should. When I knew I wanted to live in a better climate, and get to a certain place professionally, I looked at the ideal and figured out what the interim steps should be. The plan changes and bends as you discover new information, but forward momentum comes easy when you know what that ideal looks like. (For the record, the locale was easy, and the career goals have evolved, but I'm headed in the right direction.)

I've defined the ideal and worked backward from it on all kinds of important things. I did it in terms of my relationship goals, professional goals, financial goals, really all the big life things, and those are all works in progress. There are day to day things that it works for as well.

So yeah, don't let current state get in the way of where something could be.

World of cocktails and fruity beverages

posted by Jeff | Tuesday, June 18, 2019, 10:15 PM | comments: 0

I've always had a complicated relationship with alcohol, because there's a fair amount of addiction in my family. I vaguely remember my grandparents on my dad's side basically having a bar in the trunk of their car on some trip. In college I didn't want to be around it until later in my junior year. Once I was legal, I enjoyed weekend beers but didn't have a ton of money for it. I drank a lot at parties and holidays after that, but relatively infrequently in a weekday capacity. As I progressed into my 30's, my body became less tolerant of beer, but I liked wine with dinner. Cider, especially Strongbow, became a favorite until they made it too sweet. I liked fruity vacation drinks, but never really encountered them until, well, vacations.

Moving to Florida enabled two behaviors: Frequent theme park visits and cruises. Both of these expose me to those fruity beverages on a regular basis. The thing is, other than the classic mai tai that I've made at parties for years, I've never really known anything about making drinks. Then we started doing mixology classes on those cruises.

Before that even, we did a cruise near the holidays where the drink of the day was the "Christmas cookie," and a few years before that cruise they posted the recipe online. It's a little work because of the ice cream, but it's fairly easy to get great results at home.

Another one came from a bartender that works the premium bars on the Disney Dream. It's pineapple juice, Midori and Malibu, with whip cream, shaken over ice and strained. It's so good. For a shot, we learned how to do a "mini-beer," which is 43 and a little heavy cream on top (tastes like ice cream). We learned how to do a really good margarita with George Clooney's former tequila, Casamigos, an orange liquor and a little lime juice (no "mix").

I revisited some college favorites, too. I mixed up the classic mudslide by using Bailey's, Kahlua and whip cream shaken. And since I had Bailey's, it was easy to get butterscotch schnapps for the buttery nipple shot.

Epcot had the easiest no-brainer, ultimate summer drink, I think at the Flower & Garden Festival. It's Bacardi Dragonberry rum with Welch's dragonfruit and mango juice. It's stupid easy to make.

Given my desire to share and make stuff for others, I decided to make the butler's pantry in the house super functional. I hated spending the money on it, but the options were to have that or an empty space, and it seemed kind of douchey. But now that I'm pouring for friends (and myself on weekends), I love it. I had to equip it correctly, so I bought all of the essentials, including Boston shakers, a strainer, a glass salter, a rubber mat, and I already had a little cutting board from last year's Food & Wine Festival. I also bought proper pour spouts for all of the bottles.

My pouring technique is really solid. I've had enough practice in the last year that I'm efficient and relatively precise. In fact, it was super validating on the last cruise when the bartender complimented me.

The down side of this little hobby is that it's expensive to have a lot of varieties of liquor on hand. The good stuff, like the Casamigos, is $40 a bottle. So we don't have a huge collection of things (although things like Malibu and Bacardi flavors are cheap for giant bottles), but we can make a solid variety of things for guests.