The blog home of Jeff Putz

Simon, 14

posted by Jeff | Tuesday, March 5, 2024, 12:00 AM | comments: 0

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".


My Orlando Code Camp talk was about... what else?

posted by Jeff | Sunday, March 3, 2024, 8:33 PM | comments: 0

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.


We're on our sixth electric vehicle

posted by Jeff | Friday, March 1, 2024, 4:02 PM | comments: 0

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 the world is unkind to you

posted by Jeff | Thursday, February 29, 2024, 8:18 PM | comments: 0

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.


Another car done before its time

posted by Jeff | Friday, February 23, 2024, 3:18 PM | comments: 0

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.


The experiences are worth more than the stuff

posted by Jeff | Tuesday, February 20, 2024, 11:35 PM | comments: 0

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.


Live in the moment, unless the moment sucks

posted by Jeff | Wednesday, February 14, 2024, 9:49 AM | comments: 0

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.


Memory tweaks, not leaks

posted by Jeff | Saturday, February 10, 2024, 7:16 PM | comments: 0

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.


Triglycerides, anxiety and weed

posted by Jeff | Saturday, February 10, 2024, 3:48 PM | comments: 0

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.


Memory leaks and wild stats

posted by Jeff | Thursday, February 8, 2024, 10:58 PM | comments: 0

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.


The Cleveland Orchestra in Orlando

posted by Jeff | Monday, February 5, 2024, 3:00 PM | comments: 0

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.


No one ever used to think about auto range, ever

posted by Jeff | Saturday, February 3, 2024, 10:59 AM | comments: 0

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.


Life feels so weird right now

posted by Jeff | Friday, February 2, 2024, 9:49 PM | comments: 0

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.


Trying to squeeze more into less

posted by Jeff | Friday, February 2, 2024, 2:48 PM | comments: 0

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.


One year into my Mac reboot

posted by Jeff | Friday, January 26, 2024, 10:57 PM | comments: 0

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.


Barbie and the Oscars

posted by Jeff | Wednesday, January 24, 2024, 7:29 PM | comments: 0

When I heard that a Barbie movie was going to be made, I fully expected it to be one of those things that came and went. But then I heard who was writing it, directing it, and in it, and I was pretty certain that my initial impressions were wrong. I was not surprised that it was as big of a deal as the prestige historical drama Oppenheimer. I haven't see that yet, but look forward to it, despite that fact that it appears to be emotionally taxing given its subject matter.

When it comes to the Oscars, I'm sure that Oppenheimer is justifiably recognized not just for best film, but also director and actors. I don't think anyone finds that controversial. In fact, it's kind of the point... if the movie itself is in the top tier, it stands to reason that the work of the people who made it are as well. Barbie did what I didn't think any movie could. It took one of the most commercial and economically staggering toys in all of history, if not the biggest ever, and used it as the subject of a well-crafted, deeply stylized art film that also addressed some of the very cultural negatives that the toy helped influence. If that's not a magic trick, I don't know what is. And with the blessing of the IP's owner, no less!

So it's reasonable then to ask how it's even possible that this best film nominee could not also recognize its female director and its lead female actor. Worse, that it could nominate its supporting male, who was great by the way, and not recognize the women, well, it's literally what the movie is about. It's as if it preemptively called out the academy.

Greta Gerwig is an extraordinary writer and director, even if I only previously base it on Ladybird. (Disclaimer: I love coming-of-age movies.) And Margot Robbie has been nailing everything she's in, whether it be characters like I,Tonya or straight roles like Bombshell. I don't think that Barbie is a one-off achievement for either woman, but it also shouldn't matter. If the work is recognized as elite, so too should be the people who made it.

I know that there's this bizarre "conservative" backlash to diversity, despite the fact that research shows that diversity makes everything better, more profitable, etc., but this isn't even about that. Women are slightly more than half of the population. Expecting them to be represented and recognized as equals is not a huge lift. I mean, Hollywood as an industry knows this, because its "girl power" movies sell very well. But it's still a white male dominated industry in a world where they represent only 30% of Americans and only 2% of the entire world. (White American males also include 7 of the 10 richest humans, so it's pretty dumb to suggest that the world is free of any kind of racism or sexism.)

It's getting better, there's no denying that. But as someone born in the 70's, with the civil rights movement fresh on minds and first in school, it's just staggering that we aren't "there" yet. If you're one of those people who "don't see color" or gender or sexuality, cool, high-five, be one of the people who calls it out when they see inequality.


The wave of YouTuber quitting, the cost to make stuff

posted by Jeff | Friday, January 19, 2024, 2:00 PM | comments: 0

Marques Brownlee, who I think represents the gold standard in tech reviews on YouTube, posted some thoughts about a recent rash of very successful YouTubers who are either leaving the platform or taking an indefinite break from it. He generalizes that at a certain scale, producing video for YouTube is a large and complex business, and that's probably not what the founder of the channel wanted to manage. I get that, but also wonder why it is that, if they can afford to hire people, they don't hire said manager. I mean, Leo Laporte built an enormous podcasting business (before it was cool), but he doesn't run it, he makes podcasts. He hired a manager (and then apparently married her after divorcing his wife, yikes).

Regardless, there is a lot of very good video on YouTube that looks every bit as good as what you used to find on cable, before it all turned into cheap reality shows. As it turns out, despite massively lower barriers to entry in terms of technology and cost, making this stuff at that level is not free. You can call it a dream job or whatever, but that doesn't mean it isn't work, and that you often need others to help. This goes back to my comments that "content" is bullshit, and if what you have is really valuable, it's a show. You're a director, editor and personality. Well, until you're managing an enterprise.

I've honestly felt this in the process of making what is clearly going to be a short (not feature length) film. I can't do it all. I need help. The best footage I have was when I had Diana and Simon helping me. I needed animation to tell a story, so I had to hire a guy to do animation. I need the right tools. Despite Apple's claim to the contrary, you can't make something of higher quality with a phone. (Yes, I know, they did the announcement video on an iPhone... which was attached to a crane, Steadicam, with hundreds of thousands of dollars of lighting and other production gear around it.) Fortunately for me, this is a passion project, and since it's self-funded, there is no deadline to deliver it. These top-tier cats on the YouTube, they need help.

They're also tying their well-being to a platform that could cut them off at any time, which would make me deeply uncomfortable. Ugh, I have to resist another rant against platforms. I hate that you have to play in someone else's sandbox now to successfully make things for the Internet. Indie publishers can't make money anymore. Heck, media properties owned by conglomerates can't make money anymore.

And this gets me eventually back to thinking about what I do, what I make. I've had these community sites now for more than two decades. There was a time when I could pay my mortgage with the ad revenue. Now, I have to borrow from myself to keep the lights on, and the costs aren't even that high. It wouldn't be so frustrating if it weren't for traffic actually trending significantly up. Unlike the YouTubers, I don't risk the burnout or management burden, because the reality is that I'm not writing original stuff or making video anymore. But what am I doing? It feels like I only do it now to validate that the software I write in my spare time works as expected. And the occasional off-topic conversation about some peripheral interest.

The joy of making things, and art, seems like the thing that makes us human. But the machine works against you.


On seeking validation

posted by Jeff | Friday, January 19, 2024, 12:00 PM | comments: 0

One of the things that stands out as a parent of a teenager is that they require a lot of validation. A lot. This is not a new discovery by any means, more of a reminder to me. It makes me aware that I'm not great at it, for a lot of reasons. But it also got me to thinking about the role of validation in my own life. I think I'm mildly angry about it.

Like any teen, I desperately wanted to be validated, recognized and seen. I think that's pretty normal at that age. I've never been one to keep score in life, but looking back at those days, I did not get a lot of validation from anyone really, including the people who should have been doing it. There were two adults at school who regularly got involved with me (and a number of volleyball coaches), and I think that's why I turned out OK. But mostly, I waited for validation that never came.

In college, I think I transitioned to a place where I just didn't seek validation, because I still wasn't getting it. I made up in my mind that I wasn't going to get it, so just do all the things and let the outcomes be my validation. For example, I did a lot of stuff outside of regular class work my first year, and I did get an award for that, but the more I did after that, the less it seemed to matter to anyone. (This is where another autism retrospect indicates that a lot of me feeling like a flawed personality was hitched to my wiring, and it's regrettable that it involved a lot of self-loathing.) When I got into the professional world, I just pushed ahead to get where I wanted to be. Those arrival points were my validation, despite hearing nary a "good job."

In my middle-age reflection stage, I'm looking back and thinking, wait... I've accomplished a lot of things. I've done really great jobs at stuff. Why have I so infrequently been validated by others for this? Does it matter? Depends on the context.

I think this sort of depends. For my hobby and leisure things, I am deeply uncomfortable about getting any recognition. I was in a social situation some years ago where a few people credited the online communities I started for bringing them together. While I'm happy to hear that, for some reason it's uncomfortable to receive that message. But in terms of jobs, and I've had a lot of them, I have rarely been validated for the work that I've done. That's a little odd seeing as how jobs are transactional; I get paid for what I achieve. But when I think about how I operate as a leader, I'm constantly giving positive feedback for achievement. I'm a goddam cheerleader in that role. Unfortunately, I don't feel like I've had that for me.

Professional validation comes in many forms, but the most basic are verbal acknowledgment and monetary reward. The industry that I work in is weird, because people are very much treated like cogs, interchangeable at any time, but also paid relatively well. But from a satisfaction standpoint, not getting either form of validation is a bummer. I haven't really thought about it until more recently. It bothers me.

There's another post at some point about motivation and intent. I'm not going to claim any typicality here, being neuroatypical. Not seeking validation as an adult could be environmental for me, but it could also be related to ASD. Validation has never been the primary reason for doing much of anything for me, as I intend to lean on intrinsic motivators.


AI used when coding is like magic

posted by Jeff | Wednesday, January 17, 2024, 5:00 PM | comments: 0

There is a lot of speculation, some fear, some excitement about the role of generative AI in software development. I haven't been writing a ton of code lately, but I recently finished the demo code for my Code Camp talk this year (still need to do the deck). With that in mind, and my GitHub Copilot subscription that I keep paying ten bucks a month for but don't use much, I started to ask it some questions. The talk is about using code to manipulate moving lights. The basic knowledge is easy, it's just changing numbers in an array. But what if I wanted to do cross fades between lights? What if I wanted them to be log or exponential instead of linear? What if I wanted to spread the fade evenly across 10 lights?

It knew how to answer every single question. Then it started suggesting questions that led to better answers.

I couldn't believe it. Because that's math, it would have taken me a long time to figure that stuff out on my own. I've used AI before to generate some markup and style sheets before to get layouts I described with words, but this was something else.

So what does this actually mean? Well, there's context I would add. First off, most people don't write a lot of code that requires algorithms. If I had to guess, most coding is pretty boring and routine. More to the point, it's usually about composition, making different blocks work together for some outcome. This stuff is super easy for AI to do, and I've done it quite a bit in what little experience I have with it. At the moment, that's where the real value is.

The bigger question is usually about how much code it can write to reach those bigger outcomes. That's not a thing yet, but even if it could, it depends entirely on the human input. There are always rules that govern the outcomes, and you have to be as explicit about as many of those as possible. So yes, it could get to a point where product managers could write enough requirements to get the outcomes, but then they also have to figure out where the edge cases are, and test to make sure stuff still works.

I think that long before anyone will be "replaced," people will be needed to learn the best way to use the tools, and that will still be a special and well developed skillset. I would also assume that there will be some kind of regulation, or at least ethical standard, about how the machines write and deploy code, because, you know Terminator. The tech may move fast, but as we know, humans do not. We have the technology to end poverty, racism and such, but we're not there.

I'm kind of excited though about using this more to try things that I may not otherwise be confident enough to try.


What it's like in my head, most of the time

posted by Jeff | Tuesday, January 16, 2024, 4:22 PM | comments: 0

A few years ago, the play adaptation of The Curious Incident of the Dog in the Night-Time came through town. It's a story about an autistic kid's interactions with others over a, well, curious incident. The author of the novel insists that it's not about autism or any specific disorder, and that it's more about being an outsider and seeing the world in a different way. Regardless, what I found great about the play was the way that they tried to represent the character's perceptions. Through lighting, video projection and sound, they did a brilliant job of simulating the intensity of sensory input. It was also another point at which I suspected that this was me, though decades of experience taught me to compensate, filter and adjust, to varying degrees of success.

I was having one of my "shower thinks" this morning, and the topic of screenwriting popped in there. I thought about various writer's comments in various interviews about how they write what they know. I've always thought that what I know isn't interesting, so I've written so little because I won't write the things I know. But what if I did? What would it look like? One of the things I know is a very busy thought stream, that rarely stops.

In trying to deal with insomnia and anxiety, mostly in the evening, I know that it is chemically possible to give my brain a break. Lorazepam, which I have a very small supply of for the infrequent and relatively mild panic attack, absolutely does the trick. I describe it as getting off the freeway and on to a slower road with no other cars and few things to look at. Experiencing that difference is yet another recent mental health discovery for me. And when I share it with others, it's another thing that is not typical, I suspect.

If I feel mentally tired a lot, most of my life, really, how would I write that for a screenplay? When I sat at my desk, I recalled how the previous few minutes went since leaving the shower. It's something like this.

[After carefully drying off with just one side of the towel] The towel goes wet side out. Leave it a little longer on the outside so it dries better and doesn't stink. I wonder if Diana sees that I do this, and if it annoys her. She wouldn't tell me if it did, I think. Someone must have studied bacteria growth in towels. Every time I search for scientific articles they're behind a paywall. There's a puddle on the floor. Stupid Remy. How would I use one of these racing mind situations in a film? Close up on the eyes? Looks like our palm tree needs trimming again. Wow, this landscaper is the longest lasting of the three that we've had since I was on the HOA board. I wonder if we'll be able to negotiate a good renewal rate since Kyle left the neighborhood. I could make the scene black-and-white, but that's so cliche. I hate this bathtub. I hope we can afford to renovate the bathroom this year. Our neighbor Nicole gashed her leg on that sharp corner in her house. I can't believe we were in Jamaica with her at the same time but on different boats. Blue! Maybe tint the scene blue. Cut-cut-cut-cut with shots matching the rapid-fire thoughts. We could game out the renovation with a spreadsheet. All of the materials are online. I bet a GC would get better pricing though. I wonder if he'd think I was a dick or high maintenance if I did that as a starting point. Couldn't do the scene red, because that would look like Hunt For Red October. I'm going to avoid the scale until I get more morning walking done. How many days have I worn those shorts? I wish I could crack the secret to cat hair landing on black shirts in the dryer. I really don't want to be on the HOA board anymore. Was it the hotel in Sanibel that had the decor we liked? It was a blue wall, big 2x1 tiles. Where would we shoot that scene? I wonder if I can network my way to local actors that would work for cheap. It should be Pei Wei for lunch, and since I'll be out there, I'll see if Staples has any good office chairs. That IKEA chair lasted a dozen years. Oh, I love that Facebook memory of Simon pushing the cart around in IKEA. I hated having to mess with furniture at CompUSA. I can't believe I did that almost for a year after college, if you don't count the radio time. Ken liked my pandemic radio show, I wonder if anyone else did. It did air in Guam. I can't think about writing a screenplay when I haven't edited my rum doc. I'm disappointed with the external drive I have, the editing isn't as smooth as it could be, but if it was Thunderbolt 4 it would be better. My work computer was my first experience with that, that's why I bought mine. I've had that almost a year. I love the dbrand skin on it. I remember that was still new when we shot in Cape Coral. Shit, that was last spring. Bonuses are coming up, I wonder if we'll get one this year, or how close it will be to the target. I think my most recent thing on my LinkedIn page is "HOA Board Member." Who even uses that? Oh, the clock on the sink that would be a great way to show the passage of time if I did the scene as internal thoughts in the shower.

This is the best I could do writing about ten minutes after this point. It was approximately between the time I turned off the water to the time I started to shave. Maybe two minutes? There was probably more, but that's all I could remember. That's more of an oral interpretation, too, because I think a lot of it is some kind of intermediate "code" that my brain uses, separate from English.

It's like that in my head. Almost all of the time.

Add in stimuli from any environment not home. It's probably why I get so anxious in airports, busy shopping locations and such. Even theme parks, which I roll with by moving quickly, can get to me.

Hyper-focus events are also effective at helping quiet all of that noise, but it's hard to predict what those are. I think it's why I've plugged into Against The Storm so much lately, because it's a reprieve from all of that. I can do it with coding, but only if I'm really into whatever it is.

So this is a topic for my doctor next month, and I know she has some approaches for this. My therapist knows this is a thing, too, and she believes that maybe the thought stream is overwhelming my coping strategies. There are some studies that suggest the pandemic changed brains, not from Covid, but from the radical changes in habit. I buy that.