<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6820120367723139643</id><updated>2012-02-16T01:12:31.728-06:00</updated><title type='text'>Worthwhile Projects</title><subtitle type='html'>&lt;strong&gt;&lt;b&gt;Worthwhile Projects
&lt;/b&gt;&lt;/strong&gt;&lt;br&gt;
Essays by Brian McMillin</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bkmcm.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://bkmcm.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Brian McMillin</name><uri>http://www.blogger.com/profile/00996454463461402892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>23</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6820120367723139643.post-1706025841818958290</id><published>2011-09-24T14:14:00.000-05:00</published><updated>2011-09-24T11:42:58.172-05:00</updated><title type='text'>On Inventory Management</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;span style="font-family: Arial;"&gt;Abstract&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Managing the availability of goods is key to the sustainable future of civilization.&amp;nbsp; Making better use of materials and resources, eliminating needless duplication, and improving reuse and recycling can improve the lives of individuals, families and communities.&amp;nbsp; This essay examines the flow and availability of goods from the standpoint of inventory management systems.&amp;nbsp; I give examples of current systems, look at an ideal goal, and propose steps that could lead to both immediate and long-term benefits.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;This essay is a work-in-progress and will be updated periodically.&amp;nbsp; Other&amp;nbsp; related essays concerning image processing and object recognition will be posted as they reach maturity.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span class="status action"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;span style="font-family: Arial;"&gt;Background&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;In my youth, my father had a machine shop and lab in the five-car garage area of our house.&amp;nbsp; We parked the cars in the driveway.&amp;nbsp; As I grew up, I spent much time exploring the boxes, bins, cabinets, shelves and assorted containers, learning about the objects within.&amp;nbsp; I learned to use the tools, built projects and conducted experiments.&amp;nbsp; As an inquisitive nine-year-old, I had examined almost every object and attempted to divine its use.&amp;nbsp; I read the Newark and Grainger catalogs while I fell asleep.&amp;nbsp; I had a strong vocabulary and could describe and name most any tool or part.&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;In particular, I could accurately describe the location of almost any item in the shop.&amp;nbsp; Many items had multiple homes, as duplicates were encouraged and often grouped by project instead of into simple bins.&amp;nbsp; I could clean a work area and put tools, parts and equipment back in their normal places.&amp;nbsp; I could disassemble and reassemble things ranging from toys to lawnmower engines.&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;I was, in effect, an inventory manager with skills superior to any "professional" system in existence today.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Let us examine the features and requirements of inventory management and suggest techniques that might bring the capabilities in the high-tech world up to the level of a small child.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;span style="font-family: Arial;"&gt;Requirements&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Very simply, we must keep track of objects in time and space.&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;We must have some general idea of what we mean by an "object", and ways of recognizing and remembering properties.&amp;nbsp; This implies a data entry system with a method of rapidly assigning properties to objects.&amp;nbsp; These properties may be descriptions from catalogs or data sheets, observed properties such as size or color, and arbitrary manually entered information.&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Tracking, in its simplest form involves only "Get this object from here and put it there" concepts.&amp;nbsp; Manual forms of data entry, and simple scanners might be sufficient as a first step.&amp;nbsp; An automated system would probably observe an area and recognize objects as they enter and leave.&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;We should be able to answer questions like:&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;"Where is the nearest ...?"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;"How many ... do we have?"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;"How long have we had ...?"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;"Where has ... been stored?"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;"Is ... safe to handle?"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;"Does ... need to be right side up?"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;"What does ... attach to?"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;"How does ... need to be stored?"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;"Do we need to order more ... when this is used up?"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;"Is ... more expensive than ...?"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;"Is there anything special about ...?&amp;nbsp; Is it rare or valuable or dangerous or fragile?"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;"What is ...?&amp;nbsp; What is it used for?"&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;The system must be so easy to use that it will be part of everyday life.&amp;nbsp; An assistant that can answer accurately when you wonder where you left the car keys.&amp;nbsp; A retail checkout system that does not need barcodes.&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;The overall system must be tolerant of bad or conflicting data.&amp;nbsp; Over time everything should be generally self-correcting.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Do not necessarily require a "Parts in Bins" organization.&amp;nbsp; There may be preferred locations so that tools tend to wind up in tool boxes but it should not be carried to extremes.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;The database should:&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;allow for object identification,&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;retain arbitrary properties,&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;track current location and location history,&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;group objects during storage or use,&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;allow for assembly and disassembly of composite objects&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;span style="font-family: Arial;"&gt;Visual Object Recognition&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Current barcode scanners beep when they successfully scan an object.&amp;nbsp; As far as I am concerned, a proper scanner will only beep when it sees an object that it does NOT recognize.&amp;nbsp; I.e. we should eliminate the unnecessary confirmation noise.&amp;nbsp; Identification should be so accurate and so routine that the only thing that should need the user's attention is the true exceptions.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;A forthcoming essay will focus on the requirements of visual object recognition systems.&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;There is a range of requirements from the most basic detection of visual features within a background of clutter all the way through the comprehensive integration with a central object-location-tracking database.&amp;nbsp; This is required to ensure accurate identification of a &lt;i&gt;particular &lt;/i&gt;object, not just the &lt;i&gt;kind &lt;/i&gt;of object.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Selecting the pencil laying on the notepad in front of you is almost always preferable to selecting an identical pencil from the pencil holder.&amp;nbsp; The history of the object is as important as its location, and, in general, history requires the combined recognition and tracking of multiple visual sensors.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;In a world of ubiquitous, distributed visual recognition systems such as foveal cameras, each camera develops a learned history of particular features that compose and are associated with particular objects.&amp;nbsp; The different histories ("experiences") of each camera means that their library of recognition templates will be unique.&amp;nbsp; And yet, we want to be able to assign the same "identity" to objects as they move from one camera's area to the next.&amp;nbsp; This implies that there should be an "object template description" that is both compact and sufficient to (more or less) uniquely identify a particular class of object. This data is what would normally be communicated with the central object-location database, and with other nearby cameras to aid in tracking particular objects from one station to the next.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Consider: trying to locate a particular individual&amp;nbsp; using the cameras in a shopping mall.&amp;nbsp; Start with a general description such as "short, fat guy in a red suit".&amp;nbsp; This is actually a LOT of information expressed very succinctly.&amp;nbsp; It lops out most of the objects from your recognition database and allows attention to be devoted to the most likely suspects.&amp;nbsp; Maybe a candidate is seen from one point of view and you add to the description: "he has shiny black boots".&amp;nbsp; Motion tracking and adjacency ensures that this is the same individual.&amp;nbsp; You are building a more complete description.&amp;nbsp; Another view: "He has a white beard".&amp;nbsp; Multiple observers watching from different&amp;nbsp; cameras share the ability to casually recognize these high-level features and need ONLY the general location and compact description to be reasonably assured of success.&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;span style="font-family: Arial;"&gt;Modern Examples&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;The inventory at a WalMart retail store is intended to be in near-constant motion.&amp;nbsp; Trucks with assorted merchandise arrive at the back doors.&amp;nbsp; Products are rapidly distributed to essentially arbitrary locations within the store for presentation to customers.&amp;nbsp; Customers roam the store selecting desired items.&amp;nbsp; Items thus selected are scanned, purchased and removed through the front doors.&amp;nbsp; Approximate item-counts are maintained by using a "delivered minus sold" algorithm, but this becomes so inaccurate over time that periodic physical inventories and complete overall reorganizations of the store are necessary.&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;If I visit a hardware store I usually expect to be able to find a knowledgeable employee and say something like "I need a bigger one of these", or "This wore out and pieces broke off.&amp;nbsp; Do you have any more?", or "I need to mount this on a brick wall.&amp;nbsp; What do I use to do it?"&amp;nbsp; The employee is expected to be able to recognize my object and its use, match it against items in his experience using arbitrary criteria, and give me a meaningful response within a few seconds.&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Typical large companies manage warehouses and stock rooms with bins, shelves, cabinets, etc. and try to ensure that all like objects are collected in one place.&amp;nbsp; This facilitates locating desired items, counting stock, providing an appropriate storage environment and ensuring that replacements are ordered in a timely manner.&amp;nbsp; Frequently in-house part numbers are created and assigned to the storage locations to help with this process.&amp;nbsp; Unfortunately, there is often a many-to-many relationship which allows many different vendors to supply the product that winds up in a particular bin, and the same exact product may need to be stored in different locations due to convenience or necessity.&amp;nbsp; The computerized inventory system most likely attempts to enforce an idealized "one part number, one location, one quantity" paradigm.&amp;nbsp; More advanced or customized systems tend to be increasingly unwieldy due to special cases and exceptions and the need for more operator training.&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;My wife appears to have a diametrically opposite approach.&amp;nbsp; I have often observed an apparent equal probability that a particular item will be in any of the boxes, bins, shelves, cabinets, closets, and drawers in the house.&amp;nbsp; This is actually not an outlandish situation if you have a good memory and are able to accurately and rapidly communicate enquiries and responses: "Where's the glue?" "Elmer's is in the bin under the bed.&amp;nbsp; Contact cement is on the top shelf of the linen closet."&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;On the International Space Station inventory items tend to be stored in bags within bags.&amp;nbsp; In the micro-gravity environment there is generally no need for rigid containers.&amp;nbsp; Objects can be stored compactly in collapsible bags, packed into storage spaces, and gently secured against air currents and slight accelerations using bungee cords.&amp;nbsp; Inventory access problems usually revolve around trying to figure out "which bag?", "where?", and "how do I get to it?".&amp;nbsp; This frequently involves lengthy conversations with the ground controllers who are responsible for trying to record ongoing activity and look up records from past operations.&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Homer Simpson has a garage full of lawn and garden equipment.&amp;nbsp; It is all labeled "Property of Ned Flanders".&amp;nbsp; The traditional view of this satire is that Homer is a thief who never returns items that he borrows.&amp;nbsp; I, however, would contend that Ned has simply found a way to store his excess inventory in Homer's garage.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;span style="font-family: Arial;"&gt;Other Recognition Techniques&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;In these essays, I focus on visual recognition systems.&amp;nbsp; As a child, I was not so limited.&amp;nbsp; We had recently moved, so much of the material in the garage was packed in various boxes.&amp;nbsp; One day I was going through a box of vacuum tubes -- ancient electronic components that are kind of like fist-sized, glass transistors.&amp;nbsp; All of these tubes were wrapped in newspaper packing material.&amp;nbsp; As I picked up one of the wrapped objects, I knew immediately that it was not a tube.&amp;nbsp; It was a bottle containing about a half-pound of mercury.&amp;nbsp; In fact, I knew that it was mercury before I unwrapped it.&amp;nbsp; And I had no prior knowledge that we even had a container of mercury.&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;This is an example of what I consider a proper an object recognition system in operation.&amp;nbsp; The object was manipulated by a sensitive tactile handling system.&amp;nbsp; The manipulation system safely transitioned from working with glass containers of vacuum to glass containers of mercury.&amp;nbsp; The feedback from the system instantly provided object-density estimates.&amp;nbsp; Movements allowed me to detect that the object was not only NOT solid, but that the contents were fluid.&amp;nbsp; Silence during the manipulation allowed me to deduce that this was not a jar of washers or nuts.&amp;nbsp; The fact that, during rotation, the center of mass did not shift as one would expect with a granular fluid also helped narrow the identification.&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;The tentative identification became clearer as the bottle was unwrapped.&amp;nbsp; During this short time the entire system changed.&amp;nbsp; Dropping a newspaper-wrapped vacuum tube is a non-event.&amp;nbsp; Dropping a bottle of mercury is a whole different matter.&amp;nbsp; Even in the days before California-inspired paranoia concerning heavy metals, a child could be concerned about making a Big Mess.&amp;nbsp; My casual attitude became much more focused.&amp;nbsp; My grip became firmer.&amp;nbsp; My posture became more stable.&amp;nbsp; In short, the discovery led me from idle curiosity to attentive excitement in just a few seconds.&amp;nbsp; All without a single visual cue.&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;span style="font-family: Arial;"&gt;Implementation&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;In light of this background, I contend that inventory management should be an automated, continuous, interactive process.&amp;nbsp; By "interactive" I mean that the inventory management system should physically interact with the items that it is managing, much as I did as a child, or as the hardware store employee does to become good at his job.&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;This would allow the updating of inventory data to be treated as a routine maintenance operation instead of an inefficient, disruptive quarterly or annual event.&amp;nbsp; Managing objects in boxes (or boxes of objects) is only sufficient if there is a complete prior understanding of the actual, individual objects.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Applications&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Although I am describing this as Inventory Management, there are many applications.&amp;nbsp; The Inventory that we are managing need not be simply nuts and bolts.&amp;nbsp; For example:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Identify people and track their movement&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Production operations in a manufacturing facility.&amp;nbsp; Time and Motion studies.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Ensuring "Appropriate Redundancy" of tools and supplies.&amp;nbsp; Not too many and not too few.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Transportation, Cargo and Freight operations.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Restaurants, Food Services and other Just-In-Time manufacturing&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Produce tracking for food safety&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Infrastructure Maintenance - Buildings and Utilities&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Construction Industry - On-site Manufacturing and assembly&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Health Care and Pharmaceuticals&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Records Management - Customers, Patients, ISO 9000, etc.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Libraries and Collections&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;And maybe we turn the whole thing around.&amp;nbsp; Make a geolocation system by mounting the cameras on some of the objects and use them to watch the surroundings.&amp;nbsp; No more reliance on a fixed infrastructure. Recognition of objects and places are just two sides of the same coin, going into the same database. &amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;hr /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;hr /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;span style="font-family: Arial;"&gt;Notes&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Keep track of items in time and space.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Object identification - data entry, description, photo(s), size, mass, etc.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Object tracking - manual / automated&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Object status - &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; storage in bag, box, etc.; conditions (temperature, etc.)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; usage - quantity is partially used (count in / count out) liquids, aerosols, etc.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; assembly - object becomes part of something else&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; disposal / recycling / disassembly - including damaged or incomplete items&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; movement - new object / new location&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Object query -&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; find nearest&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; find totals&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; find expired (drugs, milk, etc.)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; find history - objects / locations&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Must be so easy to use that it is ALWAYS used for Get and Store operations&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Bill of Materials - Object associations or groupings&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Nesting - recursive objects within objects&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Inventory - continuous update / verification of object info when any storage location is accessed&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; best if automated&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Important to detect unexpected objects&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Automated recognition.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Database -&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Object identification&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Object history&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Photographic recognition&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Introduction process - controlled observation and examination&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Multiple views and lighting&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Unique feature extraction&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Associate with similar objects&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Establish photographic scale and allow scale invariance&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Record markings or other identification features&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Do not require arbitrary categorization.&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Let the recognition engine make its own categories or groups.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Do not expect perfect identification&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Narrowing it down" should be good enough&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Combine with location history to complete the identification&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Do not necessarily require "Parts in Bins".&amp;nbsp; Items can be anywhere.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Preferred storage locations may help ensure (toolboxes, etc.) are properly stocked&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Locations &amp;lt;--&amp;gt; Parts should be a Many-to-Many relationship&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Tolerant of bad / conflicting data.&amp;nbsp; Generally self-correcting.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Examples&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Hardware store&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Borrow a cup of Sugar&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Craigslist&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ned Flanders&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Tracking Santa Claus&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Maintain orientation.&amp;nbsp; Don't spill it.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Disassembly -&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; What is in it.&amp;nbsp; Hazardous?&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; What is this part of?&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Survival inventory.&amp;nbsp; Motors contain coils of wire...&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Expiration dates.&amp;nbsp; Use oldest first vs. Use freshest first.&amp;nbsp; Frozen bread anecdote.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Object history and current status.&amp;nbsp; A maid that always moves the dishes from the table to the dishwasher and THEN to the cabinet.&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Automated explorer manipulates objects to conduct inventory and cataloging.&amp;nbsp; Dangers include hazardous chemicals, high voltages, heavy/unstable objects, sharp tools, firearms, fragile objects, falls from high places, rotating machinery, buttons, switches and knobs, insects and pets.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;Current systems and limitations&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Hospitality industry&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Large number of identically furnished rooms&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Maid service touches every object daily&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Common maintenance, purchasing and disposal operations.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Apartments, Condos and Tract homes&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Many redundant objects&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Progressively less commonality&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Seasonal storage&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;The maid knows:&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Clean the nightstand&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Leave the lamp&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Wash the dishes&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Do not wash the paperback book&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;No communication regarding object location or availability&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; You have to ask for it before the system will tell you anything&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System should be proactive and push appropriate information to to in advance of need&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;CraigsList&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Arbitrary descriptions are a problem&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Locations are hidden until a query is made&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6820120367723139643-1706025841818958290?l=bkmcm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bkmcm.blogspot.com/feeds/1706025841818958290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bkmcm.blogspot.com/2011/09/on-inventory-management.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/1706025841818958290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/1706025841818958290'/><link rel='alternate' type='text/html' href='http://bkmcm.blogspot.com/2011/09/on-inventory-management.html' title='On Inventory Management'/><author><name>Brian McMillin</name><uri>http://www.blogger.com/profile/00996454463461402892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6820120367723139643.post-7893075171142133110</id><published>2011-09-12T15:32:00.001-05:00</published><updated>2011-09-12T17:29:20.022-05:00</updated><title type='text'>What is a Source File?</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;b&gt;Abstract&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Source Files are ubiquitous in the world of software development.Little thought is given to their core technology concept, which is now more than fifty years old.The transition from a desktop-PC to tablet-based computing environment represents a sweeping paradigm shift for software developers.Rethinking the true requirements of software from the Source level onward will allow more modern tools to enter the development arena.This essay presents an analysis of the situation from a historical perspective and proposes new methodologies for use in the future.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Introduction&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The concept of the Source File is so fundamental and so ingrained in the lives of software developers that there is seldom any thought given to its true function.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Historically, the program source was simply the human-readable form of input to a language compiler, assemble or translator.The most important aspect of Source Code was that it be able to be fed to the language processor without generating errors.This meant that virtually everything about the process of program creation was geared toward simplifying the task &lt;i&gt;for the compiler&lt;/i&gt;.Combined with the early data entry methods - Hollerith cards , teletype machines and paper tape - the idea of a program source became established.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;And now we find ourselves, fifty or more years later, &lt;i&gt;expecting&lt;/i&gt; program source to look like it could be printed on a teletype machine.Eighty columns (or so). Fixed pitch fonts. Nothing but ASCII characters.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The scope of programming requirements has changed radically from the early days of computing.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Programming languages and methodologies have evolved in many directions - some useful, others not so much.Our largest projects still suffer from the "simplify it for the compiler" mindset.A prime example is the ever-present header files used by most modern programming tools.These redundant and hard-to-maintain files are used to provide descriptions of the required linkages in modular programming.Newer programming environments attempt to deal with the header/linkage problem with added features or conventions that allow the tools to handle much of this drudgery.Handling the header problem is only one of many steps that need to be taken to convert from a "what is easiest for the compiler" to a "what is easiest and least error-prone for the programmer" mentality.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;What Are Source Files?&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;A Source File is a collection of text (variously known a syntactic symbols or tokens) that are either:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Human language&lt;/b&gt;, as in comments&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Directives&lt;/b&gt;, usually for the top-level language processor that uses the particular Source&lt;/li&gt;&lt;li&gt;&lt;b&gt;Programming Language&lt;/b&gt;, the statements or syntactic constructs that we think of as the program itself &lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Literals&lt;/b&gt;, as in data which will be manipulated by the program but which is encoded in some fashion and stored within the Source.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;Note that String Literals almost always contain some form of data that could be described as Source Code.  For example, the classic "Hello, World!" program used in beginning programming classes is a program which manipulates data in another language - in this case, English.  Most string manipulation in modern programs exists solely for building elements of another programming language, which will be fed to another language processor.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In addition, many Source Files today contain sections written in many different programming languages.&amp;nbsp; For example, an HTML file might include CSS, JavaScript, HTML and English.&amp;nbsp; Modern text editors attempt (with varying degrees of success) to help sort all this out for the developer.&amp;nbsp; Highlighting, auto-completion and various warnings are used to help prevent the (sometimes spectacular) errors that result from feeding one language into the processor that is expecting another.&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;blockquote&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div style="text-align: justify;"&gt;I will make a brief sidebar to rail against the very poor implementation of what is referred to as "internationalization".&amp;nbsp; If a modern application needs to be relevant to a world-wide audience it is expected that the developers isolate all locale-specific aspects into separate "resource" files, to use localizable operating system calls that can never be evaluated on the developer's system and use character sets and string manipulation tools to support character sets display, and keyboard modes that also cannot be tested on the developer's equipment.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Internationalization should be inherent in the program development process - not scabbed-on to a final product.&amp;nbsp; International test cases should always be visible to the developer and the operation and aesthetics of the product should be visible in a simple and robust manner at all times. To achieve this, the adaptive, multi-lingual keyboards on tablet computers, as well as the world-wide collaboration techniques discussed here become critically important.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Consider the notational nightmare that results from trying to pass a literal CSS property name to a JavaScript function that is being invoked from an HTML event handler.&amp;nbsp; The nesting of escaped quotation marks converts a (relatively) simple concept into something that requires deep understanding by the programmer.&amp;nbsp; And is thus virtually impossible for independent developers to modify or verify.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Unfortunately, one only gets help from the editor in the static situation such as the hand-written web page.&amp;nbsp; If the program needs to dynamically generate code (such as SQL queries) it becomes much more difficult to test, debug and verify.&amp;nbsp; There are virtually no tools that address this dynamic code creation problem, although it is one of the most common tasks performed today.&amp;nbsp; Many &lt;i&gt;ad-hoc&lt;/i&gt; build-a-string techniques are used, but never with any consistency or robust certification.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;How Are Source Files Used?&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Source files seem to be used in four distinct but interrelated ways.&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Design&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;In the Design phase the source is used as part of the collaboration and documentation for the project.&amp;nbsp; When properly done, this provides a good part of the framework that multiple developers use to ensure accurate understanding of the requirements and to convey details of the implementation as it progresses.&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Edit&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;The Edit phase is where most human interaction with the source occurs.&amp;nbsp; This is where much current effort in man-machine interaction is focused.&amp;nbsp; Making better editors with greater knowledge of program internals and the possible intentions of the programmer has been the goal since the first Integrated Development Environments (IDEs) were created.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Big, fancy IDEs that need big, fancy displays are moving in the wrong direction.&amp;nbsp; As the computing world moves away from the PC-centric toward the tablet-based future, our interaction will become much more focused.&amp;nbsp; The display-and-keyboard will adapt to the operations that we &lt;i&gt;really&lt;/i&gt; want to perform, and will retreat from the overwhelming offering of everything we &lt;i&gt;might &lt;/i&gt;want to do.&amp;nbsp; Adaptive keyboards, touch screens and more compact, high resolution presentations provide opportunities to completely rethink the developer interface.&amp;nbsp; &lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Build&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;Ultimately, the purpose of the program source is still to create a working application program.&amp;nbsp; This means that the Programming Language parts of the Source must be submitted to a language processor.&amp;nbsp; In many cases, this is not a trivial operation.&amp;nbsp; Many separate functions or modules must be combined, their linkages validated and a final product produced.&amp;nbsp; This build process can be time-consuming and can result in errors that are the ultimate responsibility of diverse members of the development team.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Expecting the build process to be performed on individual desktop computers is something that needs to be reevaluated as we move into the 21st century era of cloud storage and cloud computing.&amp;nbsp; &lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Test&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;After a successful build developers generally expect to test the new application.&amp;nbsp; This may require transferring the newly created code to a test environment, which may be a particular hardware device or a software simulator.&amp;nbsp; There should exist a suite of test cases for the "finished" application.&amp;nbsp; Although some things can be automated, in many cases manual interaction and visual aesthetics will be important factors.&amp;nbsp; Handling these in a consistent manner, and ensuring that full testing is actually performed for each build or release candidate is a serious problem in the development process.&amp;nbsp; Maintaining and documenting both known-good and known-bad test cases is of critical importance and can be overwhelming for complex projects.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The source-level run-time debugger is one of the great advances in PC-based computing and is a major feature of all Integrated Development Environments.&amp;nbsp; Unfortunately, the multiple-programming-language nature of modern programs limits the actual usefulness of the Debugger.&amp;nbsp; While I occasionally use a debugger for certain compute-only functions, and neophyte programmers really benefit from the capability, I believe that the&amp;nbsp; problems of client-server interactions, dynamic scripts and cross-platform compatibility are more important challenges that cannot be addressed by a simple debugger.&amp;nbsp; Therefore, the debugger capability should not be viewed as being of critical importance when evaluating future development tools and environments.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I believe that every function or statement should have available an easily-accessible library of test cases.&amp;nbsp; This would be sort-of like using a current debugger to run to a breakpoint and then be able to examine and modify the data structures as they are processed.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Knowing the working-set (data structures that are accessed or modified) used by by any particular function is of critical importance to verifying the correctness of a program.&amp;nbsp; In general, the compilers know this, although sometimes it cannot be determined until run-time.&amp;nbsp; Unfortunately, this critical knowledge is never made available to the developer.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The test-case library would take the place of ancillary test programs used during the development process.&amp;nbsp; Currently, such test programs are created, as-needed, by individual developers.&amp;nbsp; They are never documented, maintained or shared.&amp;nbsp; Even worse, they are often discarded once the developer feels that his function is "working".&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The concept of Assertions in various programming languages are used to catch errors at run-time when selected data does not match expectations.&amp;nbsp; I would extend the Assertion concept by allowing the capture of a function's working-set - at run-time - and saving it as an addition to the test case library.&amp;nbsp; This allows the collection of robust sets of real-world data.&amp;nbsp; When the function is modified or replaced with code that should be equivalent, these collected test cases can provide input to an automated verification process.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;What Does the Future Hold?&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;"Keyboards" should be viewed as "Token Selectors" instead of letter-by-letter token builders.  IDEs try to do this in some cases, but fail because of (1) the multiple-language problem, and (2) the "word-ish" nature of tokens needed to convey meaning to people.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;A single font size doesn't fit all.&amp;nbsp; Nested structures could be displayed with smaller fonts, so you could literally zoom in to move deeper into the code.&amp;nbsp; Current tree-collapsing displays give an essentially useless all-or-nothing display.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Need more screen space?&amp;nbsp; Get a second iPad.&amp;nbsp; Properly done, this could not be more expensive than multiple monitors and should be much more useful in the general sense.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;All source should reside in the cloud.&amp;nbsp; Current Version Control Systems make much ado about "Checking Out" and "Committing" changes to modules.&amp;nbsp; This makes it (intentionally) impossible for multiple developers to share work on individual modules.&amp;nbsp; Storing all development trees in the cloud and changing the checkout process from a "download it to my computer" to a "mark this group of changes as pending" in the cloud concept would be a great improvement.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;All Build operations should be performed in the cloud.&amp;nbsp; There should be no need for any compute-intensive operations at a user's desktop.&amp;nbsp; This allows high-powered, dynamically-allocated resources to be brought to bear on what should be an independent background task.&amp;nbsp; &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;What Could Replace Source Files?&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Given the ways current source files are used, the multiple-language problem, the need for collaborative work, and the trend away from desktop computing it seems obvious that we are actually referring to a Database application.&amp;nbsp; We have been using the computer's simple file system to store and access our programs, even though that has never been a particularly appropriate technique.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;What is needed is a Cloud-based database storage system which is accessed by multiple Very Thin Clients (read iPad Apps) that provide the user interaction during the software development process.&amp;nbsp; This inherently allows world-wide collaboration among the development team.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The compile and build process is performed as a Cloud-based service which provides additional elements to the Database.&amp;nbsp; These elements would include error and diagnostic information, compiled code, linkage information and target application code.&amp;nbsp; Automated test cases could be run and results verified.&amp;nbsp; All these capabilities would be available to every development team member, without having to have separate instances of hardware, tools, environments, etc.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I have some very specific ideas about how such a specialized software development database would be structured, implemented and accessed.&amp;nbsp; Of course, it has nothing to do with relational databases, SQL, or&amp;nbsp; traditional Client-Server techniques.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&amp;nbsp;I Am Requesting Some Feedback&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;For now, I am interested in feedback from as diverse a set of developers as I can manage.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Specifically, please let me know how you develop you code.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;What types of applications do you develop?&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;What hardware do you use?&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;What size screens do you need?&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;What applications do you need to run?&amp;nbsp; Editors? Compilers? Debuggers? Simulators? Browsers? Documentation tools? Email?&amp;nbsp; Chat?&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;How many things do you try to do at once?&amp;nbsp; How many things do you absolutely need to do at once?&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;If you were going to work using a tablet computer, what would you see as advantages?&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;What would be disadvantages, even given your idea of a perfect tablet-of-the-future?&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;What do you think would be impossible to do using a tablet?&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6820120367723139643-7893075171142133110?l=bkmcm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bkmcm.blogspot.com/feeds/7893075171142133110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bkmcm.blogspot.com/2011/09/what-is-source-file.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/7893075171142133110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/7893075171142133110'/><link rel='alternate' type='text/html' href='http://bkmcm.blogspot.com/2011/09/what-is-source-file.html' title='What is a Source File?'/><author><name>Brian McMillin</name><uri>http://www.blogger.com/profile/00996454463461402892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6820120367723139643.post-7644699373615527370</id><published>2011-08-08T14:34:00.000-05:00</published><updated>2011-09-24T21:42:29.583-05:00</updated><title type='text'>Cargo Cults</title><content type='html'>This is a favorite quote, which I think is even more applicable today that it was 35 years ago.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;blockquote&gt;In the South Seas there is a cargo cult of people. During the war they saw airplanes land with lots of good materials, and they want the same thing to happen now. So they've arranged to imitate things like runways, to put fires along the sides of the runways, to make a wooden hut for a man to sit in, with two wooden pieces on his head like headphones and bars of bamboo sticking out like antennas--he's the controller--and they wait for the airplanes to land. They're doing everything right. The form is perfect. It looks exactly the way it looked before. But it doesn't work. No airplanes land. So I call these things cargo cult science, because they follow all the apparent precepts and forms of scientific investigation, but they're missing something essential, because the planes don't land.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; – Richard Feynman&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Caltech Commencement Address, 1974&lt;/blockquote&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6820120367723139643-7644699373615527370?l=bkmcm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bkmcm.blogspot.com/feeds/7644699373615527370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bkmcm.blogspot.com/2011/07/cargo-cults.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/7644699373615527370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/7644699373615527370'/><link rel='alternate' type='text/html' href='http://bkmcm.blogspot.com/2011/07/cargo-cults.html' title='Cargo Cults'/><author><name>Brian McMillin</name><uri>http://www.blogger.com/profile/00996454463461402892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6820120367723139643.post-7771657890857769449</id><published>2011-07-21T12:08:00.005-05:00</published><updated>2011-07-21T17:23:40.159-05:00</updated><title type='text'>Malevolent Social Engineering in Open Source Software</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;div style="text-align: justify;"&gt;The following paper was written in October of 2010 and distributed in draft form to several infrastructure security organizations.&amp;nbsp; Not a single one made any response or gave any indication that they are considering the problem.&amp;nbsp; I now publish it openly for indexing by any search engines that happen along.&amp;nbsp; The date is 21 July 2011.&amp;nbsp; How long will it be before we hear about these types of attack on the evening news?&lt;br /&gt;&lt;br /&gt;The examples are written in a form that many readers may enjoy.&amp;nbsp; I hope that I have conveyed some sense of the ease with which even quality programmers may be duped by crafty opponents.&amp;nbsp; Toward the end of the paper things get rather technical.&amp;nbsp; Don't worry -- when you get to parts don't understand you have probably gotten all you need.&amp;nbsp; &lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;hr /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;Malevolent Social Engineering in Open Source Software&lt;/b&gt;&lt;br /&gt;Brian McMillin&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Abstract&lt;/b&gt;&lt;br /&gt;A hypothetical attack on core open source software technologies is presented.&amp;nbsp; Extreme danger lies in the fact that these potentially compromised core technologies may be incorporated into an almost unlimited number of different application programs, unknowingly created and marketed by unrelated organizations which may be completely unable to determine if they are distributing malware. Mitigation strategies are discussed, although none are anticipated to be effective.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Background&lt;/b&gt;&lt;br /&gt;Open source software is an increasingly important method of developing modern applications and tools.&amp;nbsp; In many cases the collaborative work of different authors provides for new features and qualified review that would be impractical for any corporate effort.&amp;nbsp; The wide availability, ease of use, and inherent peer-review of open source packages makes them tremendously appealing to virtually all developers. &lt;br /&gt;&lt;br /&gt;Unfortunately, it is this very collaborative nature and peer-review that opens the door for social manipulation and creating the illusion of quality and safety while masking malevolent software.&lt;br /&gt;&lt;br /&gt;The term malware is usually used to mean intentionally malicious software designed to compromise a target system.&amp;nbsp; From the user’s perspective there is little difference between a system that fails due to deliberate machinations and one which fails simply due to buggy software.&amp;nbsp; Accidents and intentional attacks have the same effect.&amp;nbsp; In this analysis I treat both cases equivalently.&lt;br /&gt;&lt;br /&gt;Social engineering is a term associated in the public’s mind with spreading computer viruses via email.&amp;nbsp; Disguising a threat with some desirable or benign coating (a picture of Martina Navratilova, or a valentine from a secret admirer) causes the user to circumvent the computer security system.&amp;nbsp; A threat that causes a panic reaction can thwart common sense: “Your computer has a VIRUS! Click here to fix it.” or “Your account has been suspended due to suspicious activity.&amp;nbsp; Click here to sign in and review your transactions.”&lt;br /&gt;&lt;br /&gt;Social engineering in the open source software development community can take many forms.&amp;nbsp; Popular tools or packages, a friendly author in a forum, beta testing opportunities, web-based code snippet libraries - all can be the source of code which may fail to receive the scrutiny that it should.&lt;br /&gt;&lt;br /&gt;Modern software systems are far too complex for any individual or organization to adequately evaluate, monitor, test or verify.&amp;nbsp; Malevolent code can be incredibly compact - sometimes requiring only a single character.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Examples&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Let me begin by emphasizing that there have been no known intentional examples of the use of these attacks to date.&amp;nbsp; The examples describe accidentally introduced bugs in actual software that could be devastating if carefully placed by a knowledgeable adversary.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Example: Single-Bit Date-Time Bug&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;The firmware for an access control system was found to contain a single-character typographic error which had the effect of rendering day-of-week calculations inaccurate.&amp;nbsp; The error was discovered during testing, only when employees were unable to enter the building on the first Monday of April.&amp;nbsp; Supervisor access was not restricted.&amp;nbsp; Troubleshooting revealed that the system believed that the date was part of a weekend.&amp;nbsp; The erroneous line of code is reproduced below.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DB&amp;nbsp;&amp;nbsp;&amp;nbsp; 31,28,31.30,31,30,31,31,30,31,30,31&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Month Lengths&lt;br /&gt;&lt;br /&gt;This example is particularly noteworthy because the error (substitution of a period for a comma) is actually only a single-bit error in the ASCII encoding of over 300K bytes of source code.&amp;nbsp; The keys on the keyboard are adjacent, and the difference in visual appearance of the characters is minimal (and was barely discernable on the displays being used).&lt;br /&gt;&lt;br /&gt;The error was not discovered during initial development testing because it was dependent on future values of the real-time clock.&amp;nbsp; Code review did not catch the error because reviewers focused on verifying the “important” things - in this case the sequence of numeric values, and took for granted the punctuation.&amp;nbsp; The assembler software failed to indicate an error because an obscure syntactic convention allowed the overloaded period character to be interpreted as a logical AND operation between the two integer values.&lt;br /&gt;&lt;br /&gt;The line between accident and malice can be quite fuzzy.&amp;nbsp; This ambiguity can allow a knowledgeable adversary to obscure an attack by hiding it among hundreds of lines of well-written, clean code.&amp;nbsp; Furthermore, since the malicious nature of any error can easily be explained as human error, the attacker remains free to try again if discovered.&amp;nbsp; The peer-review process may even be commended for finding and correcting the error, while giving the adversary additional information to improve the next attack.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Example: Intel FDIV Bug&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;The Intel FDIV bug was an error in the floating point division algorithm in certain versions of the Pentium processor.&amp;nbsp; Apparently, the actual underlying error was confined to five cells in a lookup table that were unintentionally left blank.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;The effect was that software running on these processors would occasionally receive computational results which were in error after the fifth decimal digit.&amp;nbsp; Subtle errors such as this are extremely difficult to detect - in fact it took a skilled number theorist with great tenacity several months to isolate and demonstrate the problem.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;In any case, it would have been far easier to have certified the processor correctness at the design stage by ensuring that the lookup tables were computed and verified by multiple independent sources prior to production.&amp;nbsp; In fact, by the time the bug was publicized, Intel had already produced processors using the same algorithm which were free of the bug.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Thomas R. Nicely discovered and publicized this bug during 1994, and in December of that year Intel recalled and replaced all affected processors.&amp;nbsp; In his analysis of this situation, he concludes:&lt;br /&gt;&lt;blockquote&gt;Computations which are mission critical, which might affect someone's life or well being, should be carried out in two entirely different ways, with the results checked against each other. While this still will not guarantee absolute reliability, it would represent a major advance. If two totally different platforms are not available, then as much as possible of the calculations should be done in two or more independent ways. Do not assume that a single computational run of anything is going to give correct results---check your work!&lt;/blockquote&gt;&lt;br /&gt;The legacy of this bug is that, fifteen years later, many development tools for Intel-based software still include conditional code relating to the recommended work-around for this hardware error.&amp;nbsp; The mentality that justifies this as “Oh, that’s always been there”, or “It doesn’t do anything, but it can’t hurt” is a symptom of a larger problem.&amp;nbsp; Unnecessary code is always harmful.&amp;nbsp; At the very least it allows extra opportunities for undetected corruption to occur.&amp;nbsp; It fosters an un-critical mind set in the reviewer.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Code paths that are never executed can never be tested.&amp;nbsp; Their presence in modern production code should be considered suspicious.&amp;nbsp; Hiding malware in such untested but ubiquitous code potentially allows for its wide distribution.&amp;nbsp; Dormant code such as this needs only a suitably crafted trigger to affect all compromised systems.&lt;br /&gt;&lt;br /&gt;This five-value error caused an economic impact of $500 million to Intel in 1995, and is still being felt in unquantifiable ways today.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;table border=1&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;As the Iranian nuclear program found out, to its own detriment, it is never a good idea to run unverified industrial control software on your black-market enrichment centrifuges.  &lt;br /&gt;&lt;br /&gt;The precision bearings tend to eat themselves for lunch.&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;What if the table errors in the floating-point algorithm were not as blatant as being left zeroed out?  What if the tables contained a carefully selected number of random errors?  And were embedded in the floating-point unit of a counterfeit GPS chip?  And that chip happened to find itself in the terminal guidance system of an opponent's missile?  And that the only effect was to change the rate of successful position updates from 100 per second to one per second?  And the CEP (circular error probable) for the missile went from 3 feet to 3000 feet?&lt;br /&gt;&lt;br /&gt;This kind of thing could win or lose a war.&lt;br /&gt;&lt;br /&gt;And how could one ever expect to detect such a deeply-embedded, subtle attack?&lt;br /&gt;&lt;br /&gt;How much would such an attack cost? &lt;br /&gt;&lt;br /&gt;Would it be worth it for an adversary to try?&lt;br /&gt;&lt;/table&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;u&gt;Example: NASA End-Of-Year Protocol&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;NASA space shuttles use a voting system of three active and two standby computers for flight control operations.&amp;nbsp; Each of these systems is intended to be essentially identical, and each runs identical software.&amp;nbsp; The intention is to detect and mitigate hardware failures, as these are deemed to be the most likely source of problems during a mission lasting two weeks or so.&lt;br /&gt;&lt;br /&gt;Even so, flight rules prevent any shuttle from flying on New Year’s Day, since it is well recognized that the operating software cannot be positively certified to operate correctly when the year changes.&amp;nbsp; This is especially true when the shuttle orbiter is viewed as a small part of the much larger system involving communications, tracking, navigation, and planning systems which are geographically distributed throughout the world.&amp;nbsp; Ensuring that every component of this worldwide network will be free of anomalies when the year changes is viewed as an insurmountable problem and an unnecessary risk.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Example: McAfee Automatic Update&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;On April 21, 2010 McAfee Software released an update to its anti-virus software which incorrectly identified legitimate SVCHOST.EXE operating system files on Microsoft Windows XP systems as the W32/Wecorl.a virus.&amp;nbsp; Affected systems were locked in an endless reboot sequence and required manual intervention in the form of a local data load by a knowledgeable person to recover.&lt;br /&gt;&lt;br /&gt;At least one police department instructed its officers to turn off their patrol car computers to protect them from the McAfee update.&amp;nbsp; It is unclear why every patrol car should have been running anti-virus software in the first place.&amp;nbsp; Much greater security and performance could be gained by closing the department’s network and installing proper protection at the gateways.&lt;br /&gt;&lt;br /&gt;Anti-virus software is by its very nature a social engineering phenomenon.&amp;nbsp; The threat of malware and the lack of confidence in our legitimate operating systems and software has led us to the perception that we must install software which slows performance and causes unpredictable and non-deterministic behavior under normal circumstances.&amp;nbsp; The fact that perfectly good, working systems can have their behavior altered by anti-virus updates on a daily (or perhaps hourly) basis is, in itself, a source of great concern.&lt;br /&gt;&lt;br /&gt;The fact that updates are allowed to proceed in an automated mode may be acceptable or even desirable for consumer products.&amp;nbsp; For dedicated applications or mission-critical systems there is little justification for automatic updates.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Example: Adobe Flash Player&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Much controversy attends the question of Adobe Flash player and HTML 5 features on mobile devices such as iPhone.&amp;nbsp; It has been claimed that the Flash player is buggy, a resource hog, and responsible for many system crashes.&amp;nbsp; The Flash player is a proprietary piece of software implementing a proprietary standard.&amp;nbsp; It is difficult to understand why the open source community, principally revolving around the Android operating system, seems to be more vocal in their support of Flash than Apple, who champions the open source HTML 5 standards.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;In reality, the controversy appears to be an example of social engineering, designed to allow a proprietary standard to maintain dominance in an evolving marketplace.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;It is true that MacroMedia (now Adobe) filled a real and important need by developing Flash in an era when no standard mechanism for animation or user interaction with computers existed.&amp;nbsp; The time has come for such ad-hoc early forays into user interfaces to yield to more mature, carefully designed systems that incorporate the best features discovered so far and meet the requirements of modern systems.&lt;br /&gt;&lt;br /&gt;Proprietary systems will always be more vulnerable than open systems due to the limited resources and unknown business priorities of the controlling company.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Example: Zune 30GB Music Player Leap Year Bug&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;On December 31, 2008, all Microsoft Zune 30GB Music Players failed during the boot sequence.&amp;nbsp; The software that failed was the Real-Time Clock driver firmware for the Freescale Semiconductor MC13783 Power Management and Audio chip.&amp;nbsp; Near the end of the boot process, the driver was called to convert the internal Days and Seconds representation of the current time into Year, Month and Day.&amp;nbsp; On the 366th day of the year, the year-conversion loop would fail to exit, thus causing the device to hang permanently at that point.&amp;nbsp; The work-around was to allow the batteries to run completely down and to wait until the next day to restart the device.&lt;br /&gt;&lt;br /&gt;The problematic driver software was contained in the rtc.c source file provided by Freescale Semiconductor to customers of its products.&amp;nbsp; The ConvertDays function was missing an else break; statement which would have correctly terminated the loop.&amp;nbsp; Using the normal formatting conventions adopted by Freescale, this would probably have added two lines to the 767 lines in this file.&lt;br /&gt;&lt;br /&gt;A second function in this same file, called MX31GetRealTime, uses exactly the same loop structure for year conversion and includes diagnostic message outputs, apparently intended for verifying the calculations.&amp;nbsp; In the day 366 case, this code would output the (incorrect) message “ERROR calculate day”, and then break the loop.&amp;nbsp; In other words, if Freescale’s own diagnostics had been used to test the code there would have been a single suspicious message among a flurry of output, but the diagnostic code would not have hung.&amp;nbsp; If the real code had been tested or simulated on the correct date, the hang would have been discovered.&lt;br /&gt;&lt;br /&gt;Note that the chip in question is called a “Power Management and Audio” chip.&amp;nbsp; Page 2 of Freescale’s Data Sheet lists 17 features for this chip, including battery chargers, regulators, audio amplifiers, CODECs, multiple audio busses, backlight drivers, USB interface and touchscreen interface.&amp;nbsp; The Real-Time Clock is item 13 of 17 on this list.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;It is clear that this is an example of a catastrophic bug in a “trivial” function, buried deep within mountains of code implementing “important” features.&amp;nbsp; This code was provided by a trusted supplier.&amp;nbsp; The features of the chip are so complex (and proprietary) that users (in this case, Microsoft) have little alternative but to accept the supplied code without exhaustive or critical examination.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Example: Sony Root Kit&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;In 2005, Sony BMG Music released over 100 titles of music CDs that surreptitiously installed rootkit software on user’s computers running Microsoft Windows.&amp;nbsp; The alleged purpose of this rootkit was to provide copy protection for the music, but in actuality provided cloaking technology and a back door for malware.&amp;nbsp; Prior to legal action and the eventual recall of all Sony CDs with the XCP technology, over 500,000 computers were compromised.&lt;br /&gt;&lt;br /&gt;The corporate mindset at Sony that viewed their own consumers as an enemy, stark terror in the face of declining sales, and a total naivety concerning computer technology left them vulnerable to manipulation by groups selling Digital Rights Management software.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;In the case of XCP, it also demonstrated that anti-virus services can be manipulated simply by the choice of names used by the malware.&amp;nbsp; Because it was being distributed by a giant corporation and was covered by the aura of anti-piracy claims, the anti-virus services spent more than one year allowing the infestation to grow.&amp;nbsp; This despite the fact that, in all respects, the software behaved maliciously by (1) being loaded from a music CD, (2) replacing system files, (3) cloaking registry entries and (4) conducting clandestine communications with a BMG host computer.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table border=1&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;u&gt;Sidebar: A Tirade Against Digital Rights Management Software&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Digital Rights Management software may be viewed as malware, in that its purpose is to selectively block access to certain data or programs using arbitrary and unexpected rules.&amp;nbsp; Any software that behaves differently on one machine than another, or that works one day and not the next, should be viewed with great suspicion.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;DRM software is operationally indistinguishable from malware.&amp;nbsp; Test and verification of DRM software is, by its very nature, difficult for its own developers.&amp;nbsp; In addition, the presence of DRM features on a particular system makes the performance of that system essentially impossible to certify.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Any software that cannot be backed up, restored, and made fully operational at an arbitrary point in the future should not be allowed in a professional development environment.&amp;nbsp; Software that includes timeouts, or that requires contact with a validation server is not reliable.&amp;nbsp; Any software whose continued operation is subject to the corporate whims of third parties is fundamentally unsafe.&lt;br /&gt;&lt;br /&gt;Programs that include behaviors that are dependent on hardware identity (station names, MAC addresses or IP addresses), date - time values, random or pseudo-random numbers, and cryptographic codes are inherently difficult to verify.&amp;nbsp; If at all possible, these features, where required, should be carefully isolated from as much of the production code as possible.&lt;br /&gt;&lt;br /&gt;Since there can be no universal guarantee of network connectivity or the continued operation of a central server (such as a licensing server), I would argue that any software that implements “time bomb” behavior or otherwise deliberately ceases to function if it does not receive periodic updates should be banned.&lt;br /&gt;&lt;br /&gt;Experience has shown that DRM software is generally ineffective in achieving its stated goal, and causes undue hardship to legitimate users of the product.&amp;nbsp; Development efforts would be much more productive if they were directed toward improving the experience of all users, instead of trying to restrict some users.&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Example: Physical Damage to Memory&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;In the late 1960's the DECsystem 10 used core memory for its primary storage.&amp;nbsp; There existed a memory diagnostic program designed to find errors in this core memory array.&amp;nbsp; The diagnostic proceeded to repeatedly read and write sequential locations.&amp;nbsp; It was found that this diagnostic would almost always find bad locations - even in known good arrays - and that entire rows would be genuinely bad after the diagnostic ran.&amp;nbsp; Investigation proved that the continuous cycling of the three Ampere (!) select current pulses were physically burning out the hair-thin select lines in the array.&lt;br /&gt;&lt;br /&gt;The memory design engineers had known of this possibility, but discounted it as a failure mode because the system was equipped with a semiconductor memory cache that would prevent repeated operations on the same address.&amp;nbsp; Naturally, the designer of the memory diagnostic included instructions that explicitly disabled the cache.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Forty years later, our most modern portable devices use high density NAND flash memory as their storage mechanism of choice.&amp;nbsp; Flash memory relies on the storage of small quantities of electric charge in tiny cells, and the ability to accurately measure that charge.&amp;nbsp; In order to store new values in this type of memory, entire pages must be erased and then sequentially written.&amp;nbsp; The 16GB flash memory used in the iPhone 4 (for example) stores multiple bits in each memory cell using different voltage levels to distinguish values.&amp;nbsp; The ability of these cells to reliably store and distinguish bits begins to degrade after only 3000 page erase cycles.&amp;nbsp; Elaborate hardware and software mechanisms exist to detect and correct errors, and to provide alternate memory pages to replace failed areas.&amp;nbsp; In order to achieve acceptable production and operational yields and longevity, modern error correcting systems are typically capable of correcting 12 or more bit errors in a single block.&amp;nbsp;&amp;nbsp; Furthermore, wear-leveling algorithms attempt to prevent excessive erase/write cycles on individual pages.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Unfortunately, the memory management algorithms both in Samsung’s memory controller and in Apple’s iOS4 are proprietary.&amp;nbsp; Not only are the specifications of the individual subsystems unknown, but the interactions between the two are cause for concern.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;NAND Flash memory suffers from a mode in which repeated reads can indirectly cause adjacent memory cells to change state.&amp;nbsp; These changed cells will trigger the error detection and correction mechanism and be generally harmless.&amp;nbsp; It is unknown whether there is a threshold where a large number of bit errors in a page will cause that page to be moved or rewritten, and possibly even marked as bad.&amp;nbsp; The possibility exists, therefore, that simply reading flash in a pathological manner may result in additional hidden erase/write cycles, or possible additions to the bad block table.&lt;br /&gt;&lt;br /&gt;It is also unknown how bad blocks are reported from the hardware to the operating system, and it is unclear how the file system will respond as the available known-good storage shrinks.&amp;nbsp; Meaningful studies or empirical results are difficult to achieve because of the statistical nature of the underlying failure mode, the number of levels of protection, and the differing implementations of different manufacturers and products.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;All systems should collect and make available absolute, quantitative statistics on the performance of these error detection and correction methods.&amp;nbsp; We can have no real confidence in a system if we do not know how close we are to the limits of its capabilities.&amp;nbsp; One thing is certain: “It seems to be working” is a recipe for disaster.&lt;br /&gt;&lt;br /&gt;It is not beyond the realm of possibility that suitably malicious software could clandestinely bring virtually every page of the system’s flash memory to the brink of ECC failure and then wait for a trigger to push the system over the edge.&lt;br /&gt;&lt;br /&gt;This would be an example of software that can physically damage modern hardware, and leave the user with no recourse but to replace the entire device.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Analysis&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;It would be preferable for the designers of development tools to strive toward the smallest possible set of features for the use of programmers.&amp;nbsp; By concentrating on the most frequently needed operations and making them clear and predictable the review process will be simplified.&amp;nbsp; Obscure or infrequently-used features should be only invoked with great fanfare.&amp;nbsp; Long keywords or elaborate syntactic requirements will draw attention to the fact that this code is not “business as usual” and deserves careful scrutiny. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Vulnerabilities, Exploits and Triggers&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Traditionally, malware such as trojans, worms and viruses have relied on some vulnerability in a computer system’s design, implementation or operation.&amp;nbsp; Logic errors, unchecked pointers and buffer overflows are examples of vulnerabilities.&amp;nbsp; In general this vulnerability is independent of the exploit, or actual malware, specifically written by an attacker.&amp;nbsp; Once introduced into a vulnerable system, the malware may require an additional trigger event to begin malicious execution.&amp;nbsp; This allows infection of multiple systems to proceed undetected until a particular date, or remote command, causes the nefarious code to spring forth.&amp;nbsp; The trigger will always appear in the form of data within the infected system.&lt;br /&gt;&lt;br /&gt;In the present analysis, the distinction between the vulnerability and exploit may appear to be blurred.&amp;nbsp; A sufficiently knowledgeable adversary may subtly introduce the entire body of malicious code into a large number of different application programs by patiently corrupting core technologies.&amp;nbsp; Using the definitions above, the actual vulnerability is the software design methodology itself, and the exploit could be virtually any piece of commonly used core software.&lt;br /&gt;&lt;br /&gt;My primary thesis involves the social engineering that could be used to corrupt otherwise benign and robust software systems.&amp;nbsp; A secondary topic involves the acquired vulnerabilities that have evolved in software development “best practices”.&amp;nbsp; This involves using hardware and software features because “that’s the way you do it”, without any critical reexamination of whether those features actually make any sense in the year 2010, or in the application being developed.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Several of these “evolutionary vulnerabilities” are readily apparent.&lt;br /&gt;&lt;br /&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp; The use of core open source frameworks by many completely unrelated applications.&lt;br /&gt;2.&amp;nbsp;&amp;nbsp;&amp;nbsp; The programming style that allows and encourages interleaving of distinct objectives within “tight”, “efficient” or “multi-purpose” functions.&lt;br /&gt;3.&amp;nbsp;&amp;nbsp;&amp;nbsp; The use of needlessly compact source notation without redundancy or cross-checks.&lt;br /&gt;4.&amp;nbsp;&amp;nbsp;&amp;nbsp; The practice of allowing access to every data structure that a function MIGHT need to use without explicitly stating that access to a PARTICULAR structure is desired.&lt;br /&gt;5.&amp;nbsp;&amp;nbsp;&amp;nbsp; Allowing the use of unnecessarily similar variable and function names.&lt;br /&gt;6.&amp;nbsp;&amp;nbsp;&amp;nbsp; Operator overloading.&lt;br /&gt;7.&amp;nbsp;&amp;nbsp;&amp;nbsp; Implied namespaces and namespace obfuscation.&lt;br /&gt;8.&amp;nbsp;&amp;nbsp;&amp;nbsp; Conditional compilation mechanisms&lt;br /&gt;9.&amp;nbsp;&amp;nbsp;&amp;nbsp; The inherent untestability of supporting multiple platforms.&lt;br /&gt;10.&amp;nbsp;&amp;nbsp;&amp;nbsp; Unchecked and unconstrained Pointers.&lt;br /&gt;11.&amp;nbsp;&amp;nbsp;&amp;nbsp; The Stack.&lt;br /&gt;12.&amp;nbsp;&amp;nbsp;&amp;nbsp; Loops that do not look like loops - callbacks and exceptions.&lt;br /&gt;13.&amp;nbsp;&amp;nbsp;&amp;nbsp; Dynamic code creation and execution - interpreters&lt;br /&gt;14.&amp;nbsp;&amp;nbsp;&amp;nbsp; Portable devices that may operate unmonitored for extended intervals.&lt;br /&gt;15.&amp;nbsp;&amp;nbsp;&amp;nbsp; Assuming that individual developers are experts in multiple programming languages.&lt;br /&gt;16.&amp;nbsp;&amp;nbsp;&amp;nbsp; The vulnerability of different programming languages to naive mistakes.&lt;br /&gt;17.&amp;nbsp;&amp;nbsp;&amp;nbsp; The lack of common version control systems among developers.&lt;br /&gt;18.&amp;nbsp;&amp;nbsp;&amp;nbsp; The lack of a global cross-reference checking facility.&lt;br /&gt;19.&amp;nbsp;&amp;nbsp;&amp;nbsp; The lack of inherent range and bounds checking at runtime.&lt;br /&gt;20.&amp;nbsp;&amp;nbsp;&amp;nbsp; The lack of a central revocation authority.&lt;br /&gt;21.&amp;nbsp;&amp;nbsp;&amp;nbsp; Automatic update systems themselves.&lt;br /&gt;22.&amp;nbsp;&amp;nbsp;&amp;nbsp; The lack of a common threat analysis and notification system.&lt;br /&gt;23.&amp;nbsp;&amp;nbsp;&amp;nbsp; The lack of a mechanism to track the installation of application programs in consumer devices.&lt;br /&gt;24.&amp;nbsp;&amp;nbsp;&amp;nbsp; The lack of a mechanism to notify consumers of potential threats.&lt;br /&gt;25.&amp;nbsp;&amp;nbsp;&amp;nbsp; The vulnerability of critical infrastructure to denial-of-service attacks.&lt;br /&gt;26.&amp;nbsp;&amp;nbsp;&amp;nbsp; Trusted Software Developer Certificates that may be easily be circumvented by simply supplying that Trusted developer with malicious tools. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The Stack As An Unnecessary Vulnerability&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Since the 1960's the use of a stack-based architecture has been considered a requirement for computer systems.&amp;nbsp; The stack provides a convenient storage area for function parameters, return addresses and local variables.&amp;nbsp; It inherently allows for recursion.&amp;nbsp; It makes exceptions and hardware interrupts easy to implement.&amp;nbsp; It minimizes memory use by sharing a single, dynamic area.&lt;br /&gt;&lt;br /&gt;In the world of formal logic, recursion often represents an elegant and compact technique of explaining a complex operation.&amp;nbsp; In the world of computer software it is almost always a serious mistake.&amp;nbsp; There are a few cases in which recursion provides an elegant solution to a problem, but I contend that the risks of allowing universal recursive operations far outweigh the few instances in which any real benefit is derived. Anything that can be done by recursion can be done by iteration, and usually in a much safer and more controlled fashion.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;In the absence of recursion, the maximum calling depth can always be computed prior to execution of any given function.&amp;nbsp; In the best case, this could be done with a static calling-tree analysis by the compiler or linker.&amp;nbsp; In the worst case, the program loader must handle calls through dynamic linkages, and the loader must perform the analysis.&amp;nbsp; Knowing the possible calling tree implies that the actual maximum possible memory requirement can also be derived.&amp;nbsp; It thus becomes unnecessary to specify arbitrary stack space allocations.&amp;nbsp; Programs can be treated in a much more deterministic manner.&lt;br /&gt;&lt;br /&gt;The fallacy of Mixing Data and Code Addresses - Modern hardware implements a single stack for each executable unit.&amp;nbsp; Programs use machine instructions to load function parameters and local variables into memory in the allocated stack area.&amp;nbsp; Call and Return operations use a program address placed in the same stack area.&amp;nbsp; This shared allocation is the vulnerability used by most “Arbitrary Code Execution” exploits.&amp;nbsp; It is completely unnecessary for the return address list to share a memory segment with function parameters and local data.&amp;nbsp; If this “conventional wisdom” were to be thoroughly reexamined, virtually all buffer-overrun exploits would be eliminated at the hardware level.&amp;nbsp; Data could still be wildly corrupted, but the flow of program execution would not be accessible to an attacker.&lt;br /&gt;&lt;br /&gt;The fallacy of Necessary Recursion - The vast majority of functions in a modern application have clearly defined, static calling trees.&amp;nbsp; These functions have no need for any recursive features, and any recursion indicates a flaw.&amp;nbsp; The fact that modern languages automatically allow and encourage recursion means that recursion is an Error-Not-Caught in almost all cases.&amp;nbsp; It does not seem unreasonable to require that recursion (both direct and indirect) be indicated by some affirmative notation by the programmer.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;The fallacy of Saving Memory - The lack of static calling-tree analysis and the assumption of recursion means that arbitrary-sized segments are allocated to the stack.&amp;nbsp; Arbitrary allocations are always erroneous and lead to the mistaken impression that the software is reliable.&amp;nbsp; No one actually knows how close a system is to a stack overflow situation.&amp;nbsp; The presence of unnecessary memory allocation is a waste of resources and leaves a memory area where undetected malware can reside.&lt;br /&gt;&lt;br /&gt;The contention that the stack architecture saves memory is one of the elementary explanations of the appeal of the stack.&amp;nbsp; This might be true if the alternative is a naive implementation in which all function parameters and locals were concurrently allocated from global memory.&amp;nbsp; Calling-tree analysis can be used to allocate parameter frames statically, and yet use only an amount of memory identical to the worst case of the actual calling pattern. &lt;br /&gt;&lt;br /&gt;The fallacy of Hardware Interrupts - In order to achieve any degree of security, modern systems always switch stacks when a hardware interrupt is encountered.&amp;nbsp; Thus, it is not necessary that more than a rudimentary allocation be made in the application memory space.&lt;br /&gt;&lt;br /&gt;The fallacy of Dynamic Stack Frames - Virtually all modern code computes parameters and pushes them onto the stack prior to a function call.&amp;nbsp; The functions allocate space for local variables by further adjustments to the stack pointer.&amp;nbsp; These dynamically-allocated stack frames are a source of needless, repetitive code that could be eliminated in many cases by static frame allocation and intelligent code optimization.&amp;nbsp; Again, static calling-tree analysis is used to determine the required allocation of these frame areas.&lt;br /&gt;&lt;br /&gt;The fallacy of the Memory Dump - It is assumed that memory dumps can be a useful tool to allow crash analysis and code verification.&amp;nbsp; In reality, the use of the stack architecture and its immediate reuse of memory areas for consecutive function calls means that the internal state of any function is destroyed shortly after that function exits.&amp;nbsp; If the stack frames were statically allocated the system would tend to preserve parameters and local variables after the completion of any particular function.&amp;nbsp; The implementations of exception-handling functions (or the dump facility itself) could easily be marked to use frames outside the normal (overlapping) frame area.&lt;br /&gt;&lt;br /&gt;The open source development community is an ideal place to implement advanced compiler / linker / loader technology that revises the calling conventions used by modern software.&amp;nbsp; Every application that operates unexpectedly when the calling conventions are changed is an application that was most likely harboring design fallacies that had been unrecognized.&amp;nbsp; Consider this an opportunity to radically improve all open source software with a single paradigm shift.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Hardware and software systems have grown mostly by accretion over the years.&amp;nbsp; The goal has almost universally been expediency: make it run fast and get it done now!&amp;nbsp; Little thought has been given to mitigating common sources of error, except in academic circles.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Much effort goes into testing, primarily to validate the interoperability of various software modules or systems.&amp;nbsp; In general the goal is to ensure that changes made to a new version do not break features of a previously certified application.&lt;br /&gt;&lt;br /&gt;In the biological world, organisms develop resistance to antibiotics through exposure.&amp;nbsp; Malware - whether accidental or intentional - will grow and thrive at the boundaries of the test cases.&amp;nbsp; Such malware may spread in a benign form for long periods, only to be triggered into an active form by a possibly innocuous event.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Recommendations&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;It has been demonstrated that it will be essentially impossible to exclude the accidental or deliberate introduction of malicious behavior into software during its development and maintenance.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Therefore, instead of trying to control humans and their behavior, it would seem reasonable to treat the software itself as the adversary.&amp;nbsp; If every line of code, piece of data and linked module was considered a threat it might be possible to develop high quality threat abatement tools that would have a better chance of success than other approaches.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;The open source community is the perfect place to develop such mitigation strategies.&amp;nbsp; Proprietary software development efforts lack the resources, and tend to hide, deny and fail to document vulnerabilities.&amp;nbsp; Open source developers have the opportunity to take both white hat and black hat roles.&amp;nbsp; Adding test cases that succeed or fail in different implementations is a valuable contribution to the robustness of any software.&amp;nbsp; Such continuing development of both code and validation cases should be the norm.&amp;nbsp; Improvement should be continuous and incremental, without the need for monthly “Critical Updates” or other disruptive strategies that are unevenly applied and of questionable effectiveness.&lt;br /&gt;&lt;br /&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp; Software development methodology&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; a.&amp;nbsp;&amp;nbsp;&amp;nbsp; Require the Designer to provide complete natural-language functional specification document for all software systems, modules and functions, as well as example test cases.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b.&amp;nbsp;&amp;nbsp;&amp;nbsp; Require software to be written exactly to specification by at least two independent development groups, none of which were the Designer of the specification.&amp;nbsp; Preferably this will be accomplished in different programming languages.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; c.&amp;nbsp;&amp;nbsp;&amp;nbsp; Disallow direct communication between independent development groups.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; d.&amp;nbsp;&amp;nbsp;&amp;nbsp; Resolve ambiguities and conflicts between implementations by changes to the specification document, incorporated exclusively by the Designer.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.&amp;nbsp;&amp;nbsp;&amp;nbsp; Require each development group to provide test cases which are not shared with other development groups.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.&amp;nbsp;&amp;nbsp;&amp;nbsp; Provide each development group’s software to a Validation group which is not privy to the specifications.&amp;nbsp; The Validation group runs &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; i.&amp;nbsp;&amp;nbsp;&amp;nbsp; Stress tests with all known test cases,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ii.&amp;nbsp;&amp;nbsp;&amp;nbsp; Stress test with random inputs,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; iii.&amp;nbsp;&amp;nbsp;&amp;nbsp; Stress tests with random structures and data types.&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; iv.&amp;nbsp;&amp;nbsp;&amp;nbsp; Stress test with all supported operating environments.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; v.&amp;nbsp;&amp;nbsp;&amp;nbsp; Expect all results to be identical from each group.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; (1)&amp;nbsp;&amp;nbsp;&amp;nbsp; This implies detecting all changes to global memory and confirming that they are allowed and intended.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; (2)&amp;nbsp;&amp;nbsp;&amp;nbsp; include range and sanity checks for all returned values.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; g.&amp;nbsp;&amp;nbsp;&amp;nbsp; Validation group will record all resource utilization, including speed, memory usage, and external communication.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; i.&amp;nbsp;&amp;nbsp;&amp;nbsp; Resource utilization, including external memory and references must be identical.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ii.&amp;nbsp;&amp;nbsp;&amp;nbsp; Every failed validation must be documented and traced to its origin.&amp;nbsp; The nature of the original error must be identified and shared.&amp;nbsp; Repeated problem areas should be studied and mitigation methods developed.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.&amp;nbsp;&amp;nbsp;&amp;nbsp; One implementation will be chosen for production use, perhaps based on speed, compactness or programming language.&amp;nbsp; The alternative implementations will be available for validation testing of higher-level modules.&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i.&amp;nbsp;&amp;nbsp;&amp;nbsp; New features and future versions will start with changes to the specification by the Designer and will end with comparison of recorded resource utilizations.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; i.&amp;nbsp;&amp;nbsp;&amp;nbsp; Any changes in resource utilization from one version to the next, especially global references, must be properly confirmed.&lt;br /&gt;&lt;br /&gt;2.&amp;nbsp;&amp;nbsp;&amp;nbsp; Stick with one set of development tools.&amp;nbsp; Do not change the core library that your developers use every time a new release comes out. Validation and version control are needlessly complicated if third-parties can randomly revise any pieces of your software.&lt;br /&gt;&lt;br /&gt;3.&amp;nbsp;&amp;nbsp;&amp;nbsp; Use a version control system that captures every piece of software, tool, source file, header file, library, test file, etc. necessary to build and test each release candidate.&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; a.&amp;nbsp;&amp;nbsp;&amp;nbsp; Build the final release version on an independent system with a clean OS installation using only the files extracted from the version control system.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b.&amp;nbsp;&amp;nbsp;&amp;nbsp; At the very least, when the inevitable disaster strikes it will be possible to identify the versions of your software that are affected.&lt;br /&gt;&lt;br /&gt;4.&amp;nbsp;&amp;nbsp;&amp;nbsp; Develop a runtime linkage system capable of swapping out implementations of a particular function or module on the fly.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; a.&amp;nbsp;&amp;nbsp;&amp;nbsp; In the verification process, this would allow the verification system to generate random switches between implementations and ensure continued correct operation of the system.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b.&amp;nbsp;&amp;nbsp;&amp;nbsp; In the operational case, normally only one implementation of each function would be distributed.&amp;nbsp; This mechanism would allow for the distribution of software updates into running systems without requiring a reboot in many cases.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;“What I tell you three times is true.”&lt;/blockquote&gt;&lt;blockquote&gt;&lt;blockquote&gt;The Hunting of the Snark&lt;br /&gt;- Lewis Carroll&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;br /&gt;These suggestions may seem onerous, especially to small developers.&amp;nbsp; This type of approach can easily be implemented using only four individuals: Designer, (2) Developers and a Validator.&amp;nbsp; These roles may be traded for each different module or feature of a project.&amp;nbsp; Far from increasing effort or time-to-market, it could be argued that the improved documentation, cross-training and more robust final product actually reduce overall development effort.&amp;nbsp; New employees can be of immediate use and can be rapidly integrated into the corporate or community structure by assuming any one of the roles without the need for a lengthy training period.&lt;br /&gt;&lt;br /&gt;Converting software to another language or porting it to different hardware will be greatly simplified by the comprehensive documentation and test cases inherent in this method.&amp;nbsp; Identifying the ramifications of bugs (detected by whatever means) will be more comprehensive and rapid if the development tools allow easy generation of a list of all software and modules that use a given feature.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6820120367723139643-7771657890857769449?l=bkmcm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bkmcm.blogspot.com/feeds/7771657890857769449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bkmcm.blogspot.com/2011/07/malevolent-social-engineering-in-open.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/7771657890857769449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/7771657890857769449'/><link rel='alternate' type='text/html' href='http://bkmcm.blogspot.com/2011/07/malevolent-social-engineering-in-open.html' title='Malevolent Social Engineering in Open Source Software'/><author><name>Brian McMillin</name><uri>http://www.blogger.com/profile/00996454463461402892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6820120367723139643.post-4739101626869212669</id><published>2011-07-19T12:18:00.006-05:00</published><updated>2011-09-24T21:40:49.137-05:00</updated><title type='text'>On the Failure of Capitalism</title><content type='html'>&lt;div style="text-align: justify;"&gt;The free market economy worked reasonably well in a 20th century world composed of multiple, competing nations and corporations.&amp;nbsp; The 21st century represents an entirely new challenge.&amp;nbsp; The unprecedented globalization and multinational aspect of every facet of the economy has led to a complete lack of competition in every important aspect of society.&amp;nbsp; This lack of competition removes the key protective feedback required to make capitalism a functional economic concept.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&lt;b&gt;Caveat Emptor&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;All of the platitudes that our parents and grandparents tried to instill in us as guidelines for dealing with the world are rendered fallacious in light of insufficient knowledge.&amp;nbsp; All modern advertising and promotion actively prevents the customer from knowing what he is buying.&amp;nbsp; This allows the seller to redefine the transaction at his own discretion.&amp;nbsp; The customer is unable to compare offers from different suppliers on any basis other than marketing propaganda.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Obfuscation Wins&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Electric and telephone companies, insurance companies, banks, automobile manufacturers all make their money by knowing more about their business than the customers.&amp;nbsp; These organizations are the only ones in a position to accurately compare the prices of their products, but they make their money by preventing accurate comparisons.&amp;nbsp; It is easy to make money by simply lying. You can use smoke and mirrors to cause your employees and customers to buy into, and spread, the lie.&amp;nbsp; And your competitors fan the fires of “freedom of choice” by adding lies of their own.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Literally no one knows the cost of a cell phone, a car, or a shirt at WalMart.&amp;nbsp; Every item comes with so many hidden costs, marketing gimmicks and sales incentives that it is impossible for customers, store employees, store managers or company shareholders to know anything at all about the actual cost of goods.&amp;nbsp; Without this information it is impossible to know if the management decisions and product selection are reasonable.&amp;nbsp; This argument does not even address the larger issues of personnel and overhead that play a major role in the profitability and sustainability of the retail environment.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Outsourced Middlemen&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Virtually any aspect of modern business can be separated from the core business flow and outsourced to a third party.&amp;nbsp; Economic legerdemain can make this seem like a good idea.&amp;nbsp; The voice taking the order at the drive-up window of a fast food restaurant can come from a call center in Bangalore.&amp;nbsp; A company’s management should realize that well-meaning ideas such as this are fundamentally flawed.&amp;nbsp; &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The overriding business case is that excessive outsourcing destroys the accountability required to understand the operation of your own business.&amp;nbsp; You no longer have the ability to examine the true costs associated with your operations.&amp;nbsp; With every organization trying to maximize their profit at all costs, each one will lie, cheat and steal to achieve that goal.&amp;nbsp; Now you have given every outsourced operation a reason to misrepresent themselves in an attempt to grow their own business at your expense.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Mob Rule&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The reason that there are so many high-profile scandals involving Utilities, Finance, Government and the Press is that the leaders in these organizations form a closed society, feeding each other self-congratulatory stimulus that incentivises more and more egregious behavior.&amp;nbsp; Their actions are completely divorced from outside, objective reality.&amp;nbsp; The legality or morality of their actions are buried under the avalanche of self-importance and the compulsion to take the bit in their teeth and run faster toward the precipice.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The intelligence of a mob tends to be lower than that of any individual.&amp;nbsp; The behavior of these corporate mobs may lead to the ultimate failure of the global economy.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Cascade Failures&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The world financial markets are so ill-conceived and mis-designed that they are ripe for a catastrophic cascade failure.&amp;nbsp; Once the dominoes begin to fall there are no mechanisms to prevent total collapse.&amp;nbsp; Propping up failed micro-economies with loans that (objectively) can never be repaid is nothing more that a paperwork band-aid covering a still-festering pustule.&amp;nbsp; Making the balance sheet look good from some arbitrary perspective just delays the inevitable.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;If some nation is deemed Worthy, aid should be given by more prosperous economies with no strings. If that nation is able to grow and develop, it will become a useful member of the world community.&amp;nbsp; It is not necessary for the wealthy nations to engage in balance-sheet self aggrandizement while keeping an oppressive boot on the necks of the poor.&amp;nbsp; Economically successful partners represent a truly valuable return on investment that does not show up on any balance sheet.&amp;nbsp; &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The clarity that would be generated by simply writing off these “loans” would represent a needed breath of fresh air in all our economic calculations.&amp;nbsp; Draw a line in the sand.&amp;nbsp; Evaluate the reality of the situation as it stands now.&amp;nbsp; Do not continue to rely on dubious promises of payment extracted under duress from failed economies.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;An objective look at the world’s major economies would make for much more rational decisions.&amp;nbsp; Major aspects of the U.S. economy are not sustainable.&amp;nbsp; Take, for example, the automotive industry.&amp;nbsp; The entire business model requires selling more vehicles, and therefore enticing more people to sign on to the idea.&amp;nbsp; But cars last longer, the population declines, and operating costs escalate.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I argue that virtually no one today actually wants a car.&amp;nbsp; They want a video game console with leather seats.&amp;nbsp; They would leave off the car part if they could.&amp;nbsp; They do not want to buy it gas.&amp;nbsp; They do not want to insure it. They do not want to sign away their income to get it.&amp;nbsp; They do not want to sit in traffic with it.&amp;nbsp; The only reason that people buy cars, even today, is that they have been convinced that there is no alternative.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Soon the customer base will decide, &lt;i&gt;en masse&lt;/i&gt;, that they really do not want or need a new car - despite ever-increasing marketing hype.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Without a rational plan, this will likely come as a Big Surprise to many investors.&amp;nbsp; And their reliance on idealistic projections with no basis or objective feedback may prove catastrophic.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Chinese economy is another case-in-point.&amp;nbsp; Everyone seems to believe that China is set to become the dominant economy in the 21st century.&amp;nbsp; I find this hard to believe.&amp;nbsp; There is so much smoke and mirrors work involved in evaluating their business practices that I think that any reliance on such information is suspect.&amp;nbsp; Objectively, they have stepped up from a third-world economy by purchasing their place at the table of world powers.&amp;nbsp; In order to do so, they are selling their labor and resources for pennies on the dollar.&amp;nbsp; They can do this because they have a large population and geographic area.&amp;nbsp; But what they are doing is not in any way sustainable.&amp;nbsp; It shows no understanding of the shortcomings of 19th century industrialism.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Demand for Chinese goods may sag, whether due to natural disaster, economic turmoil or even a moral refusal to purchase goods manufactured with what amounts to slave labor.&amp;nbsp; Their reliance on the inflated promises of the financial wizards may well be catastrophic in the face of even a modest slowdown.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Feedback Limits&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I have mentioned the loss of feedback that caused the economy to lose its equilibrium.&amp;nbsp; The equilibrium in question was the comfortable &lt;i&gt;status quo&lt;/i&gt; of the late 20th century.&amp;nbsp; However, there are other, larger, feedback systems that will take over.&amp;nbsp; Even after a catastrophic failure, nature reaches a new balance - possibly in a completely unexpected configuration.&amp;nbsp; The fundamental constraints of nature provide the ultimate fail-safe.&amp;nbsp; &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Adapt or Die&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;No matter how much wishful thinking and pious hand-wringing we engage in we must deal with the objective realities.&amp;nbsp; We cannot legislate success, or vote to repeal natural law.&amp;nbsp; We must act to cushion the impact of the failure of the current economic model, not continue propping up failed policies with ever-more-vehement rhetoric.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Buyer Rules&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;It is amazing all the clever (doubletalk) financing and (mumble) incentives and (ahem) volume discounts that a supplier will dream up if they are told, in advance, exactly how much the customer will pay.&amp;nbsp; The buyer must simply be realistic and refuse to be swayed by ANY escalation of the real bottom line.&amp;nbsp; Absolutely no contracts for the future -- purely pay-as-you-go.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Implementing this philosophy would solve the debt crisis facing our schools.&amp;nbsp; Very simply, we take the amount of current tax revenue and apportion it using exactly the same percentages as last year.&amp;nbsp; Salaries, maintenance, utilities and supplies.&amp;nbsp; All get the same PERCENTAGE of the revenue that they did before.&amp;nbsp; Extremely fair.&amp;nbsp; The electric company no longer dictates prices to the government.&amp;nbsp; Union workers no longer get arbitrary raises.&amp;nbsp; The customer (school district) takes back control of their own operation.&amp;nbsp; If the suppliers (employees and utilities) want the business, they are responsible for making it work.&amp;nbsp; If they do not want the business, there will be other, more efficient suppliers who will be able to step up.&amp;nbsp; No lay-offs or building closures.&amp;nbsp; No fear-mongering or threats.&amp;nbsp; No uncertainty.&amp;nbsp; Just across-the-board adjustment in payments.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;What about the employees and suppliers?&amp;nbsp; Won’t they bear the burden?&amp;nbsp; No, they do not have to.&amp;nbsp; This is the ultimate trickle-down.&amp;nbsp; They will realize that they, too, can just say “NO!”.&amp;nbsp; They do not have to be at the mercy of ever-increasing costs.&amp;nbsp; They can actively regulate the prices that they pay – not simply settle for a choice between bad and worse.&amp;nbsp; This will re-introduce the balance that is missing when inflation is controlled only by arbitrary decisions by an elite few individuals, based on unverifiable currency market reports.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This would also work for ordinary consumers, IF....&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Contracts and Lawyers&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The sheer length of all modern contracts is an admission that the seller is pushing a product that the buyer does not want, will not like, or cannot afford.&amp;nbsp; Examples include cell phones and credit cards.&amp;nbsp; There is nothing reasonable or sustainable about these lock-in deals.&amp;nbsp; If the seller had a valuable product and he knew the customer would be satisfied there would be no need for draconian legalese.&amp;nbsp; The seller should always strive to keep the customer happy.&amp;nbsp; A happy customer will be glad to pay.&amp;nbsp; If the deal doesn’t work out (for whatever reason) all of these deals should allow the parties to walk away amicably.&amp;nbsp; Maybe the next deal will work out better.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Objectively, a home mortgage is nothing more than a rent-to-own contract in which the landlord (bank) doesn’t even have to maintain the plumbing.&amp;nbsp; Just because it is couched in twenty pages of fine print, and it has been marketed since the days of “Leave it to Beaver” as the American way, does not make it a reasonable deal.&amp;nbsp; The fact that the deal is fundamentally unreasonable is the reason that there is so much business for the courts today.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In all these cases, I propose that “the deal” be limited to what can be written on a single sheet of paper.&amp;nbsp; I will do this, if you will do that.&amp;nbsp; If it doesn’t work out, we walk away.&amp;nbsp; No recriminations.&amp;nbsp; No credit scores.&amp;nbsp; No lawyers.&amp;nbsp; No unhappiness.&amp;nbsp; Maybe we can make a better deal the next time.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I guarantee that the phone companies would be more responsive if every customer that they lost was a Big Deal, and not just part of business-as-usual churn.&amp;nbsp; And if the customers all left because marketing hype turned out to be lies, maybe the advertising would be more responsible.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Single page “contracts” that are easily understood would actually reduce the costs of virtually all aspects of doing business.&amp;nbsp; Even though some deals do not work out and represent a cost, it is hard to figure how those costs to a well-run business could possibly exceed the total cost of the legal system as it stands now.&amp;nbsp; There is nothing sustainable about making your own customers the adversary from day one.&amp;nbsp; &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I do not believe that it is necessary to “Kill all the Lawyers” as Shakespeare so famously suggested.&amp;nbsp; It should be sufficient to simply let them starve to death.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6820120367723139643-4739101626869212669?l=bkmcm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bkmcm.blogspot.com/feeds/4739101626869212669/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bkmcm.blogspot.com/2011/07/on-failure-of-capitalism.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/4739101626869212669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/4739101626869212669'/><link rel='alternate' type='text/html' href='http://bkmcm.blogspot.com/2011/07/on-failure-of-capitalism.html' title='On the Failure of Capitalism'/><author><name>Brian McMillin</name><uri>http://www.blogger.com/profile/00996454463461402892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6820120367723139643.post-3379161613508546634</id><published>2011-07-18T16:46:00.000-05:00</published><updated>2011-07-18T16:46:06.943-05:00</updated><title type='text'>The Challenge of Conventional Wisdom</title><content type='html'>&lt;b&gt;Spacesuits and glove boxes&lt;/b&gt;  &lt;br /&gt;&lt;br /&gt;I believe that the space suits currently being used by NASA (and the Russians, for that matter) are in need of complete redesign.  Spacesuits are intended to allow a person in a comfortable environment to manipulate objects in a nearby hazardous environment.  This is exactly what a “glove box” used for sand blasting, electronic production or chemical handling does here on earth.  Why not just invert the view and put the astronaut inside the glove box?  This means we get rid of the “suit” concept.  Why does an astronaut in zero G need his legs?  And separate boots?  Why can’t he take his hands out of the gloves?  The biggest complaint that spacewalking astronauts have is that their hands get cold and tired.&lt;br /&gt;&lt;br /&gt;My suggestion is that the entire torso and leg section of the suit be replaced with a rigid canister that the astronaut could rest inside.  Perhaps when he “stands up” his head is positioned properly inside the helmet area so he can see, and his arms reach properly into the gloves.  When he “sits down”, perhaps cross-legged, he has an area where he could eat, drink, relax, and so on.  All he would really need is some sort of rigid grapple mounted on the outside of the chest area so he could clamp the suit in position to the structure he is working on.  This would keep his motions inside the suit from starting a spin or other undesirable attitude.&lt;br /&gt;&lt;br /&gt;A small hole in a glove is very dangerous.  Currently, you would have to try to patch it against the escaping air.  If you could get your hand out of the glove and apply a patch to the inside it would tend to be self-sealing.  &lt;br /&gt;This design would not be significantly different in volume than the current suits, so the power and air handling systems would be about the same.  It would also fit through standard hatches and could be positioned by the same station or shuttle robot arms.&lt;br /&gt;&lt;br /&gt;Why hasn’t anyone done a design like this?  Because it cannot be tested, except in orbit.  Astronauts are specifically trained for each EVA, simulating the situations they might encounter while working in space.  Current suit designs are used extensively in EVA training sessions underwater.  This simulates weightlessness in the general sense, but the astronaut is not weightless inside the suit.  No astronaut could get valid experience using a glove-box type design until he was actually weightless.  Therefore, any realistic design, experimentation, construction, testing, and revision would have to be done in space.  There simply are not the facilities, resources, time, or personnel to do this work safely in orbit today.  So we are left with the rather ludicrous legacy suits.  They are designed to work in two completely different, incompatible environments and do a poor job in both.&lt;br /&gt;&lt;br /&gt;A rapid prototyping facility in orbit would allow people in space to build the tools that they envision.  And their vision will be completely different from the vision of engineers on earth.  Using some of these Replicator concepts should help to make such a facility safe and sustainable.  &lt;br /&gt;&lt;br /&gt;* * *&lt;br /&gt;&lt;br /&gt;Many of the systems in use today are the result of legacy discoveries or observations.  In many cases entire industries have been founded on the basis of one particular observation or another.  As these industries grow and become more ingrained in society, it becomes more and more difficult to rethink the basic premises.  I am concerned that many of the foundations of modern society are based on such fundamental flaws that much of what is being produced today is at risk of catastrophic obsolescence.&lt;br /&gt;&lt;br /&gt;I will give two areas of concern, broadly termed Auditory Systems and Vision Systems.  I believe we must look to a future when all of our current multimedia industries will seem as though they were turning out daguerreotypes and recordings on wax cylinders.  &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Auditory Systems&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;Stereo audio systems are based on the simple observation that people have two ears.  The assumption is that spatial discrimination is based on differences in timing and amplitude of the sounds heard by each ear.  And you can create some real “Wow” effects by artificially increasing the separation of the two channels.&lt;br /&gt;&lt;br /&gt;Unfortunately, this is not all that goes on in audio perception.  In the real world, individuals interact with their environment.  They turn their head.  They use a multitude of cues to identify the location and nature of a sound.  This is why surround-sound systems are increasingly popular.  They are slightly more realistic.&lt;br /&gt;&lt;br /&gt;Human beings are really very good at processing auditory information.  Most people just do not realize it.  You can tell the difference between standing in an empty room and one with furniture in it, just by the ambient sound.  You can tell how close you are to a wall by the sound if you practice for a little while.&lt;br /&gt;&lt;br /&gt;Your home theater system will have an audio “sweet spot” where the sounds are most like what the producers intended.  If you move away from that spot the audio illusion does not travel with you any more than the visual one does.  You get a distorted presentation and the visual cues and audio cues will be mismatched.  Some people can take this in stride, like enjoying a roller coaster ride.  It makes other people nauseous.&lt;br /&gt;&lt;br /&gt;For our purposes here, the problem is that this audio information is insufficient.  Each listener needs to be able to interact with the environment.  Their own perceptual systems are unique.  The spectral responses of their ears and the changes they expect as they move, breathe, swallow, etc. are all unique and affect the believability of the illusion in subtle ways.  Just putting a pounding base line on a sub-woofer does not make a believable motorcycle engine.&lt;br /&gt;&lt;br /&gt;Another area of glaring deficiency is the synthesis of voices.  One would think that creating believable voices would be much simpler than visual animation.  After all, you can recognize the person speaking over a telephone.  Single channel, low bandwidth, digitized audio.  This should be nothing compared to the data and bandwidth requirements of video.&lt;br /&gt;&lt;br /&gt;Even after years of research and development there are only a handful of speech synthesizers that come close to reality.  And they are extremely limited, carefully tailored algorithms.  I expect a proper speech synthesizer to be able to accurately emulate any human being.  If I want it to do Katherine Hepburn, it should sound exactly like I would expect.  If I want Sean Connery, that is what I should get.&lt;br /&gt;&lt;br /&gt;I should be able to simulate age, gender and accents.  I should be able to convey emotion: fear, rage, lust.  I should be able to yell or whisper.  And foreign languages would be no problem.&lt;br /&gt;&lt;br /&gt;Current speech synthesis cannot even get the prosody (rhythm, stress and intonation) of simple sentences right.  I expect a proper speech synthesizer to be able to sing.  I see nothing unreasonable in requesting my Replicator to produce a rendition of Pirates of Penzance as performed by Sean Connery.&lt;br /&gt;&lt;br /&gt;In short, I may have a crew of hundreds of animators to synthesize Shrek, but I still need Mike Meyers, Eddie Murphy and Cameron Diaz.  And the voice parts represent a tiny, tiny amount of data.&lt;br /&gt;&lt;br /&gt;* * *&lt;br /&gt;&lt;br /&gt;The flip side of this is speech recognition systems.  After years of research, they are also a pitiful shadow of what they need to be.  Again, we have a tiny amount of data to deal with.  No more than eight kilobytes or so per second for digitized audio, like over a telephone.  To be rendered into text at no more than about four bytes per second: call it forty words per minute, like a stenographer can do.&lt;br /&gt;&lt;br /&gt;Developers discuss such concepts as “speaker independent” voice recognition systems.  I contend that there is no such thing.  The key to recognizing speech is to have a huge library of speech to compare a given sample to.  Our illusion of speaker independence is created by our experience with thousands of different people: we are rapidly choosing among thousands of speaker-dependent patterns.  If I were to stand on a street corner and have one hundred random people pass by and speak one hundred random, single words to me I would probably be very slow and inaccurate in my understanding.  If, however, each of those hundred random people said a sentence, my brain would be able to pull out age, gender, ethnicity, accent and other factors which would be used to tailor my expectations and make my recognition system much more accurate.&lt;br /&gt;&lt;br /&gt;My three-year-old grandson is in the process of building such a universal library for speech recognition.  Everyone he hears speak, either directly to him, or in the background, or on television adds to his repertoire of context and recognizable words.  He may not know meaning, spelling or anything else, but he will certainly be able to tell when his mother, father or Spongebob are discussing “crab fishing”.  As far as he is concerned: same sounds, different speakers - no problem.&lt;br /&gt;&lt;br /&gt;Knowledge of the speaker and the expectations that your brain derives from that knowledge is what allows us to pull a single voice out of cocktail party chatter or simple background noise.  Tailoring expectations is also what makes it so much easier to understand someone when you can see their lips.  The broader your experience and the larger your exposure to different speakers, the more likely it is that your brain will be able to choose a good template to match against the sounds it hears.&lt;br /&gt;&lt;br /&gt;* * *&lt;br /&gt;&lt;br /&gt;I believe that, in the long run, speech recognition and synthesis systems will be parts of a single whole.  The speech recognition portion would have examples of Katherine Hepburn to tailor its expectations when analyzing her speech.  The speech synthesis would be adaptable and would iteratively feed samples into the recognition system to see how well it approximated the expectations.  Just the way a voice actor listens and experiments to learn an accent.&lt;br /&gt;&lt;br /&gt;Adaptive systems such as this would make the man-machine interaction much more reliable by allowing the machine to automatically switch to the language pattern most easily understood by the user - for both speaking and listening.  This would minimize the misunderstandings in both directions.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Vision Systems&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;Human vision is very good at spotting important details.  We are descended from millions of generations of individuals who were not eaten by the saber-toothed cat.  We can spot tiny clues to larger patterns hidden in the bushes.  Sometimes, we see things that aren’t really there, but this is the safe option.  To fail to see something that really was there could be fatal.  As long as we are not too jumpy to find a meal and eat it, we will do OK.&lt;br /&gt;&lt;br /&gt;This vision system is very good, but we can have some fun with it.  Play some cute tricks.  Every grade school child has seen a cartoon flip-book.  Make your own little animated character.  One still frame after another, your brain interprets it as a moving image.  Over the past century, we have taken this trick and built entire industries around it.  Movies and Television and Video Games.&lt;br /&gt;&lt;br /&gt;The problem is that this flip-book trick bears essentially no relation to what is actually going on in our visual perception.  Yes, it usually works.  No, it does not really allow us to perceive all we could.&lt;br /&gt;&lt;br /&gt;Our retina is designed to detect changes in light level.  We see things when edges pass across the photo-receptors in the eye.  If there was no movement we would lose the ability to see any patterns at all within a few seconds as our neurons reached a stable state.  Therefore, our eyes are designed to always introduce motion.  Tiny tremors known as micro-saccades.  There are always edges or changes in brightness moving across our field of vision.  The patterns and timing of those changes, coupled with the direction of the saccade are what allow us to recognize objects.&lt;br /&gt;&lt;br /&gt;Unlike all current still or digital photography methods, our eyes have no shutter and the spacing of the light-sensitive elements is not uniform.  The motion-sensing characteristic is what allows our eyes to function without a shutter.  And the distribution of cells in the retina allows us to see fine detail as well as a wide-angle view simultaneously, without resorting to the zoom-lens concept.  Even when we are concentrating on fine detail in an object, our peripheral vision is protecting us from lurking cats.&lt;br /&gt;&lt;br /&gt;These fundamental differences lead me to believe that the one-still-image-after-the-other movie approach will be replaced with a more appropriately designed technology.&lt;br /&gt;&lt;br /&gt;One thing to remember is that the motion detection within the eye is really fast.  On the order of one hundred times faster than the frame rate in a movie.  And your eye position is an interactive part of the perceptual process.  If I see an edge move across the movie screen in my peripheral vision I will register one thing.  But if I am looking straight at it the edge will skip over so many receptors that I usually just take it for granted that it moved smoothly.  In other words, I can tell it is an illusion.  Even on very fast frame rates, like an IMAX movie.  A big part of the problem is that film tricks like motion blur (as the shutter speed reaches the maximum for the frame rate) just introduce blurred blobs to the retina.  There is no sense of direction, just there and not there.  &lt;br /&gt;The retina is designed to help figure out what direction an object is moving, and it does so in conjunction with the pattern of micro-saccades and the movement of your  body.  This is what allows a batter to hit a major-league fastball.  He can actually see the seams and accurately judge the motion of a spinning, 2.86 inch diameter sphere coming toward him at over 90 miles per hour.  The total time between the pitch and the time the bat must make contact is less than half a second.  There is little chance that anyone could hit a fastball if they were allowed to see only a video or movie of the pitch.  It is easy to call it after the fact.  But actually seeing it and getting the swing down in time is one of the greatest challenges in all of sport.&lt;br /&gt;&lt;br /&gt;* * *&lt;br /&gt;&lt;br /&gt;The digitization of video images leaves a lot to be desired.  Black and white (panchromatic) movie film had excellent sensitivity, resolution and dynamic range.  When this was scanned to create old analog broadcast television signals using an old-style “film chain”, much of this dynamic range was preserved.  In particular, blacks were black and showed a smooth transition to white.&lt;br /&gt;&lt;br /&gt;The same cannot be said of modern digital signals and displays, even “high definition” ones.  Invariably the sales and marketing hype will emphasize the brightness of the image, or the sharpness of selected scenes.  Much of this “Wow” factor comes from unnatural adjustments of color saturation to make the customer think they have been missing something with the older technology.&lt;br /&gt;&lt;br /&gt;One key to spotting the limitations that I am talking about is to observe scenes with highlights and deep shadows.  Invariably, the shadow will exhibit a “posterization” effect: you can see the contours of digitization steps where the intensity changes by a single integer step.  Furthermore, you may be able to spot a “blockiness” in the shadows instead of smooth contours.  This is an artifact of the MPEG compression algorithm.  Dark shadow areas are also subject to a “crawling” effect caused by slight variations in the way the MPEG algorithm renders the region from one frame to the next.  I contend that the presence of these types of artifacts indicates that this is a technology where the compromises required to “get it to market” have limited the range of material that can be produced for the medium.  New productions won’t suffer because the directors and cameramen know that shadows don’t work.  And the old films have now become incompatible with the new media.&lt;br /&gt;&lt;br /&gt;This incompatibility is far deeper and more fundamental than the much more obvious and annoying things such as different frame rates and different aspect ratios.  All craftsmen strive to achieve quality work within the limitations of their tools.  The extraordinary effects that are achieved in one medium may be lost in another.  Film makers who, for example, use only the center third of their frame simply because it might eventually be shown on TV are doing a disservice to both their vision and their audience.&lt;br /&gt;&lt;br /&gt;* * *&lt;br /&gt;&lt;br /&gt;There are no synthetic vision systems that take advantage of either the shutterless concept for motion sensing or the fovea-based idea to give simultaneous zoom and wide-angle performance.  All because the conventional wisdom says that perception needs a static image of the whole scene.  And the flip-book idea is good enough for movies.&lt;br /&gt;&lt;br /&gt;* * *&lt;br /&gt;&lt;br /&gt;Grade school children are also taught all about primary colors and color wheels.  Red, green and blue: primary colors of light.  Magenta, cyan and yellow: primary colors of pigment.  Simple concepts.  It is how color TV screens and computer monitors work.  It is how digital cameras work.  It is how four color (with the addition of black ink) offset printing works.  It is how color film and movies work.&lt;br /&gt;&lt;br /&gt;The only problem is that it is not how our vision system really works.  We are told that there are red-, green- and blue-sensitive cones in our retinas.  These are differentiated by three different photopigments within the cells.  Upon closer examination, that is only true in the broadest sense.  Ten percent of men have only two different working pigments, thus exhibiting red/green color blindness. Up to fifty percent of women have a genetic mutation that produces four different pigments, thus yielding better ability to distinguish subtly different colors.&lt;br /&gt;&lt;br /&gt;Many animals such as birds not only have four different photopigments, their cones include specialized droplets of colored oil that narrow the spectral sensitivity of their cones and add to the ability to resolve subtle variations in color.  One reason pets do not respond to photographs or television as we might expect is that they perceive colors differently.  An image that appears photo-realistic to us will have a cartoon quality to the animals.&lt;br /&gt;&lt;br /&gt;No matter how much I fiddle with the white balance of my camera or the gamma correction of my monitor I will never be able to come up with a setting that allows my wife and I to agree on a color match.  The trichromatic color technology is fundamentally flawed and needs to be revisited in a thoughtful way.  We need to transition to full-spectral imaging without an industry-wide upheaval.&lt;br /&gt;&lt;br /&gt;* * *&lt;br /&gt;&lt;br /&gt;Our poor, abused grade school children are also taught all about stereo vision and depth perception.  It seems obvious.  You have two eyes.  The angle between the two as you focus on an object gives you its distance.  Ties right in with your geometry class.  The only problem is that the effect is far too small to be of much use beyond ten feet or so.&lt;br /&gt;&lt;br /&gt;A much more important effect is the parallax of near-field objects against the distant background.  You get two slightly different views and perceive it as depth.  You can even see the effect yourself with a stereoscope or View-Master.&lt;br /&gt;&lt;br /&gt;These stereo effects are all valid, but they do not tell the whole story.  You can get depth perception with only one eye.  All you need is near-field objects and some motion.  When you drive a car your head moves around.  The hood ornament or fender or some dirt on the windshield  is all that is needed.  Using only one eye you can judge distances, park properly, etc.  Your brain is fully capable of figuring it out with little training.&lt;br /&gt;&lt;br /&gt;I have observed the way a cat’s eyes work.  In particular, they tend to have eyebrows and whiskers that droop off to the side of their eyes.  A little thought on the matter yields the realization that whiskers as near-field objects and micro-saccades give a cat depth perception in their peripheral vision using only one eye.  In other words, a cat can be intently stalking a meal, looking straight ahead, and still be aware of exactly how far it is to the nearby branch it is passing.  The combination of motion-sensitive peripheral-vision (non-foveal) photoreceptors, micro-saccades, whiskers, the target object and the background gives a tremendous amount of information.  Processed by a an astoundingly capable visual cortex, this information allows a level of perception only hinted at by the grade school explanation.&lt;br /&gt;&lt;br /&gt;There are many other things at work here.  Unlike the modern photographic approach, nature has not attempted to keep the field of vision flat.  Distortions arise in the single-element lens and in the spherical curve of the retina.  This is not a bad thing - rather it is used to advantage to gain additional information about a scene.  The eye rotates about an axis between the lens and retina.  As the eye moves, these distortions will help to accentuate and outline nearer objects against the background.&lt;br /&gt;&lt;br /&gt;Again, the problem with this misunderstanding of visual perception is that modern technology is only taking advantage of a tiny part of the capabilities inherent in all of us.&lt;br /&gt;&lt;br /&gt;* * *&lt;br /&gt;&lt;br /&gt;These observations have wide-ranging implications.  What will an advanced generation of display device look like?  How can we make objects with full-spectrum controlled color?  Kind of like some sort of super-paint.  How will this affect art?  What about this interactive, non-static motion-sensing business?  How can I design my art so that I control your perceptions?  Draw attention to certain parts on a consistent basis.&lt;br /&gt;&lt;br /&gt;What can this tell us about pattern recognition?  Things oriented at odd angles.  Floating in zero gravity.&lt;br /&gt;&lt;br /&gt;What about facial recognition?  I can easily spot my wife in a crowd.  It is harder to do in a picture of her in a crowd, since I don’t get any motion cues.  It is really hard in a video of her in a crowd because the camera’s point of view is fixed and the resolution is very low.  Unlike the real world, focusing on a particular point on the screen doesn’t make that area any clearer.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Implications for symbology:&amp;nbsp; Writing, fonts, markings.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Normal writing has a tremendous amount of redundancy.&amp;nbsp; Words are written in a much more complex way than they need to be to convey the minimum information.&amp;nbsp; Most English words, for example can be distinguished from one another by knowing &lt;i&gt;only &lt;/i&gt;the letters they contain.&amp;nbsp; The ordering of the letters just gives more, redundant information.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;These words are easy to read.&lt;br /&gt;Eehst dorsw aer aesy ot ader.&lt;/b&gt;&lt;br /&gt;This is the principle behind the operation of the court reporter’s stenograph machine where each word is formed by &lt;i&gt;simultaneously &lt;/i&gt;pressing certain keys.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;How can we combine this observation with what we know about vision systems?&amp;nbsp; How can we make fonts or markings more easily recognizable or less ambiguous?&amp;nbsp; If we contemplate weightlessness, how can we make markings easy to read no matter what their orientation?&lt;br /&gt;&lt;br /&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;An early Artificial Intelligence system, based on a neural network, was designed and trained to recognize different aircraft as either NATO or Soviet.&amp;nbsp; In the lab, it appeared to perform well but in the field it failed miserably.&lt;br /&gt;&lt;br /&gt;The training was done using photographs from Jane’s Aircraft Recognition Guide.&amp;nbsp; Further research showed that in the training photos, NATO aircraft predominately flew right and the Soviet planes left.&amp;nbsp; The neural net, having no concept of the cold war, was simply figuring out which side of the picture had the pointy-end.&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6820120367723139643-3379161613508546634?l=bkmcm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bkmcm.blogspot.com/feeds/3379161613508546634/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bkmcm.blogspot.com/2011/07/challenge-of-conventional-wisdom.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/3379161613508546634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/3379161613508546634'/><link rel='alternate' type='text/html' href='http://bkmcm.blogspot.com/2011/07/challenge-of-conventional-wisdom.html' title='The Challenge of Conventional Wisdom'/><author><name>Brian McMillin</name><uri>http://www.blogger.com/profile/00996454463461402892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6820120367723139643.post-2369713810204267653</id><published>2011-07-18T16:05:00.001-05:00</published><updated>2011-07-20T10:07:32.930-05:00</updated><title type='text'>On Future Currency</title><content type='html'>&lt;b&gt;Copies of Tokens&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;As all airlines know, there is nothing inherently wrong if they were to sell multiple tickets for the same airline seat.&amp;nbsp; Just as in the quantum mechanics example of Schrodinger's Cat, the world continues with a superposition of two (or more) people believing they will fly on the plane.&amp;nbsp; My customers are happy up until two of them actually show up and try to sit in the same seat.&amp;nbsp; At that point, the quantum wave function collapses and a single reality is restored.&amp;nbsp; One of the cats lives, the others die.&amp;nbsp; My only problem is dealing with the dead cats by explaining the fine print in the contract.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Replicating Money&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Likewise, I see nothing inherently wrong with copying currency.&amp;nbsp; U. S. paper money already has unique serial numbers.&amp;nbsp; In this age of telecommunications and cryptography this serial number concept simply needs to be extended.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;The Federal Reserve needs to issue notes with cryptographic serial numbers and maintain an on-line verification facility.&amp;nbsp; At any time I can have this master system confirm the validity of my note.&amp;nbsp; For a transaction I can exchange it for one or more brand-new notes with newly created numbers while simultaneously invalidating my old bill.&amp;nbsp; The key here is that the long, un-guessable number is the real “currency”.&amp;nbsp; You could print it on your own printer.&amp;nbsp; You could make backup copies to your heart’s content.&amp;nbsp; As soon as the first person uses the currency, however, all the copies are no longer valid.&lt;br /&gt;&amp;nbsp; &lt;br /&gt;By using a cryptographic aspect to the serial number I can still perform off-line operations, confirming that this is real, U. S. currency.&amp;nbsp; I just do not have absolute confidence that I can cash it in until I can contact the validation system.&lt;br /&gt;&lt;br /&gt;This virtual currency is exactly what happens today with a personal check.&amp;nbsp; If I have $100 in the bank, I can still write $100 checks to each of five different people.&amp;nbsp; The first one to the bank wins.&lt;br /&gt;&lt;br /&gt;Making the cryptographic serial number un-guessable is important, not only to allow some degree of off-line verification, but to prevent trial-and-error theft of other people’s cash.&amp;nbsp; This is similar to having a set of rules that can be used to make up new words.&amp;nbsp; The rules can be used to determine if something looks like a real word.&amp;nbsp; But you still need a dictionary to be sure that the word exists, and what it means.&amp;nbsp; The short serial numbers used today are an open invitation to forgers who simply print bills with numbers similar to a known good bill.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;For example, one could use a sixty-letter-and-digit serial number in place of the current eleven-character format.&amp;nbsp; This could give you a 300-bit value that would include a public-key signature to prove authenticity.&lt;br /&gt;Now, suppose you want to send money to your daughter at college.&amp;nbsp; Just read the number off of a bill from your purse to her over the phone.&amp;nbsp; Western Union, eat your heart out!&lt;br /&gt;&lt;br /&gt;You would want to be careful about leaving your cash laying around.&amp;nbsp; Someone could steal it just by copying the number.&amp;nbsp; But the same is true with modern currency - if you leave it laying around it will probably get stolen.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;You could carry your entire bank account on an encrypted thumb drive.&amp;nbsp; And leave a backup copy at home.&amp;nbsp; If it gets lost or stolen, you lose nothing.&amp;nbsp; And the “bills” that you spent before losing the drive are just “no longer valid” on the backup copies.&amp;nbsp; The encryption makes the lost drive useless to anyone who finds it.&lt;br /&gt;Very few people can remember a sixty-character value after just glancing at it.&amp;nbsp; Lots of people, however, can remember the five to nine digits on the end of your checking account number.&amp;nbsp; I am surprised that more so-called identity theft isn’t perpetrated by simply printing bogus checks on account numbers you see at the grocery store.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Doing bill-by-bill verification against a master database would not be inherently more difficult than current credit card verification.&amp;nbsp; There would be a higher volume of simpler transactions, though.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Something similar to this is already in use by the U. S. Postal Service.&amp;nbsp; Various companies offer “print your own postage” programs.&amp;nbsp; These generate a barcode that is scanned by the post office to verify payment of postage.&amp;nbsp; The barcode can be printed or copied any number of times but the first time it is used (scanned at the post office) the other copies become invalid.&lt;br /&gt;&lt;br /&gt;* * *&lt;br /&gt;&lt;br /&gt;Now let’s see how this idea stacks up.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The Bureau of Engraving and Printing might or might not like it.&amp;nbsp; They do not actually get to print anything anymore and get turned into database administrators.&amp;nbsp; On the other hand, they were fighting a losing battle against the counterfeiters, anyway.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;North Korea would hate it.&amp;nbsp; No more super notes.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;The Secret Service would love it.&amp;nbsp; No more super notes.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Banks would love it.&amp;nbsp; They do not have to deal with cash anymore.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Retailers would love it.&amp;nbsp; A simple scanner could read the “bills” that customers could print on ordinary paper.&amp;nbsp; Just like handling coupons.&amp;nbsp; And no theft or robbery problems.&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Drug dealers would love it.&amp;nbsp; No more unwieldy suitcases of cash.&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;The ACLU would hate it.&amp;nbsp; Big Brother might track the serial numbers.&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Your daughter would love it.&amp;nbsp; Instant party time.&lt;/li&gt;&lt;/ul&gt;* * *&lt;br /&gt;&lt;br /&gt;This Verify-Invalidate-and-Replace strategy could be applied to almost any value token.&amp;nbsp; Airline tickets.&amp;nbsp; Concert Tickets.&amp;nbsp; E-Commerce specie. Each scenario would require a method for dealing with fraudulent sales, but detecting the fraud would be greatly simplified.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;A variation of this single-use verification and replacement strategy could be used to replace personal identifiers such as Social Security numbers, credit card or bank account numbers.&amp;nbsp; Using the ability to make duplicates invalid would prevent most of the current forms of identity theft.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Note that what I am talking about here is not one of the elaborate cryptographic security schemes developed in academic circles.&amp;nbsp; Yes, it is a variation of a public-key system.&amp;nbsp; But, no, it does not require users digital signatures or encrypted transactions (beyond basic network communication security such as SSL).&amp;nbsp; It is not invulnerable, but it also does not suffer from the key management and key revocation issues that plague those academic systems.&lt;br /&gt;&lt;br /&gt;The generally temporary nature of a particular token (“bill”) and the possibility of local “trusted issuing authorities” fit in with my general theme of Replicator Technology.&amp;nbsp; Each community, country or colony could have its own Issuance and Verification center.&amp;nbsp; This provides the local, autonomous operation that I look for.&amp;nbsp; And a simple communication link with other authorities could provide exchange of payments and allow honoring of another colony’s money.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6820120367723139643-2369713810204267653?l=bkmcm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bkmcm.blogspot.com/feeds/2369713810204267653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bkmcm.blogspot.com/2011/07/on-future-currency.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/2369713810204267653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/2369713810204267653'/><link rel='alternate' type='text/html' href='http://bkmcm.blogspot.com/2011/07/on-future-currency.html' title='On Future Currency'/><author><name>Brian McMillin</name><uri>http://www.blogger.com/profile/00996454463461402892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6820120367723139643.post-6293835919913502650</id><published>2011-07-18T15:49:00.000-05:00</published><updated>2011-07-18T15:49:44.860-05:00</updated><title type='text'>Intellectual Property vs. Butchery</title><content type='html'>&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;I tried to watch &lt;i&gt;Alien &lt;/i&gt;on my cable channel’s Fright Festival.&amp;nbsp; What I saw was not &lt;i&gt;Alien&lt;/i&gt;, but rather a derivative work: an original compilation by a nameless marketing director.&amp;nbsp; Short clips from &lt;i&gt;Alien&lt;/i&gt; interspersed with thirty percent randomly selected advertising, periodic banners telling me that watching &lt;i&gt;Alien &lt;/i&gt;now is not as important as the fact that &lt;i&gt;Swamp Thing&lt;/i&gt; is coming up next, and a ubiquitous television channel logo.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;If I were Ridley Scott I would be mightily offended.&amp;nbsp; At no time did my vision for &lt;i&gt;Alien &lt;/i&gt;include the juxtaposition of H. R. Giger art and "Girls Gone Wild".&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Advertising this show as &lt;i&gt;Alien &lt;/i&gt;is false on two counts.&amp;nbsp; First, it is not &lt;i&gt;just &lt;/i&gt;Ridley Scott’s &lt;i&gt;Alien&lt;/i&gt;, as we are led to expect.&amp;nbsp; Second, implying it to be Ridley Scott’s deprives the cable channel's marketing director of his rights of authorship for the "original compilation work".&amp;nbsp; &lt;br /&gt;&lt;br /&gt;In fact, if I had the stature of Ridley Scott, I might be tempted to enforce draconian licensing requirements on my works.&amp;nbsp; No butchery.&amp;nbsp; No editing.&amp;nbsp; No overlays.&amp;nbsp; No advertising.&amp;nbsp; No time compression.&amp;nbsp; And, in this age of high-definition, No Pan-and-Scan.&amp;nbsp; Basically, if you want my work, you will take the whole thing.&amp;nbsp; My way.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Cable television needs the content creators a lot more than the content creators need cable television.&amp;nbsp; Direct sales and the Internet are much more lucrative than residuals for late-night TV.&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;Interestingly, Georgia O’Keeffe placed unique restrictions in the licensing for her wonderful paintings.  She required that all reproductions be smaller than the originals.  &lt;br /&gt;&lt;br /&gt;This is a brilliantly simple use of the current copyright laws to protect the brand and preserve the wonder of the originals, while also allowing a wider audience to be exposed to her work.&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6820120367723139643-6293835919913502650?l=bkmcm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bkmcm.blogspot.com/feeds/6293835919913502650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bkmcm.blogspot.com/2011/07/intellectual-property-vs-butchery.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/6293835919913502650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/6293835919913502650'/><link rel='alternate' type='text/html' href='http://bkmcm.blogspot.com/2011/07/intellectual-property-vs-butchery.html' title='Intellectual Property vs. Butchery'/><author><name>Brian McMillin</name><uri>http://www.blogger.com/profile/00996454463461402892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6820120367723139643.post-5277164047709973950</id><published>2011-07-18T15:39:00.000-05:00</published><updated>2011-07-18T15:39:07.485-05:00</updated><title type='text'>Reflex Responses</title><content type='html'>In my youth, a friend of mine studied swatting flies.&amp;nbsp; He discovered that a fly sitting on a table is very good at evading a hand.&amp;nbsp; The fly’s reflex makes it turn away from the attack very quickly.&amp;nbsp; If, however, there are two attackers the fly is not nearly so successful.&lt;br /&gt;&lt;br /&gt;Therefore, if you hold both hands about six inches apart, parallel to the direction the fly is facing and an inch or so above the table, and then clap &lt;i&gt;above &lt;/i&gt;the fly, you will almost invariably hit and stun the fly. &lt;br /&gt;&lt;br /&gt;The fly takes off when it senses movement, either visually or through air currents.&amp;nbsp; It will fly straight, turn left or right, or (interestingly) even backwards, but this attack defeats all those options.&lt;br /&gt;&lt;br /&gt;The fly’s reflex is similar to the one that kills so many armadillos in the road.&amp;nbsp; The near-sighted armadillo would likely be safe if it just sat still.&amp;nbsp; But when it detects the car it jumps up into the passing undercarriage.&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6820120367723139643-5277164047709973950?l=bkmcm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bkmcm.blogspot.com/feeds/5277164047709973950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bkmcm.blogspot.com/2011/07/reflex-responses.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/5277164047709973950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/5277164047709973950'/><link rel='alternate' type='text/html' href='http://bkmcm.blogspot.com/2011/07/reflex-responses.html' title='Reflex Responses'/><author><name>Brian McMillin</name><uri>http://www.blogger.com/profile/00996454463461402892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6820120367723139643.post-7389192739713694653</id><published>2011-07-18T15:36:00.001-05:00</published><updated>2011-07-18T15:36:58.226-05:00</updated><title type='text'>On Hidden Feedback Systems</title><content type='html'>I used to teach scuba diving.&amp;nbsp; This led me to a study of the effects of breathing gasses under pressure.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;In the early twentieth century, J. B. S. Haldane came to the conclusion that different “compartments” of the body (different tissue types) dissolved and released gasses such as nitrogen at different rates.&amp;nbsp; His work led to the Dive Tables used by the Navy and sport divers today.&amp;nbsp; The tables give empirically derived values for the amount of time that a diver can spend at a given depth and the rate at which he can ascend to the surface without the risk of dangerous bubble formation in the tissues.&lt;br /&gt;&lt;br /&gt;In my own analysis, attempting to work from first principles, I was never able to prove that any change in atmospheric pressure was safe. This is not a matter of physics or chemistry, or even biology, per se.&lt;br /&gt;&lt;br /&gt;The human body contains many interlocking feedback systems, governing the distribution of oxygen, removal of carbon dioxide, balancing electrolytes and enzymes, maintaining temperature and controlling digestion and excretion.&amp;nbsp; All are the product of billions of years of evolutionary selection for individuals that did &lt;i&gt;not &lt;/i&gt;die when a low-pressure weather system passed by.&lt;br /&gt;&amp;nbsp; &lt;br /&gt;People die when a biological feedback system hits its limit and is no longer able to compensate for current conditions.&amp;nbsp; The problem is that these feedback systems are completely hidden from view.&amp;nbsp; The empirical tests conducted on 20-year-old Navy SEALs do not generally apply to 50-year-old overweight smokers in a dive class.&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6820120367723139643-7389192739713694653?l=bkmcm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bkmcm.blogspot.com/feeds/7389192739713694653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bkmcm.blogspot.com/2011/07/on-hidden-feedback-systems.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/7389192739713694653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/7389192739713694653'/><link rel='alternate' type='text/html' href='http://bkmcm.blogspot.com/2011/07/on-hidden-feedback-systems.html' title='On Hidden Feedback Systems'/><author><name>Brian McMillin</name><uri>http://www.blogger.com/profile/00996454463461402892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6820120367723139643.post-587585714738132496</id><published>2011-07-18T15:14:00.000-05:00</published><updated>2011-07-18T15:14:35.122-05:00</updated><title type='text'>The Challenge of Obsolescence</title><content type='html'>Replicator concepts allow us to preserve the knowledge and techniques required to fabricate physical objects.&amp;nbsp; In many cases this will be quite valuable, but it must be realized that many objects are useless without their context.&amp;nbsp; As society moves forward and people use newer techniques to accomplish a goal the infrastructure of the past will fall by the wayside.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;Properly operating a steam locomotive is a frightfully complicated task.&amp;nbsp; Unlike most modern engines that essentially have only a starter and throttle, steam engines require careful attention to temperatures and pressures in the firebox, boiler and steam chests.&amp;nbsp; Water levels, fuel flow, lubrication, replenishment of fuel, water and sand also require the attention of the (usually two-man) crew.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;A steam locomotive operates differently under different weather conditions: temperature, humidity, rain or ice all significantly affect its operation.&amp;nbsp; The crew must anticipate changes in load caused by hills or curves.&amp;nbsp; The mechanism is very slow to respond to changes in settings and it can be extremely difficult to restore normal operation if any single parameter slips out of tolerance.&amp;nbsp; Operating a locomotive at 30 mph is a completely different thing than operating at 60 mph.&amp;nbsp; It took years of on-the-job training for an engineer to learn to safely control a steam locomotive.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;A Pennsylvania Railroad steam locomotive (#460, the “Lindbergh Engine”) pulling a tender, baggage car and coach car, is said to have reached a speed of 115 mph on June 11, 1927.&amp;nbsp; I am amazed by the skill of the crew, and the level of trust that they would place in the metallurgy, assembly and maintenance of the locomotive, cars, wheels, tracks, crossings, etc.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;There is no reason to believe that a Replicated steam locomotive would not be fully functional.&amp;nbsp; But it was designed to be operated by a trained crew and run on properly installed and maintained tracks.&amp;nbsp; If I were to need to actually operate my new locomotive I would need to be able to replicate an entire infrastructure of physical objects as well as draw forth the knowledge and skills needed to use this technology.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Many technologies have fallen into disuse - sometimes through obsolescence, sometimes through simple neglect.&amp;nbsp; The ability to use the technology that will eventually be embodied in the Replicator’s “Universal Library Of Everything That Has Ever Been Made” will depend on that library containing much more than physical construction specifications.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;We need to think about the concept of the Operator’s Manual in the same radical way we think about disassembly and recycling.&amp;nbsp; The manual needs to be actually useful in describing how the object is intended to be used and what standard level of background knowledge is expected of the user.&amp;nbsp; Making documentation for a truly broad audience does not mean copying the same unintelligible instructions into seventeen different languages.&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6820120367723139643-587585714738132496?l=bkmcm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bkmcm.blogspot.com/feeds/587585714738132496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bkmcm.blogspot.com/2011/07/challenge-of-obsolescence.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/587585714738132496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/587585714738132496'/><link rel='alternate' type='text/html' href='http://bkmcm.blogspot.com/2011/07/challenge-of-obsolescence.html' title='The Challenge of Obsolescence'/><author><name>Brian McMillin</name><uri>http://www.blogger.com/profile/00996454463461402892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6820120367723139643.post-458643345213283832</id><published>2011-07-18T15:11:00.000-05:00</published><updated>2011-07-18T16:12:37.393-05:00</updated><title type='text'>The Challenge of Not Dying</title><content type='html'>I have made a list of classes of things that can kill a person.&amp;nbsp; In our technological future it would be nice if these things were kept to a minimum.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Temperature Extremes&lt;/li&gt;&lt;li&gt;Pressure Extremes&lt;/li&gt;&lt;li&gt;Acceleration Extremes&lt;/li&gt;&lt;li&gt;Radiation Exposure&lt;/li&gt;&lt;li&gt;Impacts - Penetrating, Crushing, Shearing&lt;/li&gt;&lt;li&gt;Electrocution&lt;/li&gt;&lt;li&gt;Chemical Exposure - Acids / Alkalis, Solvents&lt;/li&gt;&lt;li&gt;Respiratory Failure - Hypoxia / Drowning, Poisons&lt;/li&gt;&lt;li&gt;Starvation - Improper Food, Vitamins, Micro Nutrients, Poisons&lt;/li&gt;&lt;li&gt;Pathogens - Bacteria, Viruses&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Replicator Technology should allow us to create objects needed to guard against these dangers and should not accidentally introduce any of these things into our environment.&lt;br /&gt;&lt;br /&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;On April 14, 1912, a clear, moonless night in the north Atlantic ocean with unusually calm seas, impact with an iceberg fractured hull plates and rivets made brittle by the frigid water leading to the loss of the  RMS Titanic and the deaths of 1,517 people.&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;On May 24, 1993, Joe Bill Dryden, one of the most knowledgeable and experienced F-16 test pilots in the world took a brand new, properly performing, aircraft on a clear day over level terrain and performed a Split-S maneuver into the ground.  He ejected safely, but his parachute descended through the resulting fireball and he was killed by the impact.&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;On January 28, 1986, hot gasses leaking past a redundant pair of frozen o-rings on the right solid rocket booster weakened the supporting structure and ruptured the external tank of the space shuttle Challenger seventy-three seconds after liftoff.  The $1.2 billion spacecraft and its payload were destroyed and all seven astronauts were killed.  &lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;On February 23, 2008, at Andersen Air Force base in Guam, water intrusion into three of twenty four skin-flush air-data sensors caused faulty air speed and attitude information to be sent to the flight control computers of the B2 stealth bomber Spirit of Kansas, leading to a crash immediately after takeoff.  The two pilots ejected safely,  but the $1.4 billion aircraft was destroyed.&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;On March 27, 1977, at Los Rodeos Airport on Tenerife in the Canary Islands, the KLM Boeing 747 Rijn piloted by Captain Jacob Veldhuyzen van Zanten, head of KLM’s flight training department, began takeoff without proper clearance and collided with the Pan Am Boeing 747 Clipper Victor taxiing in the opposite direction on the runway.  Both aircraft were destroyed and 583 people were killed.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;I have used these boxes to describe disasters caused by reality reaching out and grabbing the unwary.  The world is not a safe place.  Mortality or extinction may be closer than even the most paranoid realize.  It is also true that when people are very good at what they do, and are very careful, it is possible to achieve virtually unimaginable things.  &lt;br /&gt;&lt;br /&gt;&lt;table border=1&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;I once visited the McDonald farmhouse at the Trinity Test Site near Alamogordo, New Mexico.  This is an uninsulated wooden, pier-and-beam house typical of the early twentieth century.  I could  look down through the cracks between the floor boards and see the dirt below.&lt;br /&gt;&lt;br /&gt;In this house, in 1945, the absolute top scientists of their day, given the essentially unlimited resources of the Manhattan Project, gathered to hand-assemble the world’s first atomic bomb.  &lt;br /&gt;&lt;br /&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6820120367723139643-458643345213283832?l=bkmcm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bkmcm.blogspot.com/feeds/458643345213283832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bkmcm.blogspot.com/2011/07/challenge-of-not-dying.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/458643345213283832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/458643345213283832'/><link rel='alternate' type='text/html' href='http://bkmcm.blogspot.com/2011/07/challenge-of-not-dying.html' title='The Challenge of Not Dying'/><author><name>Brian McMillin</name><uri>http://www.blogger.com/profile/00996454463461402892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6820120367723139643.post-2143122921552164580</id><published>2011-07-18T14:56:00.000-05:00</published><updated>2011-07-18T14:56:06.248-05:00</updated><title type='text'>The Challenge of Pattern Design</title><content type='html'>Patterns must describe the desired object in a form that can be implemented by the Replicator.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;For a start, let us think of a Replicator Pattern as a kind of recipe.&amp;nbsp; For reference I have included a particularly good recipe.&amp;nbsp; Any cook knows that you (or your mother) must have read The Joy of Cooking before you are actually allowed in the kitchen.&amp;nbsp; Thus, you have the background knowledge to be able to measure flour (don’t pack it down), and what it means to “cream the butter”.&lt;br /&gt;&lt;br /&gt;I have modified the presentation from a normal cookbook format to include the required equipment.&amp;nbsp; If you try making the cookies yourself, see how many little things I have left out.&amp;nbsp; Experiment.&amp;nbsp; Try baking cookies on a clear, cold day and again on a hot, rainy one.&amp;nbsp; Do all the cookies come out nicely brown?&amp;nbsp; What do you “get to know” about your oven.&amp;nbsp; Do you really leave them in the oven for 10 minutes, zero seconds?&amp;nbsp; Or do you peek and take them out when they look and smell nice.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;How do you get the cookies off the cookie sheet?&amp;nbsp; When?&amp;nbsp; Are we going to need a cookie jar?&lt;br /&gt;&lt;br /&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;Chocolate Chip Cookie Recipe&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;Equipment:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; blender&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; grater&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mixing bowl&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; measuring spoons&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; measuring cup&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; spatula&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cookie sheet&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; oven&lt;br /&gt;Ingredients:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 cups&amp;nbsp;&amp;nbsp;&amp;nbsp; butter&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4 cups&amp;nbsp;&amp;nbsp;&amp;nbsp; flour&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 tsp.&amp;nbsp;&amp;nbsp;&amp;nbsp; baking soda&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 cups&amp;nbsp;&amp;nbsp;&amp;nbsp; granulated sugar&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 cups&amp;nbsp;&amp;nbsp;&amp;nbsp; brown sugar&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5 cups&amp;nbsp;&amp;nbsp;&amp;nbsp; blended oatmeal (measure oatmeal and blend in blender to a fine powder)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 24 oz.&amp;nbsp;&amp;nbsp;&amp;nbsp; chocolate chips&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 tsp.&amp;nbsp;&amp;nbsp;&amp;nbsp; salt&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 8 oz.&amp;nbsp;&amp;nbsp;&amp;nbsp; Hershey bar (grated)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp; eggs&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 tsp.&amp;nbsp;&amp;nbsp;&amp;nbsp; baking powder&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3 cups&amp;nbsp;&amp;nbsp;&amp;nbsp; chopped nuts (your choice)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 tsp.&amp;nbsp;&amp;nbsp;&amp;nbsp; vanilla&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;Cream the butter and both sugars. Add eggs and vanilla; mix together with flour, oatmeal, salt, baking powder, and soda. Add chocolate chips, Hershey bar and nuts. Roll into balls and place two inches apart on a cookie sheet.&lt;br /&gt;&lt;br /&gt;Bake for 10 minutes at 375 degrees. &lt;br /&gt;&lt;br /&gt;Makes 112 cookies.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Now we have a batch of cookies.&amp;nbsp; And a terrible mess.&amp;nbsp; How do  we know what to do with the leftover ingredients and the dirty dishes?&amp;nbsp;  Not even The Joy of Cooking is any help here.&amp;nbsp; We have common knowledge  and some vague instructions from the dishwasher’s Operator Guide.&lt;br /&gt;&lt;br /&gt;I  believe that a Replicator Pattern must restore the system to exactly  the initial state.&amp;nbsp; And it should have provisions for cleaning up and  recycling the inevitable accidents - like the egg that got dropped on  the floor.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;How many patterns would be required to recreate the Replicator itself?&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;How many patterns would be required to support a sustainable human population?&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;How many patterns would be required to support a modern technological society?&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;How many patterns would be required to support a colony in space or on Mars?&lt;/li&gt;&lt;/ul&gt;I expect the Replicator to be able to internally derive processing steps and self-optimize operations without explicit direction.&lt;br /&gt;&lt;br /&gt;Patterns must include tolerances and test parameters to be used during production to detect flaws.&lt;br /&gt;&lt;br /&gt;Patterns must describe deconstruction steps to be used during recycling.&amp;nbsp; This must work with incomplete or damaged objects.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Deconstruction patterns are also used to handle production waste by-products such as materials and used tools.&lt;br /&gt;&lt;br /&gt;Software tools must be available to allow ordinary human beings to create and edit patterns safely and successfully.&lt;br /&gt;&lt;br /&gt;Patterns must be standardized in such a way that they can be transmitted from one Replicator to another.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6820120367723139643-2143122921552164580?l=bkmcm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bkmcm.blogspot.com/feeds/2143122921552164580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bkmcm.blogspot.com/2011/07/challenge-of-pattern-design.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/2143122921552164580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/2143122921552164580'/><link rel='alternate' type='text/html' href='http://bkmcm.blogspot.com/2011/07/challenge-of-pattern-design.html' title='The Challenge of Pattern Design'/><author><name>Brian McMillin</name><uri>http://www.blogger.com/profile/00996454463461402892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6820120367723139643.post-5938015463202941268</id><published>2011-07-18T14:41:00.000-05:00</published><updated>2011-07-18T14:41:45.108-05:00</updated><title type='text'>Reducing Space Station Down Mass</title><content type='html'>Consider the resupply situation for the International Space Station.&amp;nbsp; Every few months or so for the past ten years supplies have been sent to the space station aboard the space shuttle or Russian Progress cargo ships at a cost of approximately $100 per pound.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Used equipment, packing materials, and the perfectly good, working cargo ship are then discarded to burn up in the atmosphere.&amp;nbsp; All because there is no safe way to store or recycle the materials, some of which could become extremely hazardous in the confined volume of the station.&amp;nbsp; Also, the lack of maintenance and limited lifetime of certain components (especially seals, pyrotechnics and the fuel systems) mean that the cargo ships would be unsafe.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Careful rethinking and redesign with the goal of eliminating all possible “down-mass” operations would make inhabiting space much more cost effective.&amp;nbsp; Designing equipment to be disassembled into reusable material or components inside the station and designing the vehicles themselves for permanent attachment to the growing station would provide much needed additional space as well as shielding and safety from orbital impacts.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;If cleverly done, this could provide the basic research into techniques for building really large structures in orbit.&amp;nbsp; Questions about orbital boost and decay, dynamic stability, structural strength, modes of oscillation, etc., could all be studied.&amp;nbsp; But not if the design requires that we continue to regularly discard tons of mass that we already paid to put into orbit.&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6820120367723139643-5938015463202941268?l=bkmcm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bkmcm.blogspot.com/feeds/5938015463202941268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bkmcm.blogspot.com/2011/07/reducing-space-station-down-mass.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/5938015463202941268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/5938015463202941268'/><link rel='alternate' type='text/html' href='http://bkmcm.blogspot.com/2011/07/reducing-space-station-down-mass.html' title='Reducing Space Station Down Mass'/><author><name>Brian McMillin</name><uri>http://www.blogger.com/profile/00996454463461402892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6820120367723139643.post-955671450857241684</id><published>2011-07-18T14:29:00.000-05:00</published><updated>2011-07-18T14:29:34.291-05:00</updated><title type='text'>The Challenge of Permanence</title><content type='html'>Our culture would completely change if we were to view literally nothing as permanent.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Buildings, rooms, furniture, clothes&lt;/b&gt; will all be temporary and disposable.&amp;nbsp; Each would exist for its own time span - buildings might change seasonally, rooms weekly, furniture daily and clothes hourly.&amp;nbsp; The amount of space allocated to each individual would shrink as that space performed multiple functions, but the amount of space available to each person would increase as the world became less crowded with unused objects.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Roads and Bridges.&lt;/b&gt;&amp;nbsp; Dynamic redesign, construction and maintenance on a continuous basis.&amp;nbsp; Maintenance lanes as a design feature.&amp;nbsp; Continuously adding and removing capacity as demand changes.&amp;nbsp; Budget for continuous smaller projects instead of enormous, long-duration construction / disruption followed by half-hearted maintenance.&amp;nbsp; How would this affect ancillary requirements such as drainage?&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Buried and Forgotten Infrastructure.&lt;/b&gt;&amp;nbsp; How should items such as water mains, aqueducts, sewers, oil and gas pipelines, power and telecommunications cables, steam pipes, etc. be handled?&amp;nbsp; Everything should be installed with an eye toward the ability to continuously inspect, maintain, remove and replace.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Property insurance is based on the assumption that things are more-or-less permanent and that there is a significant cost associated with replacing them.&amp;nbsp; In a Replicator future the concept of property insurance would probably not exist.&lt;br /&gt;&lt;br /&gt;Carried to the extreme, Replicator technology would make the ultimate disposable culture.&amp;nbsp; The design of everyday objects would change since they would need to be created rapidly, used once, then immediately recycled.&amp;nbsp; The containers that products arrive in would also be radically revised.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Much of the trash discarded by modern society consists of containers and packing materials designed to protect a product from the time it is manufa&lt;span style="background-color: white;"&gt;&lt;/span&gt;ctured until it reaches the consumer.&amp;nbsp; This storage interval has led to a tendency to use more and more indestructible materials, even for products with a limited shelf life.&amp;nbsp; Shipping milk with a shelf life of two weeks in a container that will not degrade in ten years is somewhat incongruous.&lt;br /&gt;&lt;br /&gt;&lt;b style="background-color: white;"&gt;The (perhaps apocryphal) story of Henry Ford in the days of the Model T springs to mind.&amp;nbsp; It is said that he sent accountants to inventory junkyards containing Model T’s and measure the condition of each part.&amp;nbsp; When the statistics were compiled, he ordered parts that were never found to be worn-out to be built to a lower standard.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;If the car was discarded before the part wore out, you paid too much for the part.&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;I contend that no deregulated wireless telephone company has ever been profitable.&amp;nbsp; The technology and infrastructure is changing too fast for it to be both installed and paid off before it has to be replaced.&amp;nbsp; Thus, the current revenue of the phone companies is going to pay off debt and write-downs incurred for previous generations of hardware, even while they are borrowing for the future.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;I am in favor of dynamic replacement of infrastructure and recognize that the more advanced we get the more maintenance is required to keep the systems functioning.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;These costs should be accepted on an ongoing basis, not as part of a wave of speculation based on projections of revenue from future generations.&amp;nbsp; The companies would be making wiser investments if they chose technologies that could actually be profitable within an established area and time-frame, instead of playing a shell game with different technologies while misleading both their investors and their customers.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Doing costly roll-outs of stop-gap incremental technologies just to achieve a small incremental increase in subscriber revenue is such an example.&amp;nbsp; An industry that touts their numbers of new subscribers while obscuring the actual nature or costs of the service they are providing and doing nothing to satisfy or retain their current customers gives the appearance of a pyramid scheme.&amp;nbsp; The real danger is that if the demand falters even for a moment the shift in cash flow in a single large company could cause the collapse of portions of critical infrastructure across the entire country.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Replicator concepts inherently allow for multiple, incompatible technologies.&amp;nbsp; Overlapping functionality can be provided in many different ways.&amp;nbsp; Making these options available to the consumer is important for meeting their differing needs and requirements.&amp;nbsp; But these choices should be made on an informed basis, not with misleading descriptions and inaccurate costs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6820120367723139643-955671450857241684?l=bkmcm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bkmcm.blogspot.com/feeds/955671450857241684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bkmcm.blogspot.com/2011/07/challenge-of-permanence.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/955671450857241684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/955671450857241684'/><link rel='alternate' type='text/html' href='http://bkmcm.blogspot.com/2011/07/challenge-of-permanence.html' title='The Challenge of Permanence'/><author><name>Brian McMillin</name><uri>http://www.blogger.com/profile/00996454463461402892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6820120367723139643.post-5023616783856424261</id><published>2011-07-18T14:19:00.000-05:00</published><updated>2011-07-18T14:19:41.590-05:00</updated><title type='text'>The Challenge of Economics</title><content type='html'>There will always be the need for money, possibly in the form of Replicator Rations.&amp;nbsp; This term was mentioned in Star Trek: Voyager, when the crew faced a situation where they were energy-limited.&lt;br /&gt;&lt;br /&gt;I believe that the Replicator concepts will allow society to come to a more realistic standard measure of the true cost of goods.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;As I have said, the true cost of an object is a function of time and energy.&amp;nbsp; More practically, inherent cost is a function of the costs of materials, fabrication, transportation and assembly.&amp;nbsp; This formula can be applied to any object needed at any location. &lt;br /&gt;&lt;br /&gt;A house identical to mine might have different inherent costs if it was built in different parts of the country - but only because of different transportation and assembly costs, not because the raw materials were any different or they were fabricated differently.&amp;nbsp; Lumping all these into an inherent cost allows us to examine the contrast with speculative cost.&amp;nbsp; I refer to speculative cost as the price that I would pay the builder or current owner of the house if I wanted to buy it.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;It seems that the most egregious abuses of the free market concept stem from the deliberate obfuscation of the value of an object.&amp;nbsp; When the consumer has no objective way to determine the value of the item he is buying, the seller has unlimited ability to manipulate prices.&amp;nbsp; The concept of a home appraisal based on local “comparable” sales is a case in point.&amp;nbsp; This can yield only an estimate of the speculative value of a home and can easily be manipulated on a local basis.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;The current mortgage crisis in the United States is due almost exclusively to this kind of abuse.&amp;nbsp; Unlike the stock market with strict disclosure and reporting requirements that allow investors to compare the inherent and speculative values of a company, the mortgage-backed securities market is a speculative market based on speculative values.&amp;nbsp; It is not possible for an investor to know anything about the underlying properties due to the bundled layers obscuring the ostensible inherent value.&lt;br /&gt;&lt;br /&gt;Using these Replicator concepts, I propose that sellers of certain classes of objects should be required to disclose the inherent cost of the item.&amp;nbsp; Home appraisals should include a nationally standardized inherent valuation, along with the current speculative appraisal.&amp;nbsp; This would allow ordinary consumers to compare properties in much the same way that fuel efficiency numbers allow a consumer to estimate the operating costs of a car.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;The standardized inherent valuation would become a part of the mortgage paperwork and would form an inherent valuation for mortgage-backed securities.&amp;nbsp; This would allow investors to readily determine the comparative risk associated with different offerings by simply comparing the stable inherent valuation with the volatile speculative share price.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;There will still be free-market price fluctuations and trade will continue, but better informed investors will exhibit much less risk of unconstrained expansion leading to inevitable collapse.&amp;nbsp; You can still have a housing boom in an area without the artificial and temporary price inflation caused by unbridled speculation.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;* * *&lt;br /&gt;&lt;br /&gt;As part of this change to the appraisal of real property, I would also envision better stability in the taxation and insurance aspects.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Local governments would be better able to budget for their residents if the property taxes were a function of the inherent value and thus did not fluctuate with the speculative markets.&amp;nbsp; Local sales tax revenue would be based on the speculative price and thus would provide extra revenue during growth and also help to dampen uncontrolled extravagance.&amp;nbsp; This would be a more fair prospect for both long-term residents and recent purchasers.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Insurance companies are currently at a disadvantage in setting fair rates because they have only the arbitrary, speculative appraisal of the property.&amp;nbsp; In general, I would anticipate that the greater the spread between inherent and speculative valuation, the higher the insurance rates would be.&amp;nbsp; You could still insure your home for the speculative value, but the pressure to keep insurance rates reasonable would help to temper any wild increases in that value.&lt;br /&gt;&lt;br /&gt;* * *&lt;br /&gt;&lt;br /&gt;Wise investors will shy away from an investment where the speculative price is too much greater than the inherent value.&amp;nbsp; All that being said, human nature and the lure of easy money will still override common sense.&amp;nbsp; It may be true that the occasional company such as Google will be a good speculative investment at a hundred times their inherent value.&amp;nbsp; But that doesn’t mean that every startup in the Dot Com era was worth that valuation.&amp;nbsp; And even the best disclosure laws cannot protect people from the consequences their own greed.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;* * *&lt;br /&gt;&lt;br /&gt;Now, or in the future, I am not anticipating any communist utopia.&amp;nbsp; There will still be plenty of opportunities for abuse.&amp;nbsp; The Martian colony’s commissar will still be able to divert resources by scheduling materials for his new dacha in the foothills of Olympus Mons ahead of the weekly bread production.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6820120367723139643-5023616783856424261?l=bkmcm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bkmcm.blogspot.com/feeds/5023616783856424261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bkmcm.blogspot.com/2011/07/challenge-of-economics.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/5023616783856424261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/5023616783856424261'/><link rel='alternate' type='text/html' href='http://bkmcm.blogspot.com/2011/07/challenge-of-economics.html' title='The Challenge of Economics'/><author><name>Brian McMillin</name><uri>http://www.blogger.com/profile/00996454463461402892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6820120367723139643.post-495162968365861608</id><published>2011-07-18T14:12:00.000-05:00</published><updated>2011-07-18T14:15:06.299-05:00</updated><title type='text'>The Challenge of Perceived Cost</title><content type='html'>The Fallacy of “Economies of Scale”:&amp;nbsp; Yes, you can drive down the cost of an individual object by making a lot of them, but what if you do not really want a lot?&amp;nbsp; You have locked in the design, added the cost of setup for mass production, getting the raw materials in bulk, storing and transporting the finished goods.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Furthermore, you have created the need to convince customers that this specific product is what they need.&amp;nbsp; The entire concept of marketing, market research and the fundamental basis of a Free Market Economy is based on producing more of an item than you needed.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Creating a particular object requires Design, Setup, Operation and Cleanup phases.&lt;br /&gt;&lt;br /&gt;If the Operation phase is tiny compared to the total, one would be tempted to repeat it just to create “free” objects.&amp;nbsp; It requires discipline to “Just Say No” to unnecessary production.&lt;br /&gt;&lt;br /&gt;If we have the mind set that says we are only going to make one object at a time we are much more likely to engage in trial and error experimentation and make a better product in the end.&lt;br /&gt;&lt;br /&gt;When I step into the machine shop today, I rarely have the pleasure of just sitting down and making something.&amp;nbsp; I spend all my time designing.&amp;nbsp; Figuring out how I can tell the machinist how to set up the machines for production.&amp;nbsp; What stock to use.&amp;nbsp; How the CNC program is going to behave for multiple parts.&amp;nbsp; What hand finishing will be needed.&amp;nbsp; I cannot just mill, whittle and gnaw until my object works.&amp;nbsp; I have to remember every detail of what I do so that I can do it again.&amp;nbsp; And that information has to be in a form that I can communicate to someone else.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The true cost of an object&amp;nbsp; is a function of time and energy.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Long production cycles may also lead to overproduction due to the necessity of starting production in anticipation of demand.&amp;nbsp; If the demand does not materialize you have to deal with the over-supply.&amp;nbsp; And you might have created shortages of other goods preempted by the production of the material you did create.&lt;br /&gt;&amp;nbsp; &lt;br /&gt;Cellular metabolism is regularly confronted with exactly this type of challenge.&amp;nbsp; The solution that seems to have evolved in nature is that many proteins are regularly created and then digested within the cell without ever being used.&amp;nbsp; The balance between production and recycling determines the amount of the material that is available within the cell.&amp;nbsp; In other words, recycling should be the norm, every bit as important as production.&amp;nbsp; If you need material on an emergency basis, you already have the production in place to handle the demand.&amp;nbsp; You simply cut back on the recycling for a while.&lt;br /&gt;&lt;br /&gt;* * *&lt;br /&gt;&lt;br /&gt;No one can figure out how much a car costs, least of all the consumer.&amp;nbsp; The modern automotive industry obfuscates costs to such an extent that no individual, inside or outside the industry can tell where the real value lies.&lt;br /&gt;&lt;br /&gt;The salesman may attempt to maximize his commission, but this may be at odds with what is best for the dealership.&amp;nbsp; The dealership manager may attempt to maximize revenue, but this may conflict with the dealership owner’s interests which are based on periodic bonuses received for unit sales.&amp;nbsp; The manufacturer may incentivize sales for a particular model using revenue from a different model.&amp;nbsp; Research and development, advertising and overhead costs may be spread across multiple models and years.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;In reality, the cost of credit is often the overriding concern when purchasing a vehicle.&amp;nbsp; In the current system there is no way for the consumer to know how much he should pay.&amp;nbsp; Supposed credit scores are based on proprietary formula which may or may not be applicable to the particular transaction.&amp;nbsp; Since there is no reference loan price for a consumer to compare, there is essentially no ability for free-market shopping to operate.&amp;nbsp; There is every incentive for commissioned agents to misrepresent the available options to maximize payments from the customer.&amp;nbsp; Financial institutions should recognize that in a non-transparent system such as this, the abuse comes from their own employees and agents, not the consumer.&lt;br /&gt;&lt;br /&gt;The cost of a car to a small colony on Mars would be a completely different matter.&amp;nbsp; It would take a certain amount of time and material to produce the vehicle, and the priority of that production would have to be weighed against the other needs of the colony.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6820120367723139643-495162968365861608?l=bkmcm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bkmcm.blogspot.com/feeds/495162968365861608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bkmcm.blogspot.com/2011/07/challenge-of-perceived-cost.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/495162968365861608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/495162968365861608'/><link rel='alternate' type='text/html' href='http://bkmcm.blogspot.com/2011/07/challenge-of-perceived-cost.html' title='The Challenge of Perceived Cost'/><author><name>Brian McMillin</name><uri>http://www.blogger.com/profile/00996454463461402892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6820120367723139643.post-8555258220729644804</id><published>2011-07-18T13:54:00.000-05:00</published><updated>2011-07-18T13:54:39.530-05:00</updated><title type='text'>On the Limits of Feedback in Product Design</title><content type='html'>My wife drives a Mini Cooper, made by BMW.&amp;nbsp; The Mini has power windows.&amp;nbsp; As with most modern cars, the cabin seals very well, sometimes preventing the doors from closing all the way against the air pressure without slamming them.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;The Mini engineers came to a clever solution.&amp;nbsp; They arranged for the electronic controls to lower the window about one centimeter whenever the door opened and to close the windows all the way after the door closed and the latch engaged.&lt;br /&gt;&lt;br /&gt;Power windows have been around a long time.&amp;nbsp; The mechanism is well understood and reliable.&amp;nbsp; Unless you raise the window every time you use the door.&amp;nbsp; And stall the motor against the stop each time.&lt;br /&gt;&lt;br /&gt;The window motors that were used were DC motors with brushes and a mechanical commutator.&amp;nbsp; Each time the motor stalled under power the brushes burned.&amp;nbsp; Eventually, the motor would not be able to get power while it was in the window-up position.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;I have had three sets of window motors installed (under warranty) in the last five years.&amp;nbsp; I have explained my analysis of the problem to the local service people.&amp;nbsp; There is virtually no way that this information will ever make it back to the engineers that need to know it.&amp;nbsp; There is also no way that I could improve my Mini by installing a set of proper, brushless DC motors to prevent the problem in the future.&lt;br /&gt;&lt;br /&gt;* * *&lt;br /&gt;&lt;br /&gt;Adrian Monk and I are probably the only two people in the world who are obsessive about ice cube trays.&amp;nbsp; I like to use ice cube trays as an example when I discuss quality in today’s society.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;I believe Rubbermaid makes the best ice cube trays.&amp;nbsp; They are shaped correctly so that the ice cubes do not stick and simply fall out when the tray is inverted.&amp;nbsp; They stack correctly so that, even if over-filled, they do not stick together.&amp;nbsp; They last a long time since they are not being forced to bend while cold.&amp;nbsp; I used the same set of Rubbermaid ice cube trays for fifteen years.&lt;br /&gt;&lt;br /&gt;There is a lot of engineering that went into these trays.&amp;nbsp; There is no business case for a quality ice cube tray.&amp;nbsp; Nobody else makes a quality ice cube tray, and the customers all expect a no-good product.&amp;nbsp; You can’t tell good from bad until you use it.&amp;nbsp; Nobody advertises ice cube trays.&lt;br /&gt;&lt;br /&gt;How can Rubbermaid afford to design and develop a quality product and sell me one set in fifteen years when the competition is selling a set every six months and spending nothing on engineering?&lt;br /&gt;&lt;br /&gt;The answer that I usually use in such discussions is that Rubbermaid is protecting their brand.&amp;nbsp; No individual product can justify the cost, but, on the whole, Rubbermaid is more successful because it sells a variety of quality products.&lt;br /&gt;&lt;br /&gt;* * *&lt;br /&gt;&lt;br /&gt;One might well ask why I would be obsessing about ice cube trays.&amp;nbsp; It is the twenty-first century, after all.&amp;nbsp; Why not just get a modern automatic ice maker and be done with it?&lt;br /&gt;&lt;br /&gt;I have.&amp;nbsp; And I don’t like them.&amp;nbsp; I can’t feed bottled water to them (my tap water tastes terrible and the refrigerator’s filter doesn’t help).&amp;nbsp; Automatic ice makers create a row of nice separate ice-cubes and then dump them into a jumbled bin which becomes a single lump when the frost-free cycle happens. This iceberg-in-the-ice-cube-tray problem also interferes with the rudimentary “need to make more ice” detector.&amp;nbsp; There is no easy way to dispose of the oldest ice.&amp;nbsp; Ice cubes can get hung in the dispenser, then fall out onto the floor when they begin to melt.&amp;nbsp; The dispenser flings ice into your drink with such force that you get splashed in the process.&amp;nbsp; The dispenser sometimes grinds on and on before unexpectedly releasing a deluge of cubes.&amp;nbsp; I cannot adjust the speed of the cycle if I need more ice for a party.&amp;nbsp; If I don’t use the dispenser for a few days the cubes in the ice maker itself sublimate into little slivers, which jam the mechanism when it tries to cycle.&lt;br /&gt;&lt;br /&gt;I even have a Whirlpool Gold product which uses an optical sensor to detect the ice level in the bin.&amp;nbsp; If the weather is humid, the sensor frosts over.&amp;nbsp; Unexpected result: no ice if it is raining.&amp;nbsp;&amp;nbsp; I wonder how many people have requested service because of no new ice, only to have the service person (who doesn’t work in the rain) find no problem.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;So, I can name ten separate areas that need improvement relating to automatic ice makers.&amp;nbsp; I even have some ideas about what I might do that could help.&amp;nbsp; But I have no practical way to modify or improve one once I buy it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6820120367723139643-8555258220729644804?l=bkmcm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bkmcm.blogspot.com/feeds/8555258220729644804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bkmcm.blogspot.com/2011/07/on-limits-of-feedback-in-product-design.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/8555258220729644804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/8555258220729644804'/><link rel='alternate' type='text/html' href='http://bkmcm.blogspot.com/2011/07/on-limits-of-feedback-in-product-design.html' title='On the Limits of Feedback in Product Design'/><author><name>Brian McMillin</name><uri>http://www.blogger.com/profile/00996454463461402892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6820120367723139643.post-801364511126608421</id><published>2011-07-18T13:38:00.000-05:00</published><updated>2011-07-18T13:38:57.854-05:00</updated><title type='text'>What is a Replicator?</title><content type='html'>Let’s begin by defining what I mean by a Replicator.&amp;nbsp; There is the ideal concept and then there are compromises and simplifications that we need to make to fit into the real world.&amp;nbsp; In the ideal case:&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;A &lt;i&gt;Replicator &lt;/i&gt;is a device which takes energy and information as input and produces physical objects and waste heat.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This is a very idealized concept which implies the creation of matter from pure energy.&amp;nbsp; This is certainly possible and is being done today in the real world.&amp;nbsp; A visit to your local particle accelerator might allow you to see for yourself.&amp;nbsp; The amount of matter that can be created is, however, very, very, very tiny.&amp;nbsp; You would probably have to take somebody’s word that matter had actually been created at all.&amp;nbsp; And the amount of energy that it takes is prodigious.&amp;nbsp; That bit about waste heat is not really a joke, either.&amp;nbsp; Making the particle accelerator be able to operate without melting is a major consideration.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;So, maybe we need to compromise a little and allow some type of raw materials to be used.&amp;nbsp; What we mean by raw materials, where we get them, and how they are delivered to the Replicator are all interesting questions which will require further exploration.&amp;nbsp; Now we have:&lt;br /&gt;&lt;b&gt;&lt;br /&gt;A &lt;i&gt;Replicator &lt;/i&gt;is a device which takes &lt;u&gt;raw materials&lt;/u&gt;, energy and information as input and produces physical objects and waste heat.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This has radically simplified things and moved more into the realm of what we might be able to do practically.&lt;br /&gt;&lt;br /&gt;Allowing our Replicator to accept raw materials leaves open the possibility that we could process previously replicated objects into new, completely different objects.&amp;nbsp; This recycling ability forms the heart of a sustainable technology.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;* * *&lt;br /&gt;&lt;br /&gt;Now, what do I mean by information?&amp;nbsp; In this case I am talking about a description of the object in sufficient detail to allow an acceptable copy to be created.&amp;nbsp; It is expected that the Replicator itself will contain a library of detailed information that can be accessed by using nice, user-friendly names.&amp;nbsp; We do not intend to require an atom-by-atom description when all I really need is “Make me a chair”.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;A R&lt;i&gt;eplicator Pattern&lt;/i&gt; is the information necessary to describe the conversion of selected raw materials into a particular physical object.&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The Replicator may contain patterns for 10,000 different chairs, but we expect a suitable user interface to allow the most popular or most appropriate version to be selected.&amp;nbsp; Think of it as Googling the Replicator’s pattern database.&amp;nbsp; You get a kind of catalog to choose from.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Even though the Replicator contains 10,000 chair patterns, it goes without saying that the one you really want is not there.&amp;nbsp; So, the user interface should allow easy customization of objects and some level of error-checking and visualization of the object prior to creation.&amp;nbsp; Thus, “Make me a chair like this, only paisley” would allow you to see if the pattern really matches the decor.&amp;nbsp; And “Make me a chair like this out of mercury” might elicit a cautionary response that the object would instantly melt at room temperature.&amp;nbsp; You could then correct your request to “Make me a chair like this out of titanium.”&lt;br /&gt;&lt;br /&gt;* * *&lt;br /&gt;&lt;br /&gt;Where might this Pattern information come from?&amp;nbsp; For simple objects it could be built from manually created Computer Aided Design (CAD) drawings.&amp;nbsp; For complex objects, an entire library of these detailed descriptions would be needed.&amp;nbsp; The information applicable to each different manufacturing process uses its own set of standards and has certain hidden assumptions that need to be included as part of the Pattern.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;For many objects, both simple and wildly complex, it would be very nice if the Replicator could simply duplicate an existing object.&amp;nbsp; This would require a (presumably non-destructive) scanning process, coupled with an ability to identify materials, plan processes and actually derive a Pattern.&amp;nbsp; This Pattern would then be used to duplicate the object.&lt;br /&gt;&lt;br /&gt;I will argue later that a proper Replicator Pattern must include disassembly and recycling instructions, and that this is at least as important as the object-creation part itself.&lt;br /&gt;&lt;br /&gt;* * *&lt;br /&gt;&lt;br /&gt;We have gone to great lengths to have the information input to the Replicator accurately describe the desired physical object to be produced.&amp;nbsp; The Replicator is expected to produce exactly that object and nothing else.&amp;nbsp; We do not want more than one of the object.&amp;nbsp; We do not want a bunch of left-over, scrap object-pieces, sawdust, used tools, solvents, or radioactive waste.&amp;nbsp; Just one chair.&lt;br /&gt;&lt;br /&gt;* * *&lt;br /&gt;&lt;br /&gt;Right now we are simply trying to define the problem.&amp;nbsp; Actually achieving all this is what the future is for.&amp;nbsp; Even getting close in the near term is going to be a challenge for a lot of people to work on.&amp;nbsp; But I think it is a worthy goal to start toward.&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6820120367723139643-801364511126608421?l=bkmcm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bkmcm.blogspot.com/feeds/801364511126608421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bkmcm.blogspot.com/2011/07/what-is-replicator.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/801364511126608421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/801364511126608421'/><link rel='alternate' type='text/html' href='http://bkmcm.blogspot.com/2011/07/what-is-replicator.html' title='What is a Replicator?'/><author><name>Brian McMillin</name><uri>http://www.blogger.com/profile/00996454463461402892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6820120367723139643.post-8480548879866223377</id><published>2011-07-18T13:30:00.000-05:00</published><updated>2011-07-18T13:30:33.255-05:00</updated><title type='text'>Brian's Dictum</title><content type='html'>Never teach a child to swim.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Teach him to dive.&amp;nbsp; Once he has jumped in he will have to figure out how to get back to the side of the pool.&amp;nbsp; Maybe with a little help the first few times.&amp;nbsp; But if it isn’t a big deal to you, it will not be a big deal to him.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Set the goal high.&lt;/b&gt;&amp;nbsp; The little things will tend to take care of themselves.&amp;nbsp; And if one of the spin-offs happens to be what you wanted in the first place, so much the better.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6820120367723139643-8480548879866223377?l=bkmcm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bkmcm.blogspot.com/feeds/8480548879866223377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bkmcm.blogspot.com/2011/07/brians-dictum.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/8480548879866223377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/8480548879866223377'/><link rel='alternate' type='text/html' href='http://bkmcm.blogspot.com/2011/07/brians-dictum.html' title='Brian&apos;s Dictum'/><author><name>Brian McMillin</name><uri>http://www.blogger.com/profile/00996454463461402892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6820120367723139643.post-6845356737360613492</id><published>2011-07-18T13:25:00.000-05:00</published><updated>2011-07-18T14:07:01.348-05:00</updated><title type='text'>On Global Economies</title><content type='html'>Our global economy has reached the point that our everyday lives are fundamentally dependent on goods and services provided from great distances, sometimes ten thousand miles or more.&amp;nbsp; This dependence on non-local support began when our hunter-gatherer ancestors first grouped into villages and towns.&amp;nbsp; Local transportation and storage of supplies and materials expanded with trade to distant areas.&amp;nbsp; This allowed mankind to exploit regional specialties, originally based on the varying abundance of natural resources.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Technological humans are those that use tools and fire, build villages and have generally stable populations.&amp;nbsp; The scope of a population is the range over which they gather resources.&amp;nbsp; Even though most individuals in a population may not travel very far they may rely on transportation of goods from great distances.&amp;nbsp; Some of these exotic items may be considered luxuries, but if efficient transportation makes items abundant they may come to be viewed as necessities.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;The ready availability of inexpensive goods mass produced in specialized centers located at great distances is what makes our modern technological society possible.&amp;nbsp; Exotic goods, invented mere years ago are now efficiently produced and transported from locations that are completely beyond the control of the consumer.&amp;nbsp; This dependence on distant materials, manufacturing and transportation is a source of great concern.&amp;nbsp; Any disruption due to economic miscalculation, terrorist acts or natural disaster could cascade into virtual collapse of society on a wide scale.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;There are communities that have stable populations which use resources from a limited scope.&amp;nbsp; Primitive tribes in isolated areas tend, for the most part, to be able to function without outside contact.&amp;nbsp; Amish communities, for example, have an early twentieth-century technology and sustain their populations with minimal scope.&amp;nbsp; &lt;br /&gt;The scope of the average individual in the United States has grown to encompass a large part of the earth.&amp;nbsp; Cheap foreign mass production and efficient, inexpensive global transportation have made local production of virtually all goods unlikely.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;There are no manufacturing facilities for the most basic electronic components (resistors and capacitors) located in America.&amp;nbsp; The specifications for those devices are well standardized and the production has been optimized over a long enough time that virtually all of these components come from a small number of plants in Asia.&amp;nbsp; This transfer of technological competence means that the United States relies completely on foreign sources for the most basic devices.&amp;nbsp; Furthermore, it is likely that there are no longer any individuals in the United States that have the knowledge of how to set up the equipment to produce these components.&amp;nbsp; If it were necessary to begin domestic production it would probably take months or years to reacquire the knowledge.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Interestingly, although I believe the United States is in a dangerous situation with respect to demand for foreign resources I think China is much more vulnerable.&amp;nbsp; They are depleting their resources and shifting their population in a completely non-sustainable fashion.&amp;nbsp; In the quest for global trade, they are duplicating the political, regulatory and environmental mistakes that plagued the United States at the beginning of the twentieth century, with the exception that their production is not headed for domestic consumption but rather is being sold for a fraction of its worth overseas.&amp;nbsp; Any major disruption of demand or transportation will lead to the collapse of their highly specialized manufacturing.&amp;nbsp; This will leave huge populations without the ability to participate in commerce and may impact the availability of life-sustaining necessities to these people.&amp;nbsp; The sudden loss of certain manufacturing specialties will ripple throughout the world and cause unpredictable effects on most of the population. &lt;br /&gt;&lt;br /&gt;* * *&lt;br /&gt;&lt;br /&gt;Determining the scope of a particular population may be trickier than it initially appears.&amp;nbsp; An isolated group may be dependent on rain for agriculture which comes from seasonal weather systems that cover thousands of miles.&amp;nbsp; Scope determination becomes easier in a high-tech environment where virtually all resources flow through a known transportation system.&amp;nbsp; Submarines at sea, the International Space Station and research bases in the Antarctic allow a careful examination of resource utilization, but none have truly closed environments or sustainable populations.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Eventually mankind will try to establish self-sustaining colonies in space or on the Moon or Mars.&amp;nbsp; It will be necessary to use local manufacturing to produce many of the goods that will be needed in such colonies.&amp;nbsp; There will not be adequate transportation or storage area to bring along every commodity that might be required.&amp;nbsp; The population will (initially) be too small to allow skilled artisans to manufacture rarely needed goods.&lt;br /&gt;&lt;br /&gt;All of the assumptions that make mass production and transportation on a planetary scale so efficient will not be applicable in tiny, truly isolated colonies.&amp;nbsp; Determining the minimum sustainable population on Mars (for example) is a completely different matter than on Earth.&amp;nbsp; Specialists will be required for maintaining the habitat, obtaining energy and raw materials from the environment, managing health care and reproduction and training young replacements for aging individuals.&amp;nbsp; Each of these tasks will need sufficient redundancy so that accidents or time will not leave the colony short of critical skills.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;For the foreseeable future, certain strategic goods will need to be shipped from Earth.&amp;nbsp; But a just-in-time manufacturing facility will be required in any case.&amp;nbsp; With a population of only 250 adults, even carefully screened, one would expect more than 25 cases of diabetes to develop.&amp;nbsp; It would be unreasonable to rely on timely shipments of simple pharmaceuticals from Earth.&amp;nbsp; Deriving insulin from pig pancreases is simple, early twentieth-century technology.&amp;nbsp; Of course, this presumes that the colony has plenty of pigs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6820120367723139643-6845356737360613492?l=bkmcm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bkmcm.blogspot.com/feeds/6845356737360613492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bkmcm.blogspot.com/2011/07/our-global-economy-has-reached-point.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/6845356737360613492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/6845356737360613492'/><link rel='alternate' type='text/html' href='http://bkmcm.blogspot.com/2011/07/our-global-economy-has-reached-point.html' title='On Global Economies'/><author><name>Brian McMillin</name><uri>http://www.blogger.com/profile/00996454463461402892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6820120367723139643.post-2893321114802072931</id><published>2011-07-18T12:48:00.000-05:00</published><updated>2011-07-18T12:48:50.883-05:00</updated><title type='text'>On Creativity</title><content type='html'>I once stayed in an upscale hotel in Mexico.&amp;nbsp; When I checked in to my room, I found a piece of paper near the telephone. It said “We are having trouble with our phone system.&amp;nbsp; To reach room 123 dial 125.&amp;nbsp; To reach room 124 dial 127...”&amp;nbsp; A full page of this, meticulously hand typed.&amp;nbsp; And again in Spanish on the other side.&amp;nbsp; Using a mechanical typewriter.&lt;br /&gt;&lt;br /&gt;Someone had recognized a problem.&amp;nbsp; They had envisioned a solution.&amp;nbsp; They had implemented that solution.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;This is not the solution that an American would come up with.&amp;nbsp; The American would call the phone company, who would send technicians to work on the “issue.” For days, the customers would be told the phones were simply “out of order”.&lt;br /&gt;&lt;br /&gt;The American solution is clearly the most elegant, but also the most expensive in both time and manpower.&amp;nbsp; It is not clear which solution is objectively better.&amp;nbsp; In the end, the customers at the Mexican hotel are probably not any less satisfied than in the American case.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Creativity comes in many forms, and our previous experiences mold both our expectations and our ability to visualize solutions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6820120367723139643-2893321114802072931?l=bkmcm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bkmcm.blogspot.com/feeds/2893321114802072931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bkmcm.blogspot.com/2011/07/on-creativity.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/2893321114802072931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/2893321114802072931'/><link rel='alternate' type='text/html' href='http://bkmcm.blogspot.com/2011/07/on-creativity.html' title='On Creativity'/><author><name>Brian McMillin</name><uri>http://www.blogger.com/profile/00996454463461402892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6820120367723139643.post-4786824738069641630</id><published>2011-06-28T12:55:00.000-05:00</published><updated>2011-09-24T21:30:48.250-05:00</updated><title type='text'>Limits of Complexity</title><content type='html'>I used to say that I was good at what I do (software design) because I made mistakes faster than anyone else that I know.&amp;nbsp; I was simply following Thomas Edison’s lead and trying as many different options as I could.&lt;br /&gt;&lt;br /&gt;Unfortunately, past a certain point of complexity, this is no longer practical.&amp;nbsp; Testing a particular option requires so much commitment, background work, personnel involvement, data recording, time and expense that only a few options ever get tried.&lt;br /&gt;&lt;br /&gt;In many cases, the first successful trial becomes the final product.&amp;nbsp; “It works.&amp;nbsp; Ship it!”&amp;nbsp; Even though better solutions have become obvious, implementing them is just too time consuming or&amp;nbsp; expensive.&lt;br /&gt;&lt;br /&gt;And many concepts never get tried at all, simply because the expense is too great and the outcome is not guaranteed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6820120367723139643-4786824738069641630?l=bkmcm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bkmcm.blogspot.com/feeds/4786824738069641630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bkmcm.blogspot.com/2011/07/limits-of-complexity.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/4786824738069641630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6820120367723139643/posts/default/4786824738069641630'/><link rel='alternate' type='text/html' href='http://bkmcm.blogspot.com/2011/07/limits-of-complexity.html' title='Limits of Complexity'/><author><name>Brian McMillin</name><uri>http://www.blogger.com/profile/00996454463461402892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
