Advertisements

Archive for category Administrivia

Hiatus

After devoting the last few months to setting up the Makerspace Starter Kit and extracting / organizing / stashing the stuff I wanted to keep:

New parts cabinets

New parts cabinets

I now have some difficulty accomplishing what needs to be done:

Basement Shop - right

Basement Shop – right

During the rest of May I must write a pair of columns, unpack / arrange / reinstall my remaining tools / parts / toys, endure a road trip to our Larval Engineer’s graduation (*), enjoy bicycling with my Lady, and surely repair a few odds-n-ends along the way.

I’ll generate occasional posts through June, after which things should be returning to what passes for normal around here…

(*) For reasons not relevant here, our Larval Engineer’s schedule includes a final co-op and wind-up semester after “graduation”. Perhaps she’s entering the Chrysalis phase of her development?

Advertisements

10 Comments

Autodesk Privacy Statement: “Do Not Track” and Similar Mechanisms

Autodesk just Borged Netfabb and, in the process of merging their address lists, asked me to update my info and agree to their very detailed Privacy Statement. You should take a look at it; the link will open in a new tab / window / whatever, so you don’t lose your place here.

Have you noticed how those “statements” always have a very long and firmly fixed line width that doesn’t adapt to your window size, use various shades of light-gray-on-white typefaces in the smallest sizes, and continue for pages and pages. I don’t believe in coincidences, either.

Here’s what they think of my Do Not Track browser setting (emphasis added):

“Do not track” and similar mechanisms

Some web browsers may transmit “do-not-track” signals to websites with which the browser communicates. Because of differences in how web browsers incorporate and activate this feature, it is not always clear whether users intend for these signals to be transmitted, or whether they are even aware of them.

Participants in the leading Internet standards-setting organization that is addressing this issue are in the process of determining what, if anything, websites should do when they receive such signals. Autodesk currently does not take action in response to these signals. If and when a final standard is established and accepted, we will reassess how to respond to these signals.

For information about cookies, web beacons and similar technologies, please read our Cookie Policy.

After plowing through much of their “statement”, I decided Autodesk doesn’t do anything I need to know about and, seeing as how Netfabb gradually faded from my attention when their web service joined Microsoft’s Azure cloud, I declined to “confirm my preferences” and didn’t click the big blue button. I doubt such inaction will remove my email address from their list, but it’s the only choice they offer.

Because I can’t tell if a website really wants to track me, I block ads, disable Flash, and destroy all cookies when I leave their site, Just In Case they inadvertently deployed all that crap. I’m sure they never intend to serve malware through an ad slot brokered on their site, but mistakes do happen, and I’m glad to assist them.

If you’re seeing ads on this page right now, they come from WordPress and I get a small cut. You should start using an ad blocker right now; if your browser doesn’t permit you to block ads, change browsers. If you worry that reducing my advertising revenue will compromise the quality and quantity of what you see here, send me a sack of money through Paypal. Fair enough?

Also: Linux, dammit.

7 Comments

Traffic Signal Timing: NYSDOT Responds

On 12 July 2015, I sent a report to NYSDOT about how the traffic signals at Burnett Blvd / Rt 55 greenlighted opposing traffic when our bicycles were still in the intersection:

Can you increase the minimum green and yellow times on the signals from Burnett Blvd to Rt 55?

The current settings are too short for bicycle traffic making a left turn across six traffic lanes.

The pictures show key points from our ride on 2015-07-10, returning from the Balloon Festival in Poughkeepsie. We took the DCRT around Poughkeepsie, went through Arlington to Rt 376 at Collegeview, then took Rt 376 Red Oaks Mill.

The image sequence numbers identify frames extracted from video files. The Front camera runs at 60 fps and the Rear camera at 30 fps.

The red signals are in the process of turning off in Front 0196.

Burnett at Rt 55 Signal - Front 0196

Burnett at Rt 55 Signal – Front 0196

One second later in Front 0260, the car and our bikes are starting to roll. Given the number of drivers blowing through red signals at full speed, devoting one second to watching for oncoming traffic seems prudent.

Burnett at Rt 55 Signal - Front 0260

Burnett at Rt 55 Signal – Front 0260

The yellow signals are turning on in Front 0633, seven seconds after the green. The car has reached the pedestrian ladder across Rt 55, but we’re still crossing the westbound lanes of traffic. We may not be the fastest riders on the road, but we’re not the slowest, either.

Burnett at Rt 55 Signal - Front 0633

Burnett at Rt 55 Signal – Front 0633

We’ve reached the far side of the intersection in Front 1142, just under 16 seconds from the green.

Burnett at Rt 55 Signal - Front 1142

Burnett at Rt 55 Signal – Front 1142

However, Rear 0408 shows that the opposing signals turned green while we’re still crossing the eastbound lanes of Rt 55. That’s about 15 seconds after the Burnett Blvd signals went green.

Burnett at Rt 55 Signal - Rear 0408

Burnett at Rt 55 Signal – Rear 0408

About 2.7 seconds later, Rear 0490 shows cars accelerating across the intersection toward us as we cross the pedestrian ladder. They started rolling immediately after their signal went green; waiting a second isn’t a universal practice.

Burnett at Rt 55 Signal - Rear 0490

Burnett at Rt 55 Signal – Rear 0490

Setting the minimum Burnett green to 12 seconds, the minimum yellow to 10 seconds, and the minimum delay from Burnett green to Rt 55 green to 30 seconds would help cyclists (just barely) reach the far side of the intersection before opposing traffic starts rolling.

Also: can you adjust the sensor amplifiers on Burnett to respond to bicycles and mark the coil locations on the pavement in both lanes? That would help us through the intersection during low-traffic-volume times, as our bikes seem unable to trip the signals.

Thanks…

This reply from the NYSDOT autoresponder was all I ever got from them:

Thank you for your inquiry.  We will respond to your email message as soon as possible.

On 2 August 2015, I sent a report to NYSDOT about how the traffic signals at Old Post Rd – Spring Rd at Rt 9 greenlighted opposing traffic when our bicycles were still in the intersection:

The minimum green-to-opposing-green signal timing from Old Post Road across Rt 9 to Spring road is about 18 seconds: not long enough for bicycles to safely cross an intersection with eight traffic lanes.

The “Green” picture shows our starting position as the signal turned green: behind the first car in line. There’s another car behind us, which ensures the loop sensor will trip; it does not detect bicycles.

Spring Rd - Rt 9 - 2015-08-01 - Green

Spring Rd – Rt 9 – 2015-08-01 – Green

The “Yellow” picture shows the signal changing after 12 seconds, with the car from behind us now in the middle of the northbound lanes. We’re still in the middle of the southbound lanes.

Spring Rd - Rt 9 - 2015-08-01 - Yellow

Spring Rd – Rt 9 – 2015-08-01 – Yellow

The “Opposing Left Green” from the rear camera, 18 seconds from the first picture, shows green left-turn arrows for Spring Road. The opposing cars began rolling with Mary lined up with the northbound right-turn lane and me lined up with the right travel lane.

Spring Rd - Rt 9 - 2015-08-01 - Opposing Left Green

Spring Rd – Rt 9 – 2015-08-01 – Opposing Left Green

The car behind blew through the red signal on Old Post Rd; I think that’s why the opposing left-turning cars didn’t start sooner.

In the other direction, I often use the left turn from Spring Rd to southbound Rt 9 to reach the South Road Square strip mall. Similarly short yellow and overall cycle times apply in that direction.

Can you add (at least!) five seconds to the yellow and perhaps ten seconds to the minimum cycle time for both directions? That would help us clear the intersection before opposing traffic starts moving again.

Can you also mark the sensor loop locations in all those lanes so cyclists can find them and adjust the amplifier sensitivity / dwell to respond to bicycles? We’ve lined up atop the quadrupole loop pavement cuts on Old Post Road to no avail, but there’s not even a hint of the loop positions under the new Spring Rd paving.

Thanks…

This reply from the NYSDOT autoresponder was all I ever got from them:

Thank you for your inquiry.  We will respond to your email message as soon as possible.

On 5 January 2016 I posted a description of our encounter with a car at the Burnett Blvd intersection and sent the link to the NYSDOT Bicycle and Pedestrian Coordinator. If you search for Burnett Blvd, you’ll find a few other mentions of that intersection.

On 6 January 2016, this email message arrived from the same email address that never responded to my reports (emphasis added):

Dear Mr. Nisley:

This is in response to your correspondence regarding your experiences as a bicyclist at the intersections of Route 55 at Burnett Boulevard and Route 9 at Spring Road in the Town of Poughkeepsie, Dutchess County.

The New York State Department of Transportation (NYSDOT) is in the process of investigating alternate detection types and inductance loop patterns that would detect a wider range of vehicles.  As alternate detection types are tested and approved, they will be integrated into the next traffic signal upgrade at both intersections.  The distance varies based on geometry.  The loops are centered in each lane and the front loop is a quadrapole, so there are wires down the middle of the loops.

A new timing program was implemented at Route 9 at Spring Road in August, and the yellow and red clearance times meet the current standards.  The timing at Route 55 at Burnett Boulevard is in the process of being updated, and the clearance times will be updated as necessary to meet the current standards.  Clearance times are determined based on speed, intersection dimensions, grade, and reaction time and cannot be adjusted.  The sensitivity on all loops will also be adjusted, so they are as sensitive as possible without causing cross talk between the loops.

We appreciate and share your interest in making our highway systems safe and functional for all users.

If you have any questions or need additional information, please feel free to contact our Regional Traffic Safety & Mobility Group at (845) 437-3396.

NYSDOT Hudson Valley Region

I don’t regard that date a coincidence; NYSDOT was not responding to my reports. I sent a further note to clarify a few points:

On 01/05/2016 02:18 PM, dot.sm.r08.nysdot wrote:
Clearance times are determined based on speed,intersection dimensions, grade, and reaction time and cannot be adjusted.

That seems to mean the times can be adjusted, but you won’t adjust them to allow cyclists enough time to clear the intersection.

We appreciate and share your interest in making our highway systems safe and functional for all users.

So, giving opposing traffic a green light while we’re still in the intersection NYSDOT’s way of “making our highway systems safe and functional for all users”.

Do I understand your statements correctly?

No reply, as I’ve come to expect by now.

I think the emphasis on “meet(ing) the current standards” is how NYSDOT will attempt to defend against claims that road conditions caused or contributed to a car-on-bike collision. I find it surprising that contemporary “standards” would allow greenlighting opposing traffic against bicycles, but perhaps they simply choose a standard that excludes bicycles.

,

19 Comments

Got My Picture On The Cover Of Circuit Cellar

Well, a picture of my circuitry, anyhow, there in the upper-right corner:

Circuit Cellar 306 - January 2016 - Cover

Circuit Cellar 306 – January 2016 – Cover

It’s the avalanche noise random number generator:

Reverse-bias noise amplifier - detail

Reverse-bias noise amplifier – detail

I’m pretty sure they color-negatived it to suppress that retina-burn magenta PETG holder.

It wasn’t for my column, but the Tinny cover painting for Circuit Cellar Issue 29 (“Measurement and Control”) hangs near my desk:

Robert Tinney - Cover for Circuit Cellar Issue 29

Robert Tinney – Cover for Circuit Cellar Issue 29

Back then, I was writing the Firmware Furnace column. Ah, those were the days…

 

9 Comments

Blog Summary: 2015

Page views for 2015:

Blog Summary - YE 2015

Blog Summary – YE 2015

So, by and large, plumbing & home repair are where it’s at.

When Nielsen sends out another round of money in the mail, the obvious search terms pop to the top of the list. That’s weird, because the major search engines no longer provide the keywords in the URL (so WordPress can’t track them), which means a few folks still use minor-league search sites.

Who knew?

Thanks to those of you who put up with my “external memory” rambling; with a bit of luck, I can still serve as a bad example. [grin]

Leave a comment

WordPress Source Code Test Post, “Improved” Editor

This was created with the “improved” editor… to show WP support some of the problems I’m fighting on a regular basis.

So here’s a picture, just for fill:

Mood Light - thermocouple location

Mood Light – thermocouple location

It’s worth noting that you (well, I) cannot add this post text after that picture in Visual mode, because the “last character” is inside the picture caption: whatever I type appears in the caption. Switching to HTML mode, starting this sentence, then switching back to Visual mode, is the only way to go.

Here’s the same block of code, pasted in Visual mode:


void loop() {

MillisNow = millis();
if ((MillisNow - MillisThen) > UpdateMS) {
digitalWrite(PIN_HEARTBEAT,HIGH);

for (byte c=0; c < PIXELSIZE; c++) { // step to next increment in each color
if (++Pixels[c].Step >= Pixels[c].NumSteps) {
Pixels[c].Step = 0;
printf("Cycle %d steps %d at %8ld delta %ld ms\r\n",c,Pixels[c].NumSteps,MillisNow,(MillisNow - MillisThen));
}
}

for (int i=0; i < LEDSTRINGCOUNT; i++) { // for each layer
byte Value[PIXELSIZE];
for (byte c=0; c < PIXELSIZE; c++) { // ... for each color
Value[c] = StepColor(c,-i*Pixels[c].PlatterPhase); // figure new PWM value
// Value[c] = (c == RED && Value[c] == 0) ? Pixels[c].MaxPWM : Value[c]; // flash highlight for tracking
}
uint32_t UniColor = strip.Color(Value[RED],Value[GREEN],Value[BLUE]);
if (false && (i == 0))
printf("L: %d C: %08lx\r\n",i,UniColor);
for (int j=0; j < LEDSTRIPCOUNT; j++) { // fill layer with color
strip.setPixelColor(Map[i][j],UniColor);
}
}
strip.show();

MillisThen = MillisNow;
digitalWrite(PIN_HEARTBEAT,LOW);
}

}

The editor strips all the leading tabs and left-justifies all the lines. Tabs within the lines vanish, too, so all the comments slide leftward against the preceding code.

Here’s the same block, pasted in Visual mode with “Paste as text” turned on:


void loop() {

MillisNow = millis();
if ((MillisNow - MillisThen) > UpdateMS) {
digitalWrite(PIN_HEARTBEAT,HIGH);

for (byte c=0; c < PIXELSIZE; c++) { // step to next increment in each color
if (++Pixels[c].Step >= Pixels[c].NumSteps) {
Pixels[c].Step = 0;
printf("Cycle %d steps %d at %8ld delta %ld ms\r\n",c,Pixels[c].NumSteps,MillisNow,(MillisNow - MillisThen));
}
}

for (int i=0; i < LEDSTRINGCOUNT; i++) { // for each layer
byte Value[PIXELSIZE];
for (byte c=0; c < PIXELSIZE; c++) { // ... for each color
Value[c] = StepColor(c,-i*Pixels[c].PlatterPhase); // figure new PWM value
// Value[c] = (c == RED && Value[c] == 0) ? Pixels[c].MaxPWM : Value[c]; // flash highlight for tracking
}
uint32_t UniColor = strip.Color(Value[RED],Value[GREEN],Value[BLUE]);
if (false && (i == 0))
printf("L: %d C: %08lx\r\n",i,UniColor);
for (int j=0; j < LEDSTRIPCOUNT; j++) { // fill layer with color
strip.setPixelColor(Map[i][j],UniColor);
}
}
strip.show();

MillisThen = MillisNow;
digitalWrite(PIN_HEARTBEAT,LOW);
}

}

Obviously, that had no effect whatsoever: all the tabs vanish.

Here’s the same block, pasted in HTML mode:

void loop() {

MillisNow = millis();
if ((MillisNow - MillisThen) > UpdateMS) {
digitalWrite(PIN_HEARTBEAT,HIGH);

for (byte c=0; c < PIXELSIZE; c++) { // step to next increment in each color if (++Pixels[c].Step >= Pixels[c].NumSteps) {
Pixels[c].Step = 0;
printf("Cycle %d steps %d at %8ld delta %ld ms\r\n",c,Pixels[c].NumSteps,MillisNow,(MillisNow - MillisThen));
}
}

for (int i=0; i < LEDSTRINGCOUNT; i++) { // for each layer
byte Value[PIXELSIZE];
for (byte c=0; c < PIXELSIZE; c++) { // ... for each color
Value[c] = StepColor(c,-i*Pixels[c].PlatterPhase); // figure new PWM value
// Value[c] = (c == RED && Value[c] == 0) ? Pixels[c].MaxPWM : Value[c]; // flash highlight for tracking
}
uint32_t UniColor = strip.Color(Value[RED],Value[GREEN],Value[BLUE]);
if (false && (i == 0))
printf("L: %d C: %08lx\r\n",i,UniColor);
for (int j=0; j < LEDSTRIPCOUNT; j++) { // fill layer with color
strip.setPixelColor(Map[i][j],UniColor);
}
}
strip.show();

MillisThen = MillisNow;
digitalWrite(PIN_HEARTBEAT,LOW);
}

}

When pasted, that looked correct, but switching back to Visual mode, even without doing any editing, stripped out all the tabs again.

Oh, and something is escaping the ampersand characters over and over again.

So, obviously, nobody has ever tested the “improved” editor against source code blocks.

Incidentally, the Visual and HTML tabs scroll off the top, but pressing Ctrl-Home scrolls only within this narrow text window. Scrolling to the top requires mouse manipulation: click outside the text column, then whack Ctrl-Home. All that, just to switch modes.

7 Comments

WordPress Source Code Test Post: Old Editor

A test post to show WP support the problem with source code I’m fighting…

I created this using the “old” editor, then went back to the Posts listing and edited it with that editor. It’s worth noting that the “Edit” link in the post preview triggers the “improved” editor, which shreds existing sourcecode blocks.

One of the many pictures I use that are easiest to handle using the Visual editor, which is why I’m pushing back so hard against any workaround that involves not switching editor modes:

Mood Light - thermocouple location

Mood Light – thermocouple location

I create code blocks by typing (or pasting) the opening & closing sourcecode tags, then copying the block from the text editor and pasting it between the tags. No MS Word, no word processing, no exotic formats, just plain text from a programming editor.

A chunk of code that I pasted in Text mode, then switched to Visual mode to insert the picture above:

void loop() {
	
	MillisNow = millis();
	if ((MillisNow - MillisThen) > UpdateMS) {
		digitalWrite(PIN_HEARTBEAT,HIGH);
		
		for (byte c=0; c < PIXELSIZE; c++) { // step to next increment in each color if (++Pixels[c].Step >= Pixels[c].NumSteps) {
				Pixels[c].Step = 0;
				printf("Cycle %d steps %d at %8ld delta %ld ms\r\n",c,Pixels[c].NumSteps,MillisNow,(MillisNow - MillisThen));
			}
		}

		for (int i=0; i < LEDSTRINGCOUNT; i++) {				// for each layer
			byte Value[PIXELSIZE];
			for (byte c=0; c < PIXELSIZE; c++) {				//  ... for each color
				Value[c] = StepColor(c,-i*Pixels[c].PlatterPhase);		// figure new PWM value
//				Value[c] = (c == RED && Value[c] == 0) ? Pixels[c].MaxPWM : Value[c];	// flash highlight for tracking
			}
			uint32_t UniColor = strip.Color(Value[RED],Value[GREEN],Value[BLUE]);
			if (false && (i == 0))
				printf("L: %d C: %08lx\r\n",i,UniColor);
			for (int j=0; j < LEDSTRIPCOUNT; j++) {				// fill layer with color
				strip.setPixelColor(Map[i][j],UniColor);
			}
		}
		strip.show();

		MillisThen = MillisNow;
		digitalWrite(PIN_HEARTBEAT,LOW);
	}
	
}

All the “greater than”, “less than”, and “ampersand” characters have been HTML-escaped and will now stay that way forever.

Part of that problem may be that the editor sometimes inserts a bogus end tag for a Preformatted block that doesn’t match an opening tag, typically at the bottom of the post. That seems to happen only when the source code block is the last text in the post; it’s as if the editor puts pre tags around the block as some part of round-tripping the source code, but loses track when it removes them.

It will also insert spurious nbsp escaped characters in blank lines that seem to affect the outcome.

Here’s the same block, inserted in Visual mode with “Paste as text” turned off:

void loop() {
 
 MillisNow = millis();
 if ((MillisNow - MillisThen) > UpdateMS) {
 digitalWrite(PIN_HEARTBEAT,HIGH);
 
 for (byte c=0; c < PIXELSIZE; c++) { // step to next increment in each color if (++Pixels[c].Step >= Pixels[c].NumSteps) {
 Pixels[c].Step = 0;
 printf("Cycle %d steps %d at %8ld delta %ld ms\r\n",c,Pixels[c].NumSteps,MillisNow,(MillisNow - MillisThen));
 }
 }

 for (int i=0; i < LEDSTRINGCOUNT; i++) { // for each layer
 byte Value[PIXELSIZE];
 for (byte c=0; c < PIXELSIZE; c++) { // ... for each color
 Value[c] = StepColor(c,-i*Pixels[c].PlatterPhase); // figure new PWM value
// Value[c] = (c == RED && Value[c] == 0) ? Pixels[c].MaxPWM : Value[c]; // flash highlight for tracking
 }
 uint32_t UniColor = strip.Color(Value[RED],Value[GREEN],Value[BLUE]);
 if (false && (i == 0))
 printf("L: %d C: %08lx\r\n",i,UniColor);
 for (int j=0; j < LEDSTRIPCOUNT; j++) { // fill layer with color
 strip.setPixelColor(Map[i][j],UniColor);
 }
 }
 strip.show();

 MillisThen = MillisNow;
 digitalWrite(PIN_HEARTBEAT,LOW);
 }
 
}

The editor converts all the leading tabs into a single space character, shredding the layout. If that were Python, it would shred the syntax as well.

Here’s the same block of text, inserted in Visual mode with “Paste as text” turned on:

void loop() {
 
 MillisNow = millis();
 if ((MillisNow - MillisThen) > UpdateMS) {
 digitalWrite(PIN_HEARTBEAT,HIGH);
 
 for (byte c=0; c < PIXELSIZE; c++) { // step to next increment in each color if (++Pixels[c].Step >= Pixels[c].NumSteps) {
 Pixels[c].Step = 0;
 printf("Cycle %d steps %d at %8ld delta %ld ms\r\n",c,Pixels[c].NumSteps,MillisNow,(MillisNow - MillisThen));
 }
 }

 for (int i=0; i < LEDSTRINGCOUNT; i++) { // for each layer
 byte Value[PIXELSIZE];
 for (byte c=0; c < PIXELSIZE; c++) { // ... for each color
 Value[c] = StepColor(c,-i*Pixels[c].PlatterPhase); // figure new PWM value
// Value[c] = (c == RED && Value[c] == 0) ? Pixels[c].MaxPWM : Value[c]; // flash highlight for tracking
 }
 uint32_t UniColor = strip.Color(Value[RED],Value[GREEN],Value[BLUE]);
 if (false && (i == 0))
 printf("L: %d C: %08lx\r\n",i,UniColor);
 for (int j=0; j < LEDSTRIPCOUNT; j++) { // fill layer with color
 strip.setPixelColor(Map[i][j],UniColor);
 }
 }
 strip.show();

 MillisThen = MillisNow;
 digitalWrite(PIN_HEARTBEAT,LOW);
 }
 
}

Pretty much the same thing: consecutive tabs become a single space.

For whatever it’s worth, I’ve removed a bogus pre closing tag from the bottom of the post three times by now…

Keeping some text at the bottom seems to prevent the bogus pre tag, but that’s hard to enforce…

Leave a comment