Archive: November, 2024

1,400 commits to POP Forums

posted by Jeff | Monday, November 18, 2024, 8:40 PM | comments: 0

I'm not sure if it's a particularly remarkable milestone, but I made my 1,400th commit to POP Forums since I switched to using Git over Mercurial or Subversion or whatever it was that I was using back then. That was on March 10, 2013, but my first line of code in the post-Active Server Pages days would have been in 2001. I'm not sure when exactly I moved from CodePlex to Github, but probably in 2014. This commit today was to refactor a bunch of poorly named things, and was preceded by a bug that was performing authentication on things it didn't have to. I found it totally by accident, when I noticed that photo grids on CoasterBuzz were slow to load, followed by a ton of Redis cache errors asking for the same data, about the same user. It shouldn't have been looking for those for photos. I'm still curious about why it couldn't accommodate 20 simultaneous calls for the same data, but if I understand that library right, it may make sense. I dunno, the problem is solved, so maybe I don't care about the cache thing.

This serves as a good example of how software is never really "done." At the very least, you have to update the platforms, frameworks and libraries that your stuff runs on. Some of them go away entirely, and the forums have been on three different platforms (technically runtimes, I guess). Heck, it used to be that it could only run on a Windows server, and now it runs in containers on Linux cloud resources. You have to do that updating because eventually whatever it's running on won't be supported, or even available. The frameworks tend to change, sometimes in big ways, which is why that authentication bug crept into the code base.

If you've made it this far, you probably nerd hard, but on the off chance that you're more of a business person who doesn't work in my biz, I hope this makes sense and you take it to heart. You can't just build something once and use it for the rest of time. The longer you wait to update or replace it, the harder it will be. Everyone became acutely aware of this for Y2K, but I think it's time to remind people.

My other motivations include being a performance junkie (pages rendering now in under 30ms), and trying to keep some kind of street cred among coworkers (manager credibility). It also allows me to better understand how hyperfocus works, though unfortunately it seems like it still only switches on if I really, really care about it. It's not that I didn't care about writing code at work back in the day, but the motivation and reason for engagement was different. As a manager I'm context switching constantly, which plays to ADHD strength, I think, but every once in awhile I get in front of something where my architectural advice has been requested, and that switches on the hyperfocus.

I'm gonna try and get v21 out by the end of the year, which is a little later than usual. It won't be a feature-rich release, but there's quite a bit of tuning and organization under the hood that's deeply satisfying.


Finding optimism in disappointment

posted by Jeff | Monday, November 18, 2024, 5:32 PM | comments: 0

There are a lot of times in life where we encounter extreme disappointment in people. Like, sometimes I wonder where the heroes are. There are so few people in the world that I look up to, and that's a drag. Those are the folks the I find inspiring. I'm not talking necessarily about famous people, but also folks in your community and profession. I've recently had an overwhelming bout of that disappointment, and that's not even getting into the election where we elected a racist.

To be clear, I'm not suggesting that I'm a hero to anyone, or that I haven't disappointed others. I'm sure that I have. Mind you, I don't want to. I want to enrich the lives of others, not disappoint them. There are a few people who have been very kind in telling me that I have been the opposite of disappointment to them, and for that I'm grateful. It's what makes me want to be good for the world and good for others.

Disappointment comes as a result of missed expectations. Who is setting the expectations is, I suppose, tricky, but many are typical parts of our social fabric. You expect teachers to be kind to children, you expect parents to be interested, doctors to care, bosses to be fair. Sometimes you're just enamored with how well a person does something, only to find in the long run that they're not what you expected.

I've encountered a lot of disappointment lately. It's not a good feeling. But it has also caused me to see others who are more exceptional than perhaps I realized. Obviously the spectrum of non-disappointment is huge, and it relates back to my suggestion that what gives you meaning and purpose doesn't necessarily have to be grand. A lot of small things add up. For that, I find optimism.


Your identity, at risk

posted by Jeff | Sunday, November 17, 2024, 10:15 AM | comments: 0

I think it's a reasonable generalization that people spend a lot of time trying to figure out their identity and purpose. Identity can come from a great many things, including your race, gender or ethnicity, work, relationships, hobbies, art... it's probably a long list. Intertwined with identity is purpose, and that's something that can vary in scope from remarkable to everyday typical. Together these may offer a reason to get up in the morning.

Identity can have a lot to do with pride, which is one of trickier human emotions. There are often a lot of reasons that we should be proud of who we are, but it's usually an accepted social contract that one's pride should not come at the expense of others, or be used to make others feel like they're less valuable. Perhaps an unintentional side effect of pride is that others who do not share in your pride may feel excluded. I'm not a psychologist, but my assumption is that not being comfortable in your own identity may contribute to the feeling of exclusion. Not being a part of things doesn't feel good.

On the topic of feeling excluded, I feel like I have more expertise than I'd like. I genuinely feel like I've been a fish out of water most of my life. It's not that I haven't felt safe or secure in any specific place, I just don't feel like I've been a part of any real community. My social circles have always been small, I think maybe four years of my professional career total had me feeling like a part of something, and I'm not really a part of any group. I'd be lying if I said that this never made me sad, but for the most part I understand better than ever what my capacity is for inclusion in any particular group, and I'm good with it. No one is really intentionally excluding me these days.

Being a white, heterosexual male raised Christian in a mostly middle-class family does not really put me in any deep identity category. Sometimes I envy the communities of some of my friends, though some of those communities are necessary because they're marginalized by, well, people like me. Certainly I don't seek to marginalize anyone. My coach and cheerleader tendencies are an important part of my identity, especially in a professional sense. I'm an ally to marginalized groups not because I want to be some kind of white savior, it's just morally the right thing to do. I remember reading in grade school a passage from Martin Luther King Jr.'s "Letter from a Birmingham Jail," and it has had a lasting impression on me.

I must make two honest confessions to you, my Christian and Jewish brothers. First, I must confess that over the past few years I have been gravely disappointed with the white moderate. I have almost reached the regrettable conclusion that the Negro's great stumbling block in his stride toward freedom is not the White Citizen's Counciler or the Ku Klux Klanner, but the white moderate, who is more devoted to "order" than to justice; who prefers a negative peace which is the absence of tension to a positive peace which is the presence of justice; who constantly says: "I agree with you in the goal you seek, but I cannot agree with your methods of direct action"; who paternalistically believes he can set the timetable for another man's freedom; who lives by a mythical concept of time and who constantly advises the Negro to wait for a "more convenient season." Shallow understanding from people of good will is more frustrating than absolute misunderstanding from people of ill will. Lukewarm acceptance is much more bewildering than outright rejection.

On the surface, it may seem like he's naming scapegoats here, but when you are part of a marginalized group, it's not by accident, someone is doing it. King's assertion is that the folks on the fence are the ones who can really make change possible. Their apathy only preserves the status quo, or worse, allows us to slip backward.

I don't know if people self-identify as "white moderates" these days. But there are an increasing number of Americans who appears to believe that their identity is at risk of being marginalized. Some portion of white folks are in that pool, and often it includes men of varying races. I think there are several things fueling this. The first is that we seemed to be having a reckoning of civil rights in 2020 during the pandemic. Racially motivated violence, some of it perpetrated by law enforcement, on the heels of the #metoo movement, made it loud and clear that we could not continue to allow inequality to reign. Art forms, especially Hollywood, started to recognize the value of representation in front of and behind the camera. (Mind you, this inclusion just makes more business sense.) Algorithms started to reinforce the idea that all of this desire for equality and representation would come at the expense of white people and men. Whatever identity is carried in being white and/or male was said to be threatened.

Now, it's reasonable to observe that backing anyone into a corner will activate a defensive response. And if there are people who keep telling you that you're being backed into a corner, eventually you start to believe it. It's probably obvious where I'm going with this. The election made it pretty clear that a lot of people felt backed into a corner.

The problem is that it just ain't true, but how do you convince them of that? I'm demographically part of that group, and I can assure you, whatever identity I may have rooted in being a white hetero dude is not at risk. I still have all of the advantages. But being equal with women and people of color does not reduce my standing in the world. The great irony is that there's a backlash against equity and inclusion efforts, because of this belief in a meritocracy. But those equity and inclusion efforts are specifically intended to get us to a meritocracy and ensure that it's real, not reverse the inequity.

I don't know how you fix it. So much of it is rooted in fear and mistrust of people who are different, and when you try to label it for what it is, racism, misogyny, etc., people understandably get defensive. They're backed in a corner. But this is still hate, and it only serves to further marginalize people. People are actually hurt by this. I believe that the morally correct thing to do is to put my own identity aside, understand that it is not at risk, and strive to make others my equal. If you think you're backed into a corner, I invite you to talk to people who are worried about not surviving a traffic stop, or harassed at work for being a woman, or viewed with disgust for who they love. I can empathize with anyone for feeling marginalized, but only if they can engage in the critical thinking to understand whether or not their identity and wellbeing is actually at risk. Unfortunately, that critical thinking has largely given way to beliefs that are not rooted in a shared reality.


Video games have come so far

posted by Jeff | Friday, November 15, 2024, 6:21 PM | comments: 0

I didn't realize this, but Amazon has a whole gaming thing that comes with your Prime subscription. They have games to play directly like the PC version of Game Pass, and also games via Epic and GOG. The GOG part is super cool, because it comes as redemption codes to own the games forever, and GOG doesn't even enforce DRM. So the other day, the algorithm pointed me at some article that was like, "Tomb Raider Anniversary is free!" What it really meant is that if you were a Prime member, you could get it free via GOG, which obviously I did.

Tomb Raider Anniversary is a remake of the original Tomb Raider game, from 1996, that ran on the first Sony PlayStation. I owned it, and probably everyone did at the time. It was an exciting time for gaming that included the Nintendo N64, and a year or three later, the Sega Dreamcast. But Tomb Raider set a new standard for what consoles could do. Closer to the turn of the century, when dedicated 3D hardware became a thing for PC's, the port of Tomb Raider showed what a PC might be able to do. If you were an enthusiast, you kind of got into the arms race around video cards, to the extend that you could afford it. A company called 3DFX had the best cards, but I couldn't justify the cost. I was on team Rendition, an underdog that actually had solid performance relative to the cost. Tomb Raider was one of the games you used to see how well your rig could run, along with the Quake variants and other shooters. A company called Nvidia also surfaced around that time, and I think you know how that ended.

By the mid-aughts, I mostly got away from PC gaming, since Xbox, PS2/3 and Nintendo Wii came to be. Then with development being better on Macs, I got away from PC's in the general sense. In 2019, I built my first computer in well over a decade, with a high-mid-range video card, and was amazed to play Planet Coaster in 4K at 60 frames per second. Late 2023 I bought the handheld Legion Go, and just last month I bought a PC tower with a ridiculous video card (probably the last time it'll be necessary to buy a huge, water-cooled PC). The distraction and joy to play PC games has been excellent, and well-timed.

Tonight I started up that original, remastered Tomb Raider, and despite the silly modeling of Lara Croft, mostly fixed in the more recent Crystal Dynamix reboot, that quality of the play is actually solid. Sure, there's still weird camera movement at times, and the combat isn't super interesting, but I really appreciate how much this game elevated video games as an art form. In a world with Fallout and Starfield, my expectations for this old game were low, but it's pretty good, even with the (relatively) lower quality of graphics. What's changed the most is scope, certainly. The worlds are now much bigger, and it's possible to mix main line story arcs with countless side quests and potential for explanation. That's why many of these games command budgets larger than a Marvel movie.


Code rot is setting in

posted by Jeff | Thursday, November 14, 2024, 9:58 PM | comments: 0

I finally got around to getting package updates and some refactoring I've been meaning to do, and it was harder than it had to be. The refactor was messing with code I wrote possibly as long as 20 years ago. I had it in my head, long before I would actually run stuff in the cloud, that I would need to figure out how to cache bust settings when they changed across nodes. This is a solved problem in a general sense, but the settings were different because I store them as a bunch of rows of key-value pairs, all text. So to load them, after they're fetched from the database (or cache), the code has to cycle through them all and convert them to integers or booleans or whatever as necessary. I obviously don't want to do that on every settings call, which happens a lot. I was also doing singletons wrong, from before dependency injection was ever really on my radar. Yeah, this stuff was ancient.

The other thing is that .Net v9 was just released, so I'm trying to update the many packages and such for that. It's not going super well. As usual, the Azure Functions project, which does background stuff like reindex topics for search, is broken as hell. For some reason it won't map all of the dependencies. There's no obvious reason. All of the tooling around functions has been substandard for years, and it's frustrating. But when it's running, it's great because it runs tens of thousands of times a month for a few pennies, not bogging down the web app.

It's just a lot to change at once, and I should know better letting it rot for so long. On the positive side, all of my build and deploy pipelines are working like a champ. That saves so much time.


Everything you've learned is wrong

posted by Jeff | Thursday, November 14, 2024, 9:55 AM | comments: 0

Life teaches us a great many things.

I would imagine that one of the earliest things I had to learn was that we shouldn't lie. There's no context really when you're not even in school yet, but we grow up to understand that lying creates mistrust and reflects poorly on us. Related, we learn to be faithful to our partners, or at the very least, honest with them. We learn that we should honor those who serve our country. We learn that we should respect experts, like doctors, scientists, lawyers, because they spend more time in school than most of us, and they have to commit to a lifetime of learning. We learn that racism is particularly heinous, though many of us have to arrive there ourselves when it isn't taught by our elders. Hopefully we learn to be charitable and kind to others. We learn to offer grace and dignity to people who are less able-bodied than us. We learn that there are consequences for violating the law.

These are just some of the basic social contracts that we adhere to as moral Americans.

And if you voted for Trump, you're saying that none of those things actually matter. In fact, being the opposite of all of those things qualifies you to be president. How do you explain that to a child?


You are hurting people that I care about

posted by Jeff | Friday, November 8, 2024, 12:30 PM | comments: 0

I recall a lot of feelings eight years ago about the cognitive disconnect between character, morals and reflective honesty among people who voted for Trump. We had the racism, misogyny, xenophobia and such then, but now we also have the felonies, enlisted people who are "suckers and losers," being held liable for sexual assault and libel, leading an insurrection, desire to be a dictator, wanting to "suspend" the Constitution, being pals with our enemies, etc. As much as I'd love people to look me in the eye and explain how they justify it (I think you already know that they can't), there's a more fundamental problem that's even more personal.

I can be honest, as a hetero white guy who can afford things, I am not in significant cultural or economic danger. The thing that keeps me up at night is the people that I care about. Half of them are women, but they're also immigrants, people of color, non-Christians, LGBTQ, children. They're coworkers, friends, friends of my son, neighbors, people in communities that I'm a part of. They've all been victims of increasing levels of targeted hate speech that has been getting worse all year. This week it has spiked to astronomical levels, as Black people via text and on Twitter are getting "@s" telling them to report to plantations. Jews, Asians and Latinos are being threatened and told to leave the country, and I saw an actual tweet from a guy who said, "I can fuck whoever I want and get away with it."

Had the election gone the other way, the MAGA folks would exist in the next four years as they did the last four years, which is to say better off on average. Every real statistic validates this. Instead, regardless of what policy may actually occur, the people that I care about will face real danger, discrimination and quality of life issues. It's already happening.

So look me in the eye, without hate, and explain to me why you don't care if people that are important to me will be hurt. Explain to my kid why that queer friend at school shouldn't be scared.


I can't explain America to my child

posted by Jeff | Wednesday, November 6, 2024, 10:54 AM | comments: 0

It's hardly a secret that Simon is a little different. We have that in common. We have both had to deal with bullies, had difficulty finding "our" people, and we've watched people in our social circles become casualties of a world that fears different. Before he left for school this morning, I woke to hear him saying, "How can Trump win?" He's seen enough of the guy on TV to understand how hateful he is. Kids can see it pretty obviously.

But I can't answer his question. I can't explain it. For me at least, it's the classic unreconcilable autism moment. I can't explain a world that rejects critical thinking, science, expertise, civil discourse, equality and the law. American sentiment toward its government, at a time when almost every objective measurement shows things moving in the right direction, overwhelmingly rejects that measurement. And while Harris could certainly be faulted for a great many things, it doesn't change the fact that right and wrong exist. It is the difference between a felon and a prosecutor, literally.

As I've contemplated some kind of explainer, more and more, I'm having to accept a reality that I've been rejecting myself for more than a decade. The United States is a racist and misogynistic country. Trump is, objectively, and by definition, a racist and misogynist. The problem is that half of America doesn't care. Over and over again, it has marginalized its own people. It started with Black people and women. Then it was immigrants from Ireland, Italy and Greece. Then it doubled down on classic racism. Then it was Asians, east and south, the Middle Eastern folks, Jews, Muslims, and more than ever Latinos, despite being a significant portion of the population. And of course, LGBTQ folks have been bearing the brunt of hate for all of American history.

I still, probably naively, hang on to some kind of hope. Like a lot of people, I'm sure that art is where I root that. In the TV show The Newsroom, Sorkin writes a monologue for the lead where he explains how not awesome we actually are:

Just in case you accidentally wander into a voting booth one day, there are some things you should know, and one of them is there is absolutely no evidence to support the statement that we’re the greatest country in the world. We’re seventh in literacy, 27th in math, 22nd in science, 49th in life expectancy, 178th in infant mortality, third in median household income, number four in labor force, and number four in exports. We lead the world in only three categories: Number of incarcerated citizens per capita, number of adults who believe angels are real, and defense spending where we spend more than the next 26 countries combined, 25 of whom are allies. Now, none of this is the fault of a 20-year- old college student, but you nonetheless are without a doubt a member of the worst period generation period ever period. So when you ask what makes us the greatest country in the world, I don’t know what the fuck you’re talking about. Yosemite?

But with that, he pivots:

We sure used to be. We stood up for what was right. We fought for moral reasons. We passed laws, struck down laws for moral reasons. We waged wars on poverty, not poor people. We sacrificed. We cared about our neighbors. We put our money where our mouths were and we never beat our chest. We built great big things, made ungodly technological advances, explored the universe, cured diseases, and we cultivated the world’s greatest artists and the world’s greatest economy. We reached for the stars, acted like men. We aspired to intelligence. We didn’t belittle it. It didn’t make us feel inferior. We didn’t identify ourselves by who we voted for in the last election and we didn’t–we didn’t scare so easy. Huh. Ahem, we were able to be all these things and do all these things because we were informed. By great men, men who were revered. The first step in solving any problem is recognizing there is one. America is not the greatest country in the world anymore.

I'm willing to admit there's a problem. It's all I've got. It makes me incredibly sad, because it doesn't have to be this way. We're being tested, and at a point in my life where I'm so tired of the test. People that I care about are going to get hurt. The people who want to hurt them have been empowered. It's not a good time to be different.