Month: September 2020

VSCode — Shortcut for Uppercase and Lowercase Conversion

While you can run a command to convert the selected text to upper (or lower) case, there doesn’t appear to be a quick way to do it. Luckily, you can define your own keyboard shortcuts and map those shortcuts to commands. From the File menu, select “Preferences” and “Keyboard Shortcuts” (or use the Ctrl-K Ctrl-S combo).

In the upper right-hand corner, click this icon to open the custom keyboard shortcut JSON file

Add JSON elements for the shortcuts you want to define — the key combination, the command to run, and on what to run the command

Sample key command bindings:

    "key": "ctrl+shift+u",
    "command": "editor.action.transformToUppercase",
    "when": "editorTextFocus"
    "key": "ctrl+shift+l",
    "command": "editor.action.transformToLowercase",
    "when": "editorTextFocus"

Save … voila, a keyboard shortcut to change to upper and lower case.

2020 Presidential Debate Number One

The problem, I guess, with being a TV president … there are a non-trivial number of shows that go on far longer than they should. The context of premise that connected with viewers (relatable, entertaining, novel, whatever) changes over the shows run. It’s often difficult to wholesale change the direction of your show, people stop watching, the show starts to go wild directions to bring back viewers (i.e. ‘jump the shark’ both in the literal instance that begat the phrase and other subsequent figurative jumps), and eventually gets cancelled.
I posit that the Trump presidency jumped the shark tonight. In 2016, running as an outsider who wasn’t going to be constrained by all of the BS political rules … that was a viable message (obviously). Saying ‘the current guy created a lot of problems, there are a lot of longstanding problems just because of the way government works, and I’m an outsider who doesn’t need the political machine behind my candidacy. I can fix it” was a viable message. Bullying, name calling, anti-social interactions with other candidates were new — offered catharsis similar to yelling at the TV screen when politicians were defending the status quo. Personally, the race baiting and outright racist comments put me off. I know a lot of people who give older relatives a “pass” on racist comments, though and proceeded to do the same for Trump.
In 2020? Running against yourself is a bit of a long-shot. Trump’s never managed a logical campaign message beyond “it is all awful, and I can fix it”. But he’s had years to fix it this time around, so the message isn’t as powerful. I’d observed earlier this year that his response to the 2016 approach not appealing to voters was to be Trumpier — louder, more violent, more divorced from reality, more racist. Hey, white suburban housewives — fear the melanin that’s going to invade your utopia if you don’t vote for me … which was out of touch on so many levels. The debate tonight was a natural evolution of being Trumpier. Slate counted 128 interruptions in the course of the 90-minute debate (…/trump-interruptions-first…). The Boston Globe cited an exchange where Trump interrupted Biden 10 times in three minutes (…/trump-interrupted-biden…/) … “and it got worse from there”. As noted, Trump asked the Proud Boys to “stand back and stand by” — then followed that sentence “But I’ll tell you what — somebody’s got to do something about Antifa and the left because this is not a right wing problem this is a left wing.” Which sounds a lot more like inciting violence than the condemnation he was asked to make.
Sure, there’s some frighteningly large percentage of the population who looks at Trump and thinks this is awesome. And I’m sure they are energized by this debate performance. People like the groups of centrist Republicans who are publishing their support of Biden? I cannot see how Trump swayed them back tonight — he substantiated everything they say about Trump that is pushing their vote to Biden.
Biden managed to talk a few times. He managed to convey the most important thing (Trump can only lie and construct a new reality if you let him — go vote no matter how many times he threatens to disenfranchise you). That some states provide a mechanism to cure rejected absentee ballots. And that he’s proud of his son — that’s one that I think might stand out to individuals but be lost in professional analysis. Biden was speaking about one of his sons, and Trump interrupted to bad-mouth the other son. And not just to bad-mouth the guy but specifically to call out the fact the guy had a coke problem. There’s a substantial meth problem / opioid epidemic going on in the country — one that impacts rural America. A lot of people have a friend, relative, and even kid who has a drug problem. A father proud of his son for overcoming addiction is relatable. Someone using a kid’s addiction to attack both the kid and parent? That’s an off-putting move even for someone whose kid isn’t suffering with addiction. I cannot imagine how awful that sounds to someone whose kid is/was addicted to drugs.

Large Numbers

It’s often difficult to conceptualize large numbers — something that allows statistics dealing with large numbers to convey something other than reality. I think I heard Trump say the government is ready to vaccinate 200k people a day. That sounds like a lot of people (it is a lot of people), but there are a lot of people in the US: an estimated 328.2 million according to a quick Google search.


That’s four and a half years to vaccinate the current population of the US at 200k a day, every day. Which doesn’t take into account new people being born (or aging into the range where a vaccine is administered). The CDC shows 3.79 million births in 2018 — of course that number changes every year, and it’s been decreasing. But at 3.5 million births per year, new people still add a few months to the vaccination timeline. About four and three quarter years to vaccinate the US population. And that assumes a one-dose vaccine. Administering two doses to everyone, at 200k people per year, would take just under ten years. Saying ‘it could take us five years to vaccinate everyone’ isn’t nearly as impressive sounding as ‘we can administer 200,000 vaccines each day’ — but it’s the same thing.

Speculation — Why he didn’t release his taxes

I’ve long speculated that Trump doesn’t release his taxes because beyond paying zero dollars (which everyone pretty much expects), he’s taking refundable deductions and having the government pay him. Well, the NYTimes has finally gotten access to years of returns for Trump and his businesses … and I’ve got a new hypothesis. It was only time before someone with access to Trump’s taxes sent that info to reporters. Had he stayed a private citizen, no one would have cared. And people who could have accessed the documents wouldn’t have bothered — they weren’t important.

The “loss” he claimed and carried back to request a 70 million dollar refund is questionable. If he got interest in the reformed company, he didn’t actually walk away from the investment. Before the tax returns were publicized, no one knew that the details of the subsequent transactions were of interest. Now that it’s public? Someone has access to information that’s pertinent to the IRS investigation. It’s only a matter of time before those details are splashed across some news paper’s page.

iJEMS Primer

The online docket site is located at

Select “Public User Click Here” to enter the site.

Read the disclaimer; and, if you agree to the conditions, click “Accept”

Enter some search criteria – you can use a wildcard search (e.g. I wanted to find all of the Board of Zoning Appeals cases) or an exact name. By default, the date range is what I assume is their first record through today. Adjust as needed. Click “Search” to proceed.

You’ll get a list of matching cases. Click on one of the case numbers to view the case details.

You’ll see a case summary at the top of the window that appears. This will tell you the official case name, when it was filed, and the status. This is followed by a list of all of the parties involved.

Scroll down in that window to the “Actions” section, and you will see the case documents. Some will say “No Document” – for example, the case being filed is a record in the docket, but there’s no document. It’s just an event. Most items, however, will have a hyperlink that says “View” that can be used to open a PDF copy of the document.


On Taxes and Businesses

I expect a lot of hype about how little Trump paid in taxes — and, yeah, it really sucks that someone is able consider private planes, meals, club memberships, car leases, etc to be a tax-deductible business expense. One of my first introductions to the working world was a privately-held company. I was the IT department, and one of my jobs was to move data from the old systems (mainframe for order management, database for inventory, and paper ledger for accounting) into the new all-in-one business management platform. Which meant I not only had access to all of the company’s accounting, but that I had to read through it all to get the information typed into the new platform. The company owner’s plane was owned by the business, so the hangar and maintenance was a business expense. He’d hire time in the plane for person use, but he got a really good discount from his company’s transportation service. Same for the company car he drove. And the country club membership — that’s where he’d meet with clients to solicit business, after all. Food and drink at those client meetings were business expenses too. It was all perfectly legal and designed both to maximize the owner’s enjoyment of life and the minimize the business’s profits. As a broke out-of-college kid, it seemed awfully unfair that the rich old dude was able to eat every day and avoid paying some taxes in doing so but the huge chunk of my paycheque that went to various taxes meant I had some rice to eat that day.

There were subordinate companies that paid consulting fees back to the main company to zero out any profits they made. And that parent company had a bunch of “business expenses” that minimized their profits. Ideally, the CFO told me, you’d net zero every year (or even have a paper loss) and not have to send the federal government anything in business taxes. Which I get — people shop around for the best price, find coupons and promo codes … you try to get the best deal. And, if the legal structure allows you to do so, why wouldn’t you avoid paying taxes altogether?

I’ve heard people say that a business needs to show a profit every ten years — that’s not true. If you don’t show a profit once in a ten year period, you may be asked to prove to the IRS that it’s a legit business. I come across this in the soap-making community — buying stuff for my soap-making hobby is not tax deductible even if I construct a business entity under which to make those purchase. Even if I happen to sell a few bars of soap to friends and neighbors. But if you’re advertising your product, going out to craft fairs and selling your soap … you provide the IRS evidence of your attempts to sell your product and you could be losing money every year for decades and still write off business expenses.

And the tax code is designed to encourage businesses to minimize their net — investing in your business offsets profit too. It’s one of the biggest problems I had with the interaction Obama had with Joe the not-a-plumber. If you buy a plumbing business that grosses a million dollars a year? You hire another plumber, buy another truck … you invest in a new tool that lets you offer more services. You spend some of that money and don’t have to pay taxes on it. Well, that hiring and purchasing also improves the country’s economy.

Hop Garlic Marinade

Hop Garlic Marinade

Recipe by LisaCuisine: AmericanDifficulty: Easy
Prep time




  • 304 cloves garlic

  • 1/2 cup olive oil

  • 2-3 Tbsp hop tea

  • 1 tsp honey

  • 1 tsp salt

  • 1/2 tsp pepper

  • 1/2 tsp Aleppo Pepper


  • Whirl everything in a food processor until emulsified.

Electric Brewing Research

We saw a DigiBoil at the local homebrew shop when we stopped by to pick up yeast. Scott had been pricing out a three-kettle system with pumps (along with some sort of table) and it wasn’t cheap. The DigiBoil was about 200 bucks. I took a quick picture of it to research later. Quickly discounted it as an option because it’s just a big pot with electric elements to boil water. We needed something for mashing too.

At which point we decided to shop around and see what other options were available. There’s the Grainfather — super expensive and, if I wanted to walk away while it cooked, I’d want to go farther than Bluetooth range. We came across Brewzilla — the software controls of a Grainfather minus connectivity, but 650 bucks is a lot more reasonable for a 65L brewing platform. Unfortunately, the 3.1 version starts the timer when the elements kick in to reach that temperature. Version 3.1.1 systems change this logic so the timer starts once the temperature is reached. The control board can be swapped out, but I really don’t want to blow fifty bucks upgrading something I bought this week. And, while there were some 65L 3.1.1 Brewzilla’s hit the US at the start of 2020, suppliers are all awaiting delivery “late summer 2020”, “late September 2020”, or “Autumn 2020” … which I took to mean “we don’t know when”. Understandable, but pretty much put the Brewzilla out of the running.

I came across a Mash & Boil — a 35L system with re-circulation pump is about 350. Decent price, but there’s no 65L system. Same with the Anvil Foundry — where a 6.5 and 10.5 system are available.

In looking at the Brewzilla, I found a mash upgrade kit for the DigiBoil. And a kit which includes both the mash upgrade and DigiBoil called a DigiMash. Both a 120V and a 240V 35L DigiMash are available, as well as a 240V 65L system. At around 240 bucks for the 240V 35L system, it’s a great deal compared to a three-kettle system. Because we frequently do double batches and potentially recipes with larger grainbills, the 18 pound capacity was limiting. At 340 bucks for the 65L DigiMash, it sounded like a great deal. No re-circulation pump, but it’s easy enough to hook a pump up to the output valve. Brewzilla has a port in the bottom of the vessel that goes down to a pump under the unit — a short silicone tube connects to the pot and another short silicone tube that connects to the metal fitting through the side-wall of the vessel. On the video we found, that tube was pretty cruddy looking … which isn’t exactly a selling point.

DigiMash doesn’t have the software-control of Brewzilla — you can set a 158F mash temp and come back and hour later, but you cannot perform step mashing. Which … not something we’ve done. And, really, you could. You’d just have to change the temps manually. It sounds like an interesting experiment to put together an ESP12e and a few relays to control the elements. Potentially, we could turn the DigiMash into an open source customizable controllable (and WiFi connected) brewing system.


Cinnamon Sugar Almonds

Cinnamon Sugar Almonds

Recipe by LisaCourse: SnacksDifficulty: Easy
Prep time


Cooking time




  • 2 egg whites

  • 2 tbsp vanilla extract

  • 4 cups unblanched almonds

  • 2/3 cup coconut sugar

  • 1 tsp salt

  • 1/2 tsp ground cinnamon


  • Preheat oven to 300 F
  • Beat egg whites until frothy; beat in vanilla. Add almonds and stir to coat.
  • Combine sugar, salt, and cinnamon. Add to nut mixture and stir gently to coat.
  • Spread evenly on a baking tray and bake for 15 minutes. Stir and bake for another 10-15 minutes (until crispy).

Propublica Climate Change Impact Predictions By County

Propublica has climate change impact predictions, but the county-level data is not particularly useful for data mining. You can sort individual columns, but it’s not possible to filter out data or sort by multiple criteria. I dropped the data into an Propublica Climate Impact Modeling Excel Spreadsheet to make it more usable. We’ve been talking about buying a couple hundred acres somewhere in the next 5-10 years … and I wanted to identify good long-term prospects (i.e. don’t want to move somewhere only to find that heat, humidity, drought, or wild fires make it an untenable location)