Traffic Signal Timing: Burnett at Rt 55 Clearance Interval

Back in the day, John Forester’s Effective Cycling defined how vehicular bicycling should be done; our now-fragile comb-bound 1980 Third Printing of the 1978 Third Edition still has a place of honor on our bookshelves. I recently discovered his analysis of how traffic signal timing should work online, which says I’ve drawn the wrong conclusions from my observations of the absurdly short green / yellow / red cycle on Burnett Blvd at Rt 55, just in front of NYS DOT’s Region 8 headquarters.

The phasing sequence that is required by current traffic law is as follows:

1. Green, which may be very short when only one vehicle is waiting

2. Yellow, of only sufficient duration to allow a stop from maximum legal speed before entering the intersection

3. Red (a 4-way red), for sufficient additional time for traffic to clear the intersection before the conflicting green appears.

Forester: https://johnforester.com/Articles/Facilities/traffsig.htm

With that in mind, here’s how his analysis stacks up against one of our recent trips through the intersection. The four-digit number in the picture titles gives the time in frames at 60 frame/sec.

We’re stopped one car length behind a long trailer of paving equipment sporting an Iowa license plate. The driver has stopped with the trailer straddling the lane divider line, so we cannot determine which way he will turn. Because we no longer trust turn signals, despite the trailer’s blinking left signal, we will not pull up beside it in the right lane.

Frame 0127, T = 0 s, Δt = 0 s: The signal has just turned green:

Burnett Opposing Green - AS30V - 2020-06-26 - 0127
Burnett Opposing Green – AS30V – 2020-06-26 – 0127

Frame 0264, T = 2.28 s, Δt = 2.28 s: The trailer has started moving and Mary is rolling behind it, with her foot just coming off the ground:

Burnett Opposing Green - AS30V - 2020-06-26 - 0264
Burnett Opposing Green – AS30V – 2020-06-26 – 0264

Frame 0721, T = 9.9 s, Δt = 7.6 s: The signal turns yellow, after DOT’s additional five seconds of green; previously, we had five seconds and would have been able to stop. We’re accelerating as hard as we can, but Mary has barely passed the stop line:

Burnett Opposing Green - AS30V - 2020-06-26 - 0721
Burnett Opposing Green – AS30V – 2020-06-26 – 0721

Of course, entering an intersection on a stale yellow is undoubtedly unwise. It is not so unwise for someone traveling fast, because that person may well clear the intersection before the conflicting traffic starts. It is much more unwise for someone traveling slowly, but it is done and it is lawful.

Forester, ibid.

We’ve traveled about three car lengths in the seven seconds since the trailer started moving. Our bikes will sometimes trigger the signal if we’ve stopped in exactly the right spot over the unmarked sensor loops, but we have never observed our bikes retriggering the signal to lengthen the green or yellow phases as we ride through the intersection.

NYS DOT apparently expects us to stop abruptly when the signal goes yellow, wherever we may be with respect to the stop line and regardless of how fast we may be moving. In fact, given what you’re about to see, we’re expected stop on green to ensure we can start from the stop line during the next green signal.

Frame 0983, T = 14.2 s, Δt = 4.4 s: The signal turns red. The trailer is visible on the left, beyond the median signage, but we haven’t reached the middle of the intersection. I’m lined up with the rightmost lane of westbound Rt 55 and Mary is about in the center lane. The white car on our right is stopped, the black car is slowing to a stop:

Burnett Opposing Green - AS30V - 2020-06-26 - 0983
Burnett Opposing Green – AS30V – 2020-06-26 – 0983

Frame 1101, T = 16.2 s, Δt = 2.0 s: The opposing signal goes green for Rt 55 traffic, while we’ve barely reached the middle of the intersection:

Burnett Opposing Green - AS30V - 2020-06-26 - 1101
Burnett Opposing Green – AS30V – 2020-06-26 – 1101

Frame 1205, T = 18.0 s, Δt = 1.8 s: I’m lined up with the median, Mary’s in the center lane of eastbound Rt 55, putting us squarely in front of drivers who may be unable to see us through the stopped cars. The drivers to our left are, fortunately, waiting, unlike a previous crossing:

Burnett Opposing Green - AS30V - 2020-06-26 - 1205
Burnett Opposing Green – AS30V – 2020-06-26 – 1205

Frame 1440, T = 21.9 s, Δt = 5.7 s: After 22 seconds, we’ve cleared the intersection and are proceeding eastbound on Rt 55:

Burnett Opposing Green - AS30V - 2020-06-26 - 1440
Burnett Opposing Green – AS30V – 2020-06-26 – 1440

Forester observes the all-red phase must be lengthened to allow cyclists to clear the intersection. Right now, two seconds isn’t enough. Ten seconds would suffice for a pair of reasonably fit, albeit aging, cyclists.

This system fails to provide the required safety in the case of bicycles for three opposite reasons.

1. Bicycles are small and are harder to see. In particular, the most visually impressive part of the bicycle and rider is low down where it is easily shielded from view by the hoods of motor vehicles. Sometimes the only part of the cyclist that can be seen by drivers waiting at the stop line with other vehicles on their left is the head of the cyclist.

2. The cyclist crossing a typical intersection is close to the fronts of the line of cars waiting at the stop line on the cyclist’s right. This is not good judgement on the part of the cyclist, but so much emphasis has been put on staying far right that this position is typical.

3. The cyclist who is traveling slowly, or, more importantly, is starting from a minimum-duration green, is barely into a wide intersection when the conflicting green appears.

The result is a car-bike collision as one of the vehicles in the lanes nearest the curb starts up, or speeds up, and hits the cyclist who suddenly appears in front of it.

Forester, ibid.

I’ve had a DOT engineer tell me, sneeringly, that they don’t design facilities for “professional cyclists”, which commuting to work evidently made me; he was not, however, a “professional driver” even though he used a car for a similar purpose. It’s obvious DOT doesn’t design facilities for “ordinary” cyclists, either, and the evidence suggests they don’t design facilities for cyclists, period, full stop.

I still want someone from NYS DOT to explain how this “makes our highway systems safe and functional for all users“, perhaps by bicycling with us through the intersection a few times, but I’ve never gotten a response, let alone an answer, to anything I’ve ever sent their way.

Dehumidifier Scrapping

Dutchess County has another Household Hazmat / Electronics Disposal Day coming up, so I harvested some useful parts from the three dead dehumidifiers lurking under the bench.

The (perfectly good) blower motor in one unit lives inside a convenient plastic housing:

Scrap Dehumidifier Blower Motor - housing
Scrap Dehumidifier Blower Motor – housing

It’s sitting on three foam pads hot-melt glued to three wood blocks cut to fit inside three convenient molded features, making it nice & quiet & stable.

The motor uses a nice polypropylene run capacitor:

Scrap Dehumidifier Blower Motor - 6 uF cap
Scrap Dehumidifier Blower Motor – 6 uF cap

Which is also perfectly good:

Scrap Dehumidifier Blower Motor - 6 uF cap test
Scrap Dehumidifier Blower Motor – 6 uF cap test

The motor includes a wiring diagram:

Scrap Dehumidifier Blower Motor - wiring diagram
Scrap Dehumidifier Blower Motor – wiring diagram

I lashed it together with a chopped-off IEC cord, because the stock dehumidifier cords are just way too stiff. The motor and blower originally pulled air through the dust filter, the condenser, and the evaporator, before blowing it out the side, so it’s running pretty much unloaded. A quick test shows there’s not much difference between the high and low speeds:

  • High: 1050 RPM, 80 W, 12.5 m/s air flow
  • Low: 1000 RPM, 77 W, 11.7 m/s air flow

Low speed seems slightly less noisy, but the wiring now has insulated QD connectors just in case I ever want to run it at full speed.

For whatever it’s worth, the most recent dehumidifier failed one year into a two year warranty, but the company decided it was simpler to just refund the purchase price than to replace the unit. It seems the “sealed system” inside loses its refrigerant after a year and there’s no practical way to seal a small leak and recharge the system; unlike an automotive air conditioner, the tubes are soldered shut after the initial charge.

They all sport Energy Star badges, but throwing away the whole damned thing every year or two tells me we’re not measuring the right values. Obviously, somebody could make a worthwhile dehumidifier, but as of now Frigidare, GE Appliances (sold to Haier), and Danby are on my shit list. Next year, I expect to add HomeLabs to the list, because the dehumidifier is identical to the Danby unit (and, ah-ha comes with a 2.5 year warranty). They’re all made by Haier (or another Chinese factory) and nobody applies any long-term QC to their products.

Stonework FAIL

The strip mall down the road recently sprouted ersatz stone pillars around the steel posts holding up the roof:

Ersatz stone pillar failure
Ersatz stone pillar failure

Six days later, more slabs have fallen off the first pillar in the row:

Ersatz stone pillar - failure 2
Ersatz stone pillar – failure 2

And the second pillar:

Ersatz stone pillar - failure 3
Ersatz stone pillar – failure 3

Those fancy(-ish) bases consist of a wood frame covered with a mortar layer holding tiles of imitation stonework. From what little I know of stonework, mortar works only in compression, so you can’t glue tiles onto the side of a concrete lump using mortar.

Epoxy, maybe. Silicone snot, probably. Mortar, nope.

This happened barely weeks after the project’s completion, so I foresee poor ROI for the mall owner and plenty of warranty work for the contractor.

Cheapnified Brother TZ Label Cartridge

After four years, I finally had occasion to use the blue label cartridge, only to have the tape refuse to feed. The mess on the tongue sticking out shows the result after I forcibly pulled the tape from the cartridge:

Cheapnified Brother Label Cartridge - exterior
Cheapnified Brother Label Cartridge – exterior

The proximate cause was a fold in the imaging tape takeup path causing the driven spool to stop turning:

Cheapnified Brother Label Cartridge - folded dye tape
Cheapnified Brother Label Cartridge – folded dye tape

Some delicate unspooling, unfolding, and respooling put things back in order.

However, with the cartridge opened on the desk, it became obvious this was the cheapnified version:

Cheapnified Brother Label Cartridge - overview
Cheapnified Brother Label Cartridge – overview

Compare with a genuine Brother cartridge:

Brother P-Touch TZ tape cartridge - detail
Brother P-Touch TZ tape cartridge – detail

In the genuine cartridge, the base tape (with the sticky side and the colored side) feeds from the lower right directly into the assembly pressure roller. The transparent cover tape feeds from the spool in the lower left, up around the imaging tape supply spool, has the image fused to it, and is then pressed against the base tape on the assembly roller.

Update: Per david’s comment, the cartridges are even more complex than I thought! The printer has sense pins matching a group of cartridge holes to determine (at least) the tape size & orientation. See the pix added below.

Despite using the same cartridge body, the cheapnified tape path is entirely different. The base tape now feeds from the spool in the lower right through what should be the cover tape supply reel, around the imaging film supply spool, has the image fused directly to it, then passes out through the assembly pressure roller.

The cover tape is completely missing!

It turns out the cheapnified cartridges don’t bother with lamination. Instead, the printhead presses the imaging film against the top of the base tape, leaving the black image exposed to the elements. The assembly roller does nothing, apart from pulling the base tape through the cartridge.

Now that I know what to look for, the visible difference is the orientation of the base tape. A cartridge with the correct innards feeds the base tape with the colored side + image facing away from the long side of the cartridge. A cheapnified cartridge has the color + image facing the long side, with the major benefit of making the advertising look more appealing:

Fake Brother TZ cartridge - Amazon image
Fake Brother TZ cartridge – Amazon image

A genuine Brother cartridge would print the image on the bottom of the tape in that picture, so you’d see the blank side of the tape in that picture.

The “Amazon Marketplace” being what it is, I assume any pictures will not, in general, have much in common with what you actually receive, but at least I now know which ones to reject out of hand.

Update: The PT-1090 label printer has cartridge sensing pins:

Brother PT-1090 Labelmaker - sense pins
Brother PT-1090 Labelmaker – sense pins

And the cartridges have corresponding holes, although the printer doesn’t sense all of them:

Brother PT-1090 Labelmaker - cartridge ID holes
Brother PT-1090 Labelmaker – cartridge ID holes

Despite that, cheapnified cartridges are still cheapnified.

I learn something new every day around here! Thanks!

Schwab / Symantec VIP Access vs. Yubikey

A Yubikey 5 NFC turns out to be perfectly compatible with any website using Symantec’s (no longer available) hardware key and VIP Access (definitely a misnomer) app to generate TOTP access codes, because the sites use bog-standard TOTP. The only difficulty comes from Symantec’s proprietary protocol creating the token linking an ID with a secret value to generate the TOTP codes, which is how they monetize an open standard.

Fortunately, Cyrozap reverse-engineered the Symantec protocol, dlenski mechanized it with a Python script, and it works perfectly:

python3 -m venv symkey-env
source symkey-env/bin/activate
pip3 install https://github.com/dlenski/python-vipaccess/archive/HEAD.zip
vipaccess provision -t SYMC
deactivate

That spits out a file containing the ID and secret, from which you create a QR code for the Yubikey Authenticator app:

qrencode -t UTF8 'otpauth://totp/VIP%20Access:SYMCidnumbers?secret=longsecretgibberish&issuer=Symantec&algorithm=SHA1&digits=6'

Fire up the app, wave the Yubikey behind the phone, scan the QR code, wave the Yubikey again to store it, sign in to the Schwab site, turn on 2FA, enter the ID & current TOTP value from the Yubikey Authenticator, and It Just Works™.

Of course, you can kiss Schwab’s tech support goodbye, because you’re on your own. If you ever lose the Yubikey, make sure you know the answers to your allegedly secret questions.

Equally of course, you’re downloading and running random shit from the Intertubes, but …

Now, if only all my financial institutions would get with the program.

Huion H610Pro (V2) Tablet vs. xsetwacom

For unknown reasons, likely having to do with ordinary system updates, both the Huion H610Pro (V2) tablet’s device name and the display output’s name have changed. This came to light when I discovered the tablet’s stylus was no longer constrained to the landscape display, which worked fine when I set it up barely a month ago.

Running the setup command manually:

xsetwacom --verbose set "HUION Huion Tablet Pen stylus" MapToOutput "DP-1"
... Display is '(null)'.
... 'set' requested for 'HUION Huion Tablet Pen stylus'.
 <<< snippage >>>
... Checking device 'HUION Huion Tablet stylus' (11).
... Checking device 'HUION Huion Tablet eraser' (19).
Cannot find device 'HUION Huion Tablet Pen stylus'.

Apparently, the device formerly known as HUION Huion Tablet Pen stylus is now called HUION Huion Tablet stylus.

Fine, I can live with that. Try again:

xsetwacom --verbose set "HUION Huion Tablet stylus" MapToOutput "DP-1"
... Display is '(null)'.
... 'set' requested for 'HUION Huion Tablet stylus'.
 <<< snippage >>>
... Checking device 'HUION Huion Tablet stylus' (11).
... Checking device 'HUION Huion Tablet eraser' (19).
... Device 'HUION Huion Tablet stylus' (11) found.
... Found output 'VGA-1' (disconnnected)
... Found output 'DP-1' (disconnnected)
... Found output 'HDMI-1' (disconnnected)
... Found output 'DP-2' (connected)
... CRTC (2560x0) 1440x2560
... Found output 'HDMI-2' (disconnnected)
... Found output 'DP-1-8' (connected)
... CRTC (0x0) 2560x1440
... Found output 'DP-1-1' (disconnnected)
Unable to find output 'DP-1'. Output may not be connected.

Apparently, the video output formerly known as DP-1 has fissioned into DP-1-1 and DP-1-8, with only the latter connected. Weirdly, nothing happened to DP-2.

Once more, into the bleach:

xsetwacom --verbose set "HUION Huion Tablet stylus" MapToOutput "DP-1-8"
... Display is '(null)'.
... 'set' requested for 'HUION Huion Tablet stylus'.
 <<< snippage >>>
... Checking device 'HUION Huion Tablet stylus' (11).
... Checking device 'HUION Huion Tablet eraser' (19).
... Device 'HUION Huion Tablet stylus' (11) found.
... Found output 'VGA-1' (disconnnected)
... Found output 'DP-1' (disconnnected)
... Found output 'HDMI-1' (disconnnected)
... Found output 'DP-2' (connected)
... CRTC (2560x0) 1440x2560
... Found output 'HDMI-2' (disconnnected)
... Found output 'DP-1-8' (connected)
... CRTC (0x0) 2560x1440
... Setting CRTC DP-1-8
... Remapping to output area 2560x1440 @ 0,0.
... Transformation matrix:
... 	[ 0.640000 0.000000 0.000000 ]
... 	[ 0.000000 0.562500 0.000000 ]
... 	[ 0.000000 0.000000 1.000000 ]

Well, that worked.

Actually, I had to constrain the stylus to DP-2, then jam it back on DP-1-8, to spread the tablet’s horizontal extent over the entire monitor. Updating the startup script started the tablet properly the next morning.

The new device name certainly makes more sense and, perhaps, the X output connection now recognizes the landscape monitor’s ability to pass its DisplayPort video stream along to a second monitor.

Blog Summary: 2019

Another year of being the Domain Expert of scam-by-mail gadgets, obsolete ABS codes, and water heater anode rods:

Blog Page View Summary - 2019
Blog Page View Summary – 2019

Plotting the log of page views against posts in descending order of popularity gives a power-law relationship of some sort:

Blog Page View Graph - 2019
Blog Page View Graph – 2019

The log-log view has odd discontinuities:

Blog Page View Graph - 2019 - log-log
Blog Page View Graph – 2019 – log-log

Overall page views are down 30% from last year: 205k vs 290k.

WordPress served 1 million ads (vs 1.2 million in 2018) on those 205k page views, nearly five ads per page view, which seems horrifying. If you’re not using an ad blocker, you surely have difficulty finding the blog post amid all the crap.

The implosion of on-line advertising continues apace, however, as WordPress paid only 63% as much per ad: $0.40 (vs $0.70 in 2018) per thousand views. Obviously, ads on WordPress blogs aren’t worth much these days.

Recommendations:

While I could pay WordPress their upgrade ransom to eliminate the ads, it’s better if you defend yourself by eliminating all ads, wherever they may be.