First (2021) VR App

It’s so cool that I can actually develop apps for my new Oculus Quest 2. It took a while to find the correct set up instructions (the SDKs, plugins and Unity user interface are a constantly moving target), but these instructions from XRTerra were spot on!

The app isn’t particularly exciting at this point, but the exciting part is that the core pieces are all set up:

The model in Unity…
And subsequently in the Oculus Quest!

I am excited to see what happens next. My plan is to eventually get SpaceRocks up and running again…or something like it.


Python, Dash & Plotly

After playing with a number of monitoring tools to keep track of the various sites and devices around the house, since none of them did what I envisioned, I decided to try to take a stab at building my own app. I thought about doing it as a mobile app, but realized a web app would be much more versatile. After some searching, I came across Plotly and think it might suite my needs.

This Dash example got me particularly excited:

(Initially found here)

I got to work installing Python, Plotly and Dash on a spare Raspberry Pi Zero W I had been using for monitor experiments with Zabbix and Nagios.

I immediately started running into some issues. The code I was trying to run was very basic from Plotly/Dash examples. It would run, and said it was rendering on port 127.0.01:8050 but when I would try to connect remotely (say to, the connection would be refused.

Since was running the RPi headless, I couldn’t connect to 127.0.01, so I tried to get the code to run on my MacBook. Now I was getting errors running the same code. After some research, I found our that calling my program “” conflicted with the dash library. Simply renaming the code to allowed it to work.

It was now rendering on, but refusing to connect on the MacBook’s lan address

This is where I learned I need to include host = ''in the “run server()” function in order for the integrated web server to listed on any host. I modified the code on my RPi and now am very happily seeing:

8 March 2021:

I am using a YouTube tutorial from Jay Bhatt to understand some basics of Plotly/Dash.


Hacking Saturday

I was thinking I would spend yesterday setting up a Raspberry Pi Minecraft Server for the boys, but William decided to have a meltdown over swim team practice and lost access to electronics for the weekend. So I put that project on a back burner and instead tackled some work related programming.

My new company, Codility, helps companies screen technical candidates during the hiring process. We thought the pandemic would actually be good for business since people would need to find ways to interview candidates remotely versus in person. The thing we learned, however, is that we need to find the companies that are actually hiring during the pandemic.

I have over 150 companies on my target account list. Visiting every company’s career page is an option, but time consuming. There are services like Burning Glass that track labor statistics, but they wanted $15,000 for an annual subscription to their service. Companies like provide a single source of job posting but I would still need to search 150 companies….and vary my searches. (Just finding out who is hiring is not enough as companies like Amazon are hiring like crazy, but most hires are factory workers and we help with technical roles, like software developers and data architects.)

I found a web scraping tool, ParseHub, but quickly found that the free version was going to be very limiting. After some research, I found that Python may once again be the answer, particularly thanks for an interestingly named library, BeautifulSoup. (This article was a great starting point…using a similar use case.)

This project wound up being:

  • a refresher on Python
  • an introduction to scraping with BeautifulSoup
  • a refresher on REGEX (regular expression matching)
  • a exploration of programmatic interaction with Google Sheets

I found that there were various helper libraries to read/write Google Sheets. I got distracted when trying to address the API Key authorization process and wound up using EZsheets instead of the core Google Drive APIs.

Here is the code I hacked together (note, this assumes you have done much of the API key authorization stuff previously):

import requests
from bs4 import BeautifulSoup
import re
import ezsheets
ss = ezsheets.Spreadsheet('[google sheet id]')

print( ss.title)
sheet = ss[0]
Title = sheet[2,1]

i = 2
while (len(sheet[1,i]) != 0):
print(i, sheet[1,i])

Company = sheet[1,i]
URL = '' +'"'+ Title +'"'+ '%20company%3A' + '"' +Company + '"' + '&fromage=14'
sheet[3,i] = URL
page = requests.get(URL)
soup = BeautifulSoup(page.content, 'html.parser')
# find the with the page counts
CountPages = soup.find(id="searchCountPages")

# trap if page has no job listings
if CountPages is None:
sheet[2,i] = 0
i += 1

# pattern = "Page 1 of 11 jobs"
stuff = re.findall('[0-9]+', CountPages.decode())
num = int (stuff[1])
sheet[2,i] = num

i += 1

I am pretty happy with the results. I was able to zip through all 150 accounts and develop a prioritization/segmentation that should help me identify companies that can really benefit from our technology.


Pond Damage

When Tropical Storm Isaiah hit town, we lost power for a couple of days but also had some pond damage.

The Pond on a good day

It turns out a branch not only landed in the stream between the waterfall and the main pond, it also pieced the rubber liner that keeps the water from seeping into the groundwater.

I tried using some Flex Tape the boys got as a joke for Christmas but is surprisingly didn’t stick. I think it was because the rubber was dirty because the Flex Tape was very happy to stick to nearby rocks. I supplemented the Flex Tape with some clear Flex Seal and let it dry for a couple of days. I ran the pond but unfortunately the water level dropped indicating I still had a problem.

I did some further investigation and notice a seam in the rubber. It appears the builder just overlaid some sheets and didn’t seal them. Then I noticed that the branch went through two layers of rubber… and I only sealed one.

Exposing the second hole

Next Day…

Today, I added the patch I bought from Half Off Ponds. First I was told to clean the area with gasoline and then apply the sealer they provided. I was a little concerned about the gasoline and the fish but it all evaporated quickly. (Ironically, I have plenty of gasoline left over from the generator after Isaias.)

I screwed up the first one as the self-stick folded over and formed an excellent seal with itself. The second one seemed to work better but I am concerned about a couple of creases.

12×12 patch in place

I am going to let this dry and then hit the edges with some Flex Seal for good measure. Then I will fold back the overlapping original liner and use the remaining patch kit parts to seal the seams.

Day 3 (?)

I may be getting a little sloppy. I used the extra 6×12″ patches to seal the seam between liners. I didn’t get the area quite as clean as I did with the main patch and I think some of the adhesion is bad. I will spray again tomorrow with clear Flex Seal and (hopefully) call this all done.

Sealing the seam

Some time later.. (12 Sept 2020)

We have had a couple of days of rain which have delayed my progress. I went out to spray the Flex Seal but the liner was really muddy. I hosed it down but noticed the water was pooling. Instead of cleaning that out, I took it as a sign that the seals were finally holding (knock on wood).

Pooling water…good seal?

I let it sit for 30 minutes and the water remained, so I thought it would be time to test the water fall and stream. I started the pump and rearranged some rock. I will let it run for a couple of hours and see if the overall water level remains constant.. fingers crossed.

Water flow test.


Ever since we started letting the cats out, they have become real pests about going out and have figure out how to brute force the screen door. By putting their weight on the frame and clawing to the right, it is fairly easy to bypass the simple Andersen locking mechanism.
There has to be a better way.
Earlier, they broke the knob that latches to the screen and I found a replacement 3D model on Thingiverse. It has worked well, but proved to not be sufficiently cat-proof.

The problem is that the standard latch only prevents lateral movement. As soon as the cats put weight on the door and push it out, the latch disengages and slides open easily.
So my thought was what if the latch grabbed the screen door? I found this on Thingiverse, but it would require too many new holes in my door and frame.

So off to Tinkercad…with a slight detour to SketchUp. It took some searching, but I was able to find a 3D model of the handle in their 3Dwarehouse. Unfortunately, the model was in Sketchup format and I don’t own Sketchup. Luckily, their free web version will let you save in STL format, so I could subsequently tweak it in Tinkercad.

My plan was to add a plate to the handle so my latch had something to grab onto. That was pretty simple. When I printed the piece, the only surprise was that the back of the finger cutout was only hanging on by a hair and popped out. I may fix this at some point, but for now it is fine.
Next I needed to tweak the latch. Again, this was pretty simple in Tinkercad.

This worked pretty well once installed. The door was now rock solid when locked, but it was a little too tight and hard to open.

Another tweak shortened the latch portion and extended the grip.

I tried to extend the base (the round part) so that the latch better lined up with the door handle, but it wasn’t enough. But instead of remodelling and reprinting, I simply resorted to some old fashioned washers to offset the mechanism sufficiently.
Now the door is cat-proof and wife friendly…at least until the cats simply break through the screen.


Our Duck Pond

Mr. and Mrs. Mallard came by today to check out the real estate in the area. They spend a good 30 minutes checking out the food supply and the local nesting potential. Unfortunately, they didn’t seem to be overly impressed with the property. Perhaps if Tom would clean out the accumulated leaves at the bottom of the pond they would have been more excited. Or maybe if they had been actual coy (coi?) in the pond…


Let it snow

This is what the house looked like during the first snow of the 2007 season. This is back when we thought snow was cute.

Now that we have lived through the second snow, the “honeymoon” phase has passed. Tom is very thankful for the early Christmas present his mother provided…an electric shovel. Unfortunately, it was only used to clear half of the circular drive this time…and now the other half is a 1″ deep sheet of ice covered in hard snow. Winter cement.
Add to that the fact that the town people that clear our new sidewalks think that our driveway is a convenient dumping area for accumulated snow (after Tom has cleared a path for the car). Now there are two pillars of snow to navigate through in order to get to the street. And the quaint hump that leads from the street to the house is now a treatorous ice slide…fun for both driving over and walking to the mail and trash.
But is does make for a lovely picture.


The Big Fig on the air!

Our good friend and famed actor Jimmy Harder (aka “The Big Fig”; see in Sept 17 entry) was interviewed this morning on KRNA radio (94.1 out of DesMoines, Iowa) by DJ’s Greg Dwyer and Bill Michaels (themselves aka “Two Dorks”). Apparently, the two were reminiscing about their favorite TV commercials and they started to discuss the old Fig Newton classis featuring Jimmy. A quick Google search and they found the video on YouTube. Timing is everything, as the video was only recently posted to YouTube. (We have been searching for a copy for years.)
Here is a link to the commercial:

Here is a recording of the radio interview:
Download the interview (right click then save-as)


Happy Birthday, Ms. Hepburn

Saturday was the 100th Anniversary of Katherine Hepburn’s birth. Ms. Hepburn was a resident of Jen and Tom’s Turtle Bay neighborhood and she was very well loved by the community. Many people in the area got together to celebrate her birthday.

Tristan had a great time at the party. Running all around the plaza, he tuckered his parents out.


We're buying a house!

Since Tom’s company is expecting him to work from home and with Tristan becoming a big brother, the Payne family was simply running out of space in their NYC apartment. So it with mixed emotions that the seemingly inevitable move is upon us. Chappaqua, here we come!

If everything goes according to plan, the house code named “the French Colonial” will be the new Payne homestead in late May.
If you know of anyone who would like to buy a wonderful, sunny New York City apartment, point them this way…