Why we “romanticize” past developers

Let’s look at this:

And quoting it directly in case it disappears later:

People like to romanticize the devs of the past. “People just don’t care about engineering now…”

JFC, there was an entire crisis(Y2K) that had to be averted because 70’s and 80’s devs couldn’t think past the year 1999 because they wanted to save a couple bytes.

Software engineering is just as lazy as it’s ever been, we just have more ways of doing it now.

Looking through his profile, he lived through Y2K, going into community college starting in 2009. And he likely also would’ve learned in his programming classes why that happened. Meaning to say the software engineers of old wanted to save 2 bytes, and so got lazy in their coding, is just outright stupidity.

And what we largely have here, what Chris is putting on display, is taking the technology of today, the standards of today, and applying them to past events. He’s taking what is possible today – the fact we can store all 4 digits of the year without issue in any system – and acting like it had to have been possible back then.

And technically it was. But there were significant trade-offs. Because there were significant limitations that Chris has never had to face. Limitations the majority of software developers alive today have never had to face.

Two of which were processing speed and storage capacity.

On the latter, you’re probably aware that your cell phone today has more processing power than all of the computers that allowed NASA to put Apollo 11 on the moon. You’ve probably also seen this famous picture of Margaret Hamilton standing next to a printout of the code that she and her team wrote to accomplish that:

And back in the 1960s, the whole field of computing and software development was in its infancy. The code that Hamilton is standing next to is dwarfed by anything today in terms of functionality and size. Because back then computers didn’t have the breathing room for everything we take for granted today, and took for granted even 20 years ago when Windows XP was still the dominant operating system with Vista on the horizon.

Meaning cutting 2 bytes out of a record size made all the difference.

This blog post wouldn’t even fit in RAM on most desktop computers from the 1970s and 1980s. The full-size version of the above picture available on Wikipedia Commons wouldn’t fit in the RAM on the IBM XT I used when I was a kid back in the 1980s.

That isn’t to say that people are spoiled today, though they certainly are. Programmers especially. Imagine writing programs for this:

That is the Texas Instruments TI-82 graphics calculator. It was considered a pocket computer back when I was in high school, sporting a Zilog Z80 processor running at 5 MHz with 32 kilobytes of RAM… oh wait, let me repeat that. It had just 32 KILObytes of RAM. Of which 28 kilobytes was user-accessible and the other 4KB reserved for the “operating system”. And that RAM was used for storage as well – if both the AA batteries and the coin cell battery died, you lost everything stored on it. (The OS was stored on a separate ROM and copied back into RAM after the batteries were replaced.)

For comparison, the computer I’m using to write this blog post has 32 GIGAbytes of RAM. A million. times. more.

The preceding TI-81 was worse still, having only 2400 bytes of user-accessible RAM. Imagine writing a program for that! Given Chris’s post above, I think that needs to be part of any modern programming curriculum.

As a calculator, the TI-81 and TI-82 were very capable, but I very much preferred the HP 48 I had in my high school AP calculus class. (Pretty sure it was the 48G.) It had a more capable programming language compared to the TI-BASIC featured on the TI-82, though it’s reverse-polish functionality took some getting used to. The 48G wasn’t much better than the TI-82 in terms of user storage, but it at least gave you the full 32 kilobytes. The GX had 128 kilobytes. It also used a separate 512KB ROM for the “operating system”.

Back when I was first learning to program, the early 1990s, my father gave me a torn up book of text-based games written in BASIC – the Beginner’s All-purpose Symbolic Instruction Code. And it was fun and one hell of a learning experience taking those programs and adapting them into TI-BASIC for my TI-82 and, later, the TI-85.

The largest in that book was a Star Trek game. It wasn’t possible to convert that for the TI-82 due to limits in how many lists and matrixes it could store, but I could just barely convert it for the TI-85. It took forever to type into the calculator and barely fit due to the storage limits. But when I showed it off to my friends at school, it immediately made them envious.

Anyway…

When the total memory space for your code and any variables it uses is measured in only kilobytes, imagine the compromises you have to make, the ingenuity you needed to exercise to write a program that met your requirements – after convincing the bean counters that half what they wanted isn’t even physically possible.

Then scale things down smaller still.

We’re talking about a time when single-character and two-character variable names were the norm out of necessity. Because having longer variable names peppered through your code meant risking running out of storage space for the code, provided your compiler or interpreter didn’t run out of memory trying to process it. Comments weren’t really a think either, again due to storage and memory limitations – they were almost non-existent in that BASIC programs book I mentioned earlier.

As memory and storage capacities grew, and processors became far more capable, better practices were adopted. More comments for your code started becoming a thing, followed by self-documenting code. Frameworks and APIs became more capable as well because the systems that would be compiling or running the code could handle all of that without running out of memory – mostly.

We romanticize the developers of the past – including those like Margaret Hamilton and her team, Adm. Grace Hopper, Dennis Ritchie, John Kemeny and Thomas Kurtz – because of the limitations they had to work with, because of what they were able to accomplish despite those limitations.

Again, Hamilton and her team wrote the code that helped put Apollo 11 on the moon. And programmed that for systems dwarfed by even my TI-82.

And, again, those are limitations software engineers today will likely never have to face.

Chart.js and Ghost

I’m migrating this site over to Ghost. Over the 15+ years I’ve had this blog on WordPress, there are a few plugins I’ve come to rely on heavily. And the one that’s been the toughest to find an alternative to is Visualizer. It renders the graphs on the several pages that use it, such as my very long article on abortion.

In the search I discovered Chart.js, which looks to be a viable replacement. But integrating it into Ghost isn’t all that easy. Rather than use code injection on the posts where I want to use it, I opted to create a “partial” that is scoped based on an internal tag:

{{#is "page,post"}}
  {{#post}}
    {{#has tag="#chartjs"}}

    <link rel="stylesheet" href='{{asset "css/chartjs.css"}}' />
    <script src='{{asset "js/chartjs/chart.js"}}'></script>
    <!--<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>-->
    <script>
    function chart(chart_options) {
      new Chart(
        document.getElementById(chart_options.container_id),
        {
          type: chart_options.chart_type,
          data: chart_options.chart_data,
          options: {
            responsive: true,
            plugins: {
              legend: {
                position: chart_options.legend_position || 'right'
              },
              title: {
                display: chart_options.display_chart_title || true,
                text: chart_options.chart_title
              }
            }
          }
        });
    }
    </script>

    {{/has}}
  {{/post}}
{{/is}}

This is the code I’m using as of this writing. I’ll update this post as I go, but for now this appears to give me what I want. I have the above in a partial – chartjs.hbs – and call it from within the header on my default.hbs template file after everything else. That way I’m not relying on per-post code injection to use it. Instead I rely on an internal tag – #chartjs – to turn it on for posts that use it over loading it for every post.

For the time being I’m not loading chart.js externally while I’m developing a theme, hence the CDN line being commented out in favor of pulling from the assets.

And this is an example of calling the chart function through an HTML card to provide a line graph like this:

<div class="chartjs"><canvas id="mass-shootings-per-year" /></div>
  <script>
  chart({
    container_id: 'mass-shootings-per-year',
    chart_type: 'line',
    chart_data: {
      labels: ['1982', '1983', '1984', '1985', '1986', '1987', '1988', '1989', '1990', '1991', '1992', '1993', '1994', '1995', '1996', '1997', '1998', '1999', '2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016', '2017', '2018', '2019' ],
      datasets: [{
        label: 'Mass shootings',
        data: [ 01, 00, 02, 00, 01, 01, 01, 02, 01, 03, 02, 04, 01, 01, 01, 02, 03, 05, 01, 01, 00, 01, 01, 02, 03, 04, 03, 04, 01, 03, 07, 05, 04, 07, 06, 11, 12, 10 ]
      }]
    },
    chart_title: 'Mass shootings per year, United States, 1982-2019'
  });
</script>

Which looks like this:

This can definitely be enhanced further, and I’ll update this post or put everything on Github as things progress.

Labels won’t save you

Over on Threads, a user going by brandothecommando_ said this:

If you are a photographer don’t put non refundable deposit for booking. If you get sued you may end up having to pay back the client’s deposit. Use non refundable retainer or booking fee. Please keep in mind the verbage you use for the contracts so that way it’s strong. And for the love of god as a photographer make sure you don’t break your own contract and loose out on money because you got sued.

And since I’m writing this article, it should be plainly obvious that this is NOT correct. Before we dive deeper, here was my reply:

Nothing wrong with calling it a deposit. Since “deposit” implies that it will be credited toward the final balance without needing to spell it out.

“Retainer” or “booking fee” have different meanings under common law and it won’t be clear, unless you spell it out in your contract, that said “retainer” or “booking fee” will be credited toward the final balance and isn’t a separate charge.

But you do need to make it clear that the deposit is non-refundable except where required by law.

And calling it a “booking fee” or “retainer” doesn’t save you from having to refund that if you’re sued and the client is seeking a refund of everything paid because you failed to uphold your end of the contract.

“Deposit” vs “retainer” or “fee”

If I say that I charge $1,000 for a photo shoot and there is a $500 deposit due up front, what is your assumption? Likely that the $500 is going to be credited toward the $1,000 (plus any other fees per the contract). But if I call it a “retainer” or “booking fee”, you’ll likely think that fee is a separate charge from the $1,000.

And so will the law.

The easy demonstration on this is the “application fee” for an apartment vs the “security deposit”. The security deposit is credited toward anything you owe your landlord after you move out. This could include costs to clean the apartment to get it ready for the next tenant or repairs to any damage you cause. And if the deposit you paid is more than the costs incurred, the landlord is supposed to refund the remainder – unless the contract says it won’t refund anything less than a certain amount, like anything under $10.

Fees are also typically not refundable, but deposits generally are. Unless you say the deposit isn’t refundable. But to elaborate on that idea, I’ll just pull in the section “Non-refundable deposits” from this article:

If you’ve bought a house, you should be familiar with “earnest money”. For those not in the know, it’s a cash deposit (mine was $500) that shows that you are serious about buying the house. It is credited toward your closing costs, but is non-refundable if you back out of the purchase with some exceptions (e.g. you discover something substantial about the home not on the seller’s disclosure form).

So for services booked months or longer in advance, the non-refundable deposit is similar to “earnest money”. It shows you’re serious about their services, secures them for the date in question, and is non-refundable should you back out.

Making anything similar to this idea incorrect: “Services were never rendered, so the videographer has no right to keep the money.”

And the contract will stipulate the deposit is not refundable under any circumstances (except where law requires), or will give only some circumstances in which the deposit may be refundable in whole or part. This doesn’t mean the money is absolutely gone. But getting it back requires getting the contract nullified in Court (good luck there!) or the other party (photographer, etc.) must have backed out for some reason or failed to show.

That doesn’t mean the service provider cannot refund the deposit under any circumstances. Only that they won’t be obligated to do so under the contract for circumstances not expressed in the contract. The refund will, instead, be entirely at their pleasure.

You’re free to request it, but they won’t be under any obligation to give it.

So this begs the question, when is a non-refundable deposit actually refundable?

Refunding a non-refundable deposit

Obviously the party receiving the non-refundable deposit always has the option of refunding it absent an obligation to do so. So when is there an obligation? In short, when the contract or the law says so. The contract can enumerate conditions under which the deposit is refundable in whole or part, thus creating a contractual obligation – e.g., when the opposing party dies.

But when is there a legal obligation where the contract is otherwise silent? Generally the party receiving the deposit must be in breach of contract. (There are plenty of other circumstances wherein that money, and potentially more, may be recoverable by the other party, but I’m not writing a dissertation here.)

Going on photography, since that’s the context for the statements that prompted this article, that would mean the photographer fails to show for the shoot for reasons not outside their control, or fails to otherwise fulfill their obligations under the contract – e.g., not turning over the photos in the amount of time the contract specifies, absent extenuating circumstances. And if the photographer recognizes they’re in breach, they should do the right thing and refund the deposit without any fuss.

But if they don’t and their client sues them, the client can seek refund of the deposit and remedy of any other damages since the photographer failed to uphold their end of the bargain. And calling it “non-refundable” won’t help you. Saying the deposit is “non-refundable in all circumstances” is unenforceable.

And calling it a “booking fee” or “retainer” won’t save you either.

Since if you’re sued and your client is seeking monetary damages where injunctive relief won’t suffice or isn’t possible, and the Court rules against you, the Court will order you to pay a specific amount based on the losses or damages the client incurred. An amount which will likely also include everything the client paid you – i.e., all deposits, fees, and the like.

“If the service didn’t happen”…

The above-mentioned user replied to me:

Calling it a deposit is meaning you are paying for a service in advance in the future. Even if you call it non refundable and let’s say the service didn’t happen and client were to sue you would lose.

I’ll admit I got a little harsh in my feedback, but at the same time I also have a LOT more than a layman’s understanding of contract law. As I’ve said before, there are a lot of misconceptions floating around about how contracts work and don’t. But their reply to me also highlights that people will say contracts aren’t bulletproof, which implies they’re easy to get out of, while also saying that money is easy to shield from a lawsuit by… labeling it something else.

Yeah that’s not how it works.

It isn’t as simple as “if the service didn’t happen”. It really depends on WHY it didn’t happen.

You really need to learn about contract law before speaking like you know what you’re talking about. Because it’s painfully obvious you don’t given you think calling it a “booking fee” or “retainer” instead of a “non-refundable deposit” somehow shields that from recovery should your client sue you and win a monetary award against you – regardless of why they’re suing you.

And while you’re learning about contract and common law, make sure to also brush up on how relief works in the context of a civil suit outcome. Monetary relief and injunctive relief. Since if your client sues you, everything the client paid you and then some is potentially recoverable.

And there isn’t anything you can write into your contract that will shield anything your client pays you. Not even a “liquidated damages” clause can do that depending on why your client is suing you.

Since depending on WHY your client is suing you, the tort that is alleged and the damages the client is seeking to recover, they could end up recovering MORE than what they paid you. Since the lawsuit is entirely about making the party who is injured as whole as possible.

Which is why business insurance is so, so important.

Sure your client could sue you if the service doesn’t happen. They can also sue you for looking at them funny if they decide to call it “harassment”. Whether they prevail is a different story, and a lot of… caustic people in the world know that merely threatening a lawsuit often is enough to get someone to comply with their demands, however unreasonable.

The point of a civil suit is to make an injured party whole as best as possible. Which is why no language in a lawsuit can shield from recovery anything a client pays you.

While I’ve said before that contracts are damned hard to get nullified, there is one reality about contracts that everyone needs to understand: where the law and a contract conflict, the law wins. Put anything into a contract that conflicts with common law (i.e., Court precedent) or statutory law and the Court will rule it unenforceable.

Put any language in the contract that attempts to shield from recovery via a lawsuit anything your client pays you, the Court will rule that unenforceable if you’re sued and just act like that language was never there in the first place.

Talk about short-sighted

Article: Letters to the Editor: Trump has vowed revenge. Start the pardons, President Biden

From the above:

To the editor: Harry Litman relies on the wisdom of grand juries, juries and judges in protecting the subjects of President-elect Donald Trump’s enemies list. However, even unsuccessful prosecutions could bankrupt many innocent “defendants.” (“Will Trump launch a reign of terror against his list of enemies? There’s little to stop him,” Opinion, Nov. 7)

The easiest way to provide all of “Trump’s perceived enemies” with legal (and financial) protection from frivolous prosecution would be for President Biden to compile an enormous list of people to pardon before he leaves office, including prosecutors, judges, journalists, pollsters and others.

Jack Smith, Liz Cheney, Adam Kinzinger, Adam Schiff, Kamala Harris, additional members and witnesses of the House Jan. 6 Committee and many others come to mind.

This won’t eliminate the threats to democracy, but at least it might provide protection for some people.

Mark Henderson, Folsom, Calif.

Pardons and clemency by the President or a Governor require the person being pardoned to accept it. In accepting a pardon or clemency from the President or Governor, you are also openly admitting guilt to at least what is mentioned in the pardon. Even if you don’t explicitly say you’re guilty, accepting the pardon means you’re saying you did it unless the pardon states clearly that you are being pardoned because you’re innocent.

So, for example, if the Governor of Kansas were to issue me a pardon for, at the extreme, murdering a police officer, accepting that pardon would mean I’m admitting to being a cop killer.

Meaning, given the above, if President Biden were to preemptively pardon all the individuals so named, plus himself and others, those individuals accepting the pardons would, more or less, be an confessing and admitting guilt to at the least whatever is outlined in the pardon. Meaning it absolutely would NOT be in Biden’s interest, or the interest of the Democratic Party, to even consider issuing such pardons. But if Biden were to ignore that and issue them anyway, it would also not be in the best interest of those being pardoned to accept them.

At the same time, the pardons also eliminate any protection of the Fifth Amendment to whatever is named in the pardon, meaning the individuals who are pardoned can be compelled via subpoena from a Court or Congress to provide testimony to whatever is named in the pardon. Since a preemptive pardon is, in effect, a grant of immunity, meaning self-incrimination is impossible.

Meaning the grants of pardons, and their acceptance by those pardoned, won’t end any investigations. It’ll only amplify them.

I don’t think Mr Henderson from Folsom, CA, really thought this through.

Atheism has nothing to do with it

Let’s get into this:

Now I’m not going to start off by saying anything positive about the speaker here. I’m just going to dive right in and say that Gothix is wrong here.

She pulls the same fallacy I see time and time again from the right by conflating a lot of negatives with atheism. Here she starts off by saying that a sense of urgency among leftists, such as the climate alarmism, is due to leftists being atheist and trying to make their own heaven on Earth since they don’t believe in a Heaven after death. Which has a bunch of implications, but I’m not taking that tangent.

So let’s keep this just on Gothix and her statement that most on the left are atheist:

First of all if we look at the breakdown of people who tend to be involved in psychology, these people tend to lean more one way on the political spectrum. Okay they… they usually tend to be left liberals, progressives. Most people on the left tend to be secular, tend to be atheist.

Secular, yes, but not atheist. No, they are not the same.

Nearly 3 in 4 people in the US is Christian according to the World Religion Database as of 2020. Meaning a very substantial portion of those she’s attempting to describe are actually people who DO believe in an afterlife, don’t believe that this life and world is all there is. And the US has gotten more religiously diverse over the years as well courtesy of immigration.

Then there’s the flip side of her statement: that atheists are leftist. And, no, that isn’t the case. There is a very sizeable portion of atheists and agnostics who are conservative and libertarian – something that continues to surprise a lot of atheist talking heads. Sure the majority of atheists are left-leaning, but left-leaning doesn’t mean leftist, and progressive doesn’t mean leftist either.

The number of people who are leftist is actually relatively small. They’re very vocal, yes, but they aren’t even a plurality of everyone who falls left of center.

But there’s also a lot of political diversity among the religious, too. Liberal and leftist Christians, for example – yes, they exist. “Blue Dog Democrats” are another. The guy who penned the original Pledge of Allegiance was a Christian socialist.

So can we please stop acting like everyone who’s left of center is an atheist and everyone who’s right of center is religious? That fallacy has been floating around for so long that I see atheists repeating it. And the number of times I’ve been called a Christian merely for disagreeing with atheists is staggering…

So Gothix is just engaging in more of the same misrepresentation of atheists I’ve seen time and again.

And to summarize, most atheists are left of center, but most of those who are left of center are religious to some degree. Simply because most people are religious to some degree. And a sizable portion of atheists are conservative or libertarian.

Installing a losing candidate

Article: Former Kamala Harris aide says Joe Biden should resign so she can serve as 47th president

A couple things this article mentions:

1. Getting Kamala as the 47th would render worthless any merchandise the Trump camp has already created branding him as the 47th President. Which, I mean… how petty can you get? I wonder if Simmons applauds evicted tenants who wreck the homes they’re evicted from.

2. She wouldn’t be VP anymore, so wouldn’t have to oversee the Electoral Vote certification on January 6th. Oh yes, we must spare her feelings in this because… let me guess… she’s a woman? Give me a fucking break!

3. She’d still be the first female President…. Yeah, UNELECTED! But suddenly that little detail doesn’t matter here? Does no one have any consistency in their political positions anymore? And personally I don’t care whether Jimmy Carter would get to be alive with the first female President.

4. “It’d fulfill his promise (to be a transitional president).” No, that’d make him a disruptive President. It’s why the idea’s never been considered by any previous President. So to consider it now is… unbecoming in the kindest terms.

And it’d also give Trump one last talking point about Biden deciding to just run away rather than face Trump one last time on Inauguration Day. Something about pulling out of the race early for his anointed successor, and running away again rather than seeing his term through to the end. I mean, Biden faced Trump and won in 2020, so why not face him again?

And, again, it’s acting like Harris is entitled to the Office.

At this point, the closest she’ll get to being President is if she and half the cabinet pull the 25th Amendment on Biden.

Though I do expect the attempts to lobby Electors to start appearing ahead of their vote next month with the same talking points and appeals we had in 2016. “Do the right thing and save this country from Trump!” Though more Electors defected from Clinton (4 in Washington and 1 in Hawaii) than Trump (2 in Texas). Which led to the Supreme Court upholding the States’ power to prosecute faithless Electors

Jamal shows what happens when you get way too emotionally invested in an outcome that you must see that outcome by any means possible… Where “Harris will be the 47th President!” becomes “Biden must resign so Harris can be the 47th President!”

Harris was a horrible candidate

Article: Bernie Sanders blasts Democratic Party following Kamala Harris loss

He’s not wrong. Aside from how he described Israel’s war, but everything else he said is correct.

The Democrats need to be making a broader appeal to the American people, not keep acting like it’s 2020 because Election Night showed that continually screaming “Trump is a fascist” isn’t going to work.

Yet the Democrats and leftists are doubling down. No surprise, honestly. And what’s sad is the number of leftists who are like “I guess we’re not ready for a female President”. No we’re perfectly ready for one. The parties just have to run the right candidate. Clinton wasn’t it. And Harris absolutely was not it.

You can’t run just any woman as a candidate for President and then scream “America isn’t ready for a woman President” when that candidate loses. Clinton and Harris both were anointed by the Democratic establishment, not chosen by the party’s voters. With Clinton being chosen by the party’s “super delegates”.

And worse for Harris was simply the fact she was never in a primary. And if the Democrats had sprung an emergency primary following Biden’s withdrawal, she likely would’ve lost.

But America absolutely is ready for a woman President. But, again, it needs to be the right candidate.

I’ll put it this way… if the Democrats had embraced Tulsi Gabbard in 2020 over Biden (and Sanders for the brief time he was the frontrunner until he got torpedoed by the establishment), we probably would have been RE-electing her this time around instead of Trump. And probably in a landslide reminiscent of Reagan’s landslide victory 40 years ago.

We absolutely can have a female President. But the parties need to run the right candidate. And in 4 years, sure the Republicans will likely run JD Vance. And if he picks Gabbard as his running mate, since she’s now a declared Republican, he’ll likely win. Unless the Democrats can find someone like Gabbard with broad appeal to the left and right and stop letting the identity politics rule their roost.

About that Hertz $10,000 fee

Let’s talk about this:

@lifeisfun3000 Unlimited means a reasonable amount? @Hertz #scam #rentalcar #hertz #fyp #viralvideo ♬ original sound – Logan

So to summarize, the person you’re seeing in the video rented a car from Hertz for a month and put 25,000 miles on it during that time. And Hertz is wanting to assess $10,000 against him for it.

Now one thing people seem to forget about a car rental is simply… you have to take reasonable care of the vehicle while it’s in your possession. If you damage the vehicle, you’re responsible for it. And the car rental company will try to bill your insurance or you for the damage.

Unlimited mileage does not mean zero responsibility.

So my question on this situation: did he ever get the required maintenance done?

Across 25,000 miles, the vehicle would’ve required three (3) or four (4) oil and filter changes, depending on how the vehicle was being driven. Which given he’s putting nearly 1,000 miles per day on the car, that would mean the oil and filter would need to be changed pretty much every week, with the tires rotated at that time. The engine air filter would need replaced at least twice. Cabin air filter changed out at least once. Along with any other manufacturer-required maintenance based on the make and model as part of maintaining the warranty.

So did he have that done? I can’t find anything saying he did.

So there were likely maintenance reminders going off in the vehicle as well. Meaning he was ignoring them or figured out how to turn them off when they did come up, rather than taking the vehicle back to Hertz so they could do the maintenance or arrange for him to take the vehicle someplace to be maintained at their expense.

Driving excessive miles without adequate maintenance will damage or destroy an engine. So the engine is likely toast. And that’s damage to the vehicle per the contract. How is it not?

That also means the manufacturer vehicle warranty is void, meaning Hertz will need to rotate that vehicle from its fleet. And given the engine is toast, they can’t sell the vehicle without replacing the engine, which severely damages the resale value of the car.

Again, unlimited mileage does NOT mean zero responsibility for the car. And unless the above Tik-Toker can prove they did have maintenance done on the car, the $10,000 fee is perfectly reasonable here.

And if the fee is because he damaged the car, Hertz needs to make that clear.

Update

I was able to find one comment where the person in the video said they had maintenance done on the car. The problem is they didn’t specify whether it was only once or several times across that month

But a lot of people have a lot of misconceptions about how long an engine can go between oil changes. First of all, how long the oil can last is immaterial. The filter is more important. And even if a filter is rated for 20,000 miles – like Mobil1’s Extended Performance filter – you still shouldn’t run a filter that long.

Then there’s also what the car’s manual says. If the manual says to never exceed a specific interval, don’t do it. For example, the manual for my 2018 Jeep Compass says this:

There is no similar warning for my wife’s CR-V in the manual, but I still won’t go far over 10,000 miles on the same engine oil, even though I am using Mobil1 Extended Performance which they claim is good for 20,000 miles.

Road rage and self defense

Let’s have a thought experiment:

Who is at fault here for the collision?

If you’re saying it’s the pickup, sorry, but you’re not correct. The dashcam owner is at fault for the collision and would be entirely liable for it. The pickup wouldn’t be liable in the least.

Take a few moments to ponder why before I get into this…

* * * * *

Road rage is little different from bullying, and bullying tends to be more about asserting dominance. So if someone engages with you in some type of bullying behavior, the onus is on YOU to attempt to disengage.

Note the phrasing: attempt to disengage. Obviously you may not be able to depending on circumstance. And while the dashcam owner, herein “DCO”, did attempt to disengage, he went about it the wrong way.

When an opposing driver, herein “OD”, is being hostile and is in front of us, our natural inclination seems to be to accelerate around and away from them, more or less trying to “run away” from a threat. You should instead brake.

In the above dashcam recording, the moment to attempt to disengage was when the OD swerved into the left lane in front of the DCO. Continuing to move forward, with the OD in front of the DCO, only played into OD’s trap.

NEVER try to swerve around a hostile OD who is in front of you. Brake or let off your accelerator and pull to the shoulder instead.

Had the DCO gone into the back of the truck instead, the DCO would’ve been mostly blameless. And I say “mostly” because, again, the DCO should’ve braked and pulled to the lefthand shoulder when the OD pulled into the lefthand lane in front of the DCO. That the DCO swerved shows situational awareness enough to react. But since brake checking is universally illegal, and the dashcam would’ve easily shown the entirety of the road rage incident, it would’ve come across that the truck was brake checking and put him legally entirely in the wrong.

But the OD being legally in the wrong doesn’t mean the DCO could’ve made a better decision. A better decision that could’ve avoided a collision and the handicaps that come with it.

In the above footage, though, the OD is legally in the wrong for how they were driving, but they are not legally or financially responsible for the collision. That falls entirely on the DCO.

Moving to Manjaro

Cordelia’s been on a couple different Linux distributions. Initially it was built in Fedora Server. Later I moved over to Ubuntu Server 22.04 LTS.

And recently I decided to move it to Manjaro.

Why the move?

I was looking for a “minimal” Linux distro with a desktop. And why the desktop when this is a virtualization server? VirtualBox’s user interface.

Basically I just got fed up with having to deal with the command-line with VirtualBox. I use VirtualBox on my Windows desktop a LOT, so having that UI for managing the virtual machines on Cordelia is, more or less, something I can’t really do without anymore. Since I have a couple projects coming up for which I want to be able to create and remove VMs more-or-less on-demand.

I’m also using a third-party Pi-KVM from Geekworm to remotely control this system, so a web UI (e.g., Proxmox) isn’t necessary for controlling the virtual machines. Though I will still be using Portainer CE to monitor and control the Docker containers.

What else did I consider?

Rocky Linux and Linux Mint were the only other considerations.

With Rocky, I did not like the desktop installed with its “Server with GUI” option. And I didn’t want to mess around in figuring out how to add a desktop to an installation without one. That also meant Arch was definitely NOT in the running here.

But the “Server with GUI” option did mean it was above Linux Mint in the contention. Well above it, actually. My singular gripe with Mint – but also the main reason it exists – is the inability to control what is installed. Meaning I’d be going in and removing a lot of things before I started adding in what I wanted.

That it was based off Ubuntu is the only reason I considered Mint. Since that meant it wouldn’t be too far off what I previously had. And I would’ve been able to use the official repositories for Docker and VirtualBox.

But in trying out Manjaro’s “Minimal” distribution (specifically with KDE Plasma) in a virtual machine, I was very pleasantly surprised at how little was installed. With Docker and VirtualBox also installed, the entire installation footprint on the main boot partition is… not even 10 GB.

Proxmox wasn’t even a consideration.

Why not Proxox?

I’ve already written before on why I decided to move away from Proxmox. So unless those gripes have been corrected – specifically the one about not being able to make incremental updates without going through substantial steps – there’s nothing to discuss.

And I fully understand why Proxmox does that. But I don’t have to go along with it. And I won’t be.

Current specs

CPU:Intel Xeon E5-2697 v4 – 18 cores, 36 threads
CPU cooler:ThermalTake TH120
Mainboard:Machinist MR9S (buy on eBay)
RAM:256GB (8x32GB) Registered ECC DDR4-2400
GPU:Zotac GTX 1060 3GB
Storage:500GB Samsung 850 EVO M.2 SATA
Inland QN322 2TB QLC NVMe

The migration

The 500GB drive is the main OS drive. There were a few things sitting in my home folder that I just moved to the 2TB NVMe. I also copied off the entire /etc/fstab file to the NVMe drive so those could be restored with a simple copy/paste. Then it was a matter of just installing Manjaro with the open source drivers, again using the “Minimal” version of the distro for the smallest installation footprint, going with the KDE Desktop – though I may redo the installation later using the Cinnamon installer.

With Manjaro installed, the next major step was restoring the fstab entries and mounting the media folders on Nasira.

Then came installing Docker and VirtualBox. My only gripe here being that there is not any official VirtualBox or Docker builds for Arch (and, by extension, Manjaro). I very much prefer that over relying on builds in a distro’s repository, but I think I can live with that. Here are the guides I followed:

The only necessary step I forgot to take before installing Manjaro was completely purging the old Docker folder. For storage space more than performance, I had it sitting on the NVMe drive as well. And I needed it completely gone to avoid conflicts – simple rm -rf (with sudo) and mkdir command combo. Configuring Docker to use that folder is straightforward, especially if you have jq to make the JSON file:

# Install jq with this command:
# sudo pamac install --no-confirm jq

sudo systemctl stop docker # If it's running
sudo mkdir /etc/docker

echo '{}' | jq '."data-root"="/path/to/new/docker"' | sudo tee /etc/docker/daemon.json

sudo systemctl start docker

Side note: if you work with JSON regularly – e.g., creating JSON files for server configurations during deploys – and you’ve never used or heard of jq, you really need to check it out. It can eliminate a LOT of complication. Anyway…

Plex was the only critical Docker container for restoration, but also the easiest to set up. I had everything critical living outside any Docker volumes, with it all being connected in via the -v switch. So getting Plex back online was just a matter of running my update-plex.sh script I first mention in my article about migrating Plex from a VM to Docker:

sudo docker stop plex
sudo docker rm plex

sudo docker pull plexinc/pms-docker

sudo docker run \
-d \
--name plex \
--network host \
-e TZ="America/Chicago" \
-v /path/to/plexmediaserver:/config \
-v /path/to/media:/mnt \
-h plexmedia \
plexinc/pms-docker

Portainer was the next container to restore using the update script I keep around for that:

sudo docker pull portainer/portainer-ce

sudo docker stop portainer
sudo docker rm portainer
sudo docker run -d \
-p 9443:9443 \
--name portainer \
--restart=unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data portainer/portainer-ce

With the latest versions of Docker, you actually do NOT need to create volumes in advance of creating the containers unless you’re restoring data into them. When running the above script for the first time, Docker will automatically create the portainer_data volume. You do not need to run docker volume create portainer_data first.