The phrase brain dump refers to the transfer of a large quantity of information from one person or computer to another. As
slang, it can describe a hurried explanation of a system, job, skillset, or other software engineering subject. In computing,
describes the taking of a snapshot of the internal state of a knowledge database for transfer or archiving purposes.
There are 3 phases in the brain dump process:
- capture; or the free- (if necessary guided-) forming of thoughts into a notation (or language, such as UML) that can be stored in a computer. When people only
are involved, this usually takes the form of a FAQ.
- storage; or the computable and transformable machine representation of knowledge into a persistent medium (flattening or
structuring of the data, such as a DBMS or Object Store). When people only are involved this takes the form of an interactive training disc (for
example).
- query, analysis, and transformation; or the access to information using a universal interface (such as an API, SQL, or a Wiki). When people only
are involved this takes the form of the sitting of a computer skill exam such as any of the Microsoft MCP (or MCSE)
qualifications.
The following sections will look at some of the existing approaches and broadly depict the mechannics of each phase.
Expert System Approach
When inference engines were the norm in Artificial
Intelligence, expert knowledge (in medicine, or some other suitable technical disciplines) was captured as set of rules:
- all the rules are written by experts, and inserted in a computer system pool that is then hooked to inputs (electronic
devices, or textual interface for humans to input the data)
- all the input data is fed to all the rules, which then are analysed to see if the trigger conditions are met: in a medical
context, if patient has, for example, any 4 of {symptom1, symptom2, symptom3, symptom4, symptom5, symptom6}, then there is a
match
- when initial conditions are met, the inference engine (usually written in a symbolic functional language such as Lisp, ML, or Prolog) consumes the input and fires
an output value (which could end up on a piece of paper, such as a diagnostic note in the medical case)
- this value is then put back in the pool
This is still used in some areas of psychiatry.
This captures all the knowledge of an expert, making the assumption that this knowledge is coherent and fully comprehensive.
Most of the time, none of the assumptions on which the rules are based are checked (and sometimes end up being invalid, such as
in the mental health discipline).
However the knowledge is available for all to see as a set of rules (sometimes with some data) with the associated
inference engine (most of the time with source code). This set of rules-data-engine can then be modified or simulated.
The process of capturing the expert's brain is very labour intensive and highly specialised, and the final product is very
artificial, nowhere matching the intricacies and nuances of a real expert delivering a diagnosis in real life (in the medical
case).
A more natural research was started to remedey some of these shortcomings.
Learning Neural Network Research
More modern AI uses an approximation of the brain's biology to get a computer system to "learn": the evolutionary Neural network. This is for example the approach used by Steve Grand for raising / training his pet baby robot Lucy.
Take a situation where a number of inputs should generate a specific output (if there is light, then go towards it). A network
of simulated neurons is fed all the inputs, and through iterative lengthy breeding, only the configurations that generate
the desired output are selected (all the other behaviours result in the network being terminated).
This eventually generates a set of connected inputs and outputs, in a rather chaotic graph (with circularities and dead ends)
of feedback loops, inhibition and stimulation paths. Once such a design has been obtained, the only way to exploit it (for
example to mass-produce an integrated circuit such as an ASIC) is to copy the whole network, as is, with no modification. This is
like making a photocopy. Nobody learns anything in this process (all you get is replication of a solution that is winning but
hermetic/occult).
Here the knowledge cannot be extracted from the brain structure by a straightforward snapshot. But if the training was
recorded, and if the underlying material (brain complexity and power) can be replicated, then it is assumed that new - albeit
different - brains can also acquire the same knowledge. This also means that some training techniques will be more successful
than others at sucessfully evolving a given brain technology. However, very little is known on the subject of training efficiency
and the corresponding neural network suitability.
This probably was how the biological historical brain was developped, but this has - as yet - little bearing / usefullness
with regards to getting one human to communicate her ideas to another human.
In the computer operating system called UNIX (and its variants), when a program crashes,
it dumps a core. A big file is generated containing a snapshot of all the internal state of the software (contents of CPU
registers, and memory cells) and sometimes of the hardware (temperature, input/output status).
This then requires a skilled human to start a debugger application, to relate
all the data in memory to the source code, and to get an idea of what led to
the crash.
As a figure of speech, when one programmer requires that another performs a brain dump, only most rudimentary data and
pointers are produced, and the recipient of the dump is supposed to then go back to the reference material (including software
source code) to actually make sense of it all. Also, from time to time, a software engineer may perform a self- brain dump, to
offload her brain, in order to be able to concentrate on something else, and yet be able to go back to a known state at a
later stage.
A number of well- (and less-) known artifacts / formats are used in this process:
- the FAQ (frequently asked questions)
- the lessons learned
- the revision log
- various thought diagrams (for example see the work of Edward de
Bono, and documents structured by techniques such as the Six
Thinking Hats)
- brainstorming notes (see various mind map software)
- standard diagrams (UML, database structure, LAN/WAN layout, circuit pinout, office plan, etc...)
These files contain unchecked raw data, sometimes self-contradictory, at different stages in the thought process, from
different historical times (recent, old, very old), rumours, gossip, gut feelings, etc...
However, all are focused on the subject being dumped (for example how you will be able to complete this software project on
time).
The brain dump is both data and context, and is intended to be read by another person who has a compatible mind-set (or
context). This context is often not culture- nor language- dependant, in the sense that software engineering uses some form of
universal English (via English-based programming languages) and standardised notations (such as UML) to communicate algorithms and designs. However
geek culture needs to be there for the brain dump to work.
External Links
See http://www.catb.org/jargon/html/B/brain-dump.html and http://www.brain-dump.com/
|