Treehouse for Fairies or Squirrels

 Mon Nov 16, 2020, last updated Thu Mar 24, 2022 -  Jim Deibele

Saw this while walking the dog today. I don’t normally walk on this side of the street and had never noticed it before. I hope somebody had fun making it.

PS: I need to figure out how to get Hugo to make thumbnails. But this was taken with the iPhone 11 I have in my pocket. Man, it takes amazing pictures.

Tree House for Fairies. Or Squirrels. North side.

Tree House for Fairies. Or Squirrels. Southwest side

Covid for the Holidays

 Mon Nov 16, 2020, last updated Thu Mar 24, 2022 -  Jim Deibele

Our family is carefully planning the holidays. For my wife’s birthday we went and saw her parents. They stayed in the dining room near the gas fireplace while we stayed near the open patio door. Masks were worn except for eating and drinking.

For Thanksgiving, we’re planning on hosting one brother and his two kids. Outside, with a heater attached to a propane tank. Maybe two.

And, for Christmas, maybe it’s all via Zoom. That’s not traditional or even fun but if it keeps people alive, well, it’s worth it.

55 people attended a wedding in Maine   . 38 days later, 176 other people were infected and 7 - none of whom attended the wedding - died.

John Gruber   ’s summary of the situation is cogent:

It sounds cold, but the attendees of that wedding killed those people. If you’re planning a “small” family get-together for Thanksgiving, it’s every bit as irresponsible as planning a “short” drunk drive.

Watching the Covid 19 Rt Rate in Oregon Climb Again 3rd Wave

 Sun Nov 15, 2020, last updated Thu Mar 24, 2022 -  Jim Deibele   shows the Effective Reproduction Rate, or Rt, for the whole US and specific states.

The rate for Oregon   started high, came down, went up a little, came down, and is now going up.

What’s really scary is

My oldest is doing her freshman year of college online at home. My other two are doing their high school classes 100% online, including Intro to Industrial Arts for one and Band for the other. With the onset of bad weather, it’s been weeks since we had somebody over since we can’t socially distance in the house.

My parents are gone and so I don’t have to worry about them. But we want to keep my wife’s parents as safe as we can. And there are the nagging concerns about long-term effects on some people and unexplained deaths. Even when the patients are young.

How to Automatically Keep Your Python Packages Up to Date With pip-review

 Wed Nov 11, 2020, last updated Thu Mar 24, 2022 -  Jim Deibele

One way to install packages is via Pip.

pip install django

Pip will install not only the program you want but anything else it depends on. Further, you can use pip to upgrade a program and its dependencies.

pip install --upgrade django

I’d set up a cron job that would do this:

pip install --upgrade django requests pytz certifi httplib2

Eventually I added a second and third line. But there’s a better way: use pip-review

pip-review will look over all of your installed packages and automatically upgrade them. It will report conflicts, where one package requires a version less than or equal to X and another package will require a version greater than X.

What happens then? Well, if you need Package A, you install it with pip and it installs the dependencies that Package A needs, even if it means Package B won’t install. Then you reverse when you need Package B.

To get out of this situation, you should contact the package maintainer and see about getting the requirements updated. Usually it’s a simple matter of them testing a later version of the package they had pinned (meaning they said version < X or = X).

Remember that this is probably an unpaid side project for the maintainer! They’re going to need to test and update on their schedule, not yours.

Here’s actual output on my system from yesterday:

pip-review --auto --verbose
Collecting asgiref==3.3.1
  Downloading asgiref-3.3.1-py3-none-any.whl (19 kB)
Collecting certifi==2020.11.8
  Downloading certifi-2020.11.8-py2.py3-none-any.whl (155 kB)
     |████████████████████████████████| 155 kB 622 kB/s 
Collecting parso==0.8.0
  Using cached parso-0.8.0-py2.py3-none-any.whl (93 kB)
Installing collected packages: asgiref, certifi, parso
  Attempting uninstall: asgiref
    Found existing installation: asgiref 3.3.0
    Uninstalling asgiref-3.3.0:
      Successfully uninstalled asgiref-3.3.0
  Attempting uninstall: certifi
    Found existing installation: certifi 2020.6.20
    Uninstalling certifi-2020.6.20:
      Successfully uninstalled certifi-2020.6.20
  Attempting uninstall: parso
    Found existing installation: parso 0.7.1
    Uninstalling parso-0.7.1:
      Successfully uninstalled parso-0.7.1
ERROR: After October 2020 you may experience errors when installing or updating packages. This is because pip will change the way that it resolves dependency conflicts.

We recommend you use --use-feature=2020-resolver to test your packages with the new resolver before it becomes the default.

lektor 3.2.0 requires Werkzeug<1, but you'll have werkzeug 1.0.1 which is incompatible.
jedi 0.17.2 requires parso<0.8.0,>=0.7.0, but you'll have parso 0.8.0 which is incompatible.
Successfully installed asgiref-3.3.1 certifi-2020.11.8 parso-0.8.0

I opened an issue on GitHub for Lektor, the maintainer found a dependency that didn’t require Werkzeug<1 and I expect it will be in the next version.

I need to do the same for Jedi. Again, it’ll be up to them whether it gets fixed or not. But at least I can alert them. And you should for packages you use.

How to Block Ads on Your iPhone, iPad, and Laptop Easily, Effectively, and for Free

 Mon Nov 09, 2020, last updated Thu Mar 24, 2022 -  Jim Deibele

I have been using uBlock Origin   for many years on my Mac. Recently, I tried replacing my 2015 MacBook Pro with a 2018 MacBook Pro. There were a lot of things that I liked about the new MacBook Pro but what bothered me was that it had only 8GB of RAM whereas the older one had 16GB.

I would listen to the fans howl and eventually I replaced it with a machine I described in The Perfect Mac . But as happy as I am with my Mac Mini, it’s not portable. So I added an iPad Pro to the mix. That’s been pretty good but the ad blocking on the iPad doesn’t seem anywhere as effective.

So I first tried the really technical solution and put PiHole   on a Raspberry Pi I had lying around. That worked mostly and there are some real advantages: with PiHole and your router, you can force Internet of Things like web cams or ChromeCasts or Google Assistants to use your DNS settings even though they’re hard-coded to report back to China or Google.

But I found it a little erratic because my router wanted two IP addresses for the DNS servers for redundancy. So I had to use an address of a different DNS server and there were times that my iPad would use that server. And, of course, that wouldn’t block ads.

I looked into installing a second Raspberry Pi so I could run Pi-Hole on two devices. Or I could have found some way to put a second IP address on the one Pi. But, in the end, what I found worked best was to remove Pi-Hole and put in the addresses of AdGuard’s DNS servers   .

You just need to change your routers DNS server settings to this:


Once you do this, any of your devices will automatically block ads.

Downsides? None that I’ve found.