*Fortunate* Motorcyclist survives driving off cliff


http://www.cnn.com/videos/us/2017/08/11/motorcycle-plunges-off-cliff-santa-monica-mountains-california-orig-trnd-lab.cnn/video/playlists/caught-on-camera/

My comments to CNN:

Cliff-diving motorcyclist Matthew Murray, 27, passes a “25 MPH” advisory sign in the 12th second of CNN’s video clip. This is in the 2nd run through of the crash video. In the 15th second he’s going 68 MPH as he starts to lean into the turn. He’s still going more than 50 MPH as he slides off the pavement and onto the dirt. Text on the screen says something to the effect that he “was following the turn when he thinks his steering locked up”. The video shows no such thing. He was going too fast, and could not turn sharply enough to follow the turn. He started at more than 2.5 times the advised speed. He left the pavement at 2 times the advised speed. His speed “locked” his path, not his steering.

Get the an accurate map of the curve, the size and tread pattern of the motorcycle tires and a description of the motorcycle (make, model, horsepower, brakes,weight-as-crashed) and rider (weight). Give to “Mythbusters”. Have them duplicate the failure, during deceleration, then do a binary search for the steady speed at which a motorcycle on those tires, at that weight, could follow that turn. Braking uses traction, does that change maximum speed?. Find the entry speed, before braking, that would allow the bike to make the turn. Put a GoPro on the bike for comparison pictures, and a second one showing where the front tire touches the road.

Advertisements

A Software Tester’s journey from manual to political tester


I wrote this some years ago. I should simplify the context and incorporate what I reference from the OP and other responders, so that it stands alone. But this has  meaningful observations which took effort to reach, so I’m putting a copy up here to start with.

Wow, no exaggeration! I can see every event that befell poor Jim happening in the real world. HOWEVER, Jim’s a fortunate fellow, he has management attention at all! AND they look at results. AND there is a perception (no matter how shakily based) of overall product quality.

Jim was no worse than anyone else until he got automation started and mistook his personal satisfaction and enjoyment for the company’s obvious goal of shipping a stable or improving level of quality with fast turnaround on bugs and needed enhancements. This is engineering, not art. Its not self actualization, its a commercial business or a service enterprise which creates value.

All the way down this sad story, Jim accepts product failures, and testing failures. You Can Never Ignore Failures. Period. He should have turned political at that point and realized that Test, like anything, needs to be sold, shown to be valuable and productive, and needs allies. Therefore, tests need to actually be valuable and productive, and needs to make it easy for people to accept them, adopt them, and feel they are important support in their own success. Therefore he needed to measure success, as understood by his customers (developers, support, users) and maintain or improve its integrated value. Accepting failures leads to dead astronauts, wasted billions, wrongful convictions, Senate Select Committees, Frontline specials, sub-Redits, and worse.

Instead of seeing failures as a very, very, high priority, Jim turns into a man with a solution, wandering around, looking for a way to apply it. A tawdry tale, rendered no less tawdry by its oft retelling. Not insignificantly, Jim’s manager is clearly a weak and ineffective character who should have seen problems coming, or reacted when they appeared. Once Jim had made the case for automation, they might have hired someone who knew something about automation, or contracted with very carefully defined goals.

Jim might have split his team up front. He needed manual testers, who carried on the work that had been being done, with as much success as possible, and brain power applied to improve results and lower cost. A front line to hold success. Then a test automation group who focused on test automation with clear and obvious benefits

The automation environment needed to be something:

  • …anyone could run;
  • … which worked from a shippable product, as well as a release candidate or development build;
  • …which could be triggered directly from a product build, so the build group-and-release group ran it every time;
  • …which could be configured to run anything from a single, new, test to all existing tests
    • in a developer’s environment, before check-in, or
    • at any subsequent point, including on a previously shipped release with a support issue.

Setting up the test environment, creating a test to get the product to say “Hello world”, and recognizing that as a test pass ought to take no more than an hour longer than simply setting up the product. That assumption has to be proved every release or two with a calibrated innocent new-hire from somewhere.

Since all tests start by installing the product, license, etc, and starting it, the first thing to automate would be that. If there were changes in that functionality, over product history, the automation could start with the newest, but it had to support them all. Having this ‘smoke test’ be part of a full build would pay dividends to everyone, everywhere, and by designing with backward compatibility and future adaptability, thrash could be minimized, or at least recognized.

This would be a good time to look through the bugbase to determine where the most bugs were being found, where the most escapes were happening, and where the most critical bugs were coming from. Besides looking backward, a forward look at the product roadmap and with developers and management could highlight areas of future leverage

In parallel with automation, all of the above should be considered when selecting manual tests. Tests which never fail should be reduced relative to tests which find failures. Something that fails for diverse reasons may be a great canary in the coal mine, or might be a too fragile sponge that soaks up maintenance effort. In any event, continual improvement of the manual testing should run in parallel with introducing automation. After a small number of releases, the manual tests available should exceed the resources to run them. Selection of the ‘vital few’ should in intentional, not happenstance.

Most people can see the limitation of record and play back, so things should never stop there. The only tools worth looking at are tools that can be edited and rapidly expanded by iteration. Cut and paste is the lowest form of iteration and rapidly grows nightmares. Algorithmic test point generation is desirable, but data driven testing should get strong consideration. Algorithmic generation of literal tables which are then applied as tests separates the thing that needs to be done over and over, running the test, from the thing which is done less frequently, generating the test points.

In my life, I’ve seen a few of the failures in Jim’s story, but a lot of failures of usability by others, or by anyone, complete lack of testing in development plans. Test suites (with running tests) abandoned and no-longer run, until the next great hope get started. And far too little curiosity about which tests should be run, automatically or manually, to get the most bang for the buck.

Like I said, Jim is lucky!

View in discussion

Lets re-learn Python!


OK: here we go. I learned enough Python to write some, and to follow a lot of Jesse & Co’s at VMware. But I didn’t write all that much, I couldn’t check in anything, because there was not way to  test check-in candidates BEFORE going live. Or, at least, I couldn’t find one. And when I asked for help, I didn’t get what I needed.

But now I’m re-learning, since everyone says they want want proficiency in Python in their new hires. Better brush up on it then. .

So step one.  The canonical program in any Python book goes something like:

print (‘Lesson_1.py with single quote’)
print (2 ** 902)

to show off the easy familiarity Python has with very large numbers.

So I expanded on that. More print statements and if else and elif, Adding a demo of indents being isolated – The block for “if” must be all the same indent, the block for  else need to all be the same. But nothing requires the “if” block to match the “else” block. All they have to be is the same within themselves. Parseable.

Next, since we’re always printing things, what does “print()” return? Not-1, according to the if-then. If we print it, its “None”.  And we can test that it equals “None” (string equals is “==”. It does equal “None”.

But not only does it NOT not equal “none”, you can’t ask that question, without declaring/creating a “none”.  But its not a compile time call. The power of late binding is that nobody has checked “none” (or “NoNe”) until the “==” gets it.

And we get a lovely error:

“what comes back when we print one char
None
no char indent
None = print returned 1 or thereabouts
Traceback (most recent call last):
File “lesson_1.txt”, line 40, in <modul
if none == print(” no char indent”):
NameError: name ‘none’ is not defined”

And now our canonical program has an error, so we can canonically use the “try”, “except”, “finally”  statents.

And if we’re  really lucky, the response will have an error and we’ll get a SECOND TRIP through the error handler!

C:\Users\wabbott\python\Lesson_1>python lesson_1.txt
Lesson_1.py with double quote
Lesson_1.py with single quote
3381084999268257576654974623465706281720622886631177741618948537770712976363039
one char indent
else four char indent
elif six char indent
no char indent
print returned not-1 or thereabouts
what comes back when we print one char indent
None
None == print()
None == print returned 1 or thereabouts
we always do this, but don’t make any mistakes!
Traceback (most recent call last):
File “lesson_1.txt”, line 57, in <module>
if none == print(“none == print()”):
NameError: name ‘none’ is not defined

and there we go.

 

# Lesson_1.py
# picking-up the Python thread again, 5 years later.
# All the recruiters hope I know it, better look into that and perhaps I can find a job.
#

#!/usr/bin/python – ha!

try:

print (“Lesson_1.py with double quote”)
print (‘Lesson_1.py with single quote’)
print (2 ** 902)

# Python uses indentation instead of curly braces to identify blocks. Kind of a nice idea.

if 1:
print( ” one char indent”) # this one prints
else:
print( ” two char indent”)
if 0:
print( ” if three char indent”)
else:
print( ” else four char indent”) # this one prints

 

if 0:
print( ” if five char indent”)
elif 1:
print( ” elif six char indent”) # This one prints
elif 0:
print( ” elif seven char indent”)
elif 1:
print( ” elif eight char indent”)

 

 

if print(“no char indent”):
print(” print returned 1 or thereabouts”)
else:
print(”  print returned not-1 or thereabouts”)

print ( print (” what comes back when we print one char indent”))

 

if (None == print(“None == print()”)):
print(” None == print returned 1 or thereabouts”)
else:
print(” None != print returned not-1 or thereabouts”)

 

if none == print(“none == print()”):
print(” none == print returned 1 or thereabouts”)
else:
print(” none != print returned not-1 or thereabouts”)

 

if NoNe == print(“NoNe == print()”):
print(” NoNe ==44 print returned 1 or thereabouts”)
else:
print(” NoNe != print returned not-1 or thereabouts”)

#  except Argument:
# print(“The argument is>”, Argument, “< ” )

print(“And look, now it fell through!”)

finally:

print(“we always do this, but don’t make any mistakes!”)

# ———-X———-X———-X———-X———-X———-X———-X———-X———-X———-X

For Fire Season: Just enough about particle masks


 

http://blog.pksafety.com/respiratory-basics-n95-vs-p100/

I am shocked! Shocked! Common, racist, assertions, don’t appear to be supported by facts:


I was wading through comments on poorly edited, badly structured, opinion piece in the online New York Times and I found this familiar line of baloney in a comment.

“Me”, below, claims: “whites do NOT commit the majority of car jackings, robberies, muggings, murders”.

So I ran a quick look at real data from the FBI. No surprise, 2 of these 4 claims are hard to credit, the statement about robbery appears to be true, and, for murders, no group commits the majority. Blacks are the majority of murder victims. All in 2015. I’m going to check some other years learn more, and will post more here.

There are no discrete “car jacking” or “mugging” statistics, but Assault, Motor Vehicle Theft and Kidnapping would seem a fair approximation. The vast majority of all three are committed by whites.

Here’s my comment in context: Response to racist baloney . Or you can read it here:

“For 2015: https://ucr.fbi.gov/nibrs/2015/resource-pages/nibrs-2015_summary_final-1… 

The majority of murder VICTIMS are black. and a plurality of killers. I expect whites are the majority of killers of other whites.
Homicides:
of whites: 2101; of blacks: 2254; of other/unknown: 152
by whites: 2104; by blacks: 2507; by other/unknown (rounded) 603

Whites are NOT the majority of robbers, and blacks are:
Robbery:
of whites: 45,812; of blacks: 26,861; of other/unk (rnd): 5000
by whites: 26,369 of blacks 64,636; by other/unknown (rounded) 9,850

Assaults: Majority white and white
against whites: 799,095, against blacks, 352,449, against other/unk (rnd): 58,000
by white: 678,428 by blacks 413,872; by other/unknown (rounded) 81,000

Motor vehicle theft: Majority white and white
against whites: 118,314; against blacks 35,644, other/unk: (rnd) 14,000
by whites: 45,791 by blacks 21,544; by other/unknown (rounded) 37,000

Kidnapping/abduction: Majority white and white
of whites, 11,883, of blacks 4,175; by other/unk (rounded) 850
by white: 10,188 by blacks 6,299; by other/unknown 1,175

“Me” also claims “Mass shootings are extremely rare” – depends on how you define “mass shooting” and “rare”. We have a LOT of shootings and multiple victims are often hit.”

 

For thoughts on the original piece, “White Nationalism Is Destroying the West”, in general, see: Somebody has to say these things… or read it here:

“There are steps, small or large, still steps, between anti-immigrant positions, anti-Muslim positions and white nationalism. What, then, is the point of this poorly edited opinion piece? That anti-immigrant movements are a fertile recruiting ground for white nationalists? True, and hardly worth this much close reasoning. That Muslims are the stated, rejected, “Other”, but that white nationalism threatens Western liberalism in general? We’re past that point when discussing anti-Semitic advertising in Hungary. Asserted and accepted. Please go on. 

The last three paragraphs probably should be the first three, and then some support for the assertions in those paragraphs mustered as the body of the piece. As it stands ‘Western” variously means Europe, or Europe and America, and that is probably Europe and the United States of America. Canada dismissed as just more Europeans and Mexico omitted entirely.

Or, is “West” shorthand for “Western Democracy”? What about all the other democracies in the world that aren’t in Europe or even North America? Brazil? South Africa? Japan? South Korea? ( added after submitting to NYT: India? Pakistan? Australia? New Zealand? Argentina? Ghana? etc. etc. etc. )

Since the writer takes their definition of “West” and “White Nationalism” seriously, perhaps they could state and defend their definition, on the way to broader points. Supporting “White nationalism is in many ways a mirror image of radical Islamism.” would be a good start.”

 

 

 

Top 10 Bookstores in the East Bay


A nice write-up on a key subject! Omits “Dan Webb Books”, doesn’t mention “The Booktree” right across the street from “A Great Good Place For Books” but my picks belong in my list. This is theirs and I’m glad to have found it!

The writer mentions the Montclair Egg Shop as a pairing with A Great Good Place for Books. Absolutely yes! Best place I can think of to take a new book or an old friend or both.

Source: Top 10 Bookstores in the East Bay

Has anyone else seen this problem? Here’s a link to a web site:


link to list of fake news sources

https://docs.google.com/document/d/10eA5-mCZLSS4MQY5QGb5ewC3VAL6pLkT53V_81ZyitM/preview

It messes up mightily in Facebook.