Advertisement
Guest User

test

a guest
Jul 1st, 2017
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JSON 171.66 KB | None | 0 0
  1. // API callback
  2. feedmlx({
  3.     "version": "1.0",
  4.     "encoding": "UTF-8",
  5.     "feed": {
  6.         "xmlns": "http://www.w3.org/2005/Atom",
  7.         "xmlns$openSearch": "http://a9.com/-/spec/opensearchrss/1.0/",
  8.         "xmlns$blogger": "http://schemas.google.com/blogger/2008",
  9.         "xmlns$georss": "http://www.georss.org/georss",
  10.         "xmlns$gd": "http://schemas.google.com/g/2005",
  11.         "xmlns$thr": "http://purl.org/syndication/thread/1.0",
  12.         "id": {
  13.             "$t": "tag:blogger.com,1999:blog-4172950626830217643"
  14.         },
  15.         "updated": {
  16.             "$t": "2017-06-30T15:32:32.197-04:00"
  17.         },
  18.         "category": [{
  19.             "term": "safety"
  20.         }, {
  21.             "term": "Essays"
  22.         }, {
  23.             "term": "coding style"
  24.         }, {
  25.             "term": "dependability"
  26.         }, {
  27.             "term": "risk management"
  28.         }, {
  29.             "term": "peer reviews"
  30.         }, {
  31.             "term": "testing"
  32.         }, {
  33.             "term": "real time"
  34.         }, {
  35.             "term": "security"
  36.         }, {
  37.             "term": "error detection"
  38.         }, {
  39.             "term": "tutorial"
  40.         }, {
  41.             "term": "book"
  42.         }, {
  43.             "term": "watchdog timer"
  44.         }, {
  45.             "term": "defects"
  46.         }, {
  47.             "term": "self-driving cars"
  48.         }, {
  49.             "term": "economics"
  50.         }, {
  51.             "term": "Edge Case Research"
  52.         }, {
  53.             "term": "globals"
  54.         }, {
  55.             "term": "management"
  56.         }, {
  57.             "term": "metrics"
  58.         }, {
  59.             "term": "optimization"
  60.         }, {
  61.             "term": "CRC\/checksum"
  62.         }, {
  63.             "term": "embedded C"
  64.         }, {
  65.             "term": "system design"
  66.         }, {
  67.             "term": "architecture"
  68.         }, {
  69.             "term": "embedded networks"
  70.         }, {
  71.             "term": "exceptions"
  72.         }, {
  73.             "term": "hardware"
  74.         }, {
  75.             "term": "interrupts"
  76.         }, {
  77.             "term": "requirements"
  78.         }, {
  79.             "term": "CAN"
  80.         }, {
  81.             "term": "SQA"
  82.         }, {
  83.             "term": "USI"
  84.         }, {
  85.             "term": "time keeping"
  86.         }, {
  87.             "term": "versioning"
  88.         }, {
  89.             "term": "EEPROM"
  90.         }, {
  91.             "term": "Toyota UA"
  92.         }, {
  93.             "term": "compilers"
  94.         }, {
  95.             "term": "concurrency"
  96.         }, {
  97.             "term": "editorial"
  98.         }, {
  99.             "term": "math"
  100.         }, {
  101.             "term": "research"
  102.         }, {
  103.             "term": "Free Sample Chapter"
  104.         }, {
  105.             "term": "Internet of Things (IoT)"
  106.         }, {
  107.             "term": "agile methods"
  108.         }, {
  109.             "term": "documentation"
  110.         }, {
  111.             "term": "open source"
  112.         }, {
  113.             "term": "outsourcing"
  114.         }, {
  115.             "term": "tools"
  116.         }, {
  117.             "term": "traceability"
  118.         }, {
  119.             "term": "travel"
  120.         }, {
  121.             "term": "updates"
  122.         }],
  123.         "title": {
  124.             "type": "text",
  125.             "$t": "Better Embedded System SW"
  126.         },
  127.         "subtitle": {
  128.             "type": "html",
  129.             "$t": "Companion blog to the book Better Embedded System Software by Phil Koopman at Carnegie Mellon University"
  130.         },
  131.         "link": [{
  132.             "rel": "http://schemas.google.com/g/2005#feed",
  133.             "type": "application/atom+xml",
  134.             "href": "http:\/\/betterembsw.blogspot.com\/feeds\/posts\/default"
  135.         }, {
  136.             "rel": "self",
  137.             "type": "application/atom+xml",
  138.             "href": "https:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default?alt=json-in-script"
  139.         }, {
  140.             "rel": "alternate",
  141.             "type": "text/html",
  142.             "href": "http:\/\/betterembsw.blogspot.com\/"
  143.         }, {
  144.             "rel": "hub",
  145.             "href": "http://pubsubhubbub.appspot.com/"
  146.         }, {
  147.             "rel": "next",
  148.             "type": "application/atom+xml",
  149.             "href": "https:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default?alt=json-in-script\u0026start-index=26\u0026max-results=25"
  150.         }],
  151.         "author": [{
  152.             "name": {
  153.                 "$t": "Phil Koopman"
  154.             },
  155.             "uri": {
  156.                 "$t": "http:\/\/www.blogger.com\/profile\/11849599272360094243"
  157.             },
  158.             "email": {
  159.                 "$t": "noreply@blogger.com"
  160.             },
  161.             "gd$image": {
  162.                 "rel": "http://schemas.google.com/g/2005#thumbnail",
  163.                 "width": "32",
  164.                 "height": "32",
  165.                 "src": "http:\/\/2.bp.blogspot.com\/-TbApE9iNsGo\/VBSRFWPyjTI\/AAAAAAAAAaA\/8pm4cQrZzro\/s1600\/*"
  166.             }
  167.         }],
  168.         "generator": {
  169.             "version": "7.00",
  170.             "uri": "http://www.blogger.com",
  171.             "$t": "Blogger"
  172.         },
  173.         "openSearch$totalResults": {
  174.             "$t": "161"
  175.         },
  176.         "openSearch$startIndex": {
  177.             "$t": "1"
  178.         },
  179.         "openSearch$itemsPerPage": {
  180.             "$t": "25"
  181.         },
  182.         "entry": [{
  183.             "id": {
  184.                 "$t": "tag:blogger.com,1999:blog-4172950626830217643.post-6466482683367975647"
  185.             },
  186.             "published": {
  187.                 "$t": "2017-05-22T07:00:00.000-04:00"
  188.             },
  189.             "updated": {
  190.                 "$t": "2017-05-22T10:36:45.546-04:00"
  191.             },
  192.             "category": [{
  193.                 "scheme": "http://www.blogger.com/atom/ns#",
  194.                 "term": "coding style"
  195.             }],
  196.             "title": {
  197.                 "type": "text",
  198.                 "$t": "#define vs. const"
  199.             },
  200.             "content": {
  201.                 "type": "html",
  202.                 "$t": "Is your code full of \"#define\" statements? \u0026nbsp;If so, you should consider switching to the const keyword.\u003Cbr \/\u003E\u003Cdiv\u003E\u003Cbr \/\u003E\u003C\/div\u003E\u003Cdiv\u003EOld school C:\u003C\/div\u003E\u003Cdiv\u003E\u0026nbsp; \u0026nbsp; #define MYVAL 7\u003C\/div\u003E\u003Cdiv\u003E\u003Cbr \/\u003E\u003C\/div\u003E\u003Cdiv\u003EBetter approach:\u003C\/div\u003E\u003Cdiv\u003E\u0026nbsp; \u0026nbsp;const uint32_t myVal = 7;\u003C\/div\u003E\u003Cdiv\u003E\u003Cbr \/\u003E\u003C\/div\u003E\u003Cdiv\u003EHere are some reasons you should use const instead of #define:\u003C\/div\u003E\u003Cdiv\u003E\u003Cul\u003E\u003Cli\u003E#define has global scope, so you're creating (read-only) global values every time you use #define. Global scope is evil, so don't do that. \u0026nbsp;(Read-only global scope for constant values is a bit less evil than global variables per se, especially if you can't use the namespace features of C++. But gratuitous global scope is always a bad idea.) A const alternative can obey scoping rules, including being purely local if defined inside a procedure, or more commonly file static with the \"static\" keyword.\u003C\/li\u003E\u003Cli\u003EConst lets you do more aggressive type checking (depending upon your compiler and static analysis tools, especially if you use a typedef more specific than built-in C data types). While C is a bit weak as a language in this area compared to other languages, a classical example is a const lets you identify a number as being in feet or meters, while the #define approach is just as if you'd typed the number 7 in with no units. The #define approach can bite you if you use the wrong value in the wrong place. Type checking is an effective way to find bugs, and using #define gives up an opportunity to let static analysis tools help you with that.\u003C\/li\u003E\u003Cli\u003EConst lets you use the value as if it were a variable when you need to (e.g., passing an address to the variable) without having to change how the variable is defined.\u003C\/li\u003E\u003Cli\u003E#define in general is so bug-prone that you should minimize its use just to avoid having to spend time asking \"is this one OK?\" in a peer review. Most #define uses tend to be const variables in old-school code, so getting rid of them can dramatically reduce the peer review burden of sifting through hundreds of #define statements to look for problems.\u003C\/li\u003E\u003C\/ul\u003E\u003C\/div\u003E\u003Cdiv\u003EHere are some common myths about this tradeoff. (Note that on some systems these statements might be true, especially if you have and old and lame compiler. \u0026nbsp;But they don't necessarily have to be true and they often are false, especially on newer chips with newer compilers.)\u003C\/div\u003E\u003Cdiv\u003E\u003Cul\u003E\u003Cli\u003E\"Const wastes memory.\" \u0026nbsp;False if you have a compiler that is smart enough to do the right thing. Sure, if you want to pass a pointer to the const it will actually have to live in memory somewhere, but you can't even pass a pointer to a #define at all. One of the points of \"const\" is to give the compiler a hint that lets it optimize memory footprint.\u003C\/li\u003E\u003Cli\u003E\"Const won't work for X.\" Generally false if you have a newer compiler, and especially if you are using a mostly-C subset of the capability of a C++ compiler, as is increasingly common. And honestly, most of the time #define is just being used as a plain old integer const to get rid of magic numbers. const will work fine. \u0026nbsp;(If you have magic numbers instead of #define, then you have bigger problems than this even.) Use const for the no-brainer cases. Something is probably wrong if everything about your code is so special you need #define everywhere.\u003C\/li\u003E\u003Cli\u003E\"Const hassles me about type conversions.\" \u0026nbsp;That's a feature to prevent you from being sloppy! \u0026nbsp;So strictly speaking the compiler doing this is not a myth. The myth is that this is a bad thing.\u003C\/li\u003E\u003C\/ul\u003E\u003C\/div\u003E\u003Cdiv\u003EThere are plenty of discussions on this topic.\u0026nbsp; You'll also see that some folks advocate using enums for some situations, which we'll get to another time. For now, if you change as many #defines as you can to consts then that is likely to improve your code quality, and perhaps flush out a few bugs you didn't realize you had.\u003C\/div\u003E\u003Cdiv\u003E\u003Cbr \/\u003E\u003C\/div\u003E\u003Cdiv\u003EBe careful when reading discussion group postings on this topic. \u0026nbsp;There is a lot of dis-information out there about performance and other potential tradeoff factors, usually based on statements about 20 year old versions of the C language or experiences with compilers that have poor optimization capability. \u0026nbsp;In general, you should always use const by default unless your particular compiler\/system\/usage presents a compelling case not to.\u003C\/div\u003E\u003Cdiv\u003E\u003Cbr \/\u003E\u003C\/div\u003E\u003Cdiv\u003ESee also the \u003Ca href=\"https:\/\/barrgroup.com\/Embedded-Systems\/Books\/Embedded-C-Coding-Standard\/General-Rules\/Keywords-Static-Volatile-Const\"\u003EBarr Group C coding standard rule 1.8.b\u003C\/a\u003E\u0026nbsp;which says to use const, and has a number of other very useful rules.\u003C\/div\u003E\u003Cdiv\u003E\u003Cbr \/\u003E\u003C\/div\u003E\u003Cdiv\u003E\u003Cbr \/\u003E\u003C\/div\u003E"
  203.             },
  204.             "link": [{
  205.                 "rel": "replies",
  206.                 "type": "application/atom+xml",
  207.                 "href": "http:\/\/betterembsw.blogspot.com\/feeds\/6466482683367975647\/comments\/default",
  208.                 "title": "Post Comments"
  209.             }, {
  210.                 "rel": "replies",
  211.                 "type": "text/html",
  212.                 "href": "http:\/\/betterembsw.blogspot.com\/2017\/05\/define-vs-const.html#comment-form",
  213.                 "title": "12 Comments"
  214.             }, {
  215.                 "rel": "edit",
  216.                 "type": "application/atom+xml",
  217.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/6466482683367975647"
  218.             }, {
  219.                 "rel": "self",
  220.                 "type": "application/atom+xml",
  221.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/6466482683367975647"
  222.             }, {
  223.                 "rel": "alternate",
  224.                 "type": "text/html",
  225.                 "href": "http:\/\/betterembsw.blogspot.com\/2017\/05\/define-vs-const.html",
  226.                 "title": "#define vs. const"
  227.             }],
  228.             "author": [{
  229.                 "name": {
  230.                     "$t": "Phil Koopman"
  231.                 },
  232.                 "uri": {
  233.                     "$t": "http:\/\/www.blogger.com\/profile\/11849599272360094243"
  234.                 },
  235.                 "email": {
  236.                     "$t": "noreply@blogger.com"
  237.                 },
  238.                 "gd$image": {
  239.                     "rel": "http://schemas.google.com/g/2005#thumbnail",
  240.                     "width": "32",
  241.                     "height": "32",
  242.                     "src": "http:\/\/2.bp.blogspot.com\/-TbApE9iNsGo\/VBSRFWPyjTI\/AAAAAAAAAaA\/8pm4cQrZzro\/s1600\/*"
  243.                 }
  244.             }],
  245.             "thr$total": {
  246.                 "$t": "12"
  247.             }
  248.         }, {
  249.             "id": {
  250.                 "$t": "tag:blogger.com,1999:blog-4172950626830217643.post-3073407004848695123"
  251.             },
  252.             "published": {
  253.                 "$t": "2017-05-08T07:00:00.000-04:00"
  254.             },
  255.             "updated": {
  256.                 "$t": "2017-05-08T08:20:30.401-04:00"
  257.             },
  258.             "category": [{
  259.                 "scheme": "http://www.blogger.com/atom/ns#",
  260.                 "term": "coding style"
  261.             }, {
  262.                 "scheme": "http://www.blogger.com/atom/ns#",
  263.                 "term": "economics"
  264.             }, {
  265.                 "scheme": "http://www.blogger.com/atom/ns#",
  266.                 "term": "management"
  267.             }, {
  268.                 "scheme": "http://www.blogger.com/atom/ns#",
  269.                 "term": "optimization"
  270.             }, {
  271.                 "scheme": "http://www.blogger.com/atom/ns#",
  272.                 "term": "testing"
  273.             }],
  274.             "title": {
  275.                 "type": "text",
  276.                 "$t": "Optimize for V\u0026V, not for writing code"
  277.             },
  278.             "content": {
  279.                 "type": "html",
  280.                 "$t": "\u003Cbr \/\u003E  \u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\u003Ca href=\"https:\/\/3.bp.blogspot.com\/-2RYQzC22L18\/WRBhyYEddgI\/AAAAAAAAAe8\/LvvFwl9MKoA8e9l-0Vf5LTKGiP1--nBywCLcB\/s1600\/robot-2167836_1280.jpg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" height=\"200\" src=\"https:\/\/3.bp.blogspot.com\/-2RYQzC22L18\/WRBhyYEddgI\/AAAAAAAAAe8\/LvvFwl9MKoA8e9l-0Vf5LTKGiP1--nBywCLcB\/s320\/robot-2167836_1280.jpg\" width=\"320\" \/\u003E\u003C\/a\u003E\u003Cbr \/\u003E\u003Cspan style=\"font-size: xx-small;\"\u003E\u003Ca href=\"https:\/\/pixabay.com\/en\/robot-artificial-intelligence-2167836\/\"\u003EGeralt \/ CC0 PD\/noattrib.\u003C\/a\u003E\u003C\/span\u003E\u003C\/div\u003E\u003Cbr \/\u003E\u003Cdiv\u003E\u003Cb\u003EWriting code should be made more difficult so that Verification \u0026amp;Validation can be made easier.\u003C\/b\u003E\u003Cbr \/\u003E\u003Cb\u003E\u003Cbr \/\u003E\u003C\/b\u003EI first heard this notion years ago at a workshop in which several folks from industry who build high assurance software (think flight controls) stood up and said that V\u0026amp;V is what matters. You might expect that from flight control folks, but their reasoning applies to pretty much every embedded project. That's because it is a matter of economics.\u0026nbsp;\u003C\/div\u003E\u003Cdiv\u003E\u003Cbr \/\u003E\u003C\/div\u003E\u003Cdiv\u003EMultiple speakers at that workshop said that aviation software can require 4 or 5 hours of V\u0026amp;V for every 1 hour of creating software. It makes no economic sense to make life easy for the 1 hour side of the ratio at the expense of making life painful for the 5 hour side of the ratio.\u003C\/div\u003E\u003Cdiv\u003E\u003Cbr \/\u003E\u003C\/div\u003E\u003Cdiv\u003EGood, but non-life-critical, embedded software requires about 2 hours of V\u0026amp;V for every 1 hour of code creation. So the economic argument still holds, with a still-compelling multiplier of 2:1. \u0026nbsp;I don't care if you're Vee, \u0026nbsp;Agile, hybrid model or whatever. You're spending time on V\u0026amp;V, including at least some activities such as peer review, unit test, created automated tests, performing testing, chasing down bugs, and so on. For embedded products that aren't flaky, probably you spend more time on V\u0026amp;V than you do on creating the code. If you're doing TDD you're taking an approach that has the idea of starting with a testing viewpoint built in already, by starting from testing and working outward from there. But that's not the only way to benefit from this observation.\u003C\/div\u003E\u003Cdiv\u003E\u003Cbr \/\u003E\u003C\/div\u003E\u003Cdiv\u003EThe good news is that making code writing \"difficult\" does not involve gratuitous pain. Rather, it involves being smart and a bit disciplined so that the code you produce is easier for others to perform V\u0026amp;V on. A bit of up front thought and organization can save a lot on downstream effort. Some examples include:\u003C\/div\u003E\u003Cdiv\u003E\u003Cul\u003E\u003Cli\u003EWriting concise but helpful code comments so that reviewers can understand what you meant.\u003C\/li\u003E\u003Cli\u003EWriting code to be obvious rather than clever, again to help reviewers.\u003C\/li\u003E\u003Cli\u003EFollow a style guide to make your code consistent, and thus easier to understand.\u003C\/li\u003E\u003Cli\u003EWriting code that compiles clean for static analysis, avoiding time wasted finding defects in test that a tool could have found, and avoiding a person having to puzzle out which warnings matter, and which don't.\u003C\/li\u003E\u003Cli\u003ESpending some time to make your unit interfaces easier to test, even if it requires a bit more work designing and coding the unit.\u003C\/li\u003E\u003Cli\u003ESpending time making it easy to trace between your design and the code. For example, if you have a statechart, make sure the statechart uses names that map directly to enum names rather than using arbitrary state variables such as \"magic number\" integers between 1 and 7. This makes it easier to ensure that the code and design match. (For that matter, just using statecharts to provide a guide to what the code does also helps.)\u003C\/li\u003E\u003Cli\u003ESpending time up front documenting module interaction so that integration testers don't have to puzzle out how things are supposed to work together. Sequence diagrams can help a lot.\u003C\/li\u003E\u003Cli\u003EMaking the requirements both testable and easy to trace. Make every requirement idea a stand-alone sentence or paragraph and give it a number so it's easy to trace to a specific test primarily designed to test that particular requirement. Avoid having requirements in huge paragraphs of free-form text that mix lots of different concepts together.\u003C\/li\u003E\u003C\/ul\u003E\u003C\/div\u003E\u003Cdiv\u003ESure, these sound like a good idea, but many developers skip or skimp on them because they don't think they can afford the time. They don't have time to make their code clean because they're too busy writing bugs to meet a deadline. Then they, and everyone else, pay for this during the test cycle. (I'm not saying the programmers are necessarily the main culprits here, especially if they didn't get a vote on their deadline. But that doesn't change the outcome.)\u003C\/div\u003E\u003Cdiv\u003E\u003Cbr \/\u003E\u003C\/div\u003E\u003Cdiv\u003EI'm here to say you can't afford \u003Ci\u003Enot\u003C\/i\u003E to follow these basic code quality practices. That's because every hour you're saving by cutting corners up front is probably costing you double (or more) downstream by making V\u0026amp;V more painful than it should be. It's always hard to invest in downstream benefits when the pressure is on, but doing so is costing you dearly when you skimp on code quality.\u003C\/div\u003E\u003Cdiv\u003E\u003Cbr \/\u003EDo you have any tricks to make code easier to understand that I missed?\u003C\/div\u003E\u003Cdiv\u003E\u003Cbr \/\u003E\u003C\/div\u003E"
  281.             },
  282.             "link": [{
  283.                 "rel": "replies",
  284.                 "type": "application/atom+xml",
  285.                 "href": "http:\/\/betterembsw.blogspot.com\/feeds\/3073407004848695123\/comments\/default",
  286.                 "title": "Post Comments"
  287.             }, {
  288.                 "rel": "replies",
  289.                 "type": "text/html",
  290.                 "href": "http:\/\/betterembsw.blogspot.com\/2017\/05\/optimize-for-v-not-for-writing-code.html#comment-form",
  291.                 "title": "0 Comments"
  292.             }, {
  293.                 "rel": "edit",
  294.                 "type": "application/atom+xml",
  295.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/3073407004848695123"
  296.             }, {
  297.                 "rel": "self",
  298.                 "type": "application/atom+xml",
  299.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/3073407004848695123"
  300.             }, {
  301.                 "rel": "alternate",
  302.                 "type": "text/html",
  303.                 "href": "http:\/\/betterembsw.blogspot.com\/2017\/05\/optimize-for-v-not-for-writing-code.html",
  304.                 "title": "Optimize for V\u0026V, not for writing code"
  305.             }],
  306.             "author": [{
  307.                 "name": {
  308.                     "$t": "Phil Koopman"
  309.                 },
  310.                 "uri": {
  311.                     "$t": "http:\/\/www.blogger.com\/profile\/11849599272360094243"
  312.                 },
  313.                 "email": {
  314.                     "$t": "noreply@blogger.com"
  315.                 },
  316.                 "gd$image": {
  317.                     "rel": "http://schemas.google.com/g/2005#thumbnail",
  318.                     "width": "32",
  319.                     "height": "32",
  320.                     "src": "http:\/\/2.bp.blogspot.com\/-TbApE9iNsGo\/VBSRFWPyjTI\/AAAAAAAAAaA\/8pm4cQrZzro\/s1600\/*"
  321.                 }
  322.             }],
  323.             "media$thumbnail": {
  324.                 "xmlns$media": "http://search.yahoo.com/mrss/",
  325.                 "url": "https:\/\/3.bp.blogspot.com\/-2RYQzC22L18\/WRBhyYEddgI\/AAAAAAAAAe8\/LvvFwl9MKoA8e9l-0Vf5LTKGiP1--nBywCLcB\/s72-c\/robot-2167836_1280.jpg",
  326.                 "height": "72",
  327.                 "width": "72"
  328.             },
  329.             "thr$total": {
  330.                 "$t": "0"
  331.             }
  332.         }, {
  333.             "id": {
  334.                 "$t": "tag:blogger.com,1999:blog-4172950626830217643.post-4824393586240870857"
  335.             },
  336.             "published": {
  337.                 "$t": "2017-04-23T07:00:00.000-04:00"
  338.             },
  339.             "updated": {
  340.                 "$t": "2017-04-23T10:35:42.526-04:00"
  341.             },
  342.             "category": [{
  343.                 "scheme": "http://www.blogger.com/atom/ns#",
  344.                 "term": "safety"
  345.             }, {
  346.                 "scheme": "http://www.blogger.com/atom/ns#",
  347.                 "term": "self-driving cars"
  348.             }],
  349.             "title": {
  350.                 "type": "text",
  351.                 "$t": "SCAV 2017 Keynote: Challenges in Autonomous Vehicle Validation"
  352.             },
  353.             "content": {
  354.                 "type": "html",
  355.                 "$t": "\u003Ciframe allowfullscreen=\"\" frameborder=\"0\" height=\"485\" marginheight=\"0\" marginwidth=\"0\" scrolling=\"no\" src=\"https:\/\/www.slideshare.net\/slideshow\/embed_code\/key\/M3RcNMVlr3IjHY\" style=\"border-color: rgb(204, 204, 204); border-style: solid; border-width: 1px; margin-bottom: 5px; max-width: 100%;\" width=\"595\"\u003E\u003C\/iframe\u003E\u003Cbr \/\u003E\u003Cdiv style=\"margin-bottom: 5px;\"\u003E\u003Cstrong\u003E\u003Ca href=\"https:\/\/www.slideshare.net\/PhilipKoopman1\/challenges-in-autonomous-vehicle-testing-and-validation-75293353\" target=\"_blank\" title=\"Challenges in Autonomous Vehicle Testing and Validation\"\u003EChallenges in Autonomous Vehicle Testing and Validation\u003C\/a\u003E\u0026nbsp;\u003C\/strong\u003Efrom\u0026nbsp;\u003Cstrong\u003E\u003Ca href=\"https:\/\/www.slideshare.net\/PhilipKoopman1\" target=\"_blank\"\u003EPhilip Koopman\u003C\/a\u003E\u003C\/strong\u003E\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Cdiv style=\"text-align: center;\"\u003E\u003Cb\u003EChallenges in Autonomous Vehicle Validation\u003C\/b\u003E\u003C\/div\u003E\u003Cdiv style=\"text-align: center;\"\u003EKeynote Presentation Abstract\u003C\/div\u003E\u003Cdiv style=\"text-align: center;\"\u003EPhilip Koopman\u003C\/div\u003E\u003Cdiv style=\"text-align: center;\"\u003ECarnegie Mellon University; Edge Case Research LLC\u003C\/div\u003E\u003Cdiv style=\"text-align: center;\"\u003EECE Dept. HH A-308, 5000 Forbes Ave., Pittsburgh, PA, USA\u003C\/div\u003E\u003Cdiv style=\"text-align: center;\"\u003Ekoopman@cmu.edu\u003C\/div\u003E\u003Cbr \/\u003EDevelopers of autonomous systems face distinct challenges in conforming to established methods of validating safety. It is well known that testing alone is insufficient to assure safety, because testing long enough to establish ultra-dependability is generally impractical. That’s why software safety standards emphasize high quality development processes. Testing then validates process execution rather than directly validating dependability.\u003Cbr \/\u003E\u003Cbr \/\u003ETwo significant challenges arise in applying traditional safety processes to autonomous vehicles. First, simply gathering a complete set of system requirements is difficult because of the sheer number of combinations of possible scenarios and faults. Second, autonomy systems commonly use machine learning (ML) in a way that makes the requirements and design of the system opaque. After training, usually we know what an ML component will do for an input it has seen, but generally not what it will do for at least some other inputs until we try them. Both of these issues make it difficult to trace requirements and designs to testing as is required for executing a safety validation process. In other words, we’re building systems that can’t be validated due to incomplete or even unknown requirements and designs.\u003Cbr \/\u003E\u003Cbr \/\u003EAdaptation makes the problem even worse by making the system that must be validated a moving target. In the general case, it is impractical to validate all the possible adaptation states of an autonomy system using traditional safety design processes.\u003Cbr \/\u003E\u003Cbr \/\u003EAn approach that can help with the requirements, design, and adaptation problems is basing a safety argument not on correctness of the autonomy functionality itself, but rather on conformance to a set of safety envelopes. Each safety envelope describes a boundary within the operational state space of the autonomy system.\u003Cbr \/\u003E\u003Cbr \/\u003EA system operating within a “safe” envelope knows that it’s safe and can operate with full autonomy. A system operating within an “unsafe” envelope knows that it’s unsafe, and must invoke a failsafe action. Multiple partial specifications can be used as an envelope set, with the intersection of safe envelopes permitting full autonomy, and the union of unsafe envelopes provoking validated, and potentially complex, failsafe responses.\u003Cbr \/\u003E\u003Cbr \/\u003EEnvelope mechanisms can be implemented using traditional software engineering techniques, reducing the problems with requirements, design, and adaptation that would otherwise impede safety validation. Rather than attempting to prove that autonomy will always work correctly (which is still a valuable goal to improve availability), the envelope approach measures the behavior of one or more autonomous components to determine if the result is safe. While this is not necessarily an easy thing to do, there is reason to believe that checking autonomy behaviors for safety is easier than implementing perfect, optimized autonomy actions. This envelope approach might be used to detect faults during development and to trigger failsafes in fleet vehicles.\u003Cbr \/\u003E\u003Cbr \/\u003EInevitably there will be tension between simplicity of the envelope definitions and permissiveness, with more permissive envelope definitions likely being more complex. Operating in the gap areas between “safe” and “unsafe” requires human supervision, because the autonomy system can’t be sure it is safe.\u003Cbr \/\u003E\u003Cbr \/\u003EOne way to look at the progression from partial to full autonomy is that, over time, systems can increase permissiveness by defining and growing “safe” envelopes, shrinking “unsafe” envelopes, and eliminating any gap areas.\u003Cbr \/\u003E\u003Cbr \/\u003EACM Reference format:\u003Cbr \/\u003EP. Koopman, 2017. Challenges in Autonomous Vehicle Validation. In\u003Cbr \/\u003EProceedings of 1st International Workshop on Safe Control of Connected\u003Cbr \/\u003Eand Autonomous Vehicles, Pittsburgh, Pennsylvania, USA, April 2017\u003Cbr \/\u003E(SCAV 2017), 1 page.\u003Cbr \/\u003E\u003Cbr \/\u003EPermission to make digital or hard copies of part or all of this work for personal or classroom use is \u0026nbsp;granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for third-party components of this work must be honored. For all other uses, contact the Owner\/Author.\u003Cbr \/\u003ECopyright is held by the owner\/author(s).\u003Cbr \/\u003ESCAV'17, April 21-21 2017, Pittsburgh, PA, USA\u003Cbr \/\u003EACM 978-1-4503-4976-5\/17\/04.\u003Cbr \/\u003Ehttp:\/\/dx.doi.org\/10.1145\/3055378.3055379\u003Cbr \/\u003E\u003Cdiv\u003E\u003Cbr \/\u003E\u003C\/div\u003E\u003C\/div\u003E"
  356.             },
  357.             "link": [{
  358.                 "rel": "replies",
  359.                 "type": "application/atom+xml",
  360.                 "href": "http:\/\/betterembsw.blogspot.com\/feeds\/4824393586240870857\/comments\/default",
  361.                 "title": "Post Comments"
  362.             }, {
  363.                 "rel": "replies",
  364.                 "type": "text/html",
  365.                 "href": "http:\/\/betterembsw.blogspot.com\/2017\/04\/scav-2017-keynote-challenges-in.html#comment-form",
  366.                 "title": "0 Comments"
  367.             }, {
  368.                 "rel": "edit",
  369.                 "type": "application/atom+xml",
  370.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/4824393586240870857"
  371.             }, {
  372.                 "rel": "self",
  373.                 "type": "application/atom+xml",
  374.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/4824393586240870857"
  375.             }, {
  376.                 "rel": "alternate",
  377.                 "type": "text/html",
  378.                 "href": "http:\/\/betterembsw.blogspot.com\/2017\/04\/scav-2017-keynote-challenges-in.html",
  379.                 "title": "SCAV 2017 Keynote: Challenges in Autonomous Vehicle Validation"
  380.             }],
  381.             "author": [{
  382.                 "name": {
  383.                     "$t": "Phil Koopman"
  384.                 },
  385.                 "uri": {
  386.                     "$t": "http:\/\/www.blogger.com\/profile\/11849599272360094243"
  387.                 },
  388.                 "email": {
  389.                     "$t": "noreply@blogger.com"
  390.                 },
  391.                 "gd$image": {
  392.                     "rel": "http://schemas.google.com/g/2005#thumbnail",
  393.                     "width": "32",
  394.                     "height": "32",
  395.                     "src": "http:\/\/2.bp.blogspot.com\/-TbApE9iNsGo\/VBSRFWPyjTI\/AAAAAAAAAaA\/8pm4cQrZzro\/s1600\/*"
  396.                 }
  397.             }],
  398.             "thr$total": {
  399.                 "$t": "0"
  400.             }
  401.         }, {
  402.             "id": {
  403.                 "$t": "tag:blogger.com,1999:blog-4172950626830217643.post-6587842279512545082"
  404.             },
  405.             "published": {
  406.                 "$t": "2017-04-10T10:25:00.000-04:00"
  407.             },
  408.             "updated": {
  409.                 "$t": "2017-06-09T07:06:39.026-04:00"
  410.             },
  411.             "category": [{
  412.                 "scheme": "http://www.blogger.com/atom/ns#",
  413.                 "term": "Edge Case Research"
  414.             }, {
  415.                 "scheme": "http://www.blogger.com/atom/ns#",
  416.                 "term": "Internet of Things (IoT)"
  417.             }, {
  418.                 "scheme": "http://www.blogger.com/atom/ns#",
  419.                 "term": "safety"
  420.             }, {
  421.                 "scheme": "http://www.blogger.com/atom/ns#",
  422.                 "term": "security"
  423.             }],
  424.             "title": {
  425.                 "type": "text",
  426.                 "$t": "Challenges \u0026 solutions for Embedded Software Security, Safety \u0026 Quality (Full Tutorial Video)"
  427.             },
  428.             "content": {
  429.                 "type": "html",
  430.                 "$t": "This is a full-length video that talks about embedded software security, safety and quality: why it matters. What to do about it.\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Ciframe allowfullscreen=\"\" frameborder=\"0\" height=\"360\" mozallowfullscreen=\"\" src=\"https:\/\/player.vimeo.com\/video\/179121954\" webkitallowfullscreen=\"\" width=\"640\"\u003E\u003C\/iframe\u003E\u003Cbr \/\u003E\u003Ca href=\"https:\/\/www.edge-case-research.com\/full-tutorial-software-quality-1\"\u003EEmbedded Software Quality Safety and Security [ECR]\u003C\/a\u003E\u003Cbr \/\u003E\u003Cbr \/\u003EThe purpose of this video is to help you understand why safety and security are such a big deal for embedded systems, tell some war stories, and explain the general ways available to reduce risk when you're creating embedded and IoT products.\u003Cbr \/\u003E\u003Cbr \/\u003ETopics covered include:\u003Cbr \/\u003E\u003Cul\u003E\u003Cli\u003ECase studies of safety and security problems\u003C\/li\u003E\u003Cli\u003EHow to design for safety\u003C\/li\u003E\u003Cli\u003EHow to design for security\u003C\/li\u003E\u003Cli\u003ETop 10 embedded software warning signs\u003C\/li\u003E\u003Cli\u003EHow to create high quality embedded software\u003C\/li\u003E\u003C\/ul\u003E\u003Cdiv\u003E(27 Slides \/ 45 minutes)\u003Cbr \/\u003E\u003Cbr \/\u003E\u003C\/div\u003E\u003Cb\u003ESlides Only:\u0026nbsp;\u003C\/b\u003E\u003Cbr \/\u003E\u003Ciframe allowfullscreen=\"\" frameborder=\"0\" height=\"485\" marginheight=\"0\" marginwidth=\"0\" scrolling=\"no\" src=\"\/\/www.slideshare.net\/slideshow\/embed_code\/key\/dz9S11WVB1tEdD\" style=\"border-width: 1px; border: 1px solid #ccc; margin-bottom: 5px; max-width: 100%;\" width=\"595\"\u003E \u003C\/iframe\u003E \u003Cbr \/\u003E\u003Cdiv style=\"margin-bottom: 5px;\"\u003E\u003Cstrong\u003E \u003Ca href=\"https:\/\/www.slideshare.net\/PhilipKoopman1\/embedded-software-security-safety-quality\" target=\"_blank\" title=\"Embedded Software Security Safety \u0026amp; Quality\"\u003EEmbedded Software Security Safety \u0026amp; Quality\u003C\/a\u003E \u003C\/strong\u003E from \u003Cstrong\u003E\u003Ca href=\"https:\/\/www.slideshare.net\/PhilipKoopman1\" target=\"_blank\"\u003EPhilip Koopman\u003C\/a\u003E\u003C\/strong\u003E \u003C\/div\u003E"
  431.             },
  432.             "link": [{
  433.                 "rel": "replies",
  434.                 "type": "application/atom+xml",
  435.                 "href": "http:\/\/betterembsw.blogspot.com\/feeds\/6587842279512545082\/comments\/default",
  436.                 "title": "Post Comments"
  437.             }, {
  438.                 "rel": "replies",
  439.                 "type": "text/html",
  440.                 "href": "http:\/\/betterembsw.blogspot.com\/2017\/04\/challenges-solutions-for-embedded.html#comment-form",
  441.                 "title": "0 Comments"
  442.             }, {
  443.                 "rel": "edit",
  444.                 "type": "application/atom+xml",
  445.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/6587842279512545082"
  446.             }, {
  447.                 "rel": "self",
  448.                 "type": "application/atom+xml",
  449.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/6587842279512545082"
  450.             }, {
  451.                 "rel": "alternate",
  452.                 "type": "text/html",
  453.                 "href": "http:\/\/betterembsw.blogspot.com\/2017\/04\/challenges-solutions-for-embedded.html",
  454.                 "title": "Challenges \u0026 solutions for Embedded Software Security, Safety \u0026 Quality (Full Tutorial Video)"
  455.             }],
  456.             "author": [{
  457.                 "name": {
  458.                     "$t": "Phil Koopman"
  459.                 },
  460.                 "uri": {
  461.                     "$t": "http:\/\/www.blogger.com\/profile\/11849599272360094243"
  462.                 },
  463.                 "email": {
  464.                     "$t": "noreply@blogger.com"
  465.                 },
  466.                 "gd$image": {
  467.                     "rel": "http://schemas.google.com/g/2005#thumbnail",
  468.                     "width": "32",
  469.                     "height": "32",
  470.                     "src": "http:\/\/2.bp.blogspot.com\/-TbApE9iNsGo\/VBSRFWPyjTI\/AAAAAAAAAaA\/8pm4cQrZzro\/s1600\/*"
  471.                 }
  472.             }],
  473.             "thr$total": {
  474.                 "$t": "0"
  475.             }
  476.         }, {
  477.             "id": {
  478.                 "$t": "tag:blogger.com,1999:blog-4172950626830217643.post-54887524570011610"
  479.             },
  480.             "published": {
  481.                 "$t": "2017-03-27T07:00:00.000-04:00"
  482.             },
  483.             "updated": {
  484.                 "$t": "2017-03-27T07:00:20.637-04:00"
  485.             },
  486.             "category": [{
  487.                 "scheme": "http://www.blogger.com/atom/ns#",
  488.                 "term": "safety"
  489.             }],
  490.             "title": {
  491.                 "type": "text",
  492.                 "$t": "Safety Architectural Patterns (Preview)"
  493.             },
  494.             "content": {
  495.                 "type": "html",
  496.                 "$t": "\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003EHere's a summary video on Safety Architectural Patterns:\u003C\/span\u003E\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Ciframe allowfullscreen=\"\" frameborder=\"0\" height=\"360\" mozallowfullscreen=\"\" src=\"https:\/\/player.vimeo.com\/video\/196917298\" webkitallowfullscreen=\"\" width=\"640\"\u003E\u003C\/iframe\u003E\u003Cbr \/\u003E\u003Ca href=\"https:\/\/vimeo.com\/196917298\"\u003ESafety Architecture Patterns Preview [ECR]\u003C\/a\u003E\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Cdiv style=\"background-color: white;\"\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times new roman\u0026quot; , serif; font-size: 19.8px;\"\u003EOther pointers on this topic (my blog posts unless otherwise noted):\u003C\/span\u003E\u003Cbr \/\u003E\u003Cul\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2014\/04\/monitor-actuator-pair-design-pattern.html\"\u003EMonitor actuator pattern\u003C\/a\u003E\u003C\/li\u003E\u003C\/ul\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EFor more about Edge Case Research and how to subscribe to our video training channel, please see\u0026nbsp;\u003C\/span\u003E\u003Ca href=\"http:\/\/betterembsw.blogspot.com\/2016\/10\/training-video-series.html\" style=\"color: #0d8f63; font-family: georgia, \u0026quot;times new roman\u0026quot;, serif; text-decoration: none;\"\u003Ethis Blog posting\u003C\/a\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003E.\u003C\/span\u003E\u003C\/div\u003E"
  497.             },
  498.             "link": [{
  499.                 "rel": "replies",
  500.                 "type": "application/atom+xml",
  501.                 "href": "http:\/\/betterembsw.blogspot.com\/feeds\/54887524570011610\/comments\/default",
  502.                 "title": "Post Comments"
  503.             }, {
  504.                 "rel": "replies",
  505.                 "type": "text/html",
  506.                 "href": "http:\/\/betterembsw.blogspot.com\/2017\/03\/safety-architectural-patterns-preview.html#comment-form",
  507.                 "title": "0 Comments"
  508.             }, {
  509.                 "rel": "edit",
  510.                 "type": "application/atom+xml",
  511.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/54887524570011610"
  512.             }, {
  513.                 "rel": "self",
  514.                 "type": "application/atom+xml",
  515.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/54887524570011610"
  516.             }, {
  517.                 "rel": "alternate",
  518.                 "type": "text/html",
  519.                 "href": "http:\/\/betterembsw.blogspot.com\/2017\/03\/safety-architectural-patterns-preview.html",
  520.                 "title": "Safety Architectural Patterns (Preview)"
  521.             }],
  522.             "author": [{
  523.                 "name": {
  524.                     "$t": "Phil Koopman"
  525.                 },
  526.                 "uri": {
  527.                     "$t": "http:\/\/www.blogger.com\/profile\/11849599272360094243"
  528.                 },
  529.                 "email": {
  530.                     "$t": "noreply@blogger.com"
  531.                 },
  532.                 "gd$image": {
  533.                     "rel": "http://schemas.google.com/g/2005#thumbnail",
  534.                     "width": "32",
  535.                     "height": "32",
  536.                     "src": "http:\/\/2.bp.blogspot.com\/-TbApE9iNsGo\/VBSRFWPyjTI\/AAAAAAAAAaA\/8pm4cQrZzro\/s1600\/*"
  537.                 }
  538.             }],
  539.             "thr$total": {
  540.                 "$t": "0"
  541.             }
  542.         }, {
  543.             "id": {
  544.                 "$t": "tag:blogger.com,1999:blog-4172950626830217643.post-975111708898577012"
  545.             },
  546.             "published": {
  547.                 "$t": "2017-03-20T07:00:00.000-04:00"
  548.             },
  549.             "updated": {
  550.                 "$t": "2017-03-20T07:00:17.127-04:00"
  551.             },
  552.             "category": [{
  553.                 "scheme": "http://www.blogger.com/atom/ns#",
  554.                 "term": "safety"
  555.             }],
  556.             "title": {
  557.                 "type": "text",
  558.                 "$t": "Critical System Isolation (Preview)"
  559.             },
  560.             "content": {
  561.                 "type": "html",
  562.                 "$t": "\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003EHere's a summary video on Critical System Isolation:\u003C\/span\u003E\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Ciframe allowfullscreen=\"\" frameborder=\"0\" height=\"360\" mozallowfullscreen=\"\" src=\"https:\/\/player.vimeo.com\/video\/193177833\" webkitallowfullscreen=\"\" width=\"640\"\u003E\u003C\/iframe\u003E \u003Ca href=\"https:\/\/vimeo.com\/193177833\"\u003ECritical System Isolation Preview [ECR]\u003C\/a\u003E\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Cdiv style=\"background-color: white;\"\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times new roman\u0026quot; , serif; font-size: 19.8px;\"\u003EOther pointers on this topic (my blog posts unless otherwise noted):\u003C\/span\u003E\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Cul\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2014\/04\/self-monitoring-and-single-points-of.html\"\u003ESelf-monitoring doesn't mitigate single points of failure\u003C\/a\u003E\u003C\/li\u003E\u003C\/ul\u003E\u003Cbr \/\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EFor more about Edge Case Research and how to subscribe to our video training channel, please see\u0026nbsp;\u003C\/span\u003E\u003Ca href=\"http:\/\/betterembsw.blogspot.com\/2016\/10\/training-video-series.html\" style=\"color: #0d8f63; font-family: georgia, \u0026quot;times new roman\u0026quot;, serif; text-decoration: none;\"\u003Ethis Blog posting\u003C\/a\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003E.\u003C\/span\u003E\u003C\/div\u003E"
  563.             },
  564.             "link": [{
  565.                 "rel": "replies",
  566.                 "type": "application/atom+xml",
  567.                 "href": "http:\/\/betterembsw.blogspot.com\/feeds\/975111708898577012\/comments\/default",
  568.                 "title": "Post Comments"
  569.             }, {
  570.                 "rel": "replies",
  571.                 "type": "text/html",
  572.                 "href": "http:\/\/betterembsw.blogspot.com\/2017\/03\/critical-system-isolation-preview.html#comment-form",
  573.                 "title": "0 Comments"
  574.             }, {
  575.                 "rel": "edit",
  576.                 "type": "application/atom+xml",
  577.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/975111708898577012"
  578.             }, {
  579.                 "rel": "self",
  580.                 "type": "application/atom+xml",
  581.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/975111708898577012"
  582.             }, {
  583.                 "rel": "alternate",
  584.                 "type": "text/html",
  585.                 "href": "http:\/\/betterembsw.blogspot.com\/2017\/03\/critical-system-isolation-preview.html",
  586.                 "title": "Critical System Isolation (Preview)"
  587.             }],
  588.             "author": [{
  589.                 "name": {
  590.                     "$t": "Phil Koopman"
  591.                 },
  592.                 "uri": {
  593.                     "$t": "http:\/\/www.blogger.com\/profile\/11849599272360094243"
  594.                 },
  595.                 "email": {
  596.                     "$t": "noreply@blogger.com"
  597.                 },
  598.                 "gd$image": {
  599.                     "rel": "http://schemas.google.com/g/2005#thumbnail",
  600.                     "width": "32",
  601.                     "height": "32",
  602.                     "src": "http:\/\/2.bp.blogspot.com\/-TbApE9iNsGo\/VBSRFWPyjTI\/AAAAAAAAAaA\/8pm4cQrZzro\/s1600\/*"
  603.                 }
  604.             }],
  605.             "thr$total": {
  606.                 "$t": "0"
  607.             }
  608.         }, {
  609.             "id": {
  610.                 "$t": "tag:blogger.com,1999:blog-4172950626830217643.post-4452626503794220444"
  611.             },
  612.             "published": {
  613.                 "$t": "2017-03-13T07:00:00.000-04:00"
  614.             },
  615.             "updated": {
  616.                 "$t": "2017-03-13T07:00:06.028-04:00"
  617.             },
  618.             "category": [{
  619.                 "scheme": "http://www.blogger.com/atom/ns#",
  620.                 "term": "dependability"
  621.             }, {
  622.                 "scheme": "http://www.blogger.com/atom/ns#",
  623.                 "term": "safety"
  624.             }],
  625.             "title": {
  626.                 "type": "text",
  627.                 "$t": "Redundancy Management for System Safety (Preview)"
  628.             },
  629.             "content": {
  630.                 "type": "html",
  631.                 "$t": "\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003EHere's a summary video on Redundancy Management:\u003C\/span\u003E\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Ciframe allowfullscreen=\"\" frameborder=\"0\" height=\"360\" mozallowfullscreen=\"\" src=\"https:\/\/player.vimeo.com\/video\/194874908\" webkitallowfullscreen=\"\" width=\"640\"\u003E\u003C\/iframe\u003E \u003Ca href=\"https:\/\/vimeo.com\/194874908\"\u003ERedundancy Management for Critical Systems Preview [ECR]\u003C\/a\u003E\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Cdiv style=\"background-color: white;\"\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times new roman\u0026quot; , serif; font-size: 19.8px;\"\u003EOther pointers on this topic (my blog posts unless otherwise noted):\u003C\/span\u003E\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Cul\u003E\u003Cli\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times new roman\u0026quot; , serif;\"\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2014\/03\/safety-requires-no-single-points-of.html\"\u003ENo single points of failure\u003C\/a\u003E\u003C\/span\u003E\u003C\/li\u003E\u003C\/ul\u003E\u003Cul\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2014\/04\/self-monitoring-and-single-points-of.html\"\u003E\u003Cspan style=\"font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times new roman\u0026quot; , serif;\"\u003ESelf monitoring can't mitigate a single point of failure\u003C\/span\u003E\u003C\/a\u003E\u003C\/li\u003E\u003C\/ul\u003E\u003Cul\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2014\/04\/monitor-actuator-pair-design-pattern.html\"\u003E\u003Cspan style=\"font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times new roman\u0026quot; , serif;\"\u003EMonitor Actuator pattern\u003C\/span\u003E\u003C\/a\u003E\u003C\/li\u003E\u003C\/ul\u003E\u003Cspan style=\"font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times new roman\u0026quot; , serif;\"\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EFor more about Edge Case Research and how to subscribe to our video training channel, please see\u0026nbsp;\u003C\/span\u003E\u003Ca href=\"http:\/\/betterembsw.blogspot.com\/2016\/10\/training-video-series.html\" style=\"color: #0d8f63; text-decoration: none;\"\u003Ethis Blog posting\u003C\/a\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003E.\u003C\/span\u003E\u003C\/span\u003E\u003C\/div\u003E"
  632.             },
  633.             "link": [{
  634.                 "rel": "replies",
  635.                 "type": "application/atom+xml",
  636.                 "href": "http:\/\/betterembsw.blogspot.com\/feeds\/4452626503794220444\/comments\/default",
  637.                 "title": "Post Comments"
  638.             }, {
  639.                 "rel": "replies",
  640.                 "type": "text/html",
  641.                 "href": "http:\/\/betterembsw.blogspot.com\/2017\/03\/redundancy-management-for-system-safety.html#comment-form",
  642.                 "title": "0 Comments"
  643.             }, {
  644.                 "rel": "edit",
  645.                 "type": "application/atom+xml",
  646.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/4452626503794220444"
  647.             }, {
  648.                 "rel": "self",
  649.                 "type": "application/atom+xml",
  650.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/4452626503794220444"
  651.             }, {
  652.                 "rel": "alternate",
  653.                 "type": "text/html",
  654.                 "href": "http:\/\/betterembsw.blogspot.com\/2017\/03\/redundancy-management-for-system-safety.html",
  655.                 "title": "Redundancy Management for System Safety (Preview)"
  656.             }],
  657.             "author": [{
  658.                 "name": {
  659.                     "$t": "Phil Koopman"
  660.                 },
  661.                 "uri": {
  662.                     "$t": "http:\/\/www.blogger.com\/profile\/11849599272360094243"
  663.                 },
  664.                 "email": {
  665.                     "$t": "noreply@blogger.com"
  666.                 },
  667.                 "gd$image": {
  668.                     "rel": "http://schemas.google.com/g/2005#thumbnail",
  669.                     "width": "32",
  670.                     "height": "32",
  671.                     "src": "http:\/\/2.bp.blogspot.com\/-TbApE9iNsGo\/VBSRFWPyjTI\/AAAAAAAAAaA\/8pm4cQrZzro\/s1600\/*"
  672.                 }
  673.             }],
  674.             "thr$total": {
  675.                 "$t": "0"
  676.             }
  677.         }, {
  678.             "id": {
  679.                 "$t": "tag:blogger.com,1999:blog-4172950626830217643.post-6876736426942166787"
  680.             },
  681.             "published": {
  682.                 "$t": "2017-02-27T07:00:00.000-05:00"
  683.             },
  684.             "updated": {
  685.                 "$t": "2017-03-11T12:41:27.885-05:00"
  686.             },
  687.             "category": [{
  688.                 "scheme": "http://www.blogger.com/atom/ns#",
  689.                 "term": "safety"
  690.             }],
  691.             "title": {
  692.                 "type": "text",
  693.                 "$t": "Critical System Design (Preview)"
  694.             },
  695.             "content": {
  696.                 "type": "html",
  697.                 "$t": "\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EHere's a summary video on Critical System Design techniques.\u003C\/span\u003E\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Ciframe allowfullscreen=\"\" frameborder=\"0\" height=\"360\" mozallowfullscreen=\"\" src=\"https:\/\/player.vimeo.com\/video\/192841682\" webkitallowfullscreen=\"\" width=\"640\"\u003E\u003C\/iframe\u003E \u003Cbr \/\u003E\u003Ca href=\"https:\/\/vimeo.com\/192841682\"\u003ECritical Systems Preview [ECR]\u003C\/a\u003E\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Cdiv style=\"background-color: white;\"\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EOther pointers on this topic (my blog posts unless otherwise noted):\u003C\/span\u003E\u003Cbr \/\u003E\u003Cdiv style=\"color: #444444; font-family: georgia, times, serif; font-size: 19.8px;\"\u003E\u003Cul style=\"color: #444444; font-family: georgia, times, serif; font-size: 19.8px;\"\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2014\/09\/go-beyond-system-functional-testing-to.html\"\u003EGo beyond system functional testing to ensure safety\u003C\/a\u003E\u003C\/li\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2014\/03\/problems-caused-by-random-hardware.html\"\u003EHow often will random faults kill someone if un-mitigated?\u003C\/a\u003E\u003C\/li\u003E\u003Cul\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2014\/03\/random-hardware-faults.html\"\u003ERandom hardware faults in general\u003C\/a\u003E\u003C\/li\u003E\u003C\/ul\u003E\u003C\/ul\u003E\u003Cdiv style=\"color: #444444; font-family: georgia, times, serif; font-size: 19.8px;\"\u003EOther pointers:\u003C\/div\u003E\u003Cdiv\u003E\u003Cul\u003E\u003Cli\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003E\u003Cspan style=\"font-size: 19.8px;\"\u003E\u003Ca href=\"https:\/\/law.resource.org\/pub\/in\/bis\/S05\/is.iec.61508.7.2000.pdf\"\u003EExtensive list of techniques that can be used depending upon the SIL and safety standard that paplies to your system (IEC 61508-7\u003C\/a\u003E)\u003C\/span\u003E\u003C\/span\u003E\u003C\/li\u003E\u003C\/ul\u003E\u003C\/div\u003E\u003C\/div\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EFor more about Edge Case Research and how to subscribe to our video training channel, please see\u0026nbsp;\u003C\/span\u003E\u003Ca href=\"http:\/\/betterembsw.blogspot.com\/2016\/10\/training-video-series.html\" style=\"color: #0d8f63; font-family: georgia, times, serif; font-size: 19.8px; text-decoration: none;\"\u003Ethis Blog posting\u003C\/a\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003E.\u003C\/span\u003E\u003C\/div\u003E"
  698.             },
  699.             "link": [{
  700.                 "rel": "replies",
  701.                 "type": "application/atom+xml",
  702.                 "href": "http:\/\/betterembsw.blogspot.com\/feeds\/6876736426942166787\/comments\/default",
  703.                 "title": "Post Comments"
  704.             }, {
  705.                 "rel": "replies",
  706.                 "type": "text/html",
  707.                 "href": "http:\/\/betterembsw.blogspot.com\/2017\/02\/critical-system-design-preview.html#comment-form",
  708.                 "title": "0 Comments"
  709.             }, {
  710.                 "rel": "edit",
  711.                 "type": "application/atom+xml",
  712.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/6876736426942166787"
  713.             }, {
  714.                 "rel": "self",
  715.                 "type": "application/atom+xml",
  716.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/6876736426942166787"
  717.             }, {
  718.                 "rel": "alternate",
  719.                 "type": "text/html",
  720.                 "href": "http:\/\/betterembsw.blogspot.com\/2017\/02\/critical-system-design-preview.html",
  721.                 "title": "Critical System Design (Preview)"
  722.             }],
  723.             "author": [{
  724.                 "name": {
  725.                     "$t": "Phil Koopman"
  726.                 },
  727.                 "uri": {
  728.                     "$t": "http:\/\/www.blogger.com\/profile\/11849599272360094243"
  729.                 },
  730.                 "email": {
  731.                     "$t": "noreply@blogger.com"
  732.                 },
  733.                 "gd$image": {
  734.                     "rel": "http://schemas.google.com/g/2005#thumbnail",
  735.                     "width": "32",
  736.                     "height": "32",
  737.                     "src": "http:\/\/2.bp.blogspot.com\/-TbApE9iNsGo\/VBSRFWPyjTI\/AAAAAAAAAaA\/8pm4cQrZzro\/s1600\/*"
  738.                 }
  739.             }],
  740.             "thr$total": {
  741.                 "$t": "0"
  742.             }
  743.         }, {
  744.             "id": {
  745.                 "$t": "tag:blogger.com,1999:blog-4172950626830217643.post-1177360753467559789"
  746.             },
  747.             "published": {
  748.                 "$t": "2017-02-20T07:00:00.001-05:00"
  749.             },
  750.             "updated": {
  751.                 "$t": "2017-03-11T12:41:38.488-05:00"
  752.             },
  753.             "category": [{
  754.                 "scheme": "http://www.blogger.com/atom/ns#",
  755.                 "term": "dependability"
  756.             }, {
  757.                 "scheme": "http://www.blogger.com/atom/ns#",
  758.                 "term": "tutorial"
  759.             }],
  760.             "title": {
  761.                 "type": "text",
  762.                 "$t": "Embedded System Dependability (Preview)"
  763.             },
  764.             "content": {
  765.                 "type": "html",
  766.                 "$t": "\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EHere's a summary video on Embedded System Dependability.\u003C\/span\u003E\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Ciframe allowfullscreen=\"\" frameborder=\"0\" height=\"360\" mozallowfullscreen=\"\" src=\"https:\/\/player.vimeo.com\/video\/195224397\" webkitallowfullscreen=\"\" width=\"640\"\u003E\u003C\/iframe\u003E\u003Cbr \/\u003E\u003Ca href=\"https:\/\/vimeo.com\/195224397\"\u003EDependability Tutorial Preview [ECR]\u003C\/a\u003E\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EOther pointers on this topic (my blog posts unless otherwise noted):\u003C\/span\u003E\u003Cbr \/\u003E\u003Cdiv style=\"background-color: white;\"\u003E\u003Cdiv style=\"color: #444444; font-family: georgia, times, serif; font-size: 19.8px;\"\u003E\u003Cul\u003E\u003Cli\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003E\u003Cspan style=\"font-size: 19.8px;\"\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2011\/07\/grand-challenge-of-embedded-system.html\"\u003EThe Grand Challenge of Embedded System Dependability\u003C\/a\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/li\u003E\u003Cli\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003E\u003Cspan style=\"font-size: 19.8px;\"\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2010\/06\/is-your-software-dependable-enough.html\"\u003EIs your software dependable enough?\u003C\/a\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/li\u003E\u003Cli\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003E\u003Cspan style=\"font-size: 19.8px;\"\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2012\/06\/cool-reliability-calculation-tools.html\"\u003EReliability calculation tools\u003C\/a\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/li\u003E\u003C\/ul\u003E\u003C\/div\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EOther pointers\u003C\/span\u003E\u003Cbr \/\u003E\u003Cul\u003E\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003EAvizienis, Laprie, Randell \u0026amp; Landwehr, \"\u003Ca href=\"http:\/\/drum.lib.umd.edu\/bitstream\/handle\/1903\/6459\/TR_2004-47.pdf?sequence=1\"\u003EBasic Concepts and Taxonomy of Dependable and Secure Computing\u003C\/a\u003E,\" Jan 2004, (authoritative terminology reference).\u003C\/span\u003E\u003C\/li\u003E\u003Cli\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003E\u003Cspan style=\"font-size: 19.8px;\"\u003E\u003Ca href=\"http:\/\/dsn.org\/\"\u003EDependable Systems \u0026amp; Networks conference (DSN)\u003C\/a\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/li\u003E\u003Cli\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003E\u003Ca href=\"http:\/\/webhost.laas.fr\/TSF\/IFIPWG\/Workshops\u0026amp;Meetings\/index.htm\"\u003EIFIP WG 10.4 dependability workshop presentation slides\u003C\/a\u003E\u003C\/span\u003E\u003C\/li\u003E\u003C\/ul\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EFor more about Edge Case Research and how to subscribe to our video training channel, please see\u0026nbsp;\u003C\/span\u003E\u003Ca href=\"http:\/\/betterembsw.blogspot.com\/2016\/10\/training-video-series.html\" style=\"color: #0d8f63; font-family: georgia, times, serif; font-size: 19.8px; text-decoration: none;\"\u003Ethis Blog posting\u003C\/a\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003E.\u003C\/span\u003E\u003C\/div\u003E"
  767.             },
  768.             "link": [{
  769.                 "rel": "replies",
  770.                 "type": "application/atom+xml",
  771.                 "href": "http:\/\/betterembsw.blogspot.com\/feeds\/1177360753467559789\/comments\/default",
  772.                 "title": "Post Comments"
  773.             }, {
  774.                 "rel": "replies",
  775.                 "type": "text/html",
  776.                 "href": "http:\/\/betterembsw.blogspot.com\/2017\/02\/embedded-system-dependability-preview.html#comment-form",
  777.                 "title": "0 Comments"
  778.             }, {
  779.                 "rel": "edit",
  780.                 "type": "application/atom+xml",
  781.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/1177360753467559789"
  782.             }, {
  783.                 "rel": "self",
  784.                 "type": "application/atom+xml",
  785.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/1177360753467559789"
  786.             }, {
  787.                 "rel": "alternate",
  788.                 "type": "text/html",
  789.                 "href": "http:\/\/betterembsw.blogspot.com\/2017\/02\/embedded-system-dependability-preview.html",
  790.                 "title": "Embedded System Dependability (Preview)"
  791.             }],
  792.             "author": [{
  793.                 "name": {
  794.                     "$t": "Phil Koopman"
  795.                 },
  796.                 "uri": {
  797.                     "$t": "http:\/\/www.blogger.com\/profile\/11849599272360094243"
  798.                 },
  799.                 "email": {
  800.                     "$t": "noreply@blogger.com"
  801.                 },
  802.                 "gd$image": {
  803.                     "rel": "http://schemas.google.com/g/2005#thumbnail",
  804.                     "width": "32",
  805.                     "height": "32",
  806.                     "src": "http:\/\/2.bp.blogspot.com\/-TbApE9iNsGo\/VBSRFWPyjTI\/AAAAAAAAAaA\/8pm4cQrZzro\/s1600\/*"
  807.                 }
  808.             }],
  809.             "thr$total": {
  810.                 "$t": "0"
  811.             }
  812.         }, {
  813.             "id": {
  814.                 "$t": "tag:blogger.com,1999:blog-4172950626830217643.post-3678580047300876372"
  815.             },
  816.             "published": {
  817.                 "$t": "2017-02-13T07:41:00.000-05:00"
  818.             },
  819.             "updated": {
  820.                 "$t": "2017-03-11T12:41:54.822-05:00"
  821.             },
  822.             "category": [{
  823.                 "scheme": "http://www.blogger.com/atom/ns#",
  824.                 "term": "requirements"
  825.             }, {
  826.                 "scheme": "http://www.blogger.com/atom/ns#",
  827.                 "term": "safety"
  828.             }, {
  829.                 "scheme": "http://www.blogger.com/atom/ns#",
  830.                 "term": "tutorial"
  831.             }],
  832.             "title": {
  833.                 "type": "text",
  834.                 "$t": "Safety Requirements for Embedded Systems (Preview)"
  835.             },
  836.             "content": {
  837.                 "type": "html",
  838.                 "$t": "\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EHere's a summary video on Embedded System Safety Requirements.\u003C\/span\u003E\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Ciframe allowfullscreen=\"\" frameborder=\"0\" height=\"360\" mozallowfullscreen=\"\" src=\"https:\/\/player.vimeo.com\/video\/192542999\" webkitallowfullscreen=\"\" width=\"640\"\u003E\u003C\/iframe\u003E\u003Cbr \/\u003E\u003Ca href=\"https:\/\/vimeo.com\/192542999\"\u003ESafety Requirements Preview [ECR]\u003C\/a\u003E\u003Cbr \/\u003E\u003Cdiv style=\"background-color: white;\"\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EOther pointers on this topic (my blog posts unless otherwise noted):\u003C\/span\u003E\u003Cbr \/\u003E\u003Cdiv style=\"color: #444444; font-family: georgia, times, serif; font-size: 19.8px;\"\u003E\u003Cul\u003E\u003Cli\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003E\u003Cspan style=\"font-size: 19.8px;\"\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2010\/06\/dont-require-perfection.html\"\u003EDon't require perfection\u003C\/a\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/li\u003E\u003Cli\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2014\/09\/fail-safe-mechanisms-must-be-tested.html\"\u003ETesting failsafe mechanisms\u003C\/a\u003E\u003C\/span\u003E\u003C\/li\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2014\/04\/monitor-actuator-pair-design-pattern.html\"\u003EDoer\/Checker (monitor\/actuator) design pattern\u003C\/a\u003E\u003C\/li\u003E\u003C\/ul\u003E\u003C\/div\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EFor more about Edge Case Research and how to subscribe to our video training channel, please see\u0026nbsp;\u003C\/span\u003E\u003Ca href=\"http:\/\/betterembsw.blogspot.com\/2016\/10\/training-video-series.html\" style=\"color: #0d8f63; font-family: georgia, times, serif; font-size: 19.8px; text-decoration: none;\"\u003Ethis Blog posting\u003C\/a\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003E.\u003C\/span\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003E\u003C\/span\u003E\u003C\/div\u003E"
  839.             },
  840.             "link": [{
  841.                 "rel": "replies",
  842.                 "type": "application/atom+xml",
  843.                 "href": "http:\/\/betterembsw.blogspot.com\/feeds\/3678580047300876372\/comments\/default",
  844.                 "title": "Post Comments"
  845.             }, {
  846.                 "rel": "replies",
  847.                 "type": "text/html",
  848.                 "href": "http:\/\/betterembsw.blogspot.com\/2017\/02\/safety-requirements-for-embedded.html#comment-form",
  849.                 "title": "0 Comments"
  850.             }, {
  851.                 "rel": "edit",
  852.                 "type": "application/atom+xml",
  853.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/3678580047300876372"
  854.             }, {
  855.                 "rel": "self",
  856.                 "type": "application/atom+xml",
  857.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/3678580047300876372"
  858.             }, {
  859.                 "rel": "alternate",
  860.                 "type": "text/html",
  861.                 "href": "http:\/\/betterembsw.blogspot.com\/2017\/02\/safety-requirements-for-embedded.html",
  862.                 "title": "Safety Requirements for Embedded Systems (Preview)"
  863.             }],
  864.             "author": [{
  865.                 "name": {
  866.                     "$t": "Phil Koopman"
  867.                 },
  868.                 "uri": {
  869.                     "$t": "http:\/\/www.blogger.com\/profile\/11849599272360094243"
  870.                 },
  871.                 "email": {
  872.                     "$t": "noreply@blogger.com"
  873.                 },
  874.                 "gd$image": {
  875.                     "rel": "http://schemas.google.com/g/2005#thumbnail",
  876.                     "width": "32",
  877.                     "height": "32",
  878.                     "src": "http:\/\/2.bp.blogspot.com\/-TbApE9iNsGo\/VBSRFWPyjTI\/AAAAAAAAAaA\/8pm4cQrZzro\/s1600\/*"
  879.                 }
  880.             }],
  881.             "thr$total": {
  882.                 "$t": "0"
  883.             }
  884.         }, {
  885.             "id": {
  886.                 "$t": "tag:blogger.com,1999:blog-4172950626830217643.post-7256577423120778456"
  887.             },
  888.             "published": {
  889.                 "$t": "2017-02-06T07:00:00.000-05:00"
  890.             },
  891.             "updated": {
  892.                 "$t": "2017-03-11T12:42:05.225-05:00"
  893.             },
  894.             "category": [{
  895.                 "scheme": "http://www.blogger.com/atom/ns#",
  896.                 "term": "safety"
  897.             }, {
  898.                 "scheme": "http://www.blogger.com/atom/ns#",
  899.                 "term": "system design"
  900.             }, {
  901.                 "scheme": "http://www.blogger.com/atom/ns#",
  902.                 "term": "tutorial"
  903.             }],
  904.             "title": {
  905.                 "type": "text",
  906.                 "$t": "Embedded Software Safety Plan (Preview)"
  907.             },
  908.             "content": {
  909.                 "type": "html",
  910.                 "$t": "\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EHere's a summary video on creating an embedded Software Safety Plan.\u0026nbsp;\u003C\/span\u003E\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003E\u0026nbsp;\u003C\/span\u003E\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003E\u0026nbsp;(See additional pointers below.)\u003C\/span\u003E\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Cdiv style=\"background-color: white;\"\u003E\u003Ciframe allowfullscreen=\"\" frameborder=\"0\" height=\"360\" mozallowfullscreen=\"\" src=\"https:\/\/player.vimeo.com\/video\/192362683\" webkitallowfullscreen=\"\" width=\"640\"\u003E\u003C\/iframe\u003E\u003Cbr \/\u003E\u003Ca href=\"https:\/\/vimeo.com\/192362683\"\u003ESafety Plan Preview [ECR]\u003C\/a\u003E\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EOther pointers on this topic (my blog posts unless otherwise noted):\u003C\/span\u003E\u003Cbr \/\u003E\u003Cdiv style=\"color: #444444; font-family: georgia, times, serif; font-size: 19.8px;\"\u003E\u003Cul\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2011\/03\/using-risk-analysis-table-to-categorize.html\"\u003EHow a Risk Table works\u003C\/a\u003E\u003C\/li\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2014\/09\/go-beyond-system-functional-testing-to.html\"\u003EGo beyond just system testing to ensure safety\u003C\/a\u003E\u003C\/li\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2016\/04\/challenges-in-autonomous-vehicle.html\"\u003EWhy creating a software safety plan is challenging for an autonomous vehicle\u003C\/a\u003E\u003C\/li\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2010\/07\/is-your-embedded-system-safety-critical.html\"\u003EYour embedded system might be safety critical\u003C\/a\u003E\u003C\/li\u003E\u003C\/ul\u003E\u003C\/div\u003E\u003Cdiv style=\"background-color: white;\"\u003EOther pointers:\u003Cbr \/\u003E\u003Cul\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/www.micrium.com\/certification-of-medical-systems-part-3\/\"\u003EMedical device regulatory environment\u003C\/a\u003E\u0026nbsp;(Micrium blog)\u003C\/li\u003E\u003Cli\u003E\u003Ca href=\"http:\/\/www.system-safety.org\/links\/\"\u003ESoftware safety standards and guidebooks system-safety.org\u003C\/a\u003E\u003C\/li\u003E\u003Cli\u003EInternational safety standards via \u003Ca href=\"http:\/\/law.resource.org\/\"\u003Elaw.resource.org\u003C\/a\u003E (e.g., \u003Ca href=\"https:\/\/law.resource.org\/pub\/in\/bis\/manifest.etd.18.html\"\u003Elook for IEC 61508 in their industrial safety standards\u003C\/a\u003E) -- very useful for teaching access to actual international standards, although sometimes older versions\u003C\/li\u003E\u003C\/ul\u003E\u003C\/div\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EFor more about Edge Case Research and how to subscribe to our video training channel, please see\u0026nbsp;\u003C\/span\u003E\u003Ca href=\"http:\/\/betterembsw.blogspot.com\/2016\/10\/training-video-series.html\" style=\"color: #0d8f63; font-family: georgia, times, serif; font-size: 19.8px; text-decoration: none;\"\u003Ethis Blog posting\u003C\/a\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003E.\u003C\/span\u003E\u003C\/div\u003E"
  911.             },
  912.             "link": [{
  913.                 "rel": "replies",
  914.                 "type": "application/atom+xml",
  915.                 "href": "http:\/\/betterembsw.blogspot.com\/feeds\/7256577423120778456\/comments\/default",
  916.                 "title": "Post Comments"
  917.             }, {
  918.                 "rel": "replies",
  919.                 "type": "text/html",
  920.                 "href": "http:\/\/betterembsw.blogspot.com\/2017\/02\/embedded-software-safety-plan-preview.html#comment-form",
  921.                 "title": "0 Comments"
  922.             }, {
  923.                 "rel": "edit",
  924.                 "type": "application/atom+xml",
  925.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/7256577423120778456"
  926.             }, {
  927.                 "rel": "self",
  928.                 "type": "application/atom+xml",
  929.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/7256577423120778456"
  930.             }, {
  931.                 "rel": "alternate",
  932.                 "type": "text/html",
  933.                 "href": "http:\/\/betterembsw.blogspot.com\/2017\/02\/embedded-software-safety-plan-preview.html",
  934.                 "title": "Embedded Software Safety Plan (Preview)"
  935.             }],
  936.             "author": [{
  937.                 "name": {
  938.                     "$t": "Phil Koopman"
  939.                 },
  940.                 "uri": {
  941.                     "$t": "http:\/\/www.blogger.com\/profile\/11849599272360094243"
  942.                 },
  943.                 "email": {
  944.                     "$t": "noreply@blogger.com"
  945.                 },
  946.                 "gd$image": {
  947.                     "rel": "http://schemas.google.com/g/2005#thumbnail",
  948.                     "width": "32",
  949.                     "height": "32",
  950.                     "src": "http:\/\/2.bp.blogspot.com\/-TbApE9iNsGo\/VBSRFWPyjTI\/AAAAAAAAAaA\/8pm4cQrZzro\/s1600\/*"
  951.                 }
  952.             }],
  953.             "thr$total": {
  954.                 "$t": "0"
  955.             }
  956.         }, {
  957.             "id": {
  958.                 "$t": "tag:blogger.com,1999:blog-4172950626830217643.post-3248999397547482222"
  959.             },
  960.             "published": {
  961.                 "$t": "2017-01-30T07:00:00.000-05:00"
  962.             },
  963.             "updated": {
  964.                 "$t": "2017-02-03T09:43:34.454-05:00"
  965.             },
  966.             "category": [{
  967.                 "scheme": "http://www.blogger.com/atom/ns#",
  968.                 "term": "safety"
  969.             }, {
  970.                 "scheme": "http://www.blogger.com/atom/ns#",
  971.                 "term": "self-driving cars"
  972.             }],
  973.             "title": {
  974.                 "type": "text",
  975.                 "$t": "Autonomous Vehicle Safety: An Interdisciplinary Challenge"
  976.             },
  977.             "content": {
  978.                 "type": "html",
  979.                 "$t": "\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\u003Ca href=\"https:\/\/1.bp.blogspot.com\/-NLhj-pWggpM\/WIkbSgEsOuI\/AAAAAAAAAeU\/nyfcGWw6z10iwEbEClU4qlUetVuNj-d2QCLcB\/s1600\/its_fig.gif\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" height=\"291\" src=\"https:\/\/1.bp.blogspot.com\/-NLhj-pWggpM\/WIkbSgEsOuI\/AAAAAAAAAeU\/nyfcGWw6z10iwEbEClU4qlUetVuNj-d2QCLcB\/s320\/its_fig.gif\" width=\"320\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\u003Cb\u003E\u003Cbr \/\u003E\u003C\/b\u003E\u003Cbr \/\u003E\u003Cdiv style=\"text-align: center;\"\u003E\u003Cb\u003EAutonomous Vehicle Safety: An Interdisciplinary Challenge\u003C\/b\u003E\u003C\/div\u003E\u003Cbr \/\u003EBy Phil Koopman \u0026amp; Mike Wagner\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Cb\u003EAbstract:\u003C\/b\u003E\u003Cbr \/\u003EEnsuring the safety of fully autonomous vehicles requires a multi-disciplinary approach across all the levels of functional hierarchy, from hardware fault tolerance, to resilient machine learning, to cooperating with humans driving conventional vehicles, to validating systems for operation in highly unstructured environments, to appropriate regulatory approaches. Significant open technical challenges include validating inductive learning in the face of novel environmental inputs and achieving the very high levels of dependability required for full-scale fleet deployment. However, the biggest challenge may be in creating an end-to-end design and deployment process that integrates the safety concerns of a myriad of technical specialties into a unified approach.\u003Cbr \/\u003E\u003Cbr \/\u003ERead the preprint version here for free (\u003Ca href=\"https:\/\/users.ece.cmu.edu\/~koopman\/pubs\/koopman17_ITS_av_safety.pdf\"\u003Elink \/ .pdf\u003C\/a\u003E)\u003Cbr \/\u003E\u003Cbr \/\u003EOfficial IEEE version (subscription required):\u003Cbr \/\u003E\u003Ca href=\"http:\/\/ieeexplore.ieee.org\/document\/7823109\/\"\u003Ehttp:\/\/ieeexplore.ieee.org\/document\/7823109\/ \u003C\/a\u003E\u0026nbsp; \u003Cbr \/\u003EDOI: 10.1109\/MITS.2016.2583491\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Ci\u003EIEEE Intelligent Transportation Systems Magazine\u003C\/i\u003E (Volume: 9, Issue: 1, Spring 2017, pp. 90-96)\u003Cbr \/\u003E\u003Cbr \/\u003ECorrection:\u003Cbr \/\u003E\"This would require a safety level of about 1 billion operating hours per catastrophic event. (FAA 1988)\" should be\u003Cbr \/\u003E\"This would require a safety level of about 1 billion operating hours per catastrophic event due to the failure of a particular function. (FAA 1988)\" \u0026nbsp;(Note that in this context a \"function\" is something quite high level such as the ability to provide sufficient thrust from the set of jet engines mounted on the airframe.)"
  980.             },
  981.             "link": [{
  982.                 "rel": "replies",
  983.                 "type": "application/atom+xml",
  984.                 "href": "http:\/\/betterembsw.blogspot.com\/feeds\/3248999397547482222\/comments\/default",
  985.                 "title": "Post Comments"
  986.             }, {
  987.                 "rel": "replies",
  988.                 "type": "text/html",
  989.                 "href": "http:\/\/betterembsw.blogspot.com\/2017\/01\/autonomous-vehicle-safety.html#comment-form",
  990.                 "title": "0 Comments"
  991.             }, {
  992.                 "rel": "edit",
  993.                 "type": "application/atom+xml",
  994.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/3248999397547482222"
  995.             }, {
  996.                 "rel": "self",
  997.                 "type": "application/atom+xml",
  998.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/3248999397547482222"
  999.             }, {
  1000.                 "rel": "alternate",
  1001.                 "type": "text/html",
  1002.                 "href": "http:\/\/betterembsw.blogspot.com\/2017\/01\/autonomous-vehicle-safety.html",
  1003.                 "title": "Autonomous Vehicle Safety: An Interdisciplinary Challenge"
  1004.             }],
  1005.             "author": [{
  1006.                 "name": {
  1007.                     "$t": "Phil Koopman"
  1008.                 },
  1009.                 "uri": {
  1010.                     "$t": "http:\/\/www.blogger.com\/profile\/11849599272360094243"
  1011.                 },
  1012.                 "email": {
  1013.                     "$t": "noreply@blogger.com"
  1014.                 },
  1015.                 "gd$image": {
  1016.                     "rel": "http://schemas.google.com/g/2005#thumbnail",
  1017.                     "width": "32",
  1018.                     "height": "32",
  1019.                     "src": "http:\/\/2.bp.blogspot.com\/-TbApE9iNsGo\/VBSRFWPyjTI\/AAAAAAAAAaA\/8pm4cQrZzro\/s1600\/*"
  1020.                 }
  1021.             }],
  1022.             "media$thumbnail": {
  1023.                 "xmlns$media": "http://search.yahoo.com/mrss/",
  1024.                 "url": "https:\/\/1.bp.blogspot.com\/-NLhj-pWggpM\/WIkbSgEsOuI\/AAAAAAAAAeU\/nyfcGWw6z10iwEbEClU4qlUetVuNj-d2QCLcB\/s72-c\/its_fig.gif",
  1025.                 "height": "72",
  1026.                 "width": "72"
  1027.             },
  1028.             "thr$total": {
  1029.                 "$t": "0"
  1030.             }
  1031.         }, {
  1032.             "id": {
  1033.                 "$t": "tag:blogger.com,1999:blog-4172950626830217643.post-7639760109751259159"
  1034.             },
  1035.             "published": {
  1036.                 "$t": "2017-01-23T07:00:00.000-05:00"
  1037.             },
  1038.             "updated": {
  1039.                 "$t": "2017-03-11T12:42:32.311-05:00"
  1040.             },
  1041.             "category": [{
  1042.                 "scheme": "http://www.blogger.com/atom/ns#",
  1043.                 "term": "safety"
  1044.             }, {
  1045.                 "scheme": "http://www.blogger.com/atom/ns#",
  1046.                 "term": "tutorial"
  1047.             }],
  1048.             "title": {
  1049.                 "type": "text",
  1050.                 "$t": "Embedded System Safety Overview (Preview)"
  1051.             },
  1052.             "content": {
  1053.                 "type": "html",
  1054.                 "$t": "\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EHere's a summary overview video on Embedded System Safety. \u0026nbsp;(See additional pointers below.)\u003C\/span\u003E\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Ciframe allowfullscreen=\"\" frameborder=\"0\" height=\"360\" mozallowfullscreen=\"\" src=\"https:\/\/player.vimeo.com\/video\/196089129\" webkitallowfullscreen=\"\" width=\"640\"\u003E\u003C\/iframe\u003E \u003Cbr \/\u003E\u003Ca href=\"https:\/\/vimeo.com\/196089129\"\u003EEmbedded Software Safety Preview [ECR]\u003C\/a\u003E\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EOther pointers on this topic (my blog posts unless otherwise noted):\u003C\/span\u003E\u003Cbr \/\u003E\u003Cdiv style=\"background-color: white;\"\u003E\u003Cdiv style=\"color: #444444; font-family: georgia, times, serif; font-size: 19.8px;\"\u003E\u003Cul style=\"color: black; font-family: \u0026quot;Times New Roman\u0026quot;; font-size: medium;\"\u003E\u003Cli\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003E\u003Cspan style=\"font-size: 19.8px;\"\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2014\/10\/safety-culture.html\"\u003ESafety culture\u003C\/a\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/li\u003E\u003Cli\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2014\/09\/a-case-study-of-toyota-unintended.html\"\u003EToyota Unintended Acceleration case study\u003C\/a\u003E\u003C\/span\u003E\u003C\/li\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2014\/04\/layered-defenses-for-safety-critical.html\"\u003ELayered defenses for safety critical systems\u003C\/a\u003E\u003C\/li\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2014\/02\/the-therac-25-case-study-in-unsafe.html\"\u003ETherac 25 summary\u003C\/a\u003E\u003C\/li\u003E\u003C\/ul\u003E\u003Cdiv style=\"color: #444444; font-family: georgia, times, serif; font-size: 19.8px;\"\u003EOn-line resources:\u003C\/div\u003E\u003Cul\u003E\u003Cli\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003E\u003Cspan style=\"font-size: 19.8px;\"\u003EUK MOD, \u003Ca href=\"https:\/\/www.gov.uk\/government\/uploads\/system\/uploads\/attachment_data\/file\/27552\/WhiteBookIssue3.pdf\"\u003EAn Introduction to System Safety Management in the MOD\u003C\/a\u003E, January 2011.\u003C\/span\u003E\u003C\/span\u003E\u003C\/li\u003E\u003C\/ul\u003E\u003Cul\u003E\u003Cli style=\"color: #444444; font-family: georgia, times, serif; font-size: 19.8px;\"\u003E\u003Ca href=\"https:\/\/catless.ncl.ac.uk\/Risks\/\"\u003ERISKS Digest\u003C\/a\u003E\u0026nbsp;(archive of discussions on computing risks)\u003C\/li\u003E\u003Cli style=\"color: #444444; font-family: georgia, times, serif; font-size: 19.8px;\"\u003E\u003Ca href=\"https:\/\/www.cs.york.ac.uk\/hise\/sc_list.php\"\u003ESafety critical mailing list\u003C\/a\u003E\u0026nbsp;(international safety experts discuss almost everything; includes on-line archives)\u003C\/li\u003E\u003C\/ul\u003E\u003Cdiv style=\"color: #444444; font-family: georgia, times, serif; font-size: 19.8px;\"\u003E\u003Cspan style=\"background-color: white;\"\u003EJohn Knight's book:\u0026nbsp;\u003C\/span\u003E\u003Ca href=\"https:\/\/www.amazon.com\/Fundamentals-Dependable-Innovations-Engineering-Development\/dp\/1439862559?tag=embedsyste0a-20\" style=\"background-color: white;\"\u003EFundamentals of Dependable Computing for Software Engineers\u003C\/a\u003E\u003Cspan style=\"background-color: white;\"\u003E\u0026nbsp;(2012) is an excellent current book on software dependability and safety.\u003C\/span\u003E\u003C\/div\u003E\u003Cdiv style=\"background-color: white; color: #444444; font-family: georgia, times, serif; font-size: 19.8px;\"\u003E\u003Cdiv\u003E\u003Cdiv\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\u003Cdiv\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003E\u003Ca href=\"http:\/\/sunnyday.mit.edu\/\"\u003ENancy Leveson\u003C\/a\u003E\u0026nbsp;has some great publications in the area of software safety, and is credited for developing this as an academic field. Anyone doing software safety should read at least these:\u003C\/span\u003E\u003C\/div\u003E\u003Cdiv\u003E\u003Cul\u003E\u003Cli\u003ESoftware Safety: why, what, and how (a shorter, earlier version of the material in the Safeware book);\u0026nbsp;\u003Ca href=\"http:\/\/dl.acm.org\/citation.cfm?id=7528\"\u003Epay to download from ACM\u003C\/a\u003E, or sometimes you can find a free copy on-line if you don't have a subscription (1986)\u003C\/li\u003E\u003Cli\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003E\u003Ca href=\"http:\/\/sunnyday.mit.edu\/papers\/therac.pdf\"\u003EThe Therac-25 Accidents\u003C\/a\u003E\u0026nbsp;(1993)\u003C\/span\u003E\u003C\/li\u003E\u003Cli\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003E\u003Ca href=\"http:\/\/sunnyday.mit.edu\/steam.pdf\"\u003EHigh-Pressure Steam Engines and Computer Software\u003C\/a\u003E\u0026nbsp;(1992)\u003C\/span\u003E\u003C\/li\u003E\u003Cli\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003E\u003Ca href=\"https:\/\/www.amazon.com\/Safeware-Computers-Nancy-G-Leveson\/dp\/0201119722?tag=embedsyste0a-20\"\u003ESafeware\u003C\/a\u003E\u0026nbsp;(book on amazon; 1995)\u0026nbsp;\u003C\/span\u003E\u003C\/li\u003E\u003Cli\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003E\u003Ca href=\"https:\/\/mitpress.mit.edu\/sites\/default\/files\/titles\/free_download\/9780262016629_Engineering_a_Safer_World.pdf\"\u003EEngineering a safer world (free on-line book)\u003C\/a\u003E\u0026nbsp;(2011)\u003C\/span\u003E\u003C\/li\u003E\u003C\/ul\u003E\u003C\/div\u003E\u003C\/div\u003E\u003Cdiv style=\"font-size: 19.8px;\"\u003E\u003Cdiv style=\"font-size: 19.8px;\"\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EFor more about Edge Case Research and how to subscribe to our video training channel, please see\u0026nbsp;\u003C\/span\u003E\u003Ca href=\"http:\/\/betterembsw.blogspot.com\/2016\/10\/training-video-series.html\" style=\"color: #0d8f63; font-size: 19.8px; text-decoration: none;\"\u003Ethis Blog posting\u003C\/a\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003E.\u003C\/span\u003E\u003C\/div\u003E\u003C\/div\u003E\u003C\/div\u003E\u003C\/div\u003E\u003C\/div\u003E"
  1055.             },
  1056.             "link": [{
  1057.                 "rel": "replies",
  1058.                 "type": "application/atom+xml",
  1059.                 "href": "http:\/\/betterembsw.blogspot.com\/feeds\/7639760109751259159\/comments\/default",
  1060.                 "title": "Post Comments"
  1061.             }, {
  1062.                 "rel": "replies",
  1063.                 "type": "text/html",
  1064.                 "href": "http:\/\/betterembsw.blogspot.com\/2017\/01\/embedded-system-safety-overview-preview.html#comment-form",
  1065.                 "title": "0 Comments"
  1066.             }, {
  1067.                 "rel": "edit",
  1068.                 "type": "application/atom+xml",
  1069.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/7639760109751259159"
  1070.             }, {
  1071.                 "rel": "self",
  1072.                 "type": "application/atom+xml",
  1073.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/7639760109751259159"
  1074.             }, {
  1075.                 "rel": "alternate",
  1076.                 "type": "text/html",
  1077.                 "href": "http:\/\/betterembsw.blogspot.com\/2017\/01\/embedded-system-safety-overview-preview.html",
  1078.                 "title": "Embedded System Safety Overview (Preview)"
  1079.             }],
  1080.             "author": [{
  1081.                 "name": {
  1082.                     "$t": "Phil Koopman"
  1083.                 },
  1084.                 "uri": {
  1085.                     "$t": "http:\/\/www.blogger.com\/profile\/11849599272360094243"
  1086.                 },
  1087.                 "email": {
  1088.                     "$t": "noreply@blogger.com"
  1089.                 },
  1090.                 "gd$image": {
  1091.                     "rel": "http://schemas.google.com/g/2005#thumbnail",
  1092.                     "width": "32",
  1093.                     "height": "32",
  1094.                     "src": "http:\/\/2.bp.blogspot.com\/-TbApE9iNsGo\/VBSRFWPyjTI\/AAAAAAAAAaA\/8pm4cQrZzro\/s1600\/*"
  1095.                 }
  1096.             }],
  1097.             "thr$total": {
  1098.                 "$t": "0"
  1099.             }
  1100.         }, {
  1101.             "id": {
  1102.                 "$t": "tag:blogger.com,1999:blog-4172950626830217643.post-4161690402601034013"
  1103.             },
  1104.             "published": {
  1105.                 "$t": "2017-01-12T17:00:00.000-05:00"
  1106.             },
  1107.             "updated": {
  1108.                 "$t": "2017-01-17T14:28:21.010-05:00"
  1109.             },
  1110.             "category": [{
  1111.                 "scheme": "http://www.blogger.com/atom/ns#",
  1112.                 "term": "book"
  1113.             }, {
  1114.                 "scheme": "http://www.blogger.com/atom/ns#",
  1115.                 "term": "Edge Case Research"
  1116.             }, {
  1117.                 "scheme": "http://www.blogger.com/atom/ns#",
  1118.                 "term": "peer reviews"
  1119.             }],
  1120.             "title": {
  1121.                 "type": "text",
  1122.                 "$t": "Guest on Embedded.fm Podcast"
  1123.             },
  1124.             "content": {
  1125.                 "type": "html",
  1126.                 "$t": "Elecia \u0026amp; Chris invited me to chat with them on this week's \u003Ca href=\"http:\/\/embedded.fm\/\"\u003EEmbedded.fm\u003C\/a\u003E podcast and it was a lot of fun.\u003Cbr \/\u003E\u003Cbr \/\u003EYou can check out my episode here:\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Ca href=\"http:\/\/embedded.fm\/episodes\/183\"\u003Ehttp:\/\/embedded.fm\/episodes\/183\u003C\/a\u003E\u003Cbr \/\u003E\u003Cbr \/\u003EAlso, I highly recommend listening to Jack Ganssle's excellent episode 53: \"Being a grownup engineer\"\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Ca href=\"http:\/\/embedded.fm\/episodes\/53\"\u003Ehttp:\/\/embedded.fm\/episodes\/53\u003C\/a\u003E\u003Cbr \/\u003E\u003Cbr \/\u003EScroll through the episode list. \u0026nbsp;I'm episode 183 so you can tell they've been at this quite a while. There's a lot of great stuff to listen to.\u003Cbr \/\u003E\u003Cbr \/\u003ENote added Tue. 1\/17: \u0026nbsp;books are back in stock in Amazon.\u003Cbr \/\u003E\u003Cbr \/\u003EMeanwhile, if you are ordering from the US, the best deal on the book is via paypal here:\u0026nbsp;\u003Ca href=\"http:\/\/koopman.us\/\"\u003Ehttp:\/\/koopman.us\/\u003C\/a\u003E"
  1127.             },
  1128.             "link": [{
  1129.                 "rel": "replies",
  1130.                 "type": "application/atom+xml",
  1131.                 "href": "http:\/\/betterembsw.blogspot.com\/feeds\/4161690402601034013\/comments\/default",
  1132.                 "title": "Post Comments"
  1133.             }, {
  1134.                 "rel": "replies",
  1135.                 "type": "text/html",
  1136.                 "href": "http:\/\/betterembsw.blogspot.com\/2017\/01\/guest-on-embeddedfm-podcast.html#comment-form",
  1137.                 "title": "0 Comments"
  1138.             }, {
  1139.                 "rel": "edit",
  1140.                 "type": "application/atom+xml",
  1141.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/4161690402601034013"
  1142.             }, {
  1143.                 "rel": "self",
  1144.                 "type": "application/atom+xml",
  1145.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/4161690402601034013"
  1146.             }, {
  1147.                 "rel": "alternate",
  1148.                 "type": "text/html",
  1149.                 "href": "http:\/\/betterembsw.blogspot.com\/2017\/01\/guest-on-embeddedfm-podcast.html",
  1150.                 "title": "Guest on Embedded.fm Podcast"
  1151.             }],
  1152.             "author": [{
  1153.                 "name": {
  1154.                     "$t": "Phil Koopman"
  1155.                 },
  1156.                 "uri": {
  1157.                     "$t": "http:\/\/www.blogger.com\/profile\/11849599272360094243"
  1158.                 },
  1159.                 "email": {
  1160.                     "$t": "noreply@blogger.com"
  1161.                 },
  1162.                 "gd$image": {
  1163.                     "rel": "http://schemas.google.com/g/2005#thumbnail",
  1164.                     "width": "32",
  1165.                     "height": "32",
  1166.                     "src": "http:\/\/2.bp.blogspot.com\/-TbApE9iNsGo\/VBSRFWPyjTI\/AAAAAAAAAaA\/8pm4cQrZzro\/s1600\/*"
  1167.                 }
  1168.             }],
  1169.             "thr$total": {
  1170.                 "$t": "0"
  1171.             }
  1172.         }, {
  1173.             "id": {
  1174.                 "$t": "tag:blogger.com,1999:blog-4172950626830217643.post-2749427933525071201"
  1175.             },
  1176.             "published": {
  1177.                 "$t": "2017-01-09T07:00:00.000-05:00"
  1178.             },
  1179.             "updated": {
  1180.                 "$t": "2017-03-11T12:42:52.420-05:00"
  1181.             },
  1182.             "category": [{
  1183.                 "scheme": "http://www.blogger.com/atom/ns#",
  1184.                 "term": "coding style"
  1185.             }, {
  1186.                 "scheme": "http://www.blogger.com/atom/ns#",
  1187.                 "term": "embedded C"
  1188.             }],
  1189.             "title": {
  1190.                 "type": "text",
  1191.                 "$t": "Language Use (Coding Style for Compilers) Overview Video"
  1192.             },
  1193.             "content": {
  1194.                 "type": "html",
  1195.                 "$t": "\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EHere's a summary video on Language Use (Coding Style for Compilers) which is half of the topic of coding style.\u003C\/span\u003E\u003Cbr \/\u003E\u003Cbr style=\"background-color: white; color: #444444; font-family: georgia, times, serif; font-size: 19.8px;\" \/\u003E\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EOther pointers on this topic (my blog posts unless otherwise noted):\u003C\/span\u003E\u003Cbr \/\u003E\u003Cdiv style=\"background-color: white; color: #444444; font-family: georgia, times, serif; font-size: 19.8px;\"\u003E\u003Cul\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2014\/08\/use-of-static-analysis-tools.html\"\u003EStatic Analysis Tool Use\u003C\/a\u003E\u003C\/li\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2014\/11\/not-getting-software-wrong.html\"\u003ENot getting software wrong\u003C\/a\u003E\u0026nbsp;is the point of coding style\u003C\/li\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2014\/08\/coding-style-guidelines-and-misra-c.html\"\u003ECoding style and MISRA C\u003C\/a\u003E\u003C\/li\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/search\/label\/coding%20style\" style=\"font-size: 19.8px;\"\u003EOther posts on coding style\u003C\/a\u003E\u003C\/li\u003E\u003C\/ul\u003E\u003Cul\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/www.securecoding.cert.org\/confluence\/display\/c\/SEI+CERT+C+Coding+Standard\"\u003ECERT C coding standard\u003C\/a\u003E\u003C\/li\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/en.wikipedia.org\/wiki\/List_of_tools_for_static_code_analysis#C.2C_C.2B.2B\"\u003EWikipedia list of static analysis tools for C\u003C\/a\u003E\u003C\/li\u003E\u003Cli\u003E\u003Ca href=\"http:\/\/stackoverflow.com\/questions\/5088460\/flags-to-enable-thorough-and-verbose-g-warnings\"\u003EDiscussion of useful GCC flags on stack overflow\u003C\/a\u003E (hint: \u0026nbsp;-Wall is NOT all the warnings! Try -Wextra as a good additional starting point, but there is much more you can do)\u003C\/li\u003E\u003Cli\u003ECoding style for nuclear power plant safety systems (\u003Ca href=\"https:\/\/www.nrc.gov\/docs\/ML0634\/ML063470583.pdf\"\u003ENUREG\/CR-6463\u003C\/a\u003E)\u003C\/li\u003E\u003C\/ul\u003E\u003C\/div\u003E\u003Cdiv style=\"background-color: white;\"\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003E\u003Cspan style=\"font-size: 19.8px;\"\u003E\u003Ciframe allowfullscreen=\"\" frameborder=\"0\" height=\"360\" mozallowfullscreen=\"\" src=\"https:\/\/player.vimeo.com\/video\/190435050\" webkitallowfullscreen=\"\" width=\"640\"\u003E\u003C\/iframe\u003E\u003C\/span\u003E\u003C\/span\u003E\u003Cbr \/\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003E\u003Cspan style=\"font-size: 19.8px;\"\u003E\u003Ca href=\"https:\/\/vimeo.com\/190435050\"\u003ECode Style: Language Use Preview [ECR]\u003C\/a\u003E\u003C\/span\u003E\u003C\/span\u003E\u003Cbr \/\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003E\u003Cspan style=\"font-size: 19.8px;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/div\u003E\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EFor more about Edge Case Research and how to subscribe to our video training channel, please see\u0026nbsp;\u003C\/span\u003E\u003Ca href=\"http:\/\/betterembsw.blogspot.com\/2016\/10\/training-video-series.html\" style=\"background-color: white; color: #0d8f63; font-family: georgia, times, serif; font-size: 19.8px; text-decoration: none;\"\u003Ethis Blog posting\u003C\/a\u003E\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003E.\u003C\/span\u003E"
  1196.             },
  1197.             "link": [{
  1198.                 "rel": "replies",
  1199.                 "type": "application/atom+xml",
  1200.                 "href": "http:\/\/betterembsw.blogspot.com\/feeds\/2749427933525071201\/comments\/default",
  1201.                 "title": "Post Comments"
  1202.             }, {
  1203.                 "rel": "replies",
  1204.                 "type": "text/html",
  1205.                 "href": "http:\/\/betterembsw.blogspot.com\/2017\/01\/language-use-coding-style-for-compilers.html#comment-form",
  1206.                 "title": "0 Comments"
  1207.             }, {
  1208.                 "rel": "edit",
  1209.                 "type": "application/atom+xml",
  1210.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/2749427933525071201"
  1211.             }, {
  1212.                 "rel": "self",
  1213.                 "type": "application/atom+xml",
  1214.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/2749427933525071201"
  1215.             }, {
  1216.                 "rel": "alternate",
  1217.                 "type": "text/html",
  1218.                 "href": "http:\/\/betterembsw.blogspot.com\/2017\/01\/language-use-coding-style-for-compilers.html",
  1219.                 "title": "Language Use (Coding Style for Compilers) Overview Video"
  1220.             }],
  1221.             "author": [{
  1222.                 "name": {
  1223.                     "$t": "Phil Koopman"
  1224.                 },
  1225.                 "uri": {
  1226.                     "$t": "http:\/\/www.blogger.com\/profile\/11849599272360094243"
  1227.                 },
  1228.                 "email": {
  1229.                     "$t": "noreply@blogger.com"
  1230.                 },
  1231.                 "gd$image": {
  1232.                     "rel": "http://schemas.google.com/g/2005#thumbnail",
  1233.                     "width": "32",
  1234.                     "height": "32",
  1235.                     "src": "http:\/\/2.bp.blogspot.com\/-TbApE9iNsGo\/VBSRFWPyjTI\/AAAAAAAAAaA\/8pm4cQrZzro\/s1600\/*"
  1236.                 }
  1237.             }],
  1238.             "thr$total": {
  1239.                 "$t": "0"
  1240.             }
  1241.         }, {
  1242.             "id": {
  1243.                 "$t": "tag:blogger.com,1999:blog-4172950626830217643.post-1900055932320880933"
  1244.             },
  1245.             "published": {
  1246.                 "$t": "2017-01-02T11:00:00.000-05:00"
  1247.             },
  1248.             "updated": {
  1249.                 "$t": "2017-03-11T12:43:07.462-05:00"
  1250.             },
  1251.             "category": [{
  1252.                 "scheme": "http://www.blogger.com/atom/ns#",
  1253.                 "term": "tutorial"
  1254.             }],
  1255.             "title": {
  1256.                 "type": "text",
  1257.                 "$t": "Avoiding Embedded System Stack Overflow (Preview)"
  1258.             },
  1259.             "content": {
  1260.                 "type": "html",
  1261.                 "$t": "\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EHere's a summary video on avoiding Stack Overflow.\u0026nbsp;\u003C\/span\u003E\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Cdiv style=\"background-color: white;\"\u003E\u003Ciframe allowfullscreen=\"\" frameborder=\"0\" height=\"360\" mozallowfullscreen=\"\" src=\"https:\/\/player.vimeo.com\/video\/187361444\" webkitallowfullscreen=\"\" width=\"640\"\u003E\u003C\/iframe\u003E \u003Ca href=\"https:\/\/vimeo.com\/187361444\"\u003EStack Overflow Preview [ECR]\u003C\/a\u003E\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EOther pointers on this topic (my blog posts unless otherwise noted):\u003C\/span\u003E\u003Cbr \/\u003E\u003Cdiv style=\"color: #444444; font-family: georgia, times, serif; font-size: 19.8px;\"\u003E\u003Cul\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2014\/07\/dont-overflow-stack.html\"\u003EDon't Overflow the Stack blog post\u003C\/a\u003E\u003C\/li\u003E\u003C\/ul\u003E\u003C\/div\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003E\u003C\/span\u003E\u003Cbr \/\u003E\u003Cdiv style=\"background-color: white;\"\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003E\u003Cspan style=\"font-size: 19.8px;\"\u003EOther useful pointers:\u003C\/span\u003E\u003C\/span\u003E\u003Cbr \/\u003E\u003Cul\u003E\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003ENigel Jones \/ Barr Group\u0026nbsp;\u003Ca href=\"http:\/\/www.barrgroup.com\/Embedded-Systems\/How-To\/Prevent-Detect-Stack-Overflow\"\u003EOne hour webinar on stack overflow\u003C\/a\u003E\u003C\/span\u003E\u003C\/li\u003E\u003C\/ul\u003E\u003C\/div\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EFor more about Edge Case Research and how to subscribe to our video training channel, please see\u0026nbsp;\u003C\/span\u003E\u003Ca href=\"http:\/\/betterembsw.blogspot.com\/2016\/10\/training-video-series.html\" style=\"color: #0d8f63; font-family: georgia, times, serif; font-size: 19.8px; text-decoration: none;\"\u003Ethis Blog posting\u003C\/a\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003E.\u003C\/span\u003E\u003C\/div\u003E"
  1262.             },
  1263.             "link": [{
  1264.                 "rel": "replies",
  1265.                 "type": "application/atom+xml",
  1266.                 "href": "http:\/\/betterembsw.blogspot.com\/feeds\/1900055932320880933\/comments\/default",
  1267.                 "title": "Post Comments"
  1268.             }, {
  1269.                 "rel": "replies",
  1270.                 "type": "text/html",
  1271.                 "href": "http:\/\/betterembsw.blogspot.com\/2017\/01\/stack-overflow-tutorial-preview.html#comment-form",
  1272.                 "title": "0 Comments"
  1273.             }, {
  1274.                 "rel": "edit",
  1275.                 "type": "application/atom+xml",
  1276.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/1900055932320880933"
  1277.             }, {
  1278.                 "rel": "self",
  1279.                 "type": "application/atom+xml",
  1280.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/1900055932320880933"
  1281.             }, {
  1282.                 "rel": "alternate",
  1283.                 "type": "text/html",
  1284.                 "href": "http:\/\/betterembsw.blogspot.com\/2017\/01\/stack-overflow-tutorial-preview.html",
  1285.                 "title": "Avoiding Embedded System Stack Overflow (Preview)"
  1286.             }],
  1287.             "author": [{
  1288.                 "name": {
  1289.                     "$t": "Phil Koopman"
  1290.                 },
  1291.                 "uri": {
  1292.                     "$t": "http:\/\/www.blogger.com\/profile\/11849599272360094243"
  1293.                 },
  1294.                 "email": {
  1295.                     "$t": "noreply@blogger.com"
  1296.                 },
  1297.                 "gd$image": {
  1298.                     "rel": "http://schemas.google.com/g/2005#thumbnail",
  1299.                     "width": "32",
  1300.                     "height": "32",
  1301.                     "src": "http:\/\/2.bp.blogspot.com\/-TbApE9iNsGo\/VBSRFWPyjTI\/AAAAAAAAAaA\/8pm4cQrZzro\/s1600\/*"
  1302.                 }
  1303.             }],
  1304.             "thr$total": {
  1305.                 "$t": "0"
  1306.             }
  1307.         }, {
  1308.             "id": {
  1309.                 "$t": "tag:blogger.com,1999:blog-4172950626830217643.post-1837522599456249505"
  1310.             },
  1311.             "published": {
  1312.                 "$t": "2016-12-26T13:00:00.000-05:00"
  1313.             },
  1314.             "updated": {
  1315.                 "$t": "2017-03-11T12:43:23.559-05:00"
  1316.             },
  1317.             "category": [{
  1318.                 "scheme": "http://www.blogger.com/atom/ns#",
  1319.                 "term": "security"
  1320.             }, {
  1321.                 "scheme": "http://www.blogger.com/atom/ns#",
  1322.                 "term": "tutorial"
  1323.             }],
  1324.             "title": {
  1325.                 "type": "text",
  1326.                 "$t": "Embedded System Security Pitfalls Tutorial (Preview)"
  1327.             },
  1328.             "content": {
  1329.                 "type": "html",
  1330.                 "$t": "\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EHere's a summary video on Security Pitfalls. \u0026nbsp;(Hint: \u003Ca href=\"https:\/\/en.wikipedia.org\/wiki\/Security_through_obscurity\"\u003Esecurity via obscurity\u003C\/a\u003E doesn't make you secure!)\u003C\/span\u003E\u003Cbr \/\u003E\u003Cbr style=\"background-color: white; color: #444444; font-family: georgia, times, serif; font-size: 19.8px;\" \/\u003E\u003Ciframe allowfullscreen=\"\" frameborder=\"0\" height=\"360\" mozallowfullscreen=\"\" src=\"https:\/\/player.vimeo.com\/video\/189559058\" style=\"background-color: white;\" webkitallowfullscreen=\"\" width=\"640\"\u003E\u003C\/iframe\u003E\u003Cspan style=\"background-color: white;\"\u003E \u003C\/span\u003E\u003Ca href=\"https:\/\/vimeo.com\/189559058\" style=\"background-color: white;\"\u003ESecurity Pitfalls Preview [ECR]\u003C\/a\u003E\u003Cspan style=\"background-color: white;\"\u003E\u0026nbsp;\u003C\/span\u003E\u003Cbr \/\u003E\u003Cdiv style=\"background-color: white;\"\u003E\u003Cbr \/\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EOther pointers on this topic (my blog posts unless otherwise noted):\u003C\/span\u003E\u003Cbr \/\u003E\u003Cdiv style=\"color: #444444; font-family: georgia, times, serif; font-size: 19.8px;\"\u003E\u003Cul\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2011\/10\/embedded-security-pitfalls.html\"\u003EA list of 16 Embedded Security Pitfalls\u003C\/a\u003E\u003C\/li\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2013\/10\/secrecy-vs-integrity-and-why-encryption.html\"\u003EWhy encryption is often the wrong approach for embedded system security\u003C\/a\u003E\u003C\/li\u003E\u003C\/ul\u003E\u003C\/div\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003E\u003C\/span\u003E\u003Cbr \/\u003E\u003Cdiv style=\"background-color: white;\"\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003E\u003Cspan style=\"font-size: 19.8px;\"\u003EOther useful pointers:\u003C\/span\u003E\u003C\/span\u003E\u003Cbr \/\u003E\u003Cul\u003E\u003Cli\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003E\u003Ca href=\"https:\/\/www.schneier.com\/essays\/archives\/1998\/01\/security_pitfalls_in.html\"\u003EBruce Schneier: Security Pitfalls in Cryptography\u003C\/a\u003E\u003C\/span\u003E\u003C\/li\u003E\u003Cul\u003E\u003Cli\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003E\u003Cspan style=\"font-size: 19.8px;\"\u003E\u003Ca href=\"https:\/\/www.schneier.com\/\"\u003ESchneier on Security\u003C\/a\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/li\u003E\u003C\/ul\u003E\u003C\/ul\u003E\u003C\/div\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EFor more about Edge Case Research and how to subscribe to our video training channel, please see\u0026nbsp;\u003C\/span\u003E\u003Ca href=\"http:\/\/betterembsw.blogspot.com\/2016\/10\/training-video-series.html\" style=\"color: #0d8f63; font-family: georgia, times, serif; font-size: 19.8px; text-decoration: none;\"\u003Ethis Blog posting\u003C\/a\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003E.\u003C\/span\u003E\u003C\/div\u003E"
  1331.             },
  1332.             "link": [{
  1333.                 "rel": "replies",
  1334.                 "type": "application/atom+xml",
  1335.                 "href": "http:\/\/betterembsw.blogspot.com\/feeds\/1837522599456249505\/comments\/default",
  1336.                 "title": "Post Comments"
  1337.             }, {
  1338.                 "rel": "replies",
  1339.                 "type": "text/html",
  1340.                 "href": "http:\/\/betterembsw.blogspot.com\/2016\/12\/embedded-system-security-pitfalls.html#comment-form",
  1341.                 "title": "0 Comments"
  1342.             }, {
  1343.                 "rel": "edit",
  1344.                 "type": "application/atom+xml",
  1345.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/1837522599456249505"
  1346.             }, {
  1347.                 "rel": "self",
  1348.                 "type": "application/atom+xml",
  1349.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/1837522599456249505"
  1350.             }, {
  1351.                 "rel": "alternate",
  1352.                 "type": "text/html",
  1353.                 "href": "http:\/\/betterembsw.blogspot.com\/2016\/12\/embedded-system-security-pitfalls.html",
  1354.                 "title": "Embedded System Security Pitfalls Tutorial (Preview)"
  1355.             }],
  1356.             "author": [{
  1357.                 "name": {
  1358.                     "$t": "Phil Koopman"
  1359.                 },
  1360.                 "uri": {
  1361.                     "$t": "http:\/\/www.blogger.com\/profile\/11849599272360094243"
  1362.                 },
  1363.                 "email": {
  1364.                     "$t": "noreply@blogger.com"
  1365.                 },
  1366.                 "gd$image": {
  1367.                     "rel": "http://schemas.google.com/g/2005#thumbnail",
  1368.                     "width": "32",
  1369.                     "height": "32",
  1370.                     "src": "http:\/\/2.bp.blogspot.com\/-TbApE9iNsGo\/VBSRFWPyjTI\/AAAAAAAAAaA\/8pm4cQrZzro\/s1600\/*"
  1371.                 }
  1372.             }],
  1373.             "thr$total": {
  1374.                 "$t": "0"
  1375.             }
  1376.         }, {
  1377.             "id": {
  1378.                 "$t": "tag:blogger.com,1999:blog-4172950626830217643.post-1013138736671104900"
  1379.             },
  1380.             "published": {
  1381.                 "$t": "2016-12-19T07:00:00.001-05:00"
  1382.             },
  1383.             "updated": {
  1384.                 "$t": "2016-12-21T02:33:23.163-05:00"
  1385.             },
  1386.             "category": [{
  1387.                 "scheme": "http://www.blogger.com/atom/ns#",
  1388.                 "term": "safety"
  1389.             }, {
  1390.                 "scheme": "http://www.blogger.com/atom/ns#",
  1391.                 "term": "self-driving cars"
  1392.             }],
  1393.             "title": {
  1394.                 "type": "text",
  1395.                 "$t": "A Driver Test For Self-Driving Cars Isn't Enough"
  1396.             },
  1397.             "content": {
  1398.                 "type": "html",
  1399.                 "$t": "\u003Cdiv style=\"border: 0px; box-sizing: border-box; font-size: 15px; line-height: 21px; margin-bottom: 15px; padding: 0px;\"\u003EI recently read yet another argument that a driving road test should be enough to certify an autonomous vehicle as safe for driving. In general, the idea was that if it's good enough to put a 16 year old on the road, it should be good enough for a self-driving vehicle. \u0026nbsp;I see this idea enough that it's worth explaining why it it's a \u003Ci\u003Ereally bad\u003C\/i\u003E one.\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\u003Ca href=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/1\/16\/Driver_free_car.jpg\/320px-Driver_free_car.jpg\"\u003E\u003Cimg alt=\" CC SA 3.0\" border=\"0\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/1\/16\/Driver_free_car.jpg\/320px-Driver_free_car.jpg\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\u003Cbr \/\u003E\u003C\/div\u003E\u003Cdiv style=\"border: 0px; box-sizing: border-box; font-size: 15px; line-height: 21px; margin-bottom: 15px; padding: 0px;\"\u003EEven if we were to assume that a self-driving vehicle is no different than a person (which is clearly \u003Ci\u003ENOT\u003C\/i\u003E true), applying the driving test is only half the driver license formula. The other half is the part about \u003Cu\u003E\u003Cb\u003Ebeing 16 years old\u003C\/b\u003E\u003C\/u\u003E. If a 12 year old is proficient at operating a vehicle, we still don't issue a drivers license. In addition to technical skills and book knowledge, we as a society have imposed a maturity requirement in most states of \"being 16.\" It is typical that you don't get an unrestricted license until you're perhaps 18. And even then you're probably not a great driver at any age until you get some experience. But, we won't even let you on the road under adult supervision at 12!\u003C\/div\u003E\u003Cdiv style=\"border: 0px; box-sizing: border-box; font-size: 15px; line-height: 21px; margin-bottom: 15px; padding: 0px;\"\u003EThe maturity requirement is essential. \u0026nbsp;As a driver we're expected to have the maturity to recognize when something isn't right, to avoid dangerous situations, to bring the vehicle to a safe state when something has gone wrong, to avoid operating when the vehicle system (vehicle\u0026nbsp;+ driver) is impaired, to improvise when something weird happens, and to compensate for other drivers who are having a bad day (or are simply suffering from only being 16). Autonomous driving systems might be able to do some of that, or even most of it in the near term. (I would argue that they are especially bad at self-detecting when they don't know what's going on.) But the point is a normal driving test doesn't come close to demonstrating \"maturity\" if we could even define that term in a rigorous, testable way. It's not supposed to -- that's why licenses require both testing and \"being 16.\"\u003C\/div\u003E\u003Cdiv style=\"border: 0px; box-sizing: border-box; font-size: 15px; line-height: 21px; margin-bottom: 15px; padding: 0px;\"\u003ETo be sure, human age is not a perfect correlation to maturity. But as a society we've come to the situation in which this system is working well enough that we're not changing it except for some tweaks every few years for very young and very old drivers who have historically higher mishap rates. But the big point is if a 12 year old demonstrates they are a whiz at vehicle operation and traffic rules, they still don't get a license. \u0026nbsp;In fact, they don't even get permission to operate on a public road with adult supervision (i.e., no learners permit at 12 in any US state that I know of.) \u0026nbsp;So why does it make sense to use a human driving test analogy to give a driver license, or even a learner permit, to an autonomous vehicle that was designed in the last few months? \u0026nbsp;Where's the maturity?\u003C\/div\u003E\u003Cdiv style=\"border: 0px; box-sizing: border-box; font-size: 15px; line-height: 21px; margin-bottom: 15px; padding: 0px;\"\u003EAutonomy advocates argue that encapsulating skill and fleet-wide learning from diverse situations could help cut down the per-driver learning curve. And it could reduce the frequency of poor choices such as impaired driving and distracted driving. If properly implemented, this could all work well and could improve driving safety -- especially for drivers who are prone to impaired and distracted driving. But while it's plausible to argue that autonomous vehicles won't make stupid choices about driving impaired, that is not at all the same thing as saying that they will be mature drivers who can handle unexpected situations and in general display good judgment comparable to a typical, non-impaired human driver. Much of safe driving is not about technical skill, but rather amounts to driving judgment maturity. In other words, saying that autonomous vehicles won't make stupid mistakes does not \u003Ci\u003Eautomatically\u003C\/i\u003E make them better than human drivers. \u0026nbsp;\u003C\/div\u003E\u003Cdiv style=\"border: 0px; box-sizing: border-box; font-size: 15px; line-height: 21px; margin-bottom: 15px; padding: 0px;\"\u003EI'd want to       at least see an argument of technological maturity as a gate       before even getting to a driving skills test. In other words, I want an argument that the car is the equivalent of \"being 16\" before we even issue the learner permit, let alone the driver license. Suggesting that a driving test is all it takes to put a vehicle on the road means: building a mind-boggling complex software system       with technology \u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2016\/04\/challenges-in-autonomous-vehicle.html\"\u003Ewe really don't understand how to validate\u003C\/a\u003E, doing an       abbreviated acceptance test of basic skills (a few minutes on the       road), and then deciding it's fine to put in charge of several       thousand pounds of metal, glass, and a human cargo as it hurtles       down the highway. (Not to mention the innocent bystanders it puts       at risk.)\u003C\/div\u003E\u003Cdiv style=\"border: 0px; box-sizing: border-box; line-height: 21px; margin-bottom: 15px; padding: 0px;\"\u003E\u003Cspan style=\"font-size: 15px;\"\u003EThis is a bad idea for any software. \u0026nbsp;We know from history that a functional acceptance test doesn't prove something is safe (at most it can prove it is unsafe if a mishap occurs during the test). \u0026nbsp;Not crashing during a driver exam is to be sure an impressive technical achievement, but on its own it's not the same as being safe! \u0026nbsp;\u003C\/span\u003E\u003Cspan style=\"font-size: 15px;\"\u003ESimple acceptance testing as the gatekeeper for\u0026nbsp;\u003C\/span\u003E\u003Cspan style=\"font-size: 15px;\"\u003Eautonomous vehicles is an even worse idea. For other types of software we have found that in practice that you can't understand software quality for life-critical systems without also considering the rigor of the engineering process. Think of good engineering process as a proxy for \"being 16 years old.\" It's the same for self-driving cars.\u0026nbsp;\u003C\/span\u003E\u003C\/div\u003E\u003Cdiv style=\"border: 0px; box-sizing: border-box; line-height: 21px; margin-bottom: 15px; padding: 0px;\"\u003E\u003Cspan style=\"font-size: 15px;\"\u003E(BTW, \"life-critical\" doesn't mean perfect. It means designed with sufficient engineering rigor to be suitable for its intended criticality. See ISO 26262 or your favorite software safety standard, which is currently NOT required by the government for autonomous vehicles, but should be.)\u003C\/span\u003E\u003C\/div\u003E\u003Cdiv style=\"border: 0px; box-sizing: border-box; line-height: 21px; margin-bottom: 15px; padding: 0px;\"\u003E\u003Cspan style=\"font-size: 15px;\"\u003EIt should be noted that some think that a few hundred million miles of testing can be a substitute for documenting engineering rigor. That's a different discussion. What this essay is about is saying that a road test -- even an hour long grueling road test -- does not fulfill the operational requirement of \"being 16\" for issuing a driving license under our current system. I'd prefer a different, more engineering-based method of certifying self-driving vehicles for use on public roads. But if you really want there to be a driver test, please tell me how you plan to argue the part about demonstrating the vehicle, the design team, or some aspect of the development project has the equivalent 16-year-old maturity. If you can't, you're just waving your hands about vehicle safety.\u003C\/span\u003E\u003C\/div\u003E\u003Cdiv style=\"border: 0px; box-sizing: border-box; line-height: 21px; margin-bottom: 15px; padding: 0px;\"\u003E\u003Cbr \/\u003E\u003C\/div\u003E"
  1400.             },
  1401.             "link": [{
  1402.                 "rel": "replies",
  1403.                 "type": "application/atom+xml",
  1404.                 "href": "http:\/\/betterembsw.blogspot.com\/feeds\/1013138736671104900\/comments\/default",
  1405.                 "title": "Post Comments"
  1406.             }, {
  1407.                 "rel": "replies",
  1408.                 "type": "text/html",
  1409.                 "href": "http:\/\/betterembsw.blogspot.com\/2016\/12\/a-driver-test-for-self-driving-cars.html#comment-form",
  1410.                 "title": "1 Comments"
  1411.             }, {
  1412.                 "rel": "edit",
  1413.                 "type": "application/atom+xml",
  1414.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/1013138736671104900"
  1415.             }, {
  1416.                 "rel": "self",
  1417.                 "type": "application/atom+xml",
  1418.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/1013138736671104900"
  1419.             }, {
  1420.                 "rel": "alternate",
  1421.                 "type": "text/html",
  1422.                 "href": "http:\/\/betterembsw.blogspot.com\/2016\/12\/a-driver-test-for-self-driving-cars.html",
  1423.                 "title": "A Driver Test For Self-Driving Cars Isn't Enough"
  1424.             }],
  1425.             "author": [{
  1426.                 "name": {
  1427.                     "$t": "Phil Koopman"
  1428.                 },
  1429.                 "uri": {
  1430.                     "$t": "http:\/\/www.blogger.com\/profile\/11849599272360094243"
  1431.                 },
  1432.                 "email": {
  1433.                     "$t": "noreply@blogger.com"
  1434.                 },
  1435.                 "gd$image": {
  1436.                     "rel": "http://schemas.google.com/g/2005#thumbnail",
  1437.                     "width": "32",
  1438.                     "height": "32",
  1439.                     "src": "http:\/\/2.bp.blogspot.com\/-TbApE9iNsGo\/VBSRFWPyjTI\/AAAAAAAAAaA\/8pm4cQrZzro\/s1600\/*"
  1440.                 }
  1441.             }],
  1442.             "thr$total": {
  1443.                 "$t": "1"
  1444.             }
  1445.         }, {
  1446.             "id": {
  1447.                 "$t": "tag:blogger.com,1999:blog-4172950626830217643.post-931636918718428881"
  1448.             },
  1449.             "published": {
  1450.                 "$t": "2016-12-11T11:06:00.000-05:00"
  1451.             },
  1452.             "updated": {
  1453.                 "$t": "2016-12-15T16:40:22.141-05:00"
  1454.             },
  1455.             "category": [{
  1456.                 "scheme": "http://www.blogger.com/atom/ns#",
  1457.                 "term": "safety"
  1458.             }, {
  1459.                 "scheme": "http://www.blogger.com/atom/ns#",
  1460.                 "term": "time keeping"
  1461.             }],
  1462.             "title": {
  1463.                 "type": "text",
  1464.                 "$t": "Better Reboot Your Boeing 787 Every Three Weeks"
  1465.             },
  1466.             "content": {
  1467.                 "type": "html",
  1468.                 "$t": "Crashing after a prolonged up time due to a counter rollover or other problem is a classic mistake in computer software. \u0026nbsp;And, it just bit the Boeing 787. \u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2015\/05\/counter-rollover-bites-boeing-787.html\"\u003EAgain\u003C\/a\u003E.\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Cb\u003E\u003Cu\u003EThe Problem:\u003C\/u\u003E\u003C\/b\u003E\u003Cbr \/\u003E\u003Cbr \/\u003EThe Boeing 787 aircraft has three Flight Control Modules (FCMs) that are the subject of a new \u003Ca href=\"http:\/\/rgl.faa.gov\/Regulatory_and_Guidance_Library\/rgad.nsf\/0\/828bbc426b0667298625807d00585f86\/$FILE\/2016-24-09.pdf\"\u003EFAA Airworthiness Directive\u003C\/a\u003E. \u0026nbsp;Based on that sentence alone, you want to make sure whatever that involves gets fixed before you fly on a 787!\u003Cbr \/\u003E\u003Cbr \/\u003EThe FAA says there is \"a report\" that all three FCMs can fail at the same time 22 days after they have been rebooted. \u0026nbsp;If you don't reboot the FCMs the FAA says this \"could result in flight control surfaces not moving in response to flight crew inputs for a short time and consequent temporary loss of controllability.\" \u0026nbsp;This is FAA-speak for the airplane could crash. The're telling airlines to reboot the plane every 21 days to avoid this. Hope nobody forgets to do that! (In fairness, I understand it is likely that most planes get rebooted more often than this anyway. But this is not something you want to leave to chance.)\u003Cbr \/\u003E\u003Cbr \/\u003EAt this point we can only guess at the cause, but the usual guess is that it is a timer overflow problem. Let's hypothesize a 32-bit signed integer is counting the passing of time in milliseconds. \u0026nbsp;So a value of 32700 in that counter is 32.700 seconds.\u003Cbr \/\u003E\u003Cbr \/\u003EHow long until it overflows 31 bits of counting into the 32nd bit, which is the sign bit?\u003Cbr \/\u003E\u003Cbr \/\u003E0x7FFFFFFF =\u0026nbsp;2147483647 ==\u0026gt;\u0026nbsp;2147483.647 seconds\u003Cbr \/\u003E2147483.647 seconds * (1 min\/60 sec) (1 hr\/60 min)(1 day\/24 hr) = 24.9 days\u003Cbr \/\u003E\u003Cbr \/\u003EHmm, a bit longer than the 22 days the FAA reports. \u0026nbsp;Some time spent playing with various multipliers didn't seem to give a likely candidate. \u0026nbsp;Possible factors if it is a timer rollover would include fixed point math (e.g., time keeping in 256ths of a second) or scaling from a 400 Hz aircraft AC frequency. Or there could be some divided-down crystal oscillator frequency on the FCM that is involved.\u003Cbr \/\u003E\u003Cbr \/\u003EOr, it could be something completely different. \u0026nbsp;Maybe there is memory that records operating parameters periodically and the system crashes when that fills up that memory (for example, logs that get downloaded every maintenance interval, with an expectation that the maintenance interval is more like a few days than a few weeks).\u003Cbr \/\u003E\u003Cbr \/\u003EFor now the cause is a bit of a mystery to us. \u0026nbsp;I'll bet the FCM engineers have a pretty good idea at this point. No doubt they'll issue a fix as fast as they can get the FAA to review it.\u003Cbr \/\u003E\u003Cbr \/\u003EBut the big news is that for the second time, the FAA is telling is telling the\u0026nbsp;\u003Cu\u003Eairlines they have to do a maintenance reboot of their planes. \u003C\/u\u003E\u0026nbsp;Last time it was every 248 days. This time it's every 21 days. \u003Cbr \/\u003E\u003Cbr \/\u003EIt's bad enough that they have to reboot the infotainment systems once in a while. \u0026nbsp;For flight controls, this is not good news. This is the kind of problem that should be caught in design reviews. \u0026nbsp;Always think about what happens if any counter, timer, or data structure overflows.\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Cb\u003E\u003Cu\u003EOther Examples:\u003C\/u\u003E\u003C\/b\u003E\u003Cbr \/\u003E\u003Cb\u003E\u003Cu\u003E\u003Cbr \/\u003E\u003C\/u\u003E\u003C\/b\u003EThis is not the first time a problem with long-running software has happened beyond the usual memory leaks in everyday applications. \u0026nbsp;Some examples are:\u003Cbr \/\u003E\u003Cbr \/\u003ETimer rollover bugs:\u003Cbr \/\u003E\u003Cul\u003E\u003Cli\u003EB787 needs to be rebooted every 248 days due to a likely timer overflow bug [\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2015\/05\/counter-rollover-bites-boeing-787.html\"\u003EBlog\u003C\/a\u003E][\u003Ca href=\"http:\/\/www.nytimes.com\/2015\/05\/01\/business\/faa-orders-fix-for-possible-power-loss-in-boeing-787.html\"\u003ENY Times\u003C\/a\u003E] [\u003Ca href=\"http:\/\/rgl.faa.gov\/Regulatory_and_Guidance_Library\/rgad.nsf\/0\/584c7ee3b270fa3086257e38004d0f3e\/$FILE\/2015-09-07.pdf\"\u003EFAA\u003C\/a\u003E]\u003C\/li\u003E\u003Cli\u003EAir Traffic control loses contact with 400 aircraft due to a 32-bit time rollover in 2004 [\u003Ca href=\"http:\/\/spectrum.ieee.org\/aerospace\/aviation\/lost-radio-contact-leaves-pilots-on-their-own\"\u003EIEEE Spectrum\u003C\/a\u003E]\u003C\/li\u003E\u003Cli\u003EIBM: Interface adapters hang after 497 days of uptime [\u003Ca href=\"http:\/\/www-01.ibm.com\/support\/docview.wss?uid=ssg1S1004828\"\u003EIBM\u003C\/a\u003E]\u003C\/li\u003E\u003Cli\u003EWindows 95: hang after 49.7 days without reboot, counting in milliseconds [\u003Ca href=\"https:\/\/support.microsoft.com\/en-us\/kb\/216641\"\u003EMicrosoft\u003C\/a\u003E] \u0026nbsp;(I met the engineers who found that one. And congratulated them on the significant feat of actually getting Windows 95 to run that long without crashing for some other reason!)\u003C\/li\u003E\u003C\/ul\u003E\u003Cdiv\u003EThere are also plenty of date roll-over bugs:\u003C\/div\u003E\u003Cul\u003E\u003Cli\u003ENASA Deep Impact Comet Mission terminated unexpectedly when at 2**32 seconds after Jan 1, 2000 (a time rollover bug). [\u003Ca href=\"https:\/\/www.computer.org\/csdl\/mags\/so\/2015\/06\/mso2015060024.pdf\"\u003EIEEE Software\u003C\/a\u003E]\u003C\/li\u003E\u003Cli\u003EY2K: on 1 January 2000 (overflow of 2-digit year from 99 to 00) \u0026nbsp; [\u003Ca href=\"http:\/\/en.wikipedia.org\/wiki\/Year_2000_problem\"\u003EWikipedia\u003C\/a\u003E]\u003C\/li\u003E\u003Cli\u003EGPS: 1024 week rollover on 22 August 1999 [\u003Ca href=\"http:\/\/www.navcen.uscg.gov\/?pageName=gpsweek\"\u003EUSCG\u003C\/a\u003E]\u003C\/li\u003E\u003Cli\u003EYear 2038: Unix time will roll over on 19 January 2038 [\u003Ca href=\"http:\/\/en.wikipedia.org\/wiki\/Year_2038_problem\"\u003EWikipedia\u003C\/a\u003E]\u003C\/li\u003E\u003C\/ul\u003EThere are also somewhat related capacity overflow issues such\u003Cbr \/\u003E\u003Cul\u003E\u003Cli\u003E911 outage caused by database record limit [\u003Ca href=\"https:\/\/www.washingtonpost.com\/news\/the-switch\/wp\/2014\/10\/20\/how-a-dumb-software-glitch-kept-6600-calls-from-getting-to-911\/\"\u003EWashington Post\u003C\/a\u003E]\u003C\/li\u003E\u003Cli\u003E\u003Ca href=\"http:\/\/en.wikipedia.org\/wiki\/Border_Gateway_Protocol#Routing_table_growth\"\u003E512K day for IPv4 routers\u003C\/a\u003E\u003C\/li\u003E\u003Cli\u003ELightsail spacecraft dies when log exceeds 32 MB [\u003Ca href=\"http:\/\/www.space.com\/29502-lightsail-solar-sail-software-glitch.html\"\u003ESpace.com\u003C\/a\u003E]\u0026nbsp;\u003C\/li\u003E\u003C\/ul\u003EAnd floating-point roundoff issues (thanks to Dan for reminding me of this one):\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Cul\u003E\u003Cli\u003EPatriot Missile mishap after operating for 100 hours without a maintenance reboot [\u003Ca href=\"http:\/\/www.gao.gov\/products\/IMTEC-92-26\"\u003EGAO\u003C\/a\u003E]\u003C\/li\u003E\u003C\/ul\u003E\u003Cbr \/\u003EIf you want to dig further, there is a \"zoo\" of related problems on Wikipedia: \u0026nbsp;\"\u003Ca href=\"http:\/\/en.wikipedia.org\/wiki\/Time_formatting_and_storage_bugs\"\u003ETime formatting and storage bugs\u003C\/a\u003E\"\u003Cbr \/\u003E\u003Cbr \/\u003E"
  1469.             },
  1470.             "link": [{
  1471.                 "rel": "replies",
  1472.                 "type": "application/atom+xml",
  1473.                 "href": "http:\/\/betterembsw.blogspot.com\/feeds\/931636918718428881\/comments\/default",
  1474.                 "title": "Post Comments"
  1475.             }, {
  1476.                 "rel": "replies",
  1477.                 "type": "text/html",
  1478.                 "href": "http:\/\/betterembsw.blogspot.com\/2016\/12\/better-reboot-your-boeing-787-every.html#comment-form",
  1479.                 "title": "1 Comments"
  1480.             }, {
  1481.                 "rel": "edit",
  1482.                 "type": "application/atom+xml",
  1483.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/931636918718428881"
  1484.             }, {
  1485.                 "rel": "self",
  1486.                 "type": "application/atom+xml",
  1487.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/931636918718428881"
  1488.             }, {
  1489.                 "rel": "alternate",
  1490.                 "type": "text/html",
  1491.                 "href": "http:\/\/betterembsw.blogspot.com\/2016\/12\/better-reboot-your-boeing-787-every.html",
  1492.                 "title": "Better Reboot Your Boeing 787 Every Three Weeks"
  1493.             }],
  1494.             "author": [{
  1495.                 "name": {
  1496.                     "$t": "Phil Koopman"
  1497.                 },
  1498.                 "uri": {
  1499.                     "$t": "http:\/\/www.blogger.com\/profile\/11849599272360094243"
  1500.                 },
  1501.                 "email": {
  1502.                     "$t": "noreply@blogger.com"
  1503.                 },
  1504.                 "gd$image": {
  1505.                     "rel": "http://schemas.google.com/g/2005#thumbnail",
  1506.                     "width": "32",
  1507.                     "height": "32",
  1508.                     "src": "http:\/\/2.bp.blogspot.com\/-TbApE9iNsGo\/VBSRFWPyjTI\/AAAAAAAAAaA\/8pm4cQrZzro\/s1600\/*"
  1509.                 }
  1510.             }],
  1511.             "thr$total": {
  1512.                 "$t": "1"
  1513.             }
  1514.         }, {
  1515.             "id": {
  1516.                 "$t": "tag:blogger.com,1999:blog-4172950626830217643.post-4468723522826591629"
  1517.             },
  1518.             "published": {
  1519.                 "$t": "2016-12-05T07:00:00.000-05:00"
  1520.             },
  1521.             "updated": {
  1522.                 "$t": "2017-03-11T12:43:37.853-05:00"
  1523.             },
  1524.             "category": [{
  1525.                 "scheme": "http://www.blogger.com/atom/ns#",
  1526.                 "term": "coding style"
  1527.             }],
  1528.             "title": {
  1529.                 "type": "text",
  1530.                 "$t": "Understandable Code (Coding Style for Humans) (Preview)"
  1531.             },
  1532.             "content": {
  1533.                 "type": "html",
  1534.                 "$t": "\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EHere's a summary video on Human-Understandable Code (Code Readability) which is half of the topic of coding style.\u003C\/span\u003E\u003Cbr \/\u003E\u003Ciframe allowfullscreen=\"\" frameborder=\"0\" height=\"360\" mozallowfullscreen=\"\" src=\"https:\/\/player.vimeo.com\/video\/186064582\" style=\"background-color: white; color: #444444; font-family: georgia, times, serif; font-size: 19.8px;\" webkitallowfullscreen=\"\" width=\"640\"\u003E\u003C\/iframe\u003E\u003Cbr \/\u003E\u003Cdiv style=\"background-color: white;\"\u003E\u003Ca href=\"https:\/\/vimeo.com\/186064582\"\u003ECode Style: Readability Preview [ECR]\u003C\/a\u003E\u0026nbsp;\u003C\/div\u003E\u003Cdiv style=\"background-color: white;\"\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003E\u003Cspan style=\"font-size: 19.8px;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/div\u003E\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EOther pointers on this topic (my blog posts unless otherwise noted):\u003C\/span\u003E\u003Cbr \/\u003E\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003E\u003C\/span\u003E\u003Cbr \/\u003E\u003Cdiv style=\"background-color: white; color: #444444; font-family: georgia, times, serif; font-size: 19.8px;\"\u003E\u003Cul\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2014\/11\/not-getting-software-wrong.html\"\u003ENot getting software wrong\u003C\/a\u003E\u0026nbsp;is the point of coding style\u003C\/li\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2014\/08\/coding-style-guidelines-and-misra-c.html\"\u003ECoding style and MISRA C\u003C\/a\u003E\u003C\/li\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2014\/06\/ensure-code-is-modular.html\"\u003EEnsuring code is modular\u003C\/a\u003E\u003C\/li\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/search\/label\/coding%20style\"\u003EOther posts on coding style\u003C\/a\u003E\u003C\/li\u003E\u003C\/ul\u003E\u003Cul\u003E\u003Cli\u003E\u003Ca href=\"http:\/\/www.barrgroup.com\/Embedded-Systems\/Books\/Embedded-C-Coding-Standard\"\u003EBarr Group Embedded C coding standard (on-line version is free)\u003C\/a\u003E\u003C\/li\u003E\u003Cli\u003EJack Ganssle's coding standard (\u003Ca href=\"http:\/\/www.ganssle.com\/misc\/fsm.doc\"\u003EMS Word download\u003C\/a\u003E)\u003C\/li\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/en.wikipedia.org\/wiki\/Coding_conventions#Coding_conventions_for_languages\"\u003EWikipedia list of coding conventions for various languages\u003C\/a\u003E\u003C\/li\u003E\u003C\/ul\u003E\u003Cdiv\u003E\u003Cbr \/\u003E\u003C\/div\u003E\u003C\/div\u003E\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EFor more about Edge Case Research and how to subscribe to our video training channel, please see\u0026nbsp;\u003C\/span\u003E\u003Ca href=\"http:\/\/betterembsw.blogspot.com\/2016\/10\/training-video-series.html\" style=\"background-color: white; color: #0d8f63; font-family: georgia, times, serif; font-size: 19.8px; text-decoration: none;\"\u003Ethis Blog posting\u003C\/a\u003E\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003E.\u003C\/span\u003E"
  1535.             },
  1536.             "link": [{
  1537.                 "rel": "replies",
  1538.                 "type": "application/atom+xml",
  1539.                 "href": "http:\/\/betterembsw.blogspot.com\/feeds\/4468723522826591629\/comments\/default",
  1540.                 "title": "Post Comments"
  1541.             }, {
  1542.                 "rel": "replies",
  1543.                 "type": "text/html",
  1544.                 "href": "http:\/\/betterembsw.blogspot.com\/2016\/12\/understandable-code-coding-style-for.html#comment-form",
  1545.                 "title": "1 Comments"
  1546.             }, {
  1547.                 "rel": "edit",
  1548.                 "type": "application/atom+xml",
  1549.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/4468723522826591629"
  1550.             }, {
  1551.                 "rel": "self",
  1552.                 "type": "application/atom+xml",
  1553.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/4468723522826591629"
  1554.             }, {
  1555.                 "rel": "alternate",
  1556.                 "type": "text/html",
  1557.                 "href": "http:\/\/betterembsw.blogspot.com\/2016\/12\/understandable-code-coding-style-for.html",
  1558.                 "title": "Understandable Code (Coding Style for Humans) (Preview)"
  1559.             }],
  1560.             "author": [{
  1561.                 "name": {
  1562.                     "$t": "Phil Koopman"
  1563.                 },
  1564.                 "uri": {
  1565.                     "$t": "http:\/\/www.blogger.com\/profile\/11849599272360094243"
  1566.                 },
  1567.                 "email": {
  1568.                     "$t": "noreply@blogger.com"
  1569.                 },
  1570.                 "gd$image": {
  1571.                     "rel": "http://schemas.google.com/g/2005#thumbnail",
  1572.                     "width": "32",
  1573.                     "height": "32",
  1574.                     "src": "http:\/\/2.bp.blogspot.com\/-TbApE9iNsGo\/VBSRFWPyjTI\/AAAAAAAAAaA\/8pm4cQrZzro\/s1600\/*"
  1575.                 }
  1576.             }],
  1577.             "thr$total": {
  1578.                 "$t": "1"
  1579.             }
  1580.         }, {
  1581.             "id": {
  1582.                 "$t": "tag:blogger.com,1999:blog-4172950626830217643.post-2323829936057605385"
  1583.             },
  1584.             "published": {
  1585.                 "$t": "2016-11-28T07:00:00.000-05:00"
  1586.             },
  1587.             "updated": {
  1588.                 "$t": "2017-03-11T12:43:51.009-05:00"
  1589.             },
  1590.             "category": [{
  1591.                 "scheme": "http://www.blogger.com/atom/ns#",
  1592.                 "term": "safety"
  1593.             }],
  1594.             "title": {
  1595.                 "type": "text",
  1596.                 "$t": "Single Point of Failure Overview (Preview)"
  1597.             },
  1598.             "content": {
  1599.                 "type": "html",
  1600.                 "$t": "\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EHere's a summary video on Single Points of Failure for safety- and mission-critical systems.\u003C\/span\u003E\u003Cbr \/\u003E\u003Cbr style=\"background-color: white; color: #444444; font-family: Georgia, Times, serif; font-size: 19.8px;\" \/\u003E\u003Ciframe allowfullscreen=\"\" frameborder=\"0\" height=\"360\" mozallowfullscreen=\"\" src=\"https:\/\/player.vimeo.com\/video\/191385285\" style=\"background-color: white;\" webkitallowfullscreen=\"\" width=\"640\"\u003E\u003C\/iframe\u003E\u003Cbr \/\u003E\u003Cdiv style=\"background-color: white;\"\u003E\u003Cdiv\u003E\u003Ca href=\"https:\/\/vimeo.com\/191385285\"\u003ESingle Point of Failure Preview [ECR]\u003C\/a\u003E\u0026nbsp;\u003C\/div\u003E\u003C\/div\u003E\u003Cdiv style=\"background-color: white;\"\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003E\u003Cspan style=\"font-size: 19.8px;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/div\u003E\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EOther pointers on this topic (my blog posts):\u003C\/span\u003E\u003Cbr \/\u003E\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003E\u003C\/span\u003E\u003Cbr \/\u003E\u003Cdiv style=\"background-color: white; color: #444444; font-family: georgia, times, serif; font-size: 19.8px;\"\u003E\u003Cul\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2014\/03\/safety-requires-no-single-points-of.html\"\u003EIn-depth discussion of single points of failure\u003C\/a\u003E\u003C\/li\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2014\/04\/self-monitoring-and-single-points-of.html\"\u003EWhy self-monitoring doesn't mitigate single points of failure\u003C\/a\u003E\u003C\/li\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2014\/03\/how-often-will-random-faults-kill.html\"\u003EExample probability for why this matters so much\u003C\/a\u003E\u003C\/li\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2014\/04\/redundant-input-processing-for-safety.html\"\u003EHow redundant input processing should work\u003C\/a\u003E\u003C\/li\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2014\/04\/monitor-actuator-pair-design-pattern.html\"\u003EDoer\/checker (monitor\/actuator) pattern\u003C\/a\u003E\u003C\/li\u003E\u003C\/ul\u003E\u003C\/div\u003E\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EFor more about Edge Case Research and how to subscribe to our video training channel, please see\u0026nbsp;\u003C\/span\u003E\u003Ca href=\"http:\/\/betterembsw.blogspot.com\/2016\/10\/training-video-series.html\" style=\"background-color: white; color: #0d8f63; font-family: Georgia, Times, serif; font-size: 19.8px; text-decoration: none;\"\u003Ethis Blog posting\u003C\/a\u003E\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003E.\u003C\/span\u003E"
  1601.             },
  1602.             "link": [{
  1603.                 "rel": "replies",
  1604.                 "type": "application/atom+xml",
  1605.                 "href": "http:\/\/betterembsw.blogspot.com\/feeds\/2323829936057605385\/comments\/default",
  1606.                 "title": "Post Comments"
  1607.             }, {
  1608.                 "rel": "replies",
  1609.                 "type": "text/html",
  1610.                 "href": "http:\/\/betterembsw.blogspot.com\/2016\/11\/single-point-of-failure-overview-video.html#comment-form",
  1611.                 "title": "0 Comments"
  1612.             }, {
  1613.                 "rel": "edit",
  1614.                 "type": "application/atom+xml",
  1615.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/2323829936057605385"
  1616.             }, {
  1617.                 "rel": "self",
  1618.                 "type": "application/atom+xml",
  1619.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/2323829936057605385"
  1620.             }, {
  1621.                 "rel": "alternate",
  1622.                 "type": "text/html",
  1623.                 "href": "http:\/\/betterembsw.blogspot.com\/2016\/11\/single-point-of-failure-overview-video.html",
  1624.                 "title": "Single Point of Failure Overview (Preview)"
  1625.             }],
  1626.             "author": [{
  1627.                 "name": {
  1628.                     "$t": "Phil Koopman"
  1629.                 },
  1630.                 "uri": {
  1631.                     "$t": "http:\/\/www.blogger.com\/profile\/11849599272360094243"
  1632.                 },
  1633.                 "email": {
  1634.                     "$t": "noreply@blogger.com"
  1635.                 },
  1636.                 "gd$image": {
  1637.                     "rel": "http://schemas.google.com/g/2005#thumbnail",
  1638.                     "width": "32",
  1639.                     "height": "32",
  1640.                     "src": "http:\/\/2.bp.blogspot.com\/-TbApE9iNsGo\/VBSRFWPyjTI\/AAAAAAAAAaA\/8pm4cQrZzro\/s1600\/*"
  1641.                 }
  1642.             }],
  1643.             "thr$total": {
  1644.                 "$t": "0"
  1645.             }
  1646.         }, {
  1647.             "id": {
  1648.                 "$t": "tag:blogger.com,1999:blog-4172950626830217643.post-4795585138397635988"
  1649.             },
  1650.             "published": {
  1651.                 "$t": "2016-11-21T07:00:00.001-05:00"
  1652.             },
  1653.             "updated": {
  1654.                 "$t": "2017-03-11T12:44:08.981-05:00"
  1655.             },
  1656.             "category": [{
  1657.                 "scheme": "http://www.blogger.com/atom/ns#",
  1658.                 "term": "safety"
  1659.             }, {
  1660.                 "scheme": "http://www.blogger.com/atom/ns#",
  1661.                 "term": "security"
  1662.             }],
  1663.             "title": {
  1664.                 "type": "text",
  1665.                 "$t": "Embedded Software Security, Safety \u0026 Quality (Preview)"
  1666.             },
  1667.             "content": {
  1668.                 "type": "html",
  1669.                 "$t": "\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EHere's a summary video on Embedded Software Security, Safety \u0026amp; Quality.\u003C\/span\u003E\u003Cbr \/\u003E\u003Cbr style=\"background-color: white; color: #444444; font-family: georgia, times, serif; font-size: 19.8px;\" \/\u003E\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EOther pointers on this topic (my blog posts):\u003C\/span\u003E\u003Cbr \/\u003E\u003Cdiv style=\"background-color: white;\"\u003E\u003Cul style=\"color: #444444; font-family: georgia, times, serif; font-size: 19.8px;\"\u003E\u003Cli\u003ESlides: \"\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2016\/11\/embedded-system-software-quality-why-is.html\" style=\"font-size: 19.8px;\"\u003EEmbedded System Software Quality: Why is it so often terrible? What can we do about it?\u003C\/a\u003E\u003Cspan style=\"font-size: 19.8px;\"\u003E\"\u003C\/span\u003E\u003C\/li\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2014\/10\/safety-culture.html\"\u003ESafety Culture\u003C\/a\u003E\u003C\/li\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2016\/10\/op-ed-about-autonomous-vehicle-safety.html\"\u003EAutonomous vehicle safety\u003C\/a\u003E\u003C\/li\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/search\/label\/safety\"\u003EGeneral list of posts on safety\u003C\/a\u003E\u003C\/li\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/search\/label\/security\"\u003EGeneral list of posts on security\u003C\/a\u003E\u003C\/li\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2016\/05\/top-5-embedded-software-problem-areas.html\"\u003ETop Embedded Software Problem Areas\u003C\/a\u003E\u003C\/li\u003E\u003C\/ul\u003E\u003Cdiv\u003E\u003Cdiv\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003E\u003Cspan style=\"font-size: 19.8px;\"\u003E\u003Ciframe allowfullscreen=\"\" frameborder=\"0\" height=\"360\" mozallowfullscreen=\"\" src=\"https:\/\/player.vimeo.com\/video\/181406537\" webkitallowfullscreen=\"\" width=\"640\"\u003E\u003C\/iframe\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/div\u003E\u003Cdiv\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003E\u003Cspan style=\"font-size: 19.8px;\"\u003E\u003Ca href=\"https:\/\/vimeo.com\/181406537\"\u003EPREVIEW: Embedded Software Quality Safety and Security [ECR]\u003C\/a\u003E\u0026nbsp;\u003C\/span\u003E\u003C\/span\u003E\u003C\/div\u003E\u003C\/div\u003E\u003C\/div\u003E\u003Cdiv style=\"background-color: white;\"\u003E\u003Cspan style=\"color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif;\"\u003E\u003Cspan style=\"font-size: 19.8px;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/div\u003E\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EFor more about Edge Case Research and how to subscribe to our video training channel, please see\u0026nbsp;\u003C\/span\u003E\u003Ca href=\"http:\/\/betterembsw.blogspot.com\/2016\/10\/training-video-series.html\" style=\"background-color: white; color: #0d8f63; font-family: georgia, times, serif; font-size: 19.8px; text-decoration: none;\"\u003Ethis Blog posting\u003C\/a\u003E\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003E.\u003C\/span\u003E"
  1670.             },
  1671.             "link": [{
  1672.                 "rel": "replies",
  1673.                 "type": "application/atom+xml",
  1674.                 "href": "http:\/\/betterembsw.blogspot.com\/feeds\/4795585138397635988\/comments\/default",
  1675.                 "title": "Post Comments"
  1676.             }, {
  1677.                 "rel": "replies",
  1678.                 "type": "text/html",
  1679.                 "href": "http:\/\/betterembsw.blogspot.com\/2016\/11\/embedded-software-security-safety.html#comment-form",
  1680.                 "title": "0 Comments"
  1681.             }, {
  1682.                 "rel": "edit",
  1683.                 "type": "application/atom+xml",
  1684.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/4795585138397635988"
  1685.             }, {
  1686.                 "rel": "self",
  1687.                 "type": "application/atom+xml",
  1688.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/4795585138397635988"
  1689.             }, {
  1690.                 "rel": "alternate",
  1691.                 "type": "text/html",
  1692.                 "href": "http:\/\/betterembsw.blogspot.com\/2016\/11\/embedded-software-security-safety.html",
  1693.                 "title": "Embedded Software Security, Safety \u0026 Quality (Preview)"
  1694.             }],
  1695.             "author": [{
  1696.                 "name": {
  1697.                     "$t": "Phil Koopman"
  1698.                 },
  1699.                 "uri": {
  1700.                     "$t": "http:\/\/www.blogger.com\/profile\/11849599272360094243"
  1701.                 },
  1702.                 "email": {
  1703.                     "$t": "noreply@blogger.com"
  1704.                 },
  1705.                 "gd$image": {
  1706.                     "rel": "http://schemas.google.com/g/2005#thumbnail",
  1707.                     "width": "32",
  1708.                     "height": "32",
  1709.                     "src": "http:\/\/2.bp.blogspot.com\/-TbApE9iNsGo\/VBSRFWPyjTI\/AAAAAAAAAaA\/8pm4cQrZzro\/s1600\/*"
  1710.                 }
  1711.             }],
  1712.             "thr$total": {
  1713.                 "$t": "0"
  1714.             }
  1715.         }, {
  1716.             "id": {
  1717.                 "$t": "tag:blogger.com,1999:blog-4172950626830217643.post-2850591983375681322"
  1718.             },
  1719.             "published": {
  1720.                 "$t": "2016-11-14T07:00:00.000-05:00"
  1721.             },
  1722.             "updated": {
  1723.                 "$t": "2017-03-11T12:44:22.297-05:00"
  1724.             },
  1725.             "category": [{
  1726.                 "scheme": "http://www.blogger.com/atom/ns#",
  1727.                 "term": "coding style"
  1728.             }, {
  1729.                 "scheme": "http://www.blogger.com/atom/ns#",
  1730.                 "term": "Edge Case Research"
  1731.             }, {
  1732.                 "scheme": "http://www.blogger.com/atom/ns#",
  1733.                 "term": "globals"
  1734.             }, {
  1735.                 "scheme": "http://www.blogger.com/atom/ns#",
  1736.                 "term": "metrics"
  1737.             }, {
  1738.                 "scheme": "http://www.blogger.com/atom/ns#",
  1739.                 "term": "tutorial"
  1740.             }],
  1741.             "title": {
  1742.                 "type": "text",
  1743.                 "$t": "Spaghetti Code and Complexity Tutorial"
  1744.             },
  1745.             "content": {
  1746.                 "type": "html",
  1747.                 "$t": "Here's a preview video on Spaghetti Code and Cyclomatic Complexity. \u0026nbsp;There is also a full version of this video available for free from the\u0026nbsp;\u003Ca href=\"http:\/\/www.edge-case-research.com\/videos\/\"\u003EEdge Case Research video library\u003C\/a\u003E\u0026nbsp;(see below for details).\u003Cbr \/\u003E\u003Cbr \/\u003ENotes:\u003Cbr \/\u003E\u003Cdiv\u003E\u003Cul\u003E\u003Cli\u003EAlso see my blog posting on avoiding high cyclomatic complexity (\u003Ca href=\"https:\/\/betterembsw.blogspot.com\/2014\/06\/avoid-high-cyclomatic-complexity.html\"\u003EBlog\u003C\/a\u003E)\u003C\/li\u003E\u003Cli\u003EToyota Unintended Acceleration and the Big Bowl of “Spaghetti” Code (\u003Ca href=\"http:\/\/www.safetyresearch.net\/blog\/articles\/toyota-unintended-acceleration-and-big-bowl-%E2%80%9Cspaghetti%E2%80%9D-code\"\u003ESafety Research \u0026amp; Strategies Blog\u003C\/a\u003E)\u003C\/li\u003E\u003C\/ul\u003E\u003C\/div\u003E\u003Cbr \/\u003E\u003Ciframe allowfullscreen=\"\" frameborder=\"0\" height=\"360\" mozallowfullscreen=\"\" src=\"https:\/\/player.vimeo.com\/video\/185737077\" webkitallowfullscreen=\"\" width=\"640\"\u003E\u003C\/iframe\u003E \u003Ca href=\"https:\/\/vimeo.com\/185737077\"\u003ESpaghetti Code Preview [ECR]\u003C\/a\u003E . \u003Cbr \/\u003E\u003Cbr \/\u003E\u003Cdiv\u003E\u003Cbr \/\u003E\u003C\/div\u003E\u003Ca href=\"https:\/\/vimeo.com\/185732981\"\u003EFull tutorial video:\u0026nbsp;https:\/\/vimeo.com\/185732981\u003C\/a\u003E\u003Cbr \/\u003E\u003Cbr \/\u003EFor more about Edge Case Research and how to subscribe to our video training channel, please see\u0026nbsp;\u003Ca href=\"http:\/\/betterembsw.blogspot.com\/2016\/10\/training-video-series.html\"\u003Ethis Blog posting\u003C\/a\u003E.\u003Cbr \/\u003E\u003Cdiv\u003E\u003Cbr \/\u003E\u003Cbr \/\u003E\u003C\/div\u003E"
  1748.             },
  1749.             "link": [{
  1750.                 "rel": "replies",
  1751.                 "type": "application/atom+xml",
  1752.                 "href": "http:\/\/betterembsw.blogspot.com\/feeds\/2850591983375681322\/comments\/default",
  1753.                 "title": "Post Comments"
  1754.             }, {
  1755.                 "rel": "replies",
  1756.                 "type": "text/html",
  1757.                 "href": "http:\/\/betterembsw.blogspot.com\/2016\/11\/spaghetti-code-and-complexity-tutorial.html#comment-form",
  1758.                 "title": "0 Comments"
  1759.             }, {
  1760.                 "rel": "edit",
  1761.                 "type": "application/atom+xml",
  1762.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/2850591983375681322"
  1763.             }, {
  1764.                 "rel": "self",
  1765.                 "type": "application/atom+xml",
  1766.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/2850591983375681322"
  1767.             }, {
  1768.                 "rel": "alternate",
  1769.                 "type": "text/html",
  1770.                 "href": "http:\/\/betterembsw.blogspot.com\/2016\/11\/spaghetti-code-and-complexity-tutorial.html",
  1771.                 "title": "Spaghetti Code and Complexity Tutorial"
  1772.             }],
  1773.             "author": [{
  1774.                 "name": {
  1775.                     "$t": "Phil Koopman"
  1776.                 },
  1777.                 "uri": {
  1778.                     "$t": "http:\/\/www.blogger.com\/profile\/11849599272360094243"
  1779.                 },
  1780.                 "email": {
  1781.                     "$t": "noreply@blogger.com"
  1782.                 },
  1783.                 "gd$image": {
  1784.                     "rel": "http://schemas.google.com/g/2005#thumbnail",
  1785.                     "width": "32",
  1786.                     "height": "32",
  1787.                     "src": "http:\/\/2.bp.blogspot.com\/-TbApE9iNsGo\/VBSRFWPyjTI\/AAAAAAAAAaA\/8pm4cQrZzro\/s1600\/*"
  1788.                 }
  1789.             }],
  1790.             "thr$total": {
  1791.                 "$t": "0"
  1792.             }
  1793.         }, {
  1794.             "id": {
  1795.                 "$t": "tag:blogger.com,1999:blog-4172950626830217643.post-6988064104603423567"
  1796.             },
  1797.             "published": {
  1798.                 "$t": "2016-11-07T07:00:00.000-05:00"
  1799.             },
  1800.             "updated": {
  1801.                 "$t": "2016-11-07T07:00:25.580-05:00"
  1802.             },
  1803.             "category": [{
  1804.                 "scheme": "http://www.blogger.com/atom/ns#",
  1805.                 "term": "management"
  1806.             }],
  1807.             "title": {
  1808.                 "type": "text",
  1809.                 "$t": "Embedded System Software Quality: Why is it so often terrible? What can we do about it?"
  1810.             },
  1811.             "content": {
  1812.                 "type": "html",
  1813.                 "$t": "I had a great time meeting old friends and new folks at \u003Ca href=\"http:\/\/issre.net\/\"\u003EISSRE 2016\u003C\/a\u003E.\u003Cbr \/\u003E\u003Cbr \/\u003EHere are slides from my keynote address:\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Cdiv style=\"text-align: center;\"\u003E\u003Cb\u003EEmbedded System Software Quality:\u003Cbr \/\u003EWhy is it so often terrible? What can we do about it?\u003C\/b\u003E\u003C\/div\u003E\u003Cbr \/\u003EFailures of embedded system software increasingly make the news. Everyday products we rely upon are suffering from safety issues, security issues, and just plain bugs. While perfection is unrealistic, surely we can improve this situation. \u0026nbsp;Two key ideas apply: (1) embedded products often aren’t created by computer specialists, and (2) teaching application domain specialists just how to code is more of a problem than a solution.\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Cul\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/users.ece.cmu.edu\/~koopman\/pubs\/koopman16_issre.pdf\"\u003EOne-page extended abstract\u003C\/a\u003E\u003C\/li\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/users.ece.cmu.edu\/~koopman\/pubs\/issre2016_keynote_slides.pdf\"\u003EPresentation slides\u003C\/a\u003E\u003C\/li\u003E\u003C\/ul\u003E\u003Ciframe allowfullscreen=\"\" frameborder=\"0\" height=\"485\" marginheight=\"0\" marginwidth=\"0\" scrolling=\"no\" src=\"\/\/www.slideshare.net\/slideshow\/embed_code\/key\/tOVG6PUMdSTeRs\" style=\"border-width: 1px; border: 1px solid #ccc; margin-bottom: 5px; max-width: 100%;\" width=\"595\"\u003E \u003C\/iframe\u003E \u003Cbr \/\u003E\u003Cdiv style=\"margin-bottom: 5px;\"\u003E\u003Cstrong\u003E \u003Ca href=\"https:\/\/www.slideshare.net\/edgecaseresearch\/phil-koopmans-issre-2016-keynote\" target=\"_blank\" title=\"Phil Koopman's ISSRE 2016 Keynote\"\u003EPhil Koopman's ISSRE 2016 Keynote\u003C\/a\u003E \u003C\/strong\u003E from \u003Cstrong\u003E\u003Ca href=\"https:\/\/www.slideshare.net\/edgecaseresearch\" target=\"_blank\"\u003Eedgecaseresearch\u003C\/a\u003E\u003C\/strong\u003E \u003C\/div\u003E"
  1814.             },
  1815.             "link": [{
  1816.                 "rel": "replies",
  1817.                 "type": "application/atom+xml",
  1818.                 "href": "http:\/\/betterembsw.blogspot.com\/feeds\/6988064104603423567\/comments\/default",
  1819.                 "title": "Post Comments"
  1820.             }, {
  1821.                 "rel": "replies",
  1822.                 "type": "text/html",
  1823.                 "href": "http:\/\/betterembsw.blogspot.com\/2016\/11\/embedded-system-software-quality-why-is.html#comment-form",
  1824.                 "title": "2 Comments"
  1825.             }, {
  1826.                 "rel": "edit",
  1827.                 "type": "application/atom+xml",
  1828.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/6988064104603423567"
  1829.             }, {
  1830.                 "rel": "self",
  1831.                 "type": "application/atom+xml",
  1832.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/6988064104603423567"
  1833.             }, {
  1834.                 "rel": "alternate",
  1835.                 "type": "text/html",
  1836.                 "href": "http:\/\/betterembsw.blogspot.com\/2016\/11\/embedded-system-software-quality-why-is.html",
  1837.                 "title": "Embedded System Software Quality: Why is it so often terrible? What can we do about it?"
  1838.             }],
  1839.             "author": [{
  1840.                 "name": {
  1841.                     "$t": "Phil Koopman"
  1842.                 },
  1843.                 "uri": {
  1844.                     "$t": "http:\/\/www.blogger.com\/profile\/11849599272360094243"
  1845.                 },
  1846.                 "email": {
  1847.                     "$t": "noreply@blogger.com"
  1848.                 },
  1849.                 "gd$image": {
  1850.                     "rel": "http://schemas.google.com/g/2005#thumbnail",
  1851.                     "width": "32",
  1852.                     "height": "32",
  1853.                     "src": "http:\/\/2.bp.blogspot.com\/-TbApE9iNsGo\/VBSRFWPyjTI\/AAAAAAAAAaA\/8pm4cQrZzro\/s1600\/*"
  1854.                 }
  1855.             }],
  1856.             "thr$total": {
  1857.                 "$t": "2"
  1858.             }
  1859.         }, {
  1860.             "id": {
  1861.                 "$t": "tag:blogger.com,1999:blog-4172950626830217643.post-7827832602525822593"
  1862.             },
  1863.             "published": {
  1864.                 "$t": "2016-10-31T07:00:00.000-04:00"
  1865.             },
  1866.             "updated": {
  1867.                 "$t": "2017-03-11T12:44:37.233-05:00"
  1868.             },
  1869.             "category": [{
  1870.                 "scheme": "http://www.blogger.com/atom/ns#",
  1871.                 "term": "Edge Case Research"
  1872.             }, {
  1873.                 "scheme": "http://www.blogger.com/atom/ns#",
  1874.                 "term": "security"
  1875.             }, {
  1876.                 "scheme": "http://www.blogger.com/atom/ns#",
  1877.                 "term": "tutorial"
  1878.             }],
  1879.             "title": {
  1880.                 "type": "text",
  1881.                 "$t": "Security Plan Tutorial"
  1882.             },
  1883.             "content": {
  1884.                 "type": "html",
  1885.                 "$t": "Here's a preview video on creating a Security Plan. \u0026nbsp;There is also a full version of this video available for free from the\u0026nbsp;\u003Ca href=\"http:\/\/www.edge-case-research.com\/videos\/\"\u003EEdge Case Research video library\u003C\/a\u003E\u0026nbsp;(see below for details).\u003Cbr \/\u003E\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: white; color: #444444; font-family: \u0026quot;georgia\u0026quot; , \u0026quot;times\u0026quot; , serif; font-size: 19.8px;\"\u003EYou might also find these pointers useful:\u003C\/span\u003E\u003Cbr \/\u003E\u003Cdiv style=\"background-color: white; color: #444444; font-family: georgia, times, serif; font-size: 19.8px;\"\u003E\u003Cul\u003E\u003Cli\u003E\u003Ca href=\"https:\/\/cwe.mitre.org\/index.html\"\u003EMITRE Commone Weakness Enumeration (security)\u003C\/a\u003E\u003C\/li\u003E\u003C\/ul\u003E\u003C\/div\u003E\u003Cbr \/\u003E\u003Ciframe allowfullscreen=\"\" frameborder=\"0\" height=\"360\" mozallowfullscreen=\"\" src=\"https:\/\/player.vimeo.com\/video\/185248611\" webkitallowfullscreen=\"\" width=\"640\"\u003E\u003C\/iframe\u003E \u003Ca href=\"https:\/\/vimeo.com\/185248611\"\u003EEmbedded System Security Plan Preview [ECR]\u003C\/a\u003E.\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Cdiv\u003E\u003Cbr \/\u003E\u003C\/div\u003E\u003Ca href=\"https:\/\/vimeo.com\/185255673\"\u003EFull tutorial video:\u0026nbsp;https:\/\/vimeo.com\/185255673\u003C\/a\u003E\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Cdiv\u003EFor more about Edge Case Research and how to subscribe to our video training channel, please see\u0026nbsp;\u003Ca href=\"http:\/\/betterembsw.blogspot.com\/2016\/10\/training-video-series.html\"\u003Ethis Blog posting\u003C\/a\u003E.\u003C\/div\u003E\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Cbr \/\u003E"
  1886.             },
  1887.             "link": [{
  1888.                 "rel": "replies",
  1889.                 "type": "application/atom+xml",
  1890.                 "href": "http:\/\/betterembsw.blogspot.com\/feeds\/7827832602525822593\/comments\/default",
  1891.                 "title": "Post Comments"
  1892.             }, {
  1893.                 "rel": "replies",
  1894.                 "type": "text/html",
  1895.                 "href": "http:\/\/betterembsw.blogspot.com\/2016\/10\/security-plan-tutorial.html#comment-form",
  1896.                 "title": "0 Comments"
  1897.             }, {
  1898.                 "rel": "edit",
  1899.                 "type": "application/atom+xml",
  1900.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/7827832602525822593"
  1901.             }, {
  1902.                 "rel": "self",
  1903.                 "type": "application/atom+xml",
  1904.                 "href": "http:\/\/www.blogger.com\/feeds\/4172950626830217643\/posts\/default\/7827832602525822593"
  1905.             }, {
  1906.                 "rel": "alternate",
  1907.                 "type": "text/html",
  1908.                 "href": "http:\/\/betterembsw.blogspot.com\/2016\/10\/security-plan-tutorial.html",
  1909.                 "title": "Security Plan Tutorial"
  1910.             }],
  1911.             "author": [{
  1912.                 "name": {
  1913.                     "$t": "Phil Koopman"
  1914.                 },
  1915.                 "uri": {
  1916.                     "$t": "http:\/\/www.blogger.com\/profile\/11849599272360094243"
  1917.                 },
  1918.                 "email": {
  1919.                     "$t": "noreply@blogger.com"
  1920.                 },
  1921.                 "gd$image": {
  1922.                     "rel": "http://schemas.google.com/g/2005#thumbnail",
  1923.                     "width": "32",
  1924.                     "height": "32",
  1925.                     "src": "http:\/\/2.bp.blogspot.com\/-TbApE9iNsGo\/VBSRFWPyjTI\/AAAAAAAAAaA\/8pm4cQrZzro\/s1600\/*"
  1926.                 }
  1927.             }],
  1928.             "thr$total": {
  1929.                 "$t": "0"
  1930.             }
  1931.         }]
  1932.     }
  1933. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement