Archive: December, 2018

POP Forums wish list

posted by Jeff | Sunday, December 9, 2018, 3:31 PM | comments: 0

These days I don't write code for a job (unless you call email and Slack "writing code"), and though I do get my hands a little dirty with architecture, I get the itch periodically to exercise those coding skills. Fortunately I have those sites that have been with me for about two decades, plus POP Forums, which even had a couple of pull requests in the last year. I feel like niche community sites have some potential for a minor comeback, with all of the distaste for "big social" (I just made that up).

Here's the thing, the forum app does everything I need it to do today, so there's no huge incentive to mess with it. It's super SEO friendly, works mostly well on mobile and can scale to hundreds of requests per second if it had to. Just by cloud scaling the app (up, not out), I could quite easily get it to 500 rps with no code changes at all and it would still be reasonably responsive. I totally don't need that personally, because real traffic tends to burst to maybe 10 rps on a normal day. I've not even tried scaling out. Still, being as old as the app is, it needs to catch up in some ways. It took me almost three years to bring it to .Net Core, as I started from the early betas and it changed so much that it was a pain to get it there. But at least from a back end standpoint, it's reasonably modern. I have a wish list...

  • Adopt a new front end framework where practical. Forums are 98% static pages of text in terms of usage, so there is no good reason to make it a single-page application (SPA), and in fact with Google's evolving algorithms, that's risky anyway and might harm SEO. But there are areas where you can create silos of SPA-like functionality. The admin side is one area, which isn't indexed anyway. Some of the auto-updating and the user stuff could benefit from it as well. Today there's some fairly lean jQuery in there. I could never make a business case for these changes, but for just learning something new, I can. I'm leaning toward Vue.js, because it's well suited to these silos.
  • Finish the Azure Kit pieces. I already added some stuff to accommodate the use of Redis for caching and Azure Search, but didn't go as far as making a box to put the background services in Azure Functions and use proper queues. This isn't hard to do at all, which is why it's appealing. This would further help with the scaling that I don't need by moving that work to a different kind of compute resource, and enable multi-instance capability by getting it out of the web process.
  • Get back the unit testing on the web project. When I ported to ASP.NET Core, I ended up ditching most of the unit tests at the controller level. It doesn't make sense to do any of that until I figure out the previously mentioned front end bits, and I also don't care much for where the lines are between business logic and the controllers. Some of the decision making is in the controllers where I don't like it, which is an artifact of being code that's a decade old.
  • Make the web app all package installs. I'm part of the way there. You can package all of your views now into a NuGet package, so it's way easier to build a bigger app around it, like CoasterBuzz. Even now, I publish the latest build to a private NuGet feed as part of the CI process, so getting the latest bits into CB is easy. You can override any individual view as necessary with a local file. I need to go the rest of the way with the front end dependencies though to shore this up. Minimizing should also be part of the process.
  • Update Bootstrap. There has been a major new version of Bootstrap since I last approached style. It's different enough that there's some work to do there. I've never embraced any of the LESS/SASS for this project because there isn't much incentive to as an open source project. I set no colors or other variables. The CSS there is makes up for around 200 lines. I'm pretty happy that it mostly uses the conventions there.
  • Configuration cleanup. I'm pretty sure that config is done wrong, because that evolved during Core's many changes as well. I don't think localization is done right either, though it definitely works (six languages!).
  • Get the data plumbing cleaned up. Among the weird remnants of 2004 is the fact that you can't instantiate some domain objects without passing an ID into the constructor. This is a throwback to the days when I put CRUD logic in with domain objects. In my defense, that's the way we did it back in the day, when we didn't have ORM's and DDD wasn't widely practiced. I also have a series of little extension methods to streamline all of the SQL connection and command stuff. As much as I'm not crazy about taking dependencies on frameworks, I'm thinking about adopting Dapper to handle all of that.

That all will keep me busy for a long time, I suspect. Walt and I have vague and poorly defined desires to update PointBuzz, which is still running on the "old" ASP.NET MVC. Part of that might be exploring some traditional social media-like features, in which case having a solid base is important. I enjoy working on this stuff, but it's not the easiest thing to do as a hobby because it still requires you to be really plugged in and focused. That's not always easy when you just want to have a glass of wine and passively hang out after work.

I still, casually, wonder if I should work the app into a hosted, multi-tenant solution. That's a surprisingly uncrowded market. The persistence layer is so well isolated that it wouldn't be hard to get there. It would be worth it even for a few hundred bucks a month of slush money.

Apathy is a privilege

posted by Jeff | Friday, December 7, 2018, 11:30 PM | comments: 0

I made the mistake of looking at Twitter today, because on occasion I see interesting things about musical theater stuff or software development that's interesting. But these worlds don't all live in isolation, and of course politics bleed in. A software guy asserted that losing friends over politics means they weren't really your friends because politics "ain't that important."

I find that to be a wholly stupid view of the world.

Politics in America have the strange distinction of being both the reason and solution for our worst attributes. For example, politics both codified and eliminated Jim Crow laws. That it can change at all is likely the reason we've managed to keep the nation going at all, because without that hope that it's possible to change the things that are wrong, we wouldn't make it.

Generally, I hate the term "privilege" because it has been co-opted to trivialize any kind of achievement. Like, I may achieve milestones in my career, and some will use that term to imply that it was easy because I didn't have the obstacles that a person of color would have. It wasn't easy, it just wasn't made harder by a lack of whiteness. I wasn't entitled to reach those milestones. Regardless, privilege is absolutely the notion that you can be apathetic toward politics because you don't have anything at stake. The wisdom of Martin Luther King, Jr., explains it best in the Birmingham jail letter:

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 Council-er 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.

That last part is really important. Out of concern for other humans, it's important not to be complicit in their harm.

"Children are our clocks"

posted by Jeff | Wednesday, December 5, 2018, 9:39 PM | comments: 0

A friend of mine that I worked with a decade ago posted a photo of his oldest kid on Facebook today, and it occurred to me that she looked so... big. I commented that, "Our little humans don't stay little very long." He replied, "It's a bittersweet process if there ever was one." Another mutual coworker from that time responded, "I believe that our children are our clocks." That perfectly puts into words what I think every time I see a photo of Simon from even a few years ago. He'll never be that chubby little person again.

I think this is one of the reasons I've been somewhat anxious about aging in a way that I never have before. Simon is the only child we'll ever have, and he's almost as close to being a legal adult as he is to his birth date. The time has gone quickly, and it's not going to slow down. That might be why I put a lot of pressure on myself to be a good parent, because it doesn't seem like there's much time to course correct.

Our late start certainly makes it feel more urgent. Late 30's is a late time to get into parenthood, and inevitably I compare to friends that are quite literally grandparents now. My adult reboot is effectively 12 years in progress, which simultaneously feels like a lot of time and not that much.

But back to the kid... he'll never be this again. He'll never be younger again, either. It seems like every year brings different kinds of joy, different kinds of pain and unexpected challenges. The thing to keep in mind is that so far we have this epic series of memories, and we continue to emphasize those experiences. I try to keep that as my focus, and enjoy my time with the little man. There is more joy, pain and love to come.

I want to leave Facebook, but...

posted by Jeff | Sunday, December 2, 2018, 10:46 PM | comments: 0

The headlines around Facebook lately are not good. If being complicit in aiding the worst of humanity and playing a part in the social manipulation of people by foreign agents wasn't bad enough, now we've got reports about the executive team doing really douchey stuff.

My personal dislike of it has more to do with the way it has made niche publishers and communities somewhat obsolete. Sure, people share stuff via Facebook, but people don't really click through and read stuff. And for communities on any topic, any idiot can make a page and build a community instead of going to some independent thing. Facebook (along with Google) is the Internet for a lot of people, and it's the very opposite of what made the Internet so awesome, the widely distributed, anyone can force their way in nature of it.

To be sure, it's not that it's all a shit show and doesn't have utility. I've been able to maintain some long distance friendships for more than a decade, and might not have been able to otherwise, because of Facebook. It's strange how there are some friends from college that inevitably roll into Orlando, and we can pick up as if we never missed a day, despite thousands of miles of moves and kids and jobs. That is every manner of amazing. I've also found it valuable as a journal of sorts that records my travels and important events.

Social media in general also gets a bad rap for things that it is probably not inherently responsible for. Narcissists and people who lack humility would probably be that way without the Internet. I also don't buy that we only share a sanitized version of our lives online, because frankly I wouldn't share the worst of life in person with people I encounter at work or social circles. I do think the whole "influencer" thing and the micro-celebrity phenomenon is wholly ridiculous, but it's just a bigger version of the small town/big fish phenomenon.

Still, Facebook survives its bullshit for one reason: It's where the people are. If the people I care about stop using it, I will too. What sucks about that is that I'm not sure we'll find somewhere better. I've gone on record with saying that I would happily give money to a new social network where there were no brands, no ads and I was the customer instead of the product. The problem is, I don't think people would ever go for that, and that's unfortunate.

Remembering George H. W. Bush

posted by Jeff | Sunday, December 2, 2018, 5:26 PM | comments: 0

Richard Nixon was president when I was born, which I'm embarrassed to say I didn't realize that until today, because I never stopped to do the math. Gerald Ford came a year after I was born. Jimmy Carter was the first one I actually remember. Ronald Reagan was president most of my childhood. George H. W. Bush was elected my sophomore year of high school, so he's the first one that I knew in the context of learning about government and politics. I remember thinking at the time that it just seemed natural for a vice president to go on to president. I was sad to hear of his passing this weekend.

Presidents are first-hand witnesses to an extraordinary amount of history, but Bush might have seen the most, relative to a single term. The end of the cold war and the Soviet Union were extraordinary on their own, but then add in the invasion of Kuwait and the Gulf War. I also remember his leadership around getting the ADA passed, and his environmental concerns. The importance of volunteerism that he talked about also stuck with me. He was very moderate in retrospect, and his many philanthropic partnerships with Bill Clinton after his presidency make it clear that he was a man of solid character.

I'm a lot more politically aware than I used to be. I imagine that I would be fairly split on Bush's policy today, but he still represented what a president is supposed to be: A voice of leadership and hope even in difficult times. As much as I didn't care for Bush's son's horrible foreign policy, he was the person we needed for 9/11. It's incredible, how important a president's words are, even if their policy has less obvious effects.

My thoughts are with the Bush family. "Poppy" had an extraordinary life.