Month: January 2020

Disbarment and Judicial Estoppel

As the impeachment not-quite-a-trial wraps up, I am left wondering if normal processes are applied to Senate impeachment hearings. Can, for instance, a lawyer get disbarred for standing before the Senate and making false claims? Does judicial estoppel apply when a defendant is simultaneously asserting X and NOT X in the impeachment and another legal proceeding?

Parade of Horribles

A parade of horribles is not always a fallacy . Yes, the rhetorical device is often used in inappropriate manners; but the fact it can be misused does not invalidate the technique in toto. The parade of horribles which stems from accepting the parade of horribles as a valid reasoning tool do not render the rhetorical device a logical fallacy. When someone marches out this particular class of argument, the validity of the argument needs to be determined in its specific instance. Horrors which will occur either way do not make a persuasive argument. Horrors which are very likely to occur and are actually horrible compared to any benefit from the argument? The parade is a legitimate argument.

I find myself thinking a lot about these parades while watching the Senate Impeachment trial. There are horrifying consequences to accepting some of the Defense’s positions. Dershowitz proclaims that “Every public official that I know believes that his election is in the public interest; and, if a president does something which he believes will help him get elected in the public interest, that cannot be the kind of quid pro quo that results in impeachment.” How is that a reasonable position? Not holding the next election is “in the public interest” … but quite clearly an offense against the core tenants of this country.

Their argument fell apart a bit because it essentially exonerates Nixon — he wanted to get re-elected “in the public interest”, had people break into the Watergate to increase his re-election chances … and saying that Nixon is different because he destroyed evidence is a laughable contortion. Didn’t he destroy evidence in the nation’s best interest too?

OpenHAB CalDav Personal Binding – Item Name Filtering

We use the CalDav Personal binding to select items from our Exchange calendar to populate date/time OpenHAB Items — when does Anya have her next gymnastics class, when is the next Trustee meeting, etc. When we had first set this up, we were using manually created appointments. The appointments were assigned unique categories so the binding could determine which appointment should be used to update the Item. I’ve since started creating calendar items based on published calendars (so far a Google calendar and a SchoolPointe calendar), but the Python module for interacting with Exchange cannot assign a category to the appointments it creates.

The binding allows you to filter on the appointment subject (‘name’) using a regex. The binding documentation says to use name-filter:’\<Some Filter\>’ which … well, doesn’t work. We tried omitting the back-slashes in case they were meant to be escape characters. We tried omitting the greater and less-than symbols in case those were meant in the way I often use them, to designate <the part you replace>. Still doesn’t work. We tried using forward-slashes instead of backslashes because that’s the normal regular expression syntax. Nope. We tried adding a ‘starts with’ ^, trailing .* to ensure it would match anything that started with what we wanted. Nope. We’d alternately match all of the appointments or none.

Consulting the source, there is a very restrictive character set available in your name filter regex. The binding uses Java’s Matcher with a regex to extract your regex from the item configuration. You need to have filter-name: then you may have a single quote (‘? means 0 or 1 of ‘). This is Followed by one or more characters from the class which is all upper and lower case letters A-Z, a full stop, an asterisk, a plus sign, a minus sign, a space, and a pipe bar. Then you may have another single quote. The bit with one or more characters from the restricted class is extracted — this is how the binding gets your regex from the item config.

private static final String REGEX_FILTER_NAME ="filter-name:'?([A-Za-z\\.\\*\\+\\- \\|]+)'?";

Using unsupported characters in your filter-name regex alternately match all appointments or none. Using filter-name:’\<test>\’ (as the documentation literally instructs me to do) doesn’t return a match with anything as + requires one or more matches from the character set. I have zero such characters after the opening single quote. Similarly filter-name:’^Beginning of string.*’ doesn’t return a match. It appears that, in cases where the name filter is null … all items are matched. Explains why we were getting the same appointment’s details posted into each item.

On the other extreme — a filter like filter-name:’Pick up dry-cleaning at 1 Main Street’ will truncate your regular expression at the number character. The extracted matched group is Pick up dry-cleaning at … which won’t match anything unless you actually have an appointment titled “Pick up dry-cleaning at ” with a trailing space. I’ve seen posts on the OpenHAB forum where individuals have non-English words in their match … filter-name:’Trip to Askøy’ which, again, match nothing since the actual regex used by the binding is Trip to Ask  The same thing happens when looking for character classes (i.e. I don’t know if this will be capitalized, so I want to match [Tt]est).

The solution, since a question mark isn’t an option, is to use a plus or splat to replace any character that isn’t supported by the binding. Using a plus ensures there’s something where you expect the character to occur, although the * is a broader match (we use “Township: Event Name”, but I don’t need the colon to successfully match my item. “Township Event Name” would match. I could even use a different delimiter as “Township, Event Name” would also match). Where you are unsure of the case, you need to use a pipebar (e.g. filter-name:’Test|test’)

The Items that are populated with the start time and event name for the next Township meeting look like this:

DateTime Calendar_Upcoming_Township "Upcoming Township meeting (start) [%1$tA, %1$tB %1$te, %1$tY at %1$tl:%1$tM%1$tp]" <calendar> (gCalendar) {caldavPersonal="calendar:ourcalendar type:UPCOMING eventNr:1 value:START filter-name:'Township. .*'"}
String Calendar_Upcoming_Township_Title "Upcoming Township meeting [%s]" <calendar> (gCalendar) {caldavPersonal="calendar:ourcalendar type:UPCOMING eventNr:1 value:NAME filter-name:'Township. .*'"}

And the calendar events titled “Township: Trustee Regular Meeting” or “Township: Craft Fair” are all identified by the filter.

Note: Scott submitted a PR to change the regex used to extract your filter-name regex. Once this change gets merged, you’ll be able to use character sets (e.g. [T|t]est), numbers, and ‘special’ characters excluding the single quote. Including the single quotes around the filter will be required.

Chapter books are (not) boring

Anya wouldn’t read chapter books. Not even one about Spirit, and she’d almost eat mushrooms if they had Spirit on them. The books, she would tell me, are boring. Which is odd since (1) she’s not read it … so how would she know it is boring!?! and (2) it’s Spirit. She’ll watch the same episode of Spirit a dozen times without finding it boring, how in the world is a book based on the show prejudged as boring?

The funniest thing, though, is the ’emerging reader’ Spirit book? She tore through that. It was the longer chapter book format she objected to. Turns out the elementary school wouldn’t let K kids take out chapter books because they were too long/involved/hard, and the way they communicated this got translated to “chapter books are boring and hard” in my daughter’s head. We had a bunch of free books available from this Kellogg’s Feeding Reading promotion — had to use them by November, so I randomly picked a bunch of books from their site. One of which was this Lucy and Andy Neanderthal graphic novel. She absolutely loved the thing — read it over and over. And asked for the other two books in the series. Totally! Except I didn’t want to pay 15$ for the hard cover book 2 or 3. A quick search yielded an outlet site that had the hard cover books for 3$ each. Book Outlet has a referral – 10$ off your first order of 25$ or more (and I get a bonus 10$, which does not negate the fact they’ve got awesome prices) … I got a few books for myself to hit the ‘free shipping’ level. Anya has been reading the three Neanderthal books in cycle since they’ve arrived.

The problem with Medicare for all who want it

Well, there’s more than one problem since real ‘everyone’ creates more efficiencies that ‘some subset of everyone’ fail to create. But the biggest problem is that ‘all who want it’ is a false alternative to employer provided healthcare just like the ACA marketplace options creates an illusion of choice for anyone who doesn’t qualify for a subsidy.

My employer pays a lot of money for my health insurance plan. Like 14,000$ a lot. I pay another 3k. If the ‘all who want it’ platform wins and opens Medicare enrollment to everyone, do I want it? I can take my three grand and look at Medicare, just like I could take my three grand and look at the 750$ a month plans on the marketplace. Oh, or the 1000$ a month plan. My cheapest ACA option was six grand a year more than I’m paying today. And when the company increases their contribution next year and therefore doesn’t increase our salary? I still get nothing, even though they’re not paying anything for my insurance.

So am I a “who want it”? Either the Medicare plan — health insurance, emergency, and prescription drugs — is going to cost less than three grand {and my employer still gets to pocket fourteen grand and call my raise an increase in their contribution to healthcare premiums} or I have the “choice” of paying thousands more for my healthcare. I’d happily pay a couple hundred bucks extra for better insurance. I’d happily take the seventeen grand that’s being paid for my healthcare today and buy a Medicare plan. But there’s no way Medicare is going to compete with employer subsidized coverage.

And I think the “all who want it” proponents know this — set the Medicare for All system up for failure, and the for-profit insurance industry can continue unchanged.

Insurance and Actuarial Tables

The six-month price for our car insurance renewal went up. Again … which strikes me as odd since the car is older and its value has diminished. With the risks being similar – same drivers, same credit, same very small amount of driving – that coverage should go down year-to-year as the insurance company will be paying out a little less if the car gets destroyed. But, no, the price sneaks up every six months. And now they want 354$ (really 321$ because we don’t do installment billing).

I usually just renew the policy, but this year I decided to get quotes from a few other companies. I was wondering if “churn” (losing customers — basically the idea that there’s a fixed cost to acquire a customer, so the longer they stay with you … the more profitable the relationship becomes) just isn’t a concern in the insurance industry. So I got a few quotes — all of which were about half of what we’re paying. The best price was GEICO at 155$. For increased coverage, since one of our coverage selections was available only with a higher payout limit. That was puzzling since I cannot imagine the actuarial algorithms are that different between companies. And both Progressive and GEICO are paying for a LOT of advertising.

For convenience, I used my SSN to get the quotes and added Scott as the other driver. I wondered how this change would impact the price from Progressive. Now, logically — the risk calculation for Scott and I driving 2500 miles a year in this area with a car with a specific set of safety features and parked in our garage is the same as the risk calculation for I and Scott driving 2500 miles a year in this area with a car with a specific set of safety features and parked in our garage. Yes, I expect a slight difference based on our differing credit scores. But our scores are not that different (and when we bought the house, Scott has the slightly higher score). Got the quote back, and Progressive was willing to sell us a policy for just over half our current cost: 170$. Based simply on switching the account holder and ‘other driver’ people.

They will absolutely deny that it’s because men are charged more for insurance. There’s a lawsuit in there otherwise! But, realistically, there’s nothing that changes by swapping the two names which would impact the price so significantly. And this has been happening for the past six or seven years since we got married and bought joint insurance! That’s like two grand we’ve forked over to Progressive because they put Scott’s name down first!?!

Scraping Calendar Events

We’ve learned the value of engaging with local government — with few people involved in local proceedings, it’s pretty easy for a generally unpopular proposal to seem reasonable. And then we’re all stuck with the generally unpopular regulation. It is a pain, however, to keep manually adding the next Trustee meeting. And there’s no way I’m checking the website daily to find out about any emergency meetings.

Now I’m pulling the events from their Google calendar and creating new meeting items in my Exchange calendar:

  1. Register the app with Google to use the API
  2. Install exchangelib
  3. Copy config.sample to config.py and add personal information
  4. Create a ca.crt file with the CA signing key for your Exchange server (or remove the custom adapter if your server cert is signed by a public key)
  5. Run getCalendarEvents.py and follow the URL to authorize access to your calendar

I’ve tweaked the script to grab events from the school district’s calendar in SchoolPointe too. Now we know when there’s a school board meeting or dress-up day.

Day Three

I think there was an opportunity for either (or both) of them to spin the “woman cannot win the presidency” v/s “Trump will weaponize misogyny in the election” situation in a positive way — maybe Warren took umbrage at the way Sanders conveyed his belief that Trump would mobilize sexists against a female candidate in the way he mobilized racists in 2016, maybe Sanders said something outright offensive. Accusing each other of lying, even privately, doesn’t help anything. “Fairness” in journalism is going to create a false equivalence between the accusation of a lie with Trump’s daily deluge of lies. There’s no recording of the meeting, and litigating what was said, what was meant, and what was understood diminishes both candidates. And, while I don’t normally like when a candidate avoids either the proximal or distal question to avoid having to answer something they don’t want to answer … I think this is a situation where avoiding the proximal question and engaging on the distal one would serve either of them well:
 
[I know Bernie is | I am] a strong advocate for women’s rights, but “how can we overcome Trump’s misogyny in 2020” is something we need to address. If you are no longer forced to decide between groceries and prescription medication, does it matter if a man or woman delivered Medicare for All? If you are breathing clean air and drinking clean water, does it matter if a man or woman enacted the New Green Deal? If your kids can graduate from University debt-free, does it matter if a man or woman ensured access to free public universities?

Bankrupting the Country

There are some argumentative political statements that I can never decide if it’s deliberately obtuse or an actual misunderstanding. Joe the Plumber comes to mind — a lot of people have no understanding of business taxes (or know the difference between gross and net). Maybe he really thought a million dollar gross plumbing business would throw him into the wealth tax level. Or he’s making a disingenuous argument — either bemoaning that a plumbing business netting a million dollars would pay increased taxes or deliberately failing to mention that a million dollar gross business isn’t anywhere near wealth-tax levels and letting people hear “million dollar” and assume as they assume.

“Won’t Medicare for All bankrupt the country” has become this year’s Joe the Plumber for me. Won’t private insurance bankrupt individuals and businesses? I pay around 3k a year for my family’s insurance. If universal health care meant my taxes went up 10k, not having to pay that 3k wouldn’t make me feel much better. But what I pay isn’t the sum of what my health insurance costs. My employer paid about 14,000USD for my medical and dental insurance. Legislation can ensure what employers currently contribute to wasteful private insurance becomes funding for Medicare for All.

If the entirety of my 3k went to Medicare for all, and the remaining 7k came from my employer … they would be saving 7,000USD on a single employee. Maybe all 10k comes from the employer. My taxes go down 3k, the company still saves 4k. Or maybe universal heath care costs 17k and the entirety of what both my employer and I pay gets redirected toward Medicare. The worst case in any of these scenarios is that we’ve broken even, I’ve got better coverage, people who change jobs don’t have lapses in coverage, and people who need to see a doctor or get medicine do so.

Yes, it’s possible implementing universal health care would be a net cost increase. While there’s logical consistency that removing profit, executive salaries, and general overhead would yield a lot of savings … having more people actually use their health care might yield a lot of additional expense. But the gross cost of universal healthcare is offset by what we currently pay — just like the plumbing company with a million dollars in gross receipts isn’t forking over 40% of that million dollars in taxes.