COVID-19: Part 35

June 27, 2020 12:03 am
  • Quarantine Day 102
  • Livermore cases: 145
  • Alameda County cases: 5,354; deaths: 129
  • U.S. cases: 2,414,000+; deaths: 124,000+

The latest modeling suggests that with widespread mask use we could basically get on with our lives with minimal interruption. Unfortunately, widespread mask use is not happening. One segment of the population continues to attempt to equate temporary, mandatory mask regulations with tyranny and refuses to cooperate. Predictably, in areas with widespread belief in this insanity the caseloads are setting new records on a daily basis.

I've been reading "What we Owe to Each Other" by T. M. Scanlon, a moral philosopher at Harvard. I'm just over 100 pages in--just about to begin section three of the premises section. His work borrows elements from John Rawls' political philosophy of "Justice as Fairness" and applies it to morality along with other thoughts and ideas. I finished reading Rawls' book earlier this year and I liked his approach. I'm also liking Scanlon's application of the concepts.

On page 106, Scanlon is wrapping up his basis of defining what a "value" is when he turns his attention to what it means to respect the value of human life. He has this to say:

Respecting the value of human life requires us to treat [people] only in ways that would be allowed by principles that they could not reasonably reject insofar as they, too, were seeking principles of mutual governance which other [people] could not reasonably reject.

It takes couple of rounds to parse it out fully, but it's really quite nice (and very Rawls-ian).

Is wearing a piece of cloth across one's mouth and nose in order to mitigate the spread of a deadly virus really a principle that can be reasonably rejected in a world where we presuppose that everyone wants to live peacefully together? I don't see how it could be. Great benefit is had at almost zero cost and trivial inconvenience. Surely compromising a little pride for saving thousands of lives is an acceptable trade off.

Professional philosophy writing is a bit of a slog to get through, but I find it interesting. I'm looking forward to reading more about how Scanlon answers the question of what we owe to each other. But I feel pretty confident that we at least owe each other the level of respect inherent in agreeing to wear a mask during a pandemic the same way we owe each other the level of respect inherent in staying attentive to the road while driving.

--

Last Sunday was Fathers' Day. We spent the day at home, like every other day for the previous 4 months. We may have gone for a walk in the evening, I can't remember now. Jess and the girls gave me a 55-pound bag of flour imported from Italy. It's supposed to be a specially-selected blend of wheat that will let you get nice, brown, pizza crusts in a residential oven. The temperature is supposed to dip down a little bit this weekend, so I'll have to try it out and see if it's true.

After the girls went to bed I watched "They Shall not Grow Old", which was....gruesome. I can't say it was "enjoyable" because it really shouldn't be for anyone. It is very well made and worth watching though. It did leave me feeling frustrated with how incredible quantities of resources can always be found when nations decide to destroy each other, but outside of that we just write off difficult problems as unsolvable.

We can figure out how to keep 68 million people fighting for over four years, but when it comes time to addressing homelessness or hunger or access to medical care we wring our hands about it being too expensive. It's frustrating.

--

Tuesday was our 11th anniversary. We spent the day at home (surprise!). We did get takeout for dinner though. Jess wanted a potato-and-bacon pizza that one of the local restaurants makes, so she got one of those and I had a calzone. I made crème brûlée for dessert.

To celebrate, we upgraded our cookware. We bought some fancy All-Clad stainless-steel-with-aluminum-core pots and pans. We bought 8-inch, 10-inch non-stick, and 12-inch frying pans as well as 2-quart and 3-quart sauce pans. In theory they should last pretty much forever.

We also watched "The Dish" which is a loosely-based-on-a-true-story movie describing the role in the Apollo 11 mission of one radio-telescope in Australia. I did appreciate the reminder that there have been times where great national resources were directed to incredible challenges that weren't about killing people. But also saddened that it still seems to require being linked to contests of international dominance.

--

Last weekend Ivy and Beryl completed their investigation of Hinderstap Manor and learned of the tragedy that befell the family resulting in the mansion being haunted. They helped bring peace to the home and are now on their way south through the Forgotten Lands.

I took the week off from preparing another adventure so this weekend we'll do a non-story-related side game of some kind.

Last night I played through the Spirit Valley adventure with my work friends so their characters are now on their way north towards Englewood and Gambler's Pass.

Painting Miniatures

June 24, 2020 7:17 pm

Now that I have a bunch of miniature creatures for use in our Dragon Strike adventures, I thought I'd give a try to painting them. I was really on the fence, because it could easily devolve into a lot of not fun (I live in a CTRL+Z world). But I figured if I kept my expectations appropriately low then I could probably be happy with the result.

Here are the first 2 that I completed:

Far from perfect, but I'm pretty happy with how they came out. So I'll paint some more and provide a little more fun and detail to our games.

Easter 2020

April 18, 2020 10:27 am

I spent Saturday cleaning up the yard. Everyone knows the Easter Bunny likes a cleaned up yard. I made rolls and at some point the Easter Bunny sneaked through the yard without anyone noticing. Not even a pandemic can stop the Easter Bunny.

Some of our flowers in the backyard are looking pretty good:

After accidentally adding 50% too much flour to my double-batch of rolls I had to turn it into an emergency triple batch. The flour was already mixed into a dense mass, so I had to slowly work in the extra liquids by kneading it on the countertop. I was pleased with how well it still came out. And I came up with a new TV show: "Recipe Rescue" where professional chefs are given a recipe that has gone wrong and they have to salvage it. For the early episodes they're told what's wrong and in the later episodes they have to figure it out themselves.

The Show America Needed

February 2, 2020 11:42 am

This past week the TV show, "The Good Place" aired its series finale. It's not the kind of show that comes along very often and I think it was desperately needed.

It was a show that was unabashedly about ethics and moral philosophy. Actual, meaningful philosophical content presented in a format that was accessible to people that have never broached the subject before.

It wasn't another anti-hero, vigilantism, and vengeance story line. Those stories have been popular lately, and I've enjoyed watching them, but I think they are teaching audiences that you can do whatever you want so long as you say it's for the greater good (as defined by you). Their behavior is explicitly rationalized as the ends justifying any means. It can be satisfying to watch the Punisher ignore the laws in order to make the villains pay for their crimes. But it's not healthy for actual society to be filled with self-proclaimed vigilantes doing whatever they feel like and justifying it afterwards.

"The Good Place" was explicitly about coming to terms with what it means to act ethically. Considering the intent and outcome of our behavior in real terms and having at least an internal discussion about what is right; what is fair, what is just.

It was a comedy, so it was generally lighthearted and, at times, goofy. But it covered important ground in moral reasoning and I think it avoided coming across as preachy.

We should consider our actions and do our best. We will fail. And we can take time to reflect on our failures and shortcomings and then do better.

Spoilers in this paragraph! If there's some kind of existence beyond mortality, I'd like it to be something like the one exhibited at the show's end: An unbounded opportunity to learn, grow, and improve until we reach our full potential as moral beings; the ability to enjoy all that existence has to offer; and then, on our own terms, the chance to say, "I'm ready to move on."

If you didn't watch it, go and do so. I think seasons 1-3 are on Netflix currently. I don't know if Netflix will also get season 4 or if it will all move over to NBC's streaming service. The entire series will be available on blu-ray in May. Go find it and watch it. And consider what you can do that will make someone else feel that you've made their life better.

10 Years a Software Developer

November 7, 2019 8:06 pm

July marked the 10-year anniversary of my starting work at the Lab. I got a certificate and lapel pin (not that I ever have any lapels on which to put it). And also a bump in vacation time and 401k contributions.

I'm still working with the same group I started with on the same general applications. But a lot has changed in that time.

Falling into the Past

When I started, the existing development team had collapsed for unknown reasons. I joined a basically black-box pile of software written in Java with custom, homegrown libraries and support packages. No documentation. Some of the compiled code had no matching source code (that I could find anyway).

It was a bit like being thrown back in time by at least 10 years in how web applications were built. I can admit now that it didn't take long before I felt a bit worried about whether that job was going to be at all fulfilling for me. The code was a mess of JSP files intermingling core business logic with HTML output (a la the bad old days of PHP). It couldn't be run locally, so making a code change involved modifying source files, compiling the code, deploying to the test server, restarting the application server (which also hosted the production application, so restarts impacted users), and then testing the change. A round-trip process of 15+ minutes. It was brutal.

I came in to the job with web application experience and I knew that there were much better ways of developing web applications. It wasn't fusion research--that's a different department--it was a fairly mature world.

By the Fall of 2009 I had settled in enough that I felt comfortable (or maybe just desperate?) enough to pitch the idea of using an open-source framework for our applications. Essentially saying, "Let's toss the existing codebase and start over."

Thankfully, my manager (who I'm grateful is still my manager) was willing to hear me out. But, we had some restrictions. The IT group was run separate from the software team and they dictated our deployment environment. So whatever we did needed to still run on the Solaris operating system, using Oracle Weblogic for the application server, behind Oracle iPlanet web server, talking to an Oracle database.

Even in 2009 that technology stack was unpopular at best and approaching obsolete. Trying to figure out how to configure Weblogic or iPlanet resulted in reading a lot of forum posts like "How do I do this in Weblogic?" answer, "You don't, use literally anything else." And that was if you were lucky enough to find an answer at all.

I had experience working with Python/Django, but that as a non-starter. Can't deploy a Django app on Weblogic. It was a Java world. And our IT staff wasn't much interested in supporting anything they didn't already know.

Stepping into the Present

I found the Grails framework which lives in the Java ecosystem (technically it's Groovy, but it runs on the JVM and as far as the system was concerned it was Java). It looked promising, certainly a huge step forward from what we had. We could go from coding with both arms tied behind our backs to one arm in a sling (which I did literally for a few weeks when I broke my arm, but that was years later).

I prototyped a brand-new type of application for our system. A geospatial view of the data utilizing Google Earth in the browser (back when GE was a browser plugin). Using a real framework I had a functioning prototype in a couple of weeks and it became immediately obvious that this was going to be our future.

That prototype was fleshed out into a full application and has since been overhauled 5 times and remains one of our core applications. It would never have been possible without moving our development work to Grails.

Over the past decade I kept pushing on modernizing our infrastructure as much as we could. Eventually the IT staff were consolidated under the software manager and over time they were replaced with people willing to consider a world outside of Solaris.

We moved our infrastructure to RedHat Linux, migrated from SVN to Git, switched our application server to Tomcat, finally swapped iPlanet for Apache, and even dumped the Oracle database for Postgres. We were finally in a sane development world (not to mention saving, literally, tens of millions of dollars on hardware and licensing). The arm was out of the sling and we got a lot of work done.

We had added additional software team members throughout the years, but never had a real focused approach to creating software. We were making it up as we went along and if you looked at the code, it showed.

In some ways, this was a necessity. As I said, the software team was non-existent when I joined. I had no experience managing a "real" codebase. Certainly not one expected to last for years. But, at the same time, the broader group we supported--the people we were trying to make more effective via software--didn't have any trust in the software team. We needed to give them wins quickly to show them it was worth their time to interact with us.

And that's what we did. That first prototype gave them a way of working with their data they never had previously and they wanted more. So, rather than work out a disciplined approach to building software with no experience to guide us, we wrote code. A lot of code.

Building the Future

It's now 2019 and, for myriad reasons, it's time to leave Grails behind. This year I became the team lead for the software group so I've had a lot of decisions to make. But, this time I have 10 years of experience to draw on.

We're moving our applications to Python/Django. Something we could have done in 2009 had the IT staff been supportive of the software needs. But it is what it is. The good thing here is that it means the codebase will start from scratch. And, having had 10 years of dealing with a codebase built on the whims of the individual developers, we are doing things differently.

Our legacy applications are functional and stable so we have time to do things right. I spent a huge amount of effort up front picking the tools we'll use to maintain good code "hygiene." That is, tools and processes that ensure code is written consistently, that tests have been written, that obvious bugs have been caught, that the tests actually run and pass, etc. This discipline is already making a big difference in code quality.

We also have the luxury of an existing suite of applications--which we have to migrate over to Python--but which means we know what we're trying to build ahead of time. A lot of our work in the past 10 years was speculative: we think this would be helpful, let's build it and see what the users think. And a lot of it was trying to meet user demands when the users didn't really know what they wanted, just a vague idea.

Our first rebuilt-in-Python application went to production in October. It took longer than expected, but I feel really good about the quality of the code in it.

Retrospective

Supposedly, software developers in the Bay Area switch jobs, on average, every 3 years or less. So why have I stayed here for 10?

I like my job. I like the work I'm doing. I like my manager. I like my coworkers. I like that I live 6 miles away and don't have to get on a highway to commute. I like the impact my work has. I like that I can effect meaningful changes that improve our products. They don't happen fast or all at once, but I'm quite sure I'd be doing something else if we were still writing everything in house and deploying on Solaris.

The nature of the projects I work on prevents me from saying much of anything about them, but I find the work meaningful. I'm not spending my days trying to figure out how to get more ads in front of more people. Our software has international impact on a regular basis with the goal of improving not just national security, but global security.

I'm not going to get rich, but our health insurance is great, we're saving money for retirement, we managed to get a house while prices weren't insane, we're building up long-term savings and work stays at work. I don't bring a laptop home, I don't work on the weekends. I don't answer emails after dinner.

I like what I'm doing, so I'm going to keep doing it.