The relative peace at the Capitol seems strange considering what happened a few years ago. That it happened at all is shocking, but what is deeply concerning is the number of people who think it was no big deal, or worse, justified. Sometimes I don't recognize a country where some folks think having a dictator would be fine. Change happens slowly, and we get it wrong (a lot), but we're nothing without democracy, and the foundation established by the Constitution.
Spring break is here. While I'm sure Simon is breathing a sigh of relief, I am right there with him. I didn't really detach from work until about 7, which I don't like to do, but things are challenging and I wanted to set people up for success.
And so I'm sitting here, as if letting out a very, very long breath that I feel like I've been holding for months. I do this every single spring, it seems. I go three months between significant time off, but I never make it a point to unplug in between. And I wonder why I'm battling anxiety.
But I left things in a pretty good place, or at least, good enough to feel able to disengage. It feels great. I still have a little travel anxiety, because it never feels quite right until you're where you want to go, but everything is more or less headed in the right direction.
Unwiiiiiiiiiind...
I bought the 16" M2 MacBook Pro about a year ago, and it has been fantastic. As I said, Apple got back to making excellent hardware. I've enjoyed writing code on it, as it really has no compromises. To that end, I was not in the market for another laptop, a second one, but I was looking for a solution to my lighting console problem. The short version is that the console I'm going to acquire lacks its own computer or screens (and therefore does not cost $80k!), so I was looking for a practical solution. My first thought was to get one of those little NUC machines and some big touch screens. Then Dave 2D previewed this new Asus, and it was like it was made specifically for this problem. A laptop with two screens is far more portable and easy to roll with, and I could add another external screen, too. This one is not intended to replace the MacBook, but I inevitably have to compare the two.
This machine will be the brain of the lighting rig, but it's also an opportunity for some light gaming, as my only Windows computer. With 14" screens, it also feels less cumbersome to carry about. It comes in two versions, with the base at $1,500, including a Core Ultra 7, 16 GB of RAM, 1TB of storage and 1920x1200 OLED screens. What's crazy is that for only $200 more, you get twice the RAM, 2880x1800 screens and a faster Ultra 9 CPU. I say crazy because $200 wouldn't even double the RAM in my MBP. What I'm struck by is the quality of these OLED screens, and why Apple still isn't using them. Battery life is around 8 hours for normal browser-based stuff, maybe more, and I imagine it would be about the same for dev work (with one screen, anyway). The keyboard you'd think would be squishy given its ability to separate, but it's considerably better than the one on my previous Surface Laptop and the HP that I had before that.
The two-screen trick is not something that I've used that often, but when I have, it's a seamless process. You pull the keyboard off, prop up the computer on the kickstand, and that's it. I set up the computer with an external ViewSonic screen, and found it ran the lighting software perfectly across the three screens. I've used it a few times with multiple browsers open on the two screens. It's odd to have them over each other instead of side by side, but I think that's just muscle memory.
I can't understand why someone didn't think of this design sooner. The 2-in-1 convertible tablets and all of that are fine, and Surface Pro definitely fills a certain niche, but this thing is just silly practical.
After five years, I finally quit my HOA board. It was time. It was a thankless "job" and the board had changed in ways that I wasn't crazy about.
When I first jumped in, it was to see through the orderly transition from the developer, and the likely lawsuit to sue the developer for the way they left the association. That's far enough along now that it's on autopilot. The other "young" guy on the board moved out of the neighborhood some time ago, leaving me to fend for myself against what I perceived to be not ideal stuff. And I consider myself young because, relative to the other members, I am. That's where it's at.
But also, after all of this time, we've only had one actual election with a quorum, so with me leaving, there's only one member actually elected. That doesn't feel right to me, and some members of the board were fine with that. I had to push just to get them to solicit applications for the person we would appoint last time. I'm not OK with that. I think it's time for some turnover, though I'm not sure if the members are motivated enough to actually get involved.
On a personal level, it's just another step in evaluating what I want to spend my remaining keystrokes on. This was not something in that category. I felt like I was always a dissenter, I wasn't taken seriously, and our president even emailed the association attorney once indicating that the board "didn't care what I think," then cc'd me on her reply. (Calling him out, he never responded.) Even five years ago, I would have raged and tried my best to assert my position, but now, I don't care. There's no value in chasing that.
Unfortunately, the thing I most take away from it is that people just don't give a shit. Civic engagement in this country is a joke. People bitch and moan, but they don't get involved, which is the reason for the lack of quorum. It's not hard to extrapolate that to the national scene, where apparently people are willing to elect and old man who is by every definition a fascist and a criminal. I mean, there are residents here who still think that the city on their address is the political subdivision that we live in, even though we're unincorporated. It's like they don't pay attention enough to see that they don't vote for people in that city or pay taxes to it. I'm not pointing that out to feel smarter or superior, I just think that's basic civics.
So that's it. I can say that I did it. I know how the sausage is made, and I can move on. There are a million better ways to direct my energy.
Some combination of my own journey, things I hear on celebrity podcasts, stuff musicians say, articles... all point to a certain level of self-awareness among the members of my generation. I suppose this is just something that happens to people in midlife, but it feels bigger than that, if only because it's our lived experience.
The background might matter. When we were in high school, the "grown ups" told us, go to college or a trade school. Don't rock the boat. In our college years and 20's, it was already pretty clear that the generation before us left a real shit show for us to clean up. The problem is that we got so used to being called the slacker generation that we kind of bought it, and didn't engage. There were hints that we could have, as we seemed to be the only people to take the AIDS epidemic seriously, and we pushed for recycling.
Then two decades passed, and to be honest, we were still phoning it in. There has never been a Gen-X president. (Obama was born in 1961, so while he may have been embraced by us, he wasn't one of us.) Hell, we went backward and had two Boomers since, one of which is a total sociopath, the other just... old. But during these two decades, it's not like we haven't gained wisdom and experience. We've seen some shit.
Now it's starting to feel like we're waking up. We accept the reality of our childhoods, the concept of chosen family, the place of work in our lives, how remarkable technology is, the importance of mental health... just getting our priorities right. The question is, will we step up and attempt to lead? I anecdotally see it now and then in my line of work, but no obvious trend. The reality is that our role may be limited, with the understanding that it's not always worth stepping up for things that clearly do not serve us. For example, I'm ready to walk away with something that I've been involved with for years, and I'm good with it.
For me, it's coming to grips with all of my story so far. High school was socially a disaster and I was lonely most of the time. I spent literally decades embarrassed by that, instead of embracing it as a means to move on from it. In college, I struggled to make romantic connections (in retrospect, largely because I was oblivious to signals). The things that drove me out of radio and television were not really about me (well, except for the part where software was clearly a more lucrative career). Getting divorced was, in some ways, a gift that enabled Team Puzzoni, and I still get to be friends with my first wife. And the autism and ADHD diagnoses were literally a life changing gift. I can give myself the grace to believe that I'm not defective in my relationships. I'm starting to better understand my interaction with every human being, and acknowledge when I just need to break away for a bit.
It seems like a lot of anthropologists and psychologists consider all of this as the normal progression through life. But as part of a generation that has little common experience beyond 9/11, it does feel like something we share.
What a strange year to think about my one and only child. We've managed to get him this far, and now he's technically just four years away from legal adulthood. It's really hard to wrap my head around that.
Being the parent of a teenager is one of the hardest things that I've had to do in life. I'm not particularly good at it. By that, I mean I am very impatient. That's not a good mix with a kid at an age where he wants to challenge literally everything. The thing that feeds into this is a desperate feeling that he's going through a lot of the same things that I did, and not the good parts. He's not me, but it's hard to separate what looks like a remake of a movie.
Simon is already asking about why he has to learn anything that they put in front of him, which creates a lot of fear in me. What's worse is that I now see that so much of the system intended to accommodate neurodiverse kids lacks significant accountability for the kid. The balance is completely out of whack. It's a disincentive to even try something when you know that someone will help you, especially when you're a teenager that would rather be doing anything else. My perception is that a lot of what makes it difficult to do homework is starting, especially when it involves writing. Like me, he's often not interested in the work to arrive at certain outcomes. His odds of going to college seem pretty mixed, and while I don't think it's entirely necessary, the numbers favor college grads for quality of life.
Socially, he has still not really found his tribe. When I pick him up from school and he's sitting alone on a bench, it's heartbreaking. That was me. I know what that feels like. I'm crossing my fingers that high school will be different, and we're committed to trying to get him involved in things.
The thing is, when he's not doing teenage boy stuff, he can be a funny kid. He's interested in music. He wants to know how things work. He's borderline obsessed with theme park attractions. He's fun when we're doing fun things. He's fiercely independent on cruises and often at theme parks. He loves helping with the foster cats. He can be generally delightful at times.
One of my favorite times with him last year was when he helped me out shooting for my rum documentary (which I'll edit someday). He took a real interest in understanding how the equipment worked and was eager to be responsible for things.
It's possible that he's outgrown photos with Elsa, because that's embarrassing, but cruises continue to be a safe place for him to be himself, do things on his own and generally be a happy kid.
I think the day that I realized just how tall the kid was getting was this day, when we did a Segway tour in Mt. Dora. Mind you, everyone is a few inches taller on one, but it felt extra obvious that day.
Our trip around Northern Europe was obviously the highlight of our year. It's a trip that we put off for years because we figured that it would be difficult to keep him engaged and fed. A cruise was an obvious choice, because it solved both problems (and London and Copenhagen at the bookends obviously have McDonald's). It was also a great way to sample a bunch of countries without devoting waking hours to being on planes. This was our first of two stops in Iceland, this one just outside of Reykjavik.
On the last full day of our trip, disembarking in Copenhagen, we visited Tivoli Gardens. Impossibly, a bunch of young women in another country started shouting Simon's name. It ended up being some of the youth counselors from the ship, who were making a quick day trip to the park. They're always so good to him, and it's emotional to say goodbye.
One of his prize possessions, something he bought, was an electronic MagicBand. Mostly it glows and does stuff in certain places in the theme parks and on the ships, in conjunction with a phone app.
When he does get it in his head that he wants to buy something, he starts looking for ways to make money around the house, which I don't mind. In this case, it was power washing the driveway.
For all of the drama and frustration, we do have some good times together. Sometimes it's hard to remember that when we're struggling with school work and responsibilities.
We spent part of Christmas volunteering at Give Kids The World again this year, so I guess that makes it a tradition now. When it comes to philanthropy, he kind of oscillates between what's in it for him and the benefit of serving others.
Simon had his first dance this year, which as best I can tell went about as expected. Mom was there as a chaperone, which I suspect made a huge difference in his decision to even attend.
We once again started his birthday week at Splitsville, which is expensive, but I suppose worth it once a year. He still uses the bumpers, but the ball ramp is a distant memory for this kid standing about 5'4".
Last weekend I spoke at Orlando Code Camp for the eighth time, which is to say every year since I've lived here outside of the pandemic. Every year, I wonder what it is that I can talk about, seeing as how I'm not really writing code all that regularly. But naturally, I spent all kinds of time in the last year experimenting with lighting control protocols, so that bubbled up on the list pretty quickly.
I feel pressure for this sort of thing, because most years I've presented stuff that filled the room, and some years even had standing room only. I had one stander this time, which I consider a success in terms of topic selection. It went pretty well, I think, and part of the reason for that I suspect is because it's neat to have code drive physical movement in meatspace.
I can't explain why I do this stuff, other than the idea that it reminds me a lot of doing radio. It's not really for the "likes," I think that it's a way to share enthusiasm for something. There's a fair amount of prep work for these, and you don't usually get paid (larger, regional events will generally pay for a hotel room). It might partly be out of obligation, because I learned all the things from others. I should return the favor, though I'm not sure that this particular knowledge would be useful for any normal situation.
The code from the talk is on the Github, and I did a video version from home in advance for the YouTube.
I've been trying to get over the untimely demise of our Model 3, Hygge (you can name them, you know), and maybe it helps a little that we got the replacement today. The new one, Sven, is a Model Y, basically the three-years-newer version of our other car. In terms of EV's, it was the best deal, and certainly we knew what to expect. There are also little things that Diana said she's hate to go back to, like keys, fobs and power on buttons, instead of just having your phone, which is already on you, be the thing. The Model 3/Y is a safe, reliable car. Yeah, one could take issue with Tesla's CEO (and it's a damn shame what he's turned into), but 130,000 people work for an American company making these cars, and I'd rather support that than something else when it's possible and practical.
There are a number of changes since we bought the last one. First off, the fit and finish appears better, with more consistent panel alignment. They added a trunk privacy shelf, which mine does not have so you can look right in. I missed the newer center console by a month or so. There is no piano black plastic anywhere, and they've added some Alcantara accents here and there. They also ship with biohazard defense mode, which means there's a huge HEPA filter now to clean the air.
The other thing that has changed is price. Adjusting for the same options, the car is about $3,500 less than it was, and add another $7,500 off for the federal tax credit, which is mercifully applied at the time of purchase. We were originally looking at the rear-wheel drive model with about 50 miles less range (260 I think), but decided that it may retain more value if we go AWD and 310 miles of range. The difference in cost was only $2k among inventory cars, which is weird because factory ordered it's $5k. They appear to be adjusting thee long-range a lot more.
We ended up getting $27k for the wrecked car, which is far more than I ever expected for a car that was $51,000 six years ago. I can't even believe that it retained that much value. I was just a few months away from having no car payment, but if there is a silver lining, at least the new one is $150 less, and it's only a five-year loan instead of six (remember, interest rates were near zero back in the day).
This is our sixth electric car, which is hard to believe. We leased a Nissan Leaf in 2015 and had it for four years. Tesla Model S in 2015, had it for three and sold it. That was replaced by the now-totaled Model 3 in 2018. The second leased Nissan Leaf came in 2018 as well, and was totaled in December 2020, about six months short of the end of its lease. That was replaced by the first Model Y in 2021, which is about three-years-old now. We've been all-electric now for about eight years. It's hard to imagine having a gasoline car. The convenience and relative lack of maintenance on an EV is huge.
When I look around at what's going on in the world, I hesitate to even go there, but our lived reality is what it is. The world has been throwing us an undue amount of shit the last few weeks. It's not life altering, wreck us kind of shit, but it does feel like one difficult situation after another has been piling up on us. "Well those people have it worse" isn't really the consolation and perspective that I wish it was.
What I hate is that I've probably started a half-dozen blog posts to complain about one situation or another, and then I delete them. Admittedly, in face-to-face real life, it's hard to be around people who mostly complain about whatever, but I don't think culturally we're willing to listen to people who are having a hard time. I try to be better about that for others, and I'm trying to make it OK to vent.
I just want the three of us to have less friction, if only for awhile. Our give/take ratio is way out of whack.
Diana went to Epcot on Monday to spend some time with her cousin. She was on her way out of thee parking lot, when a guy in a Disney maintenance vehicle clipped her in the rear quarter panel. She had the right of way, and there's no telling what the hell the guy was doing, but it clearly was not paying attention. We've got the video footage (below) to prove it.
The damage ended up being about $17k, and with whatever math Florida uses, that makes it a total loss. We had it almost six years and 62k miles. Battery range was still around 290, from 310 originally (you know, for the haters that still think you need to replace your battery). We just had it repaired after the great crowbar incident of 2023. I figured we could easily get a few more years out of it, because outside of cosmetic things, the car was tip-top. And of course, this happens just a few months before we paid it off. So now we've gotta buy another car, which I hoped not to do for quite some time.
And this is our second totaled car in about three years. Don't forget the teenager who blindsided Diana after work one night, killing the leased Nissan Leaf we had.
This isn't going to break us, but it also feels like we can't catch a break.
Monday we once again joined our friends from Upstate New York to do a VIP tour at Walt Disney World. We did this with them about two years ago, concentrating just on Magic Kingdom then. This time it was a combination of Hollywood Studios and Epcot. That means we got to do all of our favorites without waiting, in the company of people we really enjoy. It's totally worth it.
There have been some recent articles with economists talking about the "experience economy," a term that has recently been co-opted by people post-pandemic who want to describe the act of buying stuff that you do instead of stuff that you have. You know, experiences, not stuff. I've talked about that a ton over the last decade or so, and now I believe more than ever that it's a meaningful way to approach life.
Given my middle age, it's clear that time moves very quickly when it becomes routine. That's not a great feeling when you're on the back nine. (Not sure why I used that cliche. I hate golf.) So the value of doing things and going places is hard to put a price on. I have three travel itineraries between now and June, and I'm trying to figure out what to line up after that (it's hard with a kid in school). Some people are critical of others who would spend ridiculous money on a VIP tour like I did, at a theme park that I live next to, no less, but I still treasure the memory of the last time two years ago. Why wouldn't I want to try and replicate that? I'm lucky enough that I have friends like this who show up every year or so and want to do things with us. It's hard to put a price on that. If I can afford to do the thing, I'm going to do that.
I bought so much crap in my 20's, and I thought at the time that it made me happy. And certainly it did, for a little while. In-person retail shopping, you know, where you went to a store and walked around and then bought stuff, was what people did before they micro-dosed dopamine by getting likes on their phone. I couldn't tell you what most of that stuff was. And the worst part is that I bought most of it on credit. If I could tell 28-year-old me that I was being stupid, I would, because the things that I do remember are the road trips, the after-work meet-ups, the little gatherings at my apartment, that sort of thing.
If I'm going to burn through cash for non-essentials, it's going to be to travel and create the experiences. That's what I find satisfying, whatever the cost.
You know how people spout that annoying thing about living in the moment? It's in that category of silly motivational poster nonsense, but generally speaking, there is some truth to the idea. Ferris Bueller wisely said, "Life moves pretty fast. If you don't stop and look around once in a while, you could miss it."
I've come to realize, however, that while we struggle to latch on to the good moments right in front of us, it sure seems easy to wallow in the shitty moments. I've found myself buried in those recently. Clinging to those is antithetical to the idea that we have a finite number of moments.
So yeah, stop doing that.
I wrote yesterday about my memory pressure on the web apps... turns out there's a magic cure.
First off, I'm not an expert in memory management, which is why I enjoy writing code for a managed framework. It abstracts all of that away for you. But also, the thing about stateless web apps is that all of the objects they create are ephemeral. It hears the request, puts some bits together, sends them back, and forgets it ever happened. This is one of the reasons it was so frustrating to see CoasterBuzz pushing 500 MB in memory. If all this stuff is ephemeral, why is it hanging on to all of this memory? I've seen some traffic increases in the last year, but nothing that dramatic.
As it turns out, I learned that there are two different modes of garbage collection, server and workstation, and oddly enough, the server variety does background GC less frequently to devote all the resources to servicing requests. That's neat and all, when you're squeezing a bunch of containers into 3.5 gigs of a virtual Linux box, it gets tight. It can't be sloppy.
Today I learned that .Net 8 shipped with something called "dynamic adaptations to application sizes." I guess it's a better way to decide how many managed heaps to have, and how often to run GC. It just requires adding a couple of environment variables, so I did that. While CoasterBuzz was bumping up against 500 MB or higher before, now it's leveling off at 300.
The only reason I can afford any of this redundancy and elastic scalability is because I moved everything into Linux app services on Azure a few years ago. The cost is one-third of what it was for Windows. However, that does come at a price, because while Windows treats each site as its own process, Linux wraps everything in containers, and all of the overhead that includes. So one Windows app service node with 1 vCPU/1.75gb RAM costs $75, but on Linux two nodes of 2 vCPU/3.5gb RAM is $50.
The hosted forum product is running on two nodes of vCPU/1.75gb RAM for $25, and it consistently uses less than 200 MB. Page rendering times are generally sub-50ms. Considering they're under 10ms on my local computer, I imagine perf could be great if I was spending more than $25!
Anyway, magic fix. The erratic part below is when I was deploying and scaling, but after the tweak, very consistent memory usage.
My mid-year lipid panel was, as I expected, not great for triglycerides. Cholesterol is still great (statins are a medical miracle), but something about my body doesn't connect the two as others might. While I've never had the crazy high levels, like 500 mg/dL, normal is under 150, and my best score over the years has been 190. This time I came in at 294, after a somewhat more palatable 222 in July. This is not a medical mystery... I've fallen off of the exercise train, I'm eating my feelings, and I'm addicted to carbs. I gotta have my tots.
You move that number by way of diet and exercise, so let me take one at a time. My diet is, oddly enough, not full of as many terrible things as you might expect. I don't have soda at home, as I stopped buying it years ago. We don't usually have a ton of chips or snacks lying around, except when we have people over. I haven't had red meat in over 15 years. Mostly I don't eat after 7. I generally try to pay attention to sodium intake. But I do eat a lot of rice, and I'll have chips and a Coke when I'm out. Alcohol can spike the tri's as well, but I doubt that a couple of drinks on the weekend are the problem relative to running through a 2-pound bag of tots every two weeks. I love carbs.
But it's also likely what I'm not eating, like broccoli and brown rice. (Sidebar: Is Chipotle the only fast casual chain that still has brown rice? Pei Wei and Bento both dropped it.) I know I can get down to five or six tots at lunch, and I just need to start making batches of brown rice to have around, as it reheats much better than white.
Exercise is the other half of the equation, and I actually got into a pretty good rhythm pre-Europe last summer. I have a treadmill in my office, and I'd just start the first hour of my day on it, and shower after that. It's easy enough to bang out two plus miles every morning that way, and I know I feel better when I do it. But this hasn't just been a matter of "just do it."
I've been struggling with anxiety since the pandemic started. Job situations made it worse. These days it's more because of parenting. Some of it may just be chemistry, and for the bits that aren't, I'm working with my therapist to figure that out. Anxiety isn't like stress, where you feel pressure in the moment for certain things to happen. Anxiety is more about the future and what might happen. My brain won't shut off, and it's like a multi-threaded stream of nonstop, ADHD-fueled thoughts. This in turn has led to pretty serious insomnia, where I can't fall asleep after hours lying in bed, and then I get up every hour or two. Needless to say, that makes me tired, most of the time, and I can't bring myself to do a lot of things beyond work. Exercise is the first thing to go. I'm not exaggerating when I say that it has become a quality of life issue.
So I need to treat the anxiety. As I said, therapy is part of that, including realizing that so many of the things I worry about are not in my control. I'm trying to reduce CPU time on those things. I feel like the biggest thing to get back on track is consistent sleep, and that requires turning off the brain. I know from very infrequent use of lorazepam that it helps a ton. It's like getting off the freeway on to an empty road with no other cars and no landscape to look at. But that stuff is highly addictive, and it's there mostly just for the increasingly rare panic attack. I also know that medical marijuana works, as little as 2.5mg of THC. So since it's legal in Florida, that's what we're gonna try to get the sleep normalized.
And to get political for a moment, reclassifying weed at the federal level is long overdue. It's pretty clear that there are some benefits when used in certain ways, but the classification prevents quality research from happening. We don't ban alcohol, and it has absolutely zero medicinal value, at all. It makes no sense.
When I turned the forums into a product a few years ago (that I've never marketed, so I have as many customers as you'd expect), I built in a lot of redundancy and performance features, so you could host many forums under different names, but under the covers it would be just one app. In other words, the PointBuzz forums and the testing forums are the same app, they just look different. On top of that, there are two copies running, and the traffic is split between the two. It runs in just 200MB and can still easily handle a thousand requests per minute (that works out to 8 per second on each instance, so there's obviously room to grow). And that's on one virtual CPU and 1.75 gigs of RAM. I could scale it up (more power) or out (more instances), for a very long runway. Even with the two nodes, it rarely replaces one or "goes bad."
CoasterBuzz and the not-forum part of PointBuzz (and this blog and other stuff) run on a separate virtual machine, and it has 2 virtual CPU's and 3.5 gigs, but it was just one node. The whole point of having more than one is if it crashes or something else bad happens, the other one keeps up until a new one can be provisioned automatically. It has been crashy for a long time, and uses a lot more memory. Usually this means it stops responding for a minute or two, but comes right back. I started to notice it more, so I wanted to bump it to two or more nodes. Doing this requires some plumbing I didn't have in place, so I added it, and went to two nodes. And that's when it got weird.
The first thing that I noticed is that both instances would get traffic for a bit, then it would only go to one. No point in paying for two if only one is working. If I scaled it up or down, it would go back to two for awhile, then drop down back to one. My first hint came when the portal said that both instances were unhealthy, which I didn't understand, because I could hit both (you can hack your ARR cookie to go to either one).
My first suspicion was that CoasterBuzz had a memory leak. Sure, it does more things outside of the forum, like serve photos and do news and stuff, but it's not substantially more. I started auditing the code, and I did find some database connections that weren't in a C# using block, but I did close them and they should have been disposed at the end of the request. But whatever, I fixed them up. Overnight, same thing, it dropped down to one.
I was poking around the instrumentation and found that there were hundreds of requests that were redirects, and it was a flat line. That meant something mechanical was doing it. Then, as I was looking around at the site code, I realized that I had a mechanism that redirected any request that wasn't to coasterbuzz.com. Not www.coasterbuzz.com, and definitely not the underlying included name that included azurewebsites.net. Then it hit me... the health check mechanism was hitting the root of the site, and it was doing it at the azurewebsites.net, which I was 301 redirecting. The health check mechanism considers anything not a 2xx return code as unhealthy.
I made a new health check URL on the site, and excluded it from the redirecting, just for Azure's health check mechanism. Suddenly, both of my instances appeared healthy, and traffic was consistently being served to both. Not only that, but the flood of 301's stopped appearing in the logs. That made me happy, though I didn't really understand what was going on.
It wasn't until I RTFM'd that I really understood what was going on. If one of your instances is deemed unhealthy, it diverts traffic to the healthy ones, and spins up a replacement. But it'll only replace one instance per hour, and three per day, or maybe some other limit based on the scale level. The doc says both. But either way, it means you get down to one instance no matter what, and it keeps running it even though it thinks that it's "unhealthy." In reality it wasn't, it just thought it was because of my redirects. That's why I would end up with just one, but also two would stay up if I scaled it in or out (which I did because I would go to three instances when I deployed new versions of the app, as it never appears down that way).
Clouds are hard. But everything is easier when you read the documentation.
I think it was grade five that my class had a field trip to Severance Hall, home to the Cleveland Orchestra. We generally had at least two major field trips in those days, and I believe it was the same year that we saw some kind of performance in the Ohio Theater downtown. It was a pretty big deal, those trips, and it's one of those things where you just assume that everywhere is like where you live. Everyone has one of the world's best orchestras, exquisite concert halls and theaters (and huge amusement parks like Cedar Point). Of course, when you grow up, you discover that's not the case, and so those outings become a bigger deal in your memory.
Fast forward to 2007, when Diana and I on one of our first few dates go to Blossom Music Center, another iconic venue, to see the Cleveland Orchestra conducted by John Williams. That was one of the great things about "our" orchestra, was that you could see them inexpensively with lawn tickets. They were not out of reach for people.
Of course, I couldn't imagine at that time that we'd be married in less than two years. But to really stretch the imagination, one could never think that we would see this orchestra play in Orlando, in a building that hadn't been built yet, where we would be active donors, Diana would work for nearly a decade, and by the way, that building would be one of the most acoustically sophisticated in the world. In Orlando.
But that's the way the math worked out, and here we are. I was not familiar with the pieces that they played, but part of what made it so interesting was the way different instruments, especially the woodwinds, had a conversation. The flute would respond to the oboe, the clarinet to the saxophone. In that room, you could hear every bit of nuance. If you closed your eyes, it was like having headphones on but better. The spacial placement of sound was not a trick, it was what was really happening around you.
Not surprisingly, we talked to several people who were also from Cleveland, and a few that even return there in the summer (wealthy east-siders, unsurprisingly). It's always amusing how many people here are originally from Ohio.
That place has brought me so much joy over the last few years. I was kind of indifferent about the construction of Steinmetz Hall, I guess because it's not where the Broadway tours play, but it turns out we've seen a ton of stuff there. Our gigantic local community orchestra and choir played in there, as well as the Orlando Philharmonic Orchestra, which is itself pretty good for such a young orchestra. The London Philharmonic Orchestra played a residency series in the building, and we saw them with Beck and Sutton Foster. But also, we've had social events in there, with the floor seats flipped underneath into gala mode. I love to see and hear things in that beautiful place.
My first car was a rusted-out beater of a 1989 Ford Escort, which was 5-years-old when I got it. It famously threw a rod in the first two weeks that I had it, which was pretty devastating, but my dad helped me replace the engine. I picked up the habit of logging all of my gas filling and maintenance, mostly because I felt that I could see data in the log. If there were problems, the gas efficiency would most certainly show it, like when the gas tank started leaking. I also appreciated the variability of winter, when I'd get more like 20 mpg instead of 30 when it was really cold.
But what I never did was worry about how many miles I could drive. Especially then, car range was at best a guess, and not one that anyone would ever make. That's because if the fuel gauge was low, you stopped and put gas in the car. That beater probably could go around 250 miles on a tank, maybe a little more if it was warm and mostly on the highway, but I never tested it, because of the gas gauge.
This is why the range anxiety that people have over EV's is comically ridiculous. Oh, the haters will rattle off a million anecdotes about why you should worry about it, especially those around road trips, but they refuse to admit that the majority use case for American driving is not only perfectly fine for EV's, but better.
People drive an average of 29 miles per day. Two-thirds of Americans have a garage. So already, range and charging is irrelevant to a majority of Americans because they basically have a giant cell phone that they charge every night. We keep our cars at 80%, because it's better for the battery, and I couldn't tell you what the range says when leave the house. One of them is six-years-old, and presumably has some battery degradation, but I couldn't tell you what that is. It doesn't matter.
So what about the third that doesn't have a garage? They obviously have to rely on public charging, but beyond that, why is it any different than having a gas car? When the gauge gets low, you charge. At this point, chargers are pretty ubiquitous, and this is doubly true when your car can work with a Tesla charger, and more locations are opening up for non-Tesla cars. The only slow part of charging is the last 10%, which most of the time you don't need because you only drive 29 miles per day. Our cars can generally get to 80% or 90% in 15 minutes, and that extra 10 minutes relative to gassing up is inconsequential.
That leaves the road tripping scenario. I don't know if we're typical, but I suspect we need this at most five or six times. The only additional "burden" is having the car figure out where we can stop, and it generally works out to the point at which we need potty breaks or food anyway. The app has notified me about being almost finished charging countless times while in line to pay for food. Are there other anecdotes not like these scenarios? Sure, and they account for a fraction of a percent of real life.
But I go back to my original point... no one looked at range with gas cars, so why would you with an EV? The situation is actually better when you don't have to stop for "fueling," almost ever.
Do you ever wonder if some people are just wired to experience certain feelings as much as possible regardless of context? I say that because I feel like I've been dealing with serious anxiety since around the start of the pandemic. It hasn't subsided. The side effect is that I don't sleep well, and because I don't sleep well I'm less willing to get up and move around, which certainly has consequences for my health. And I say that at a time when work is mostly solid, I do feel physically OK for the most part (like, I don't get winded going up four or five floors of stairs), and I don't live where there's snow.
This is why I plan to ask my doctor next week about some kind of treatment for the anxiety and insomnia, which I imagine is medical marijuana. But that's after she's disappointed that my triglycerides are still high, though I now speculate that it's because of my hypothyroidism, which looks "good" because of the specific lab numbers related to it, but hypothyroidism can also cause the triglyceride problem. I'm at like 1/3 the dose of levothyroxine recommended relative to my weight, so I'm gonna ask her about it.
But there are a number of smaller things nagging me, and I want to complain about it. Discomfort in life is relative and not easily scored, so I'm not sure why I feel bad about it. Also, a lot of things to rope me in are a bit off, including three planned vacations, the first of which is still six weeks away.
I found myself making some optimizations to the forum app this week. The short story is that I serve user photos and avatars out of the database, and optionally uploaded images in posts (though the better way is to serve it right out of some kind of storage, which is what I do on my sites). The way I've had it working forever is that it reads all of the bytes from the database, then sends them all to the user's browser. But for some time, there has been a mechanism to make this a stream, basically a pipe from the database to the browser, which is more efficient and doesn't take up potentially huge blocks of memory buffering big images. So I did some work to serve those images that way.
It does relieve some memory pressure, so it was a good idea regardless. But my intent was really to figure out how to squeeze all of that stuff running into a smaller "server" and save $24 a month. Yeah, that's where I am now with this stuff. The forums actually do this right now, which is awesome, but despite being on different URL's, they're all the same copy of the app running (technically there are two instances running for redundancy). To that end, its memory footprint is pretty small. They're running under 1 virtual CPU's and about 1.75 gigs of memory, easily.
Everything not the PB forums is running on a shared "server" with 2 CPU's and 3.5 gigs, also two instances at $24 each. I have the redundancy because that's just kind of the way stuff can and should work in the cloud. If one thing goes bad, another one picks up the slack, and there's no interruption. But I'm sure users have noticed interruptions because I've tried a couple of times to squeeze the shared stuff into the smaller service, and of course it chokes. This shouldn't really be a surprise, because all of CoasterBuzz (including its forum), the main PointBuzz site, their separate image sites, cstr.bz, my blog, the dev forum build, my music cloud and a bunch of random things that are just parked there, and CB and PB alone are gonna need a good chunk by themselves.
None of this really matters, but I still feel pretty strongly about delivering the best possible technical outcome, despite the shitty ad revenue. I mean, traffic was up 35% last year on CoasterBuzz, which is pretty fantastic. And ironically, some of that might be the Google juice you get when you have a fast site. But the same Google isn't paying dick for ads, and without covering the page in floating ads and video, there's no great way to improve that.
As I was preparing my tax documentation, I noticed that I ordered my 16" M2 MacBook Pro a year ago today. I wrote some thoughts about it a month after that. I was so sold on it that I bought a Mac Mini with the same silicon in it by the end of March, for my desk. Obviously I was pretty confident that it was the right move.
I suppose the most important thing to talk about is the "important" thing, that it's amazing for software development. The nuttiest thing about this is that I'm a Microsoft stack guy, mostly, but the primary runtime and framework, .Net, has been relatively platform neutral now for years. So add in JetBrains' Rider development environment, and all of the stuff you can run in a Docker container, and rest assured that it's super easy to write code on the Mac. And honestly, after years of Visual Studio with ReSharper (which is the refactoring plugin that's also part of Rider), and the terrible performance associated with it, this is a breath of fresh air. That's probably less about the Mac than it is the software, but it makes me wonder why I wasn't using the Windows version of Rider.
My previous laptop was a Surface Laptop 4. I ended up having it less than two years, and that included a service return because it stopped charging through the Surface connector. I labored over the decision to buy that, with its sweet Alcantera keyboard and "ice blue" color, but it disappointed me. Part of it was the mushy keyboard, but also I hoped for better than 7-ish hours of battery life. The IPS screen was fine, and touch, but not as deep even as the screen I had on my previous HP.
The MacBook Pro doesn't have an OLED screen either, but with the high pixel density and whatever else is going on, it's obviously a really great panel. The lack of touch screen still annoys the shit out of me (I'll get back to that), but it sure is pretty. And while it's not light, the bigger screen is welcome. Apple also went back to the things they abandoned with their dumb changes in 2016. That's when they started putting that stupid touch bar instead of function keys over the mushy-ass keyboard, and stopped putting useful ports on the machines. That's why my 2014 13" MBP was my last and I went back to Windows machines, for the first time in 12 years, in 2018. But with the return of the smart MagSafe power connector, three Thunderbolt 4 ports, one regular USB and an SD card slot, there are no constraints, no dongles. The keyboard is solid and comfortable and responsive, and the weird haptic touchpad that feels like it moves when you "click" it but doesn't fantastic. I also put a hexagonal "Swarm" dbrand skin on it, which I'm obsessed with. Having that texture on the touchpad appeals to my sensory needs. It never gets oily gross either. Oh, and the realistic battery time is 12 hours with a development load. That's not even an exaggeration or best case, that's average. It's unreal. But that's the promise of ARM processors, the low power requirement. The thing never even gets warm (with one notable exception).
Video editing has been a longer journey than I expected, but both the MBP and the Mini I bought with only 500 gig SSD's. There isn't a lot of room inside for video footage. If I wanted to get the appropriate 4 TB of storage in either one, that's an extra $1,200, which is insane. I was already feeling weird about the extra $300 on the Mini for more CPU and GPU cores to match the MBP. I bought a cheap enclosure for the hard drives I had in my Windows computer, but they largely topped out around read speeds of 850 MB/s, which ain't great for 4K video editing. Eventually I bought a proper USB4/Thunderbolt 4 enclosure and a loose 4 TB SSD to put in it, and I got 2,800 MB/s. Having 3x the speed is obviously a big deal (or 7x the speed of the SATA drive I had in the Windows computer), and it makes editing useful.
I've talked about gaming a ton in the last year, and where I am with that is, I guess, feeling in a weird limbo place. Apple released a game porting kit that acts as a bridge between Windows' Direct3D and Apple's Metal, and with the open source Wine that acts as a bridge between various other Windows API's and the Mac, you can essentially run many Windows games through this translation layer. Some work, others don't, but I've been using it for Against The Storm for some time, and it works flawlessly. The problem is that, since there's all that computationally heavy translation going on, the 12-hour battery lasts at best two hours. There has been this chicken and egg situation that developers believe is a thing, where they don't port games because they don't believe there's enough market share, but if 1 in 4 new computers is a Mac, I don't see how that's not a huge opportunity. The base hardware is so capable, compared to needing a Windows rig with expensive Nvidia or AMD hardware.
Anyway, to solve this, I relented and replaced our aging Xbox One with a Series X, and I'm really enjoying the Lenovo Legion Go, despite its quirks when using it on a TV. But I still have these insanely powerful and energy efficient Macs that could theoretically be great gaming computers. It's annoying. One possible solution: If Microsoft would allow the Xbox app to run on ARM Windows, which I've tried on my Mini in a VM, even with the translation layer, it could be excellent for many, many games on Game Pass.
Also, I want to get back to the touch screen thing. Admittedly, this is probably not important in most cases, except for one really important one: My lighting thing. I want to buy a lighting console, I've committed to it, but because I'm pursuing the "on PC" variety, because it's cheaper, that means the computer and touch screens are a "bring your own" affair. Well, Macs are not touch screens. This is such a drag. I have a portable external touch screen, and it does work with the Mac, but you need at least two screens to pair with the console, so it's not ideal. Amazingly, Asus announced what is probably the ultimate solution to this, as in, it changes the usefulness and value of these PC-based consoles, and it's not super expensive (relative to the console), so I'll probably end up getting one of those. There's a side benefit of this shortcoming though... it solves the gaming problem.
The short story though is that going back to Macs as my daily drivers has been great. They're honestly overkill even, although I suppose they should be given the cost (the laptop at the time was $2,500, the Mini was $1,600). They're still not the most expensive computers I've bought (the $3,000 Sony in 2001 still wins), and that's saying something given what people often call the "Apple tax." But the math is different because these machines have abandoned Intel. If ARM computing on Windows ever really takes off, and to be clear, ARM Windows does exist and I've tried it in a VM on the Mac, it could be a game changer for Windows and a very bad situation for Intel. Regardless, I'm super happy with the switch back. Even just the smaller scope experience with the Legion Go and Windows (drivers, firmware, game incompatibility) has made me appreciate the relative simplicity and "just works" nature of Macs. So glad that the hardware no longer sucks.