This has not been a scientist's war; it has been a war in which all have had a part. The scientists, burying their old professional competition in the demand of a common cause, have shared greatly and learned much. It has been exhilarating to work in effective partnership. Now, for many, this appears to be approaching an end. What are the scientists to do next?
For the biologists, and particularly for the medical scientists, there can be little indecision, for their war work has hardly required them to leave the old paths. Many indeed have been able to carry on their war research in their familiar peacetime laboratories. Their objectives remain much the same.
It is the physicists who have been thrown most violently off stride, who have left academic pursuits for the making of strange destructive gadgets, who have had to devise new methods for their unanticipated assignments. They have done their part on the devices that made it possible to turn back the enemy. They have worked in combined effort with the physicists of our allies. They have felt within themselves the stir of achievement. They have been part of a great team. Now, as peace approaches, one asks where they will find objectives worthy of their best.
Of what lasting benefit has been man's use of science and of the new instruments which his research brought into existence? First, they have increased his control of his material environment. They have improved his food, his clothing, his shelter; they have increased his security and released him partly from the bondage of bare existence. They have given him increased knowledge of his own biological processes so that he has had a progressive freedom from disease and an increased span of life. They are illuminating the interactions of his physiological and psychological functions, giving the promise of an improved mental health.
Science has provided the swiftest communication between individuals; it has provided a record of ideas and has enabled man to manipulate and to make extracts from that record so that knowledge evolves and endures throughout the life of a race rather than that of an individual.
There is a growing mountain of research. But there is increased evidence that we are being bogged down today as specialization extends. The investigator is staggered by the findings and conclusions of thousands of other workers - conclusions which he cannot find time to grasp, much less to remember, as they appear. Yet specialization becomes increasingly necessary for progress, and the effort to bridge between disciplines is correspondingly superficial.
Professionally our methods of transmitting and reviewing the results of research are generations old and by now are totally inadequate for their purpose. If the aggregate time spent in writing scholarly works and in reading them could be evaluated, the ratio between these amounts of time might well be startling. Those who conscientiously attempt to keep abreast of current thought, even in restricted fields, by close and continuous reading might well shy away from an examination calculated to show how much of the previous month's efforts could be produced on call. Mendel's concept of the laws of genetics was lost to the world for a generation because his publication did not reach the few who were capable of grasping and extending it; and this sort of catastrophe is undoubtedly being repeated all about us, as truly significant attainments become lost in the mass of the inconsequential.
The difficulty seems to be, not so much that we publish unduly in view of the extent and variety of present-day interests, but rather that publication has been extended far beyond our present ability to make real use of the record. The summation of human experience is being expanded at a prodigious rate, and the means we use for threading through the consequent maze to the momentarily important item is the same as was used in the days of square-rigged ships.
But there are signs of a change as new and powerful instrumentalities come into use. Photocells capable of seeing things in a physical sense, advanced photography which can record what is seen or even what is not, thermionic tubes capable of controlling potent forces under the guidance of less power than a mosquito uses to vibrate his wings, cathode ray tubes rendering visible an occurrence so brief that by comparison a microsecond is a long time, relay combinations which will carry out involved sequences of movements more reliably than any human operator and thousand of times as fast - there are plenty of mechanical aids with which to effect a transformation in scientific records.
Two centuries ago Leibnitz invented a calculating machine which embodied most of the essential features of recent keyboard devices, but it could not then come into use. The economics of the situation were against it: the labor involved in constructing it, before the days of mass production, exceeded the labor to be saved by its use, since all it could accomplish could be duplicated by sufficient use of pencil and paper. Moreover, it would have been subject to frequent breakdown, so that it could not have been depended upon; for at that time and long after, complexity and unreliability were synonymous.
Babbage, even with remarkably generous support for his time, could not produce his great arithmetical machine. His idea was sound enough, but construction and maintenance costs were then too heavy. Had a Pharaoh been given detailed and explicit designs of an automobile, and had he understood them completely, it would have taxed the resources of his kingdom to have fashioned the thousands of parts for a single car, and that car would have broken down on the first trip to Giza.
Machines with interchangeable parts can now be constructed with great economy of effort. In spite of much complexity, they perform reliably. Witness the humble typewriter, or the movie camera, or the automobile. Electrical contacts have ceased to stick when thoroughly understood. Note the automatic telephone exchange, which has hundreds of thousands of such contacts, and yet is reliable. A spider web of metal, sealed in a thin glass container, a wire heated to brilliant glow, in short, the thermionic tube of radio sets, is made by the hundred million, tossed about in packages, plugged into sockets - and it works! Its gossamer parts, the precise location and alignment involved in its construction, would have occupied a master craftsman of the guild for months; now it is built for thirty cents. The world has arrived at an age of cheap complex devices of great reliability; and something is bound to come of it.
A record, if it is to be useful to science, must be continuously extended, it must be stored, and above all it must be consulted. Today we make the record conventionally by writing and photography, followed by printing; but we also record on film, on wax disks, and on magnetic wires. Even if utterly new recording procedures do not appear, these present ones are certainly in the process of modification and extension.
Certainly progress in photography is not going to stop. Faster material and lenses, more automatic cameras, finer-grained sensitive compounds to allow an extension of the minicamera idea, are all imminent. Let us project this trend ahead to a logical, if not inevitable, outcome. The camera hound of the future wears on his forehead a lump a little larger than a walnut. It takes pictures 3 millimeters square, later to be projected or enlarged, which after all involves only a factor of 10 beyond present practice. The lens is of universal focus, down to any distance accommodated by the unaided eye, simply because it is of short focal length. There is a built-in photocell on the walnut such as we now have on at least one camera, which automatically adjusts exposure for a wide range of illumination. There is film in the walnut for a hundred exposures, and the spring for operating its shutter and shifting its film is wound once for all when the film clip is inserted. It produces its result in full color. It may well be stereoscopic, and record with spaced glass eyes, for striking improvements in stereoscopic technique are just around the corner.
The cord which trips its shutter may reach down a man's sleeve within easy reach of his fingers. A quick squeeze, and the picture is taken. On a pair of ordinary glasses is a square of fine lines near the top of one lens, where it is out of the way of ordinary vision. When an object appears in that square, it is lined up for its picture. As the scientist of the future moves about the laboratory or the field, every time he looks at something worthy of the record, he trips the shutter and in it goes, without even an audible click. Is this all fantastic? The only fantastic thing about it is the idea of making as many pictures as would result from its use.
Will there be dry photography? It is already here in two forms. When Brady made his Civil War pictures, the plate had to be wet at the time of exposure. Now it has to be wet during development instead. In the future perhaps it need not be wetted at all. There have long been films impregnated with diazo dyes which form a picture without development, so that it is already there as soon as the camera has been operated. An exposure to ammonia gas destroys the unexposed dye, and the picture can then be taken out into the light and examined. The process is now slow, but someone may speed it up, and it has no grain difficulties such as now keep photographic researchers busy. Often it would be advantageous to be able to snap the camera and to look at the picture immediately.
Another process now in use is also slow, and more or less clumsy. For fifty years impregnated papers have been used which turn dark at every point where an electrical contact touches them, by reason of the chemical change thus produced in an iodine compound included in the paper. They have been used to make records, for a pointer moving across them can leave a trail behind. If the electrical potential on the pointer is varied as it moves, the line becomes light or dark in accordance with the potential.
This scheme is now used in facsimile transmission. The pointer draws a set of closely spaced lines across the paper one after another. As it moves, its potential is varied in accordance with a varying current received over wires from a distant station, where these variations are produced by a photocell which is similarly scanning a picture. At every instant the darkness of the line being drawn is made equal to the darkness of the point on the picture being observed by the photocell. Thus, when the whole picture has been covered, a replica appears at the receiving end.
A scene itself can be just as well looked over line by line by the photocell in this way as can a photograph of the scene. This whole apparatus constitutes a camera, with the added feature, which can be dispensed with if desired, of making its picture at a distance. It is slow, and the picture is poor in detail. Still, it does give another process of dry photography, in which the picture is finished as soon as it is taken.
It would be a brave man who could predict that such a process will always remain clumsy, slow, and faulty in detail. Television equipment today transmits sixteen reasonably good images a second, and it involves only two essential differences from the process described above. For one, the record is made by a moving beam of electrons rather than a moving pointer, for the reason that an electron beam can sweep across the picture very rapidly indeed. The other difference involves merely the use of a screen which glows momentarily when the electrons hit, rather than a chemically treated paper or film which is permanently altered. This speed is necessary in television, for motion pictures rather than stills are the object.
Use chemically treated film in place of the glowing screen, allow the apparatus to transmit one picture rather than a succession, and a rapid camera for dry photography results. The treated film needs to be far faster in action than present examples, but it probably could be. More serious is the objection that this scheme would involve putting the film inside a vacuum chamber, for electron beams behave normally only in such a rarefied environment. This difficulty could be avoided by allowing the electron beam to play on one side of a partition, and by pressing the film against the other side, if this partition were such as to allow the electrons to go through perpendicular to its surface, and to prevent them from spreading out sideways. Such partitions, in crude form, could certainly be constructed, and they will hardly hold up the general development.
Like dry photography, microphotography still has a long way to go. The basic scheme of reducing the size of the record, and examining it by projection rather than directly, has possibilities too great to be ignored. The combination of optical projection and photographic reduction is already producing some results in microfilm for scholarly purposes, and the potentialities are highly suggestive. Today, with microfilm, reductions by a linear factor of 20 can be employed and still produce full clarity when the material is re-enlarged for examination. The limits are set by the graininess of the film, the excellence of the optical system, and the efficiency of the light sources employed. All of these are rapidly improving.
Assume a linear ratio of 100 for future use. Consider film of the same thickness as paper, although thinner film will certainly be usable. Even under these conditions there would be a total factor of 10,000 between the bulk of the ordinary record on books, and its microfilm replica. The Encyclopoedia Britannica could be reduced to the volume of a matchbox. A library of a million volumes could be compressed into one end of a desk. If the human race has produced since the invention of movable type a total record, in the form of magazines, newspapers, books, tracts, advertising blurbs, correspondence, having a volume corresponding to a billion books, the whole affair, assembled and compressed, could be lugged off in a moving van. Mere compression, of course, is not enough; one needs not only to make and store a record but also to be able to consult it, and this aspect of the matter comes later. Even the modern great library is not generally consulted; it is nibbled by a few.
Compression is important, however, when it comes to costs. The material for the microfilm Britannica would cost a nickel, and it could be mailed anywhere for a cent. What would it cost to print a million copies? To print a sheet of newspaper, in a large edition, costs a small fraction of a cent. The entire material of the Britannica in reduced microfilm form would go on a sheet eight and one-half by eleven inches. Once it is available, with the photographic reproduction methods of the future, duplicates in large quantities could probably be turned out for a cent apiece beyond the cost of materials. The preparation of the original copy? That introduces the next aspect of the subject.
To make the record, we now push a pencil or tap a typewriter. Then comes the process of digestion and correction, followed by an intricate process of typesetting, printing, and distribution. To consider the first stage of the procedure, will the author of the future cease writing by hand or typewriter and talk directly to the record? He does so indirectly, by talking to a stenographer or a wax cylinder; but the elements are all present if he wishes to have his talk directly produce a typed record. All he needs to do is to take advantage of existing mechanisms and to alter his language.
At a recent World Fair a machine called a Voder was shown. A girl stroked its keys and it emitted recognizable speech. No human vocal cords entered in the procedure at any point; the keys simply combined some electrically produced vibrations and passed these on to a loud-speaker. In the Bell Laboratories there is the converse of this machine, called a Vocoder. The loudspeaker is replaced by a microphone, which picks up sound. Speak to it, and the corresponding keys move. This may be one element of the postulated system.
The other element is found in the stenotype, that somewhat disconcerting device encountered usually at public meetings. A girl strokes its keys languidly and looks about the room and sometimes at the speaker with a disquieting gaze. From it emerges a typed strip which records in a phonetically simplified language a record of what the speaker is supposed to have said. Later this strip is retyped into ordinary language, for in its nascent form it is intelligible only to the initiated. Combine these two elements, let the Vocoder run the stenotype, and the result is a machine which types when talked to.
Our present languages are not especially adapted to this sort of mechanization, it is true. It is strange that the inventors of universal languages have not seized upon the idea of producing one which better fitted the technique for transmitting and recording speech. Mechanization may yet force the issue, especially in the scientific field; whereupon scientific jargon would become still less intelligible to the layman.
One can now picture a future investigator in his laboratory. His hands are free, and he is not anchored. As he moves about and observes, he photographs and comments. Time is automatically recorded to tie the two records together. If he goes into the field, he may be connected by radio to his recorder. As he ponders over his notes in the evening, he again talks his comments into the record. His typed record, as well as his photographs, may both be in miniature, so that he projects them for examination.
Much needs to occur, however, between the collection of data and observations, the extraction of parallel material from the existing record, and the final insertion of new material into the general body of the common record. For mature thought there is no mechanical substitute. But creative thought and essentially repetitive thought are very different things. For the latter there are, and may be, powerful mechanical aids.
Adding a column of figures is a repetitive thought process, and it was long ago properly relegated to the machine. True, the machine is sometimes controlled by the keyboard, and thought of a sort enters in reading the figures and poking the corresponding keys, but even this is avoidable. Machines have been made which will read typed figures by photocells and then depress the corresponding keys; these are combinations of photocells for scanning the type, electric circuits for sorting the consequent variations, and relay circuits for interpreting the result into the action of solenoids to pull the keys down.
All this complication is needed because of the clumsy way in which we have learned to write figures. If we recorded them positionally, simply by the configuration of a set of dots on a card, the automatic reading mechanism would become comparatively simple. In fact, if the dots are holes, we have the punched-card machine long ago produced by Hollorith for the purposes of the census, and now used throughout business. Some types of complex businesses could hardly operate without these machines.
Adding is only one operation. To perform arithmetical computation involves also subtraction, multiplication, and division, and in addition some method for temporary storage of results, removal from storage for further manipulation, and recording of final results by printing. Machines for these purposes are now of two types: keyboard machines for accounting and the like, manually controlled for the insertion of data, and usually automatically controlled as far as the sequence of operations is concerned; and punched-card machines in which separate operations are usually delegated to a series of machines, and the cards then transferred bodily from one to another. Both forms are very useful; but as far as complex computations are concerned, both are still embryo.
Rapid electrical counting appeared soon after the physicists found it desirable to count cosmic rays. For their own purposes the physicists promptly constructed thermionic-tube equipment capable of counting electrical impulses at the rate of 100,000 a second. The advanced arithmetical machines of the future will be electrical in nature, and they will perform at 100 times present speeds, or more.
Moreover, they will be far more versatile than present commercial machines, so that they may readily be adapted for a wide variety of operations. They will be controlled by a control card or film, they will select their own data and manipulate it in accordance with the instructions thus inserted, they will perform complex arithmetical computations at exceedingly high speeds, and they will record results in such form as to be readily available for distribution or for later further manipulation. Such machines will have enormous appetites. One of them will take instructions and data from a roomful of girls armed with simple keyboard punches, and will deliver sheets of computed results every few minutes. There will always be plenty of things to compute in the detailed affairs of millions of people doing complicated things.
The repetitive processes of thought are not confined, however, to matters of arithmetic and statistics. In fact, every time one combines and records facts in accordance with established logical processes, the creative aspect of thinking is concerned only with the selection of the data and the process to be employed, and the manipulation thereafter is repetitive in nature and hence a fit matter to be relegated to the machines. Not so much has been done along these lines, beyond the bounds of arithmetic, as might be done, primarily because of the economics of the situation. The needs of business, and the extensive market obviously waiting, assured the advent of mass-produced arithmetical machines just as soon as production methods were sufficiently advanced.
With machines for advanced analysis no such situation existed; for there was and is no extensive market; the users of advanced methods of manipulating data are a very small part of the population. There are, however, machines for solving differential equations - and functional and integral equations, for that matter. There are many special machines, such as the harmonic synthesizer which predicts the tides. There will be many more, appearing certainly first in the hands of the scientist and in small numbers.
If scientific reasoning were limited to the logical processes of arithmetic, we should not get far in our understanding of the physical world. One might as well attempt to grasp the game of poker entirely by the use of the mathematics of probability. The abacus, with its beads string on parallel wires, led the Arabs to positional numeration and the concept of zero many centuries before the rest of the world; and it was a useful tool - so useful that it still exists.
It is a far cry from the abacus to the modern keyboard accounting machine. It will be an equal step to the arithmetical machine of the future. But even this new machine will not take the scientist where he needs to go. Relief must be secured from laborious detailed manipulation of higher mathematics as well, if the users of it are to free their brains for something more than repetitive detailed transformations in accordance with established rules. A mathematician is not a man who can readily manipulate figures; often he cannot. He is not even a man who can readily perform the transformation of equations by the use of calculus. He is primarily an individual who is skilled in the use of symbolic logic on a high plane, and especially he is a man of intuitive judgment in the choice of the manipulative processes he employs.
All else he should be able to turn over to his mechanism, just as confidently as he turns over the propelling of his car to the intricate mechanism under the hood. Only then will mathematics be practically effective in bringing the growing knowledge of atomistics to the useful solution of the advanced problems of chemistry, metallurgy, and biology. For this reason there will come more machines to handle advanced mathematics for the scientist. Some of them will be sufficiently bizarre to suit the most fastidious connoisseur of the present artifacts of civilization.
The scientist, however, is not the only person who manipulates data and examines the world about him by the use of logical processes, although he sometimes preserves this appearance by adopting into the fold anyone who becomes logical, much in the manner in which a British labor leader is elevated to knighthood. Whenever logical processes of thought are employed - that is, whenever thought for a time runs along an accepted groove - there is an opportunity for the machine. Formal logic used to be a keen instrument in the hands of the teacher in his trying of students' souls. It is readily possible to construct a machine which will manipulate premises in accordance with formal logic, simply by the clever use of relay circuits. Put a set of premises into such a device and turn the crank, and it will readily pass out conclusion after conclusion, all in accordance with logical law, and with no more slips than would be expected of a keyboard adding machine.
Logic can become enormously difficult, and it would undoubtedly be well to produce more assurance in its use. The machines for higher analysis have usually been equation solvers. Ideas are beginning to appear for equation transformers, which will rearrange the relationship expressed by an equation in accordance with strict and rather advanced logic. Progress is inhibited by the exceedingly crude way in which mathematicians express their relationships.
A new symbolism, probably positional, must apparently precede the reduction of mathematical transformations to machine processes. Then, on beyond the strict logic of the mathematician, lies the application of logic in everyday affairs. We may some day click off arguments on a machine with the same assurance that we now enter sales on a cash register. But the machine of logic will not look like a cash register, even a streamlined model.
So much for the manipulation of ideas and their insertion into the record. Thus far we seem to be worse off than before - for we can enormously extend the record; yet even in its present bulk we can hardly consult it. This is a much larger matter than merely the extraction of data for the purposes of scientific research; it involves the entire process by which man profits by his inheritance of acquired knowledge. The prime action of use is selection, and here we are halting indeed. There may be millions of fine thoughts, and the account of the experience on which they are based, all encased within stone walls of acceptable architectural form; but if the scholar can get at only one a week by diligent search, his syntheses are not likely to keep up with the current scene.
Selection, in this broad sense, is a stone adze in the hands of a cabinetmaker. Yet, in a narrow sense and in other areas, something has already been done mechanically on selection. The personnel officer of a factory drops a stack of a few thousand employee cards into a selecting machine, sets a code in accordance with an established convention, and produces in a short time a list of all employees who live in Trenton and know Spanish. Even such devices are much too slow when it comes, for example, to matching a set of fingerprints with one of five millions on file. Selection devices of this sort will soon be speeded up from their present rate of reviewing data at a few hundred a minute. By the use of photocells and microfilm they will survey items at the rate of thousands a second, and will print out duplicates of those selected.
This process, however, is simple selection: it proceeds by examining in turn every one of a large set of items, and by picking out those which have certain specified characteristics. There is another form of selection best illustrated by the automatic telephone exchange. You dial a number and the machine selects and connects just one of a million possible stations. It does not run over them all. It pays attention only to a class given by a first digit, and so on; and thus proceeds rapidly and almost unerringly to the selected station. It requires a few seconds to make the selection, although the process could be speeded up if increased speed were economically warranted. If necessary, it could be made extremely fast by substituting thermionic-tube switching for mechanical switching, so that the full selection could be made in one-hundredth of a second. No one would wish to spend the money necessary to make this change in the telephone system, but the general idea is applicable elsewhere.
Take the prosaic problem of the great department store. Every time a charge sale is made, there are a number of things to be done.. The inventory needs to be revised, the salesman needs to be given credit for the sale, the general accounts need an entry, and, most important, the customer needs to be charged. A central records device has been developed in which much of this work is done conveniently. The salesman places on a stand the customer's identification card, his own card, and the card taken from the article sold - all punched cards. When he pulls a lever, contacts are made through the holes, machinery at a central point makes the necessary computations and entries, and the proper receipt is printed for the salesman to pass to the customer.
But there may be ten thousand charge customers doing business with the store, and before the full operation can be completed someone has to select the right card and insert it at the central office. Now rapid selection can slide just the proper card into position in an instant or two, and return it afterward. Another difficulty occurs, however. Someone must read a total on the card, so that the machine can add its computed item to it. Conceivably the cards might be of the dry photography type I have described. Existing totals could then be read by photocell, and the new total entered by an electron beam.
The cards may be in miniature, so that they occupy little space. They must move quickly. They need not be transferred far, but merely into position so that the photocell and recorder can operate on them. Positional dots can enter the data. At the end of the month a machine can readily be made to read these and to print an ordinary bill. With tube selection, in which no mechanical parts are involved in the switches, little time need be occupied in bringing the correct card into use - a second should suffice for the entire operation. The whole record on the card may be made by magnetic dots on a steel sheet if desired, instead of dots to be observed optically, following the scheme by which Poulsen long ago put speech on a magnetic wire. This method has the advantage of simplicity and ease of erasure. By using photography, however, one can arrange to project the record in enlarged form, and at a distance by using the process common in television equipment.
One can consider rapid selection of this form, and distant projection for other purposes. To be able to key one sheet of a million before an operator in a second or two, with the possibility of then adding notes thereto, is suggestive in many ways. It might even be of use in libraries, but that is another story. At any rate, there are now some interesting combinations possible. One might, for example, speak to a microphone, in the manner described in connection with the speech-controlled typewriter, and thus make his selections. It would certainly beat the usual file clerk.
The real heart of the matter of selection, however, goes deeper than a lag in the adoption of mechanisms by libraries, or a lack of development of devices for their use. Our ineptitude in getting at the record is largely caused by the artificiality of systems of indexing. When data of any sort are placed in storage, they are filed alphabetically or numerically, and information is found (when it is) by tracing it down from subclass to subclass. It can be in only one place, unless duplicates are used; one has to have rules as to which path will locate it, and the rules are cumbersome. Having found one item, moreover, one has to emerge from the system and re-enter on a new path.
The human mind does not work that way. It operates by association. With one item in its grasp, it snaps instantly to the next that is suggested by the association of thoughts, in accordance with some intricate web of trails carried by the cells of the brain. It has other characteristics, of course; trails that are not frequently followed are prone to fade, items are not fully permanent, memory is transitory. Yet the speed of action, the intricacy of trails, the detail of mental pictures, is awe-inspiring beyond all else in nature.
Man cannot hope fully to duplicate this mental process artificially, but he certainly ought to be able to learn from it. In minor ways he may even improve, for his records have relative permanency. The first idea, however, to be drawn from the analogy concerns selection. Selection by association, rather than by indexing, may yet be mechanized. One cannot hope thus to equal the speed and flexibility with which the mind follows an associative trail, but it should be possible to beat the mind decisively in regard to the permanence and clarity of the items resurrected from storage.
Consider a future device for individual use, which is a sort of mechanized private file and library. It needs a name, and to coin one at random, ``memex'' will do. A memex is a device in which an individual stores all his books, records, and communications, and which is mechanized so that it may be consulted with exceeding speed and flexibility. It is an enlarged intimate supplement to his memory.
It consists of a desk, and while it can presumably be operated from a distance, it is primarily the piece of furniture at which he works. On the top are slanting translucent screens, on which material can be projected for convenient reading. There is a keyboard, and sets of buttons and levers. Otherwise it looks like an ordinary desk.
In one end is the stored material. The matter of bulk is well taken care of by improved microfilm.  Yet if the user inserted 5000 pages of material a day it would take him hundreds of years to fill the repository, so he can be profligate and enter material freely.
Most of the memex contents are purchased on microfilm ready for insertion. Books of all sorts, pictures, current periodicals, newspapers, are thus obtained and dropped into place. Business correspondence takes the same path. And there is provision for direct entry. On the top of the memex is a transparent platen. On this are placed longhand notes, photographs, memoranda, all sort of things. When one is in place, the depression of a lever causes it to be photographed onto the next blank space in a section of the memex film, dry photography being employed.
There is, of course, provision for consultation of the record by the usual scheme of indexing. If the user wishes to consult a certain book, he taps its code on the keyboard, and the title page of the book promptly appears before him, projected onto one of his viewing positions. Frequently-used codes are mnemonic, so that he seldom consults his code book; but when he does, a single tap of a key projects it for his use. Moreover, he has supplemental levers. On deflecting one of these levers to the right he runs through the book before him, each page in turn being projected at a speed which just allows a recognizing glance at each. If he deflects it further to the right, he steps through the book 10 pages at a time; still further at 100 pages at a time. Deflection to the left gives him the same control backwards.
A special button transfers him immediately to the first page of the index. Any given book of his library can thus be called up and consulted with far greater facility than if it were taken from a shelf. As he has several projection positions, he can leave one item in position while he calls up another. He can add marginal notes and comments, taking advantage of one possible type of dry photography, and it could even be arranged so that he can do this by a stylus scheme, such as is now employed in the telautograph seen in railroad waiting rooms, just as though he had the physical page before him.
All this is conventional, except for the projection forward of present-day mechanisms and gadgetry. It affords an immediate step, however, to associative indexing, the basic idea of which is a provision whereby any item may be caused at will to select immediately and automatically another. This is the essential feature of the memex. The process of tying two items together is the important thing.
When the user is building a trail, he names it, inserts the name in his code book, and taps it out on his keyboard. Before him are the two items to be joined, projected onto adjacent viewing positions. At the bottom of each there are a number of blank code spaces, and a pointer is set to indicate one of these on each item. The user taps a single key, and the items are permanently joined. In each code space appears the code word. Out of view, but also in the code space, is inserted a set of dots for photocell viewing; and on each item these dots by their positions designate the index number of the other item.
Thereafter, at any time, when one of these items is in view, the other can be instantly recalled merely by tapping a button below the corresponding code space. Moreover, when numerous items have been thus joined together to form a trail, they can be reviewed in turn, rapidly or slowly, by deflecting a lever like that used for turning the pages of a book. It is exactly as though the physical items had been gathered together to form a new book. It is more than this, for any item can be joined into numerous trails.
The owner of the memex, let us say, is interested in the origin and properties of the bow and arrow. Specifically he is studying why the short Turkish bow was apparently superior to the English long bow in the skirmishes of the Crusades. He has dozens of possibly pertinent books and articles in his memex. First he runs through an encyclopedia, finds an interesting but sketchy article, leaves it projected. Next, in a history, he finds another pertinent item, and ties the two together. Thus he goes, building a trail of many items. Occasionally he inserts a comment of his own, either linking it into the main trail or joining it by a side trail to a particular item. When it becomes evident that the elastic properties of available materials had a great deal to do with the bow, he branches off on a side trail which takes him through textbooks on elasticity and tables of physical constants. He inserts a page of longhand analysis of his own. Thus he builds a trail of his interest through the maze of materials available to him.
And his trails do not fade. Several years later, his talk with a friend turns to the queer ways in which a people resist innovations, even of vital interest. He has an example, in the fact that the outranged Europeans still failed to adopt the Turkish bow. In fact he has a trail on it. A touch brings up the code book. Tapping a few keys projects the head of the trail. A lever runs through it at will, stopping at interesting items, going off on side excursions. It is an interesting trail, pertinent to the discussion. So he sets a reproducer in action, photographs the whole trail out, and passes it to his friend for insertion in his own memex, there to be linked into the more general trail.
Wholly new forms of encyclopedias will appear, ready-made with a mesh of associative trails running through them, ready to be dropped into the memex and there amplified. The lawyer has at his touch the associated opinions and decisions of his whole experience, and of the experience of friends and authorities. The patent attorney has on call the millions of issued patents, with familiar trails to every point of his client's interest. The physician, puzzled by its patient's reactions, strikes the trail established in studying an earlier similar case, and runs rapidly through analogous case histories, with side references to the classics for the pertinent anatomy and histology. The chemist, struggling with the synthesis of an organic compound, has all the chemical literature before him in his laboratory, with trails following the analogies of compounds, and side trails to their physical and chemical behavior.
The historian, with a vast chronological account of a people, parallels it with a skip trail which stops only at the salient items, and can follow at any time contemporary trails which lead him all over civilization at a particular epoch. There is a new profession of trail blazers, those who find delight in the task of establishing useful trails through the enormous mass of the common record. The inheritance from the master becomes, not only his additions to the world's record, but for his disciples the entire scaffolding by which they were erected.
Thus science may implement the ways in which man produces, stores, and consults the record of the race. It might be striking to outline the instrumentalities of the future more spectacularly, rather than to stick closely to the methods and elements now known and undergoing rapid development, as has been done here. Technical difficulties of all sorts have been ignored, certainly, but also ignored are means as yet unknown which may come any day to accelerate technical progress as violently as did the advent of the thermionic tube. In order that the picture may not be too commonplace, by reason of sticking to present-day patterns, it may be well to mention one such possibility, not to prophesy but merely to suggest, for prophecy based on extension of the known has substance, while prophecy founded on the unknown is only a doubly involved guess.
All our steps in creating or absorbing material of the record proceed through one of the senses - the tactile when we touch keys, the oral when we speak or listen, the visual when we read. Is it not possible that some day the path may be established more directly?
We know that when the eye sees, all the consequent information is transmitted to the brain by means of electrical vibrations in the channel of the optic nerve. This is an exact analogy with the electrical vibrations which occur in the cable of a television set: they convey the picture from the photocells which see it to the radio transmitter from which it is broadcast. We know further that if we can approach that cable with the proper instruments, we do not need to touch it; we can pick up those vibrations by electrical induction and thus discover and reproduce the scene which is being transmitted, just as a telephone wire may be tapped for its message.
The impulses which flow in the arm nerves of a typist convey to her fingers the translated information which reaches her eye or ear, in order that the fingers may be caused to strike the proper keys. Might not these currents be intercepted, either in the original form in which information is conveyed to the brain, or in the marvelously metamorphosed form in which they then proceed to the hand?
By bone conduction we already introduce sounds into the nerve channels of the deaf in order that they may hear. Is it not possible that we may learn to introduce them without the present cumbersomeness of first transforming electrical vibrations to mechanical ones, which the human mechanism promptly transforms back to the electrical form? With a couple of electrodes on the skull the encephalograph now produces pen-and-ink traces which bear some relation to the electrical phenomena going on in the brain itself. True, the record is unintelligible, except as it points out certain gross misfunctioning of the cerebral mechanism; but who would now place bounds on where such a thing may lead?
In the outside world, all forms of intelligence, whether of sound or sight, have been reduced to the form of varying currents in an electric circuit in order that they may be transmitted. Inside the human frame exactly the same sort of process occurs. Must we always transform to mechanical movements in order to proceed from one electrical phenomenon to another? It is a suggestive thought, but it hardly warrants prediction without losing touch with reality and immediateness.
Presumably man's spirit should be elevated if he can better review his shady past and analyze more completely and objectively his present problems. He has built a civilization so complex that he needs to mechanize his record more fully if he is to push his experiment to its logical conclusion and not merely become bogged down part way there by overtaxing his limited memory. His excursion may be more enjoyable if he can reacquire the privilege of forgetting the manifold things he does not need to have immediately at hand, with some assurance that he can find them again if they prove important.
The applications of science have built man a well-supplied house, and are teaching him to live healthily therein. They have enabled him to throw masses of people against another with cruel weapons. They may yet allow him truly to encompass the great record and to grow in the wisdom of race experience. He may perish in conflict before he learns to wield that record for his true good. Yet, in the application of science to the needs and desires of man, it would seem to be a singularly unfortunate stage at which to terminate the process, or to lose hope as to the outcome.


Parameters
| allow identifications only | Allows the conversion of mzIdentML files without spectra data. Can be set to "True" or "False". The default value is "False". |
|---|---|
| use weighted scoring | As protein scores are not directly reported in mzIdentML files two different methods can be used to calculate protein from peptide scores: Either a weighted approach (default) or just adding up the peptide scores. In the weighted approach a peptide's score is evenly split across all proteins the peptide is assigned to. |
| report all spectrum identifications | By default only ranked one spectrum identifications are reported. If this option is set to true all spectrum identifications irrespective of their rank are reported. Mascot, for example, reports 10 peptide identifications per spectrum by default. |
| decoy accession precursor | If set any identification with the specified precursor in its identification will be flagged as decoy identification. |
| peptide score accession | Specifies the accession of the peptide score CV parameter to use to construct the protein scores. If this parameter is not set one of the available peptide scores will be randomly chosen. |
Details
mzIdentML is considerably more complex than PRIDE XML. Therefore, several compromises have to be taken during the conversion.
Objects converted
The MzIdentML DAO only uses object found at /MzIdentML/SequenceCollection. Thus, all available proteins and peptides as well as all possible assignments between the two are reported. Any protein inference information stored at /MzIdentML/DataCollection/AnalysisData is ignored.
Meta-data
mzIdentML supports different kind of (more detailed) meta-data than PRIDE XML. Any meta-data not supported by PRIDE XML is currently being ignored and nothing is being reported by the DAO. Thus, users have to be extra careful when annotating report files generated through the MzIdentML DAO.
Spectra Data
mzIdentML files do not contain spectra data but only refer to spectra in external peak list files. Currently, the MzIdentML DAO supports spectra data in the following formats:
- ms2
- mgf
- pkl
- dta
- mzML
- mzXML
The spectra files must not be renamed but have to have the exact same name that is being reported in the mzIdentML file. The MzIdentML DAO expects peak lists file to be in
- The path specified in the mzIdentML file
- The current working directory
- The same directory the mzIdentML is currently in


-
Tomm Tomm is an experiment in material and proportion. A cedar cabinet with cotton doors. Both small and tall. Snap closures allow for easy removal of fabric panels, for washability and interchangeability. In conjunction with Cole Lendrum (www.colelendrum.com). 2017 Non-commercial Red cedar & cotton fabric. -
Concrete Bench Cast concrete bench made in conjection with Sam Tucker (www.stmakes.com) 2017 Non-commercial PVA fiber-reinforced concrete. -
Kamp Grizzly Desks 18 desks and partitions for Kamp Grizzly, a video production office in Portland, OR. Built with Nick Musso, Sam Tucker (www.stmakes.com) and Cole Lendrum (www.colelendrum.com). 2016 Kamp Grizzly Fir lumber, plywood, and Simpson ties. -
Crane The Crane LED task lamp utilizes two conductive ball joints for maximum adjustability. Made from white oak, aluminum and brass. This light was exhibited at the 2015 International Contemporary Furniture Fair (ICFF) in New York. In conjunction with Cole Lendrum (www.colelendrum.com). 2015 Non-commercial White Oak, Steel, Bronze, and LEDs


Client Libraries Reference¶
class Model¶
Similar to the Model class in Django, Model is the base class of all user defined models in the frontend. The implementation varies between the frontend languages, but generally, the Model base class enforces the existance of an read-only id field. In addition, a Model subclass can be serialized/deserialized from/to an JSON representation.
Inheritance
- id (required)
An id field must be defined. If the language allows, id should be read-only.
- static objects (optional)
A static member of the CollectionManager type for the model class, used to quickly access the CollectionManager instead of having to create a new one.
- Others
Any optional fields of native types, RelatedObjectManager, or RelatedCollectionManager types.
Example
class Product extends Model {
static readonly objects = new CollectionManager(Product)
id: number = 0
barcode: string = ""
brand_id: number?
get brand() { return new RelatedObjectManager(Brand, this, "brand") }
get purchasers() { return new RelatedCollectionManager(Person, this, "purchasers") }
}
class CollectionManager <T:Model>¶
A generic class where T
is constrained by Model. This class provides the
access to backend objects. You should use this class to retrieve an
ObjectManager
for an model object, instead of creating an ObjectManager
directly.
Constructor
Implementation varies. For TypeScript and Kotlin, you need to pass the
constructor of T
in to the constructor, because the type information is
erased during the runtime.
Warning
It is recommended to define a static member named objects
on the model
class, so that you can retrieve the CollectionManager
instance directly.
class Product extends Model {
static readonly objects = new CollectionManager(Product)
}
let results = await Product.objects.page({})
Methods
method .page (query, pagination)¶
Returns a filtered collection of the model objects, with the desired pagination. It sends a
GET
request to the server.
- query
A dictionary of query parameters that eventually get encoded as the query parts of the URL. The key names are agnostic to Django’s QuerySet API. Keys such as
id__in
(with an array of ids as the value) are supported. See Django’s Field lookups.For example, a query dictionary of (in JSON format)
{ "id__in": [1,2], "barcode": "xxyy", "price__gt": 12.00 }will be encoded as
?id__in[]=1&id__in[]=2&barcode=xxyy&price__gt=12.00
.
- Suppoted keys
Any property name of the model, or any Django’s Field lookup keys.
- Suppoted values
Values of array, list, numbers, strings, empty, null types.
- pagination
A dictionary indicating the number of pages, current page, and how to sort the result. Any value of the list/array type will have
_
prepended before the key name, as a way to differentiate from the model property names.For example, a query dictionary of (in JSON format)
{ "limit": 50, "page": 1, "order_by": "-id" }will be encoded as
?_limit=50&_page=1&_order_by=-id
.
- Suppoted key values
- limit
number - how many items per page
- page
number - which page to show
- order_by
This is agnostic to Django’s .order_by() QuerySet API. Adding
-
before the key name sorts the property in the reverse order. Use,
to join multiple keys.- Returns
A
PageResult
that contains the objects.let page: PageResult<Product> = await Product.objects.page({ query: { barcode__contains="xy" price: null }, page: { limit: 10 } }) // GET /product?barcode__contains=xy&price=&_limit=10
method .get (query)¶
This method does the same thing as method .page (query, pagination) except that it expects exactly one object to be returned from the server. If less or more than one object is returned, an InvalidObjectCount error is thrown.
- Returns
An class ObjectManager <T: Model>: T object wrapping the model.
method .create (data)¶
Saves an object on the server with the provided dictionary of data. It sends a
POST
request to the server.
- Suppoted key-values
Any property name and value of type accepted by on the model API.
let product: ObjectManager<Product> = await Product.objects.create({ name: "xxyy", price: null }) // POST /product {"name": "xxyy", "price": null}
- Returns
An class ObjectManager <T: Model>: T object wrapping the created model.
method .get_or_create (query, defaults)¶
First tries to method .get (query) the object with the query dictionary. If the object does not exist, then method .create (data) the object by using the combined values on query and defaults. It sends a
GET
request, and if the object does not exist, then sends aPOST
request.
- Returns
An class ObjectManager <T: Model>: T object wrapping the model.
let product: ObjectManager<Product> = await Product.objects.get_or_create({ query: { name: "xxyy", }, defaults: { price: null } }) // GET /product?name="xxyy" // POST /product {"name": "xxyy", "price": null}
method .update_or_create (query, defaults)¶
First tries to method .get (query) the object with the
query
dictionary. If the object does not exist, then it follows the method .get_or_create (query, defaults) logic. If the object already exists, then it updates the object with values in thedefaults
dictionary. When updating, sends aPATCH
request.
- Returns
An class ObjectManager <T: Model>: T object wrapping the model.
let product: ObjectManager<Product> = await Product.objects.update_or_create({ query: { name: "xxyy", }, defaults: { price: null } }) // GET /product?name="xxyy" // (assumes id is 1) PATCH /product/1 {"price": null}
class ObjectManager <T: Model>: T¶
A generic class where T
is constrained by class Model. This class provides
the ability to modify an model object. When constructing an ObjectManager
instance, an model object is passed into the ObjectManager class constructor.
Any field that’s available on the model objects becomes available on the
ObjectManager object. In addition, the ObjectManager object provides
methods that are used to modify the wrapped model object, and save the changes
to the backend.
Constructor
Pass the model object into the ObjectManager constructor.
Warning
Most of time, you should use the ObjectManager returned by CollectionManager.page(…) or CollectionManager.get(…), instead of creating one yourself.
Example
let product_model = new Product()
let product = new ObjectManagerImpl(product_model)
Warning
Due to a limitation of TypeScript, the constructor is named
ObjectManagerImpl
instead of ObjectManager, which is a type
alias.
Methods
method .refresh ()¶
Pulls data from the server and updates the local data. It sends a
GET
request to the server.let product: ObjectManager<Product> = ... product.barcode = 'xxyy' // GET /product/1 await product.refresh() // resets product barcode
method .save ()¶
Updates the server with properties that have been changed on the object. It sends a
PATCH
request to the server.let product: ObjectManager<Product> = ... product.barcode = "xxyy" product.price = null product.brand_id = 2 // PATCH /product/1 {"barcode": "xxyy", "price": null, "brand_id": 2} await product.save()
method .update (data)¶
Updates the server with a dictionary, and also saves the changes locally. It sends a
PATCH
request to the server.
See also
let product: ObjectManager<Product> = ...
// PATCH /product/1 {"barcode": "xxyy", "price": null}
await product.update({
barcode: "xxyy",
price: null
)}
method .delete ()¶
Removes the data from the server. It sends a DELETE request to the server.
let product: ObjectManager<Product> = ... // DELETE /product/1 await product.delete()
Designing for a type-safe API¶
The goal of the client libraries is to provide type safety to gard against typos that could be made on model properties, at the same type, utilize Django’s flexible QuerySet API. We would also like to keep a consistent API interface across all supported programming languages, so that the learning curve can be flat. Finally, we would like the client’s model code to be automatically generated according to the backend code.
There are some difficulties when designing such API. For instance, we can only
use features that are present in all supported programming languages. Advance
features such as the Partial<T>
type in TypeScript, or associated types
in Swift cannot be used, because they don’t exist in other languages, and the
API would be inconsistent.
We want to prevent typos made when querying and updating objects. The current API provides limited guarantees. For instance, when modifying model properties and call ObjectManager.save(), typos are prevented because the programming language only allows access on defined properties.
let product: ObjectManager<Product> = ...
product.barcode = "xxyy"
product.save()
Make .update(data) safe¶
How can we make APIs such as ObjectManager.update(…) or
CollectionManager.page(…) type safe? There are two types of difficulties we
must take into consideration. First, you need to realize that the backend modal
API such as PATCH /product/1
does not only accept valid properties that are
defined on the model. In fact, the backend could use class DelegateSerializer extends Serializer
to accept a variaty of key-value pairs. For instance, if a User model API is
designed to change user password, the backend will expect an request such as:
// PATCH /user/1
{
old_password: "1234",
new_password: "xxyy",
}
The backend can achieve this with the class DelegateSerializer extends Serializer class. However,
neither old_password
and new_password
are keys on the User model.
To resolve this issue, we can consider making the ObjectManager.update(…) a generic method such as:
update<X>(data: X) {
...
}
where X is any type that is serializable. This way we have define a separate interface such as
interface UserUpdatePassword {
old_password: string
new_password: string
}
Then when calling the ObjectManager.update(…) method you can specify the X
:
.update<UserUpdatePassword>(data)
But there is another issue: when updating the model by sending JSON data to the backend, a key that’s missing in the data is not equivalent to the same key is present in data but has the null value.
For instance, the following two data has different meanings:
// PATCH /product/1
{
brand_id: null,
barcode: "xxyy"
}
// PATCH /product/1
{
barcode: "xxyy"
}
The first request sets the brand_id
to null, but the second request is a
partial update that only changes the barcode, and leaves the brand_id
unchanged.
When using an interface alone as the parameter X
, in most programming
languages, we can’t tell the difference between the two cases. Because the best
you can do is to make a property optional on the interface, and you can set the
property as null
, and artificialy define that a null
property represents
the second (or the first) request, but the ability to represent the other
request is missing.
We must resolve the issue using the type union. In other word, we must be able
to use two types on each property of the interface: the value’s type, and the
null value. In TypeScript, this can be directly done by using the |
operator. In other languages, such as Swift and Kotlin, we can use an
enum.
interface ProductUpdate {
brand_id?: string | null
barcode: string | null
}
enum Property<T> {
case use(T)
case null
}
interface ProductUpdate {
brand_id?: Property(String)
barcode: Property(String)
}
Finally to use the .update(data) method:
product.update<ProductUpdate>({
brand_id: null,
barcode: "xxyy"
})
product.update<ProductUpdate>({
brand_id: .null,
barcode: .use("xxyy")
})
Make .page(…) safe¶
This is the most challenging API, because Django has very powerful support for
relational quries, and we want to keep Django’s ability in the frontend. For
example, in the Product and Brand example, a product has a brand, and a
brand has many products. In Django, if we want to find all product of any brand
where the brand’s name contains a substring abc
, we can use:
Product.objects.filter(brand__name__contains="abc")
Our API supports this ability. In particular, you can send a GET
request to this url:
GET /product?brand__name__contains="abc"
The ability is also supported on regular properties, for example, we can filter
Product by barcode
:
GET /product?barcode__contains="xy"
See also
- All full explanation is on the Django’s official documentation for Lookup API reference.
- A lookup expression consists of three parts:1. Fields part (e.g.
Book.objects.filter(author__best_friends__first_name...)
;2. Transforms part (may be omitted) (e.g.__lower__first3chars__reversed
);3. A lookup (e.g.__icontains
) that, if omitted, defaults to__exact
.
The syntax of the query name is recursive:
- {
brand: {name: contains(“xxyy”))
} .. code-block:
query name on T -> regular property of T = value of type of T
| string property of T __contains = value of string
| string property of T __in = value of list of string
| number property of T __in = value of list of number
| number property of T __gt = value of number
| regular property of T __not __ = value of number
| relational property R of T = query name on R


--- layout: post title: RIAA and MPAA call a halt on digital progress date: 2006-01-22 00:00:00 category: digital-media ---
RIAA and MPAA call a halt on digital progress: "In essence, the suggestion is that nothing should be invented in the sphere unless the RIAA and MPAA ok it first."


{% extends "layout.html" %} {% block content %}
Complete the following tasks.
Tell us your 5 favourite songs so that we can build a music profile based on your taste in music
Take this small quiz to help us determine your personality type so that we can correlate it with your taste in music.


{% extends "base.html" %} {% load i18n static bootstrap3 %} {% block page_title %}{% trans "Registration" %}{% endblock %} {% block body %}registration{% endblock %} {% block content %}
{% trans "This is the standard sign-up for all users. Every person is a pioneer in the gift-economy network, as we beginn to walk new (ancient) paths of sustainability. You can:" %}
{% trans "If you live in a community, or want to start a regional network click here. With your standart pioneer profile we will create a community profile where you can whish for everything that your community needs and your personal and collective offers will be listed. You will be the manager of this community on this website and other people from your community can sign up as pioneers and become members or admins of the community-group later. You will be the contact person for volunteers that want to visit your community and facilitate exchanges over the platform. You can assign this role to someone else later!" %}


Education
Education M.A. in Intercultural Studies from USA - May 1996
Diploma in Training and Development Management
from Singapore Institute of Management, Singapore - 1988
Diploma in Training and Development
from Institute of Training and Development, United Kingdom – 1988
B.Sc (Major : Pure & Applied Physics)
from National University of Singapore - May 1985
Certified in MBTI and Workplace Big 5.
Diploma in Training and Development Management
from Singapore Institute of Management, Singapore - 1988
Diploma in Training and Development
from Institute of Training and Development, United Kingdom – 1988
B.Sc (Major : Pure & Applied Physics)
from National University of Singapore - May 1985
Certified in MBTI and Workplace Big 5.
Hobbies :
Fishing
Write Poems - wrote 40+ poems covering many topics e.g. friendship, about my parents, my children, suffering and pain, romance and love, etc..
Languages :
Can communicate in 7 languages
English and Malay (speak and write fluently)
Hokkien and Cantonese (speak fluently) Mandarin (speak fairly fluent) some Teochew Tagalog / Filipino (speak, read and write)
English and Malay (speak and write fluently)
Hokkien and Cantonese (speak fluently) Mandarin (speak fairly fluent) some Teochew Tagalog / Filipino (speak, read and write)


02.Create a module that works with moving div elements. Implement functionality for:
- Add new moving div element to the DOM
+ The module should generate random background, font and border colors for the div element
+ All the div elements are with the same width and height
- The movements of the div elements can be either circular or rectangular
- The elements should be moving all the time


Cleveland Mayor Accused of Cover-Up in Gang Shooting
by JEFF D. GORMANCLEVELAND (CN) – Accused of obstructing an investigation and possible prosecution, Cleveland Mayor Frank Jackson is facing a wrongful death lawsuit from a woman whose son was killed in a gang-related shooting she says is linked to the mayor’s grandson.
Andrea Parra, on behalf of the estate of her son Antonio, sued the mayor and Police Chief Calvin Williams in the Cuyahoga County Court of Common Pleas on Thursday, asserting claims of wrongful death, obstruction of justice and intentional infliction of emotional distress.
Antonio, the 30-year-old father of a 9-year-old girl, was shot and killed in broad daylight by two men on Aug. 28, according to the lawsuit.
The getaway car was allegedly registered to the mayor’s grandson, Frank Q. Jackson.
“Mayor Jackson’s and Chief Williams’s intentional dereliction of their duties in covering up for gang-related crimes involving the mayor’s grandsons respectively caused, and exacerbated the damage arising from, Mr. Parra’s murder,” the complaint states.
Parra alleges the mayor’s grandson and 16-year-old great-grandson live in his Cleveland home and that the mayor knows of their “extensive history of violent and gang-related criminal activity.”
She also claims the mayor uses his influence to hide his grandson’s misdeeds.
“The city prosecutor attempted to cover up for Frank Q. Jackson despite extensive evidence—including multiple witnesses and surveillance video—showing that Jackson brutally assaulted an 18-year old woman in June of 2019, including by repeatedly striking her with a metal trailer hitch,” the lawsuit states.
Parra, represented by attorney Peter Pattakos, alleges that Jackson’s grandson and great-grandson are members of the No Limit 700 gang, whose members “are known to frequent the mayor’s home.”
She quoted the mayor as telling a reporter, “They don’t pull guns on me. They’re respectful to me. I don’t have those kinds of issues or concerns with the young people out on the street.”
Parra says Antonio was killed “by two men who are believed to be affiliated with the mayor’s grandsons and to have murdered Parra in order to gain favor with them, thereby increasing their status in the No Limit 700 gang in which the mayor’s grandsons are believed to be leaders.”
She also accused the mayor and police chief of obstructing the investigation of her son’s murder.
“At the mayor’s instruction, Cleveland police failed to question Frank Q. Jackson or take him into custody on the date of the crime, failed to conduct a gunshot residue test that would have shown if Jackson had fired a gun, and failed to record their interactions with the Jacksons on their body cameras, all despite established departmental policies and procedures to the contrary,” Parra alleged.
She also says the defendants have refused to appoint an independent investigator into her son’s murder “despite the obvious conflicts of interest and despite demands from citizens, public officials and the press.”
Neither Parra’s attorney nor the mayor’s office responded Thursday to email requests for comment.
The lawsuit states that Frank Q. Jackson pleaded guilty in July to charges of aggravated disorderly conduct, attempted drug abuse and aggravated menacing, and that the mayor’s great-grandson was arrested that same month for allegedly driving the car from which the passenger shot at Cleveland police.
“Both teens were charged with felonious assault, discharging a firearm, improperly handling a gun in a car, and criminal damaging,” the complaint states.
Jackson is serving his fourth term in office and is the longest tenured mayor in Cleveland history.
While the lawsuit calls Frank Q. Jackson a leader of the No Limits 700 gang, it notes that the mayor has denied that his grandson owns a gun and that the “only vice that he may have is illegal riding of dirtbikes.”
Also that summer, a photo surfaced of an alleged No Limits 700 member with a gun and cash in the mayor’s driveway with a Cleveland police car in the background of the photo.
“Reasonable minds may conclude that Antonio Parra would be alive today if not for the culture of impunity fostered by the mayor’s intentional obstruction of justice in cases involving alleged criminal conduct by his grandsons,” the lawsuit states.
Copyright © 2019 courthousenews.com


Welcome to GitSearch. The app that helps you get through your github repostiories easily. click here to get your repositories
Find repository
Bio: {{homeUser.bio}}Number if repositories: {{homeUser.public_repos}}
{{homeRepo.description}}


Functions let you define re-usable pieces of code that perform specific pieces of functionality. Usually functions are able to receive some values to modify the way they work, but it's not required.
Let's start with a simple function:
func favoriteAlbum() {
print("My favorite is Fearless")
}
If you put that code into your playground, nothing will be printed. And yes, it is correct. The reason nothing is printed is that we've placed the "My favorite is Fearless" message into a function called favoriteAlbum()
, and that code won't be called until we ask Swift to run the favoriteAlbum()
function. To do that, add this line of code:
favoriteAlbum()
That runs the function (or "calls" it), so now you'll see "My favorite is Fearless" printed out.
As you can see, you define a function by writing func
, then your function name, then open and close parentheses, then a block of code marked by open and close braces. You then call that function by writing its name followed by an open and close parentheses.
Of course, that's a silly example – that function does the same thing no matter what, so there's no point in it existing. But what if we wanted to print a different album each time? In that case, we could tell Swift we want our function to accept a value when it's called, then use that value inside it.
Let's do that now:
func favoriteAlbum(name: String) {
print("My favorite is \(name)")
}
That tells Swift we want the function to accept one value (called a "parameter"), named "name", that should be a string. We then use string interpolation to write that favorite album name directly into our output message. To call the function now, you’d write this:
favoriteAlbum(name: "Fearless")
You might still be wondering what the point is, given that it's still just one line of code. Well, imagine we used that function in 20 different places around a big app, then your head designer comes along and tells you to change the message to "I love Fearless so much – it's my favorite!" Do you really want to find and change all 20 instances in your code? Probably not. With a function you change it once, and everything updates.
You can make your functions accept as many parameters as you want, so let's make it accept a name and a year:
func printAlbumRelease(name: String, year: Int) {
print("\(name) was released in \(year)")
}
printAlbumRelease(name: "Fearless", year: 2008)
printAlbumRelease(name: "Speak Now", year: 2010)
printAlbumRelease(name: "Red", year: 2012)
These function parameter names are important, and actually form part of the function itself. Sometimes you’ll see several functions with the same name, e.g. handle()
, but with different parameter names to distinguish the different actions.
Sometimes you want parameters to be named one way when a function is called, but another way inside the function itself. This means that when you call a function it uses almost natural English, but inside the function the parameters have sensible names. This technique is employed very frequently in Swift, so it’s worth understanding now.
To demonstrate this, let’s write a function that prints the number of letters in a string. This is available using the count
property of strings, so we could write this:
func countLettersInString(string: String) {
print("The string \(string) has \(string.count) letters.")
}
With that function in place, we could call it like this:
countLettersInString(string: "Hello")
While that certainly works, it’s a bit wordy. Plus it’s not the kind of thing you would say aloud: “count letters in string string hello”.
Swift’s solution is to let you specify one name for the parameter when it’s being called, and another inside the method. To use this, just write the parameter name twice – once for external, one for internal.
For example, we could name the parameter myString
when it’s being called, and str
inside the method, like this:
func countLettersInString(myString str: String) {
print("The string \(str) has \(str.count) letters.")
}
countLettersInString(myString: "Hello")
You can also specify an underscore, _
, as the external parameter name, which tells Swift that it shouldn’t have any external name at all. For example:
func countLettersInString(_ str: String) {
print("The string \(str) has \(str.count) letters.")
}
countLettersInString("Hello")
As you can see, that makes the line of code read like an English sentence: “count letters in string hello”.
While there are many cases when using _
is the right choice, Swift programmers generally prefer to name all their parameters. And think about it: why do we need the word “String” in the function – what else would we want to count letters on?
So, what you’ll commonly see is external parameter names like “in”, “for”, and “with”, and more meaningful internal names. So, the “Swifty” way of writing this function is like so:
func countLetters(in string: String) {
print("The string \(string) has \(string.count) letters.")
}
That means you call the function with the parameter name “in”, which would be meaningless inside the function. However, inside the function the same parameter is called “string”, which is more useful. So, the function can be called like this:
countLetters(in: "Hello")
And that is truly Swifty code: “count letters in hello” reads like natural English, but the code is also clear and concise.
Return valuesSwift functions can return a value by writing ->
then a data type after their parameter list. Once you do this, Swift will ensure that your function will return a value no matter what, so again this is you making a promise about what your code does.
As an example, let's write a function that returns true if an album is one of Taylor Swift's, or false otherwise. This needs to accept one parameter (the name of the album to check) and will return a Boolean. Here's the code:
func albumIsTaylor(name: String) -> Bool {
if name == "Taylor Swift" { return true }
if name == "Fearless" { return true }
if name == "Speak Now" { return true }
if name == "Red" { return true }
if name == "1989" { return true }
return false
}
If you wanted to try your new switch/case
knowledge, this function is a place where it would work well.
You can now call that by passing the album name in and acting on the result:
if albumIsTaylor(name: "Red") {
print("That's one of hers!")
} else {
print("Who made that?!")
}
if albumIsTaylor(name: "Blue") {
print("That's one of hers!")
} else {
print("Who made that?!")
}


{% extends "base.html" %} {% block title %}How To Use - SafeArea19{% endblock %} {% block content %}
Right Now SafeArea19 is only in Maryland. We are branching out to hopefully most of the USA Soon. If you do find a SafeArea19 QR Code scan it and follow the website. Then you will be given recommendation for your area and the Risk. PLEASE DO NOT TOUCH ANY SafeArea19 QR Cards or you can increase your risk of contracting the COVID-19 Virus.
{% endblock %}


|
Necromancer Game VR
necromancer-game-vr
Jack Fletcher's honours project at University of Plymouth
|
Derived from Brackeys "How to make a dialogue system in Unity" https://www.youtube.com/watch?v=_nRzoTzeyxU&t=3s More...
Public Member Functions | |
| void | SetSentences () |
| Sets the sentence data More... | |
| void | SetHintName () |
| Sets the hint randomly from the graves on the map More... | |
Public Attributes | |
| string | m_name |
| Name of the npc you're conversing with More... | |
| string | m_hintName |
| The name of the hint to search for within the XML file. //TODO: Change this to be dynamic More... | |
| string[] | m_sentences |
| Array of sentences to be spoken More... | |
| Dialogue_Types | m_dialogueType |
| The type of dialogue given More... | |
Derived from Brackeys "How to make a dialogue system in Unity" https://www.youtube.com/watch?v=_nRzoTzeyxU&t=3s
| void Dialogue.SetHintName | ( | ) |
Sets the hint randomly from the graves on the map
Sanity check
Search the xml file for something with this first name
| void Dialogue.SetSentences | ( | ) |
Sets the sentence data
| Dialogue_Types Dialogue.m_dialogueType |
The type of dialogue given
| string Dialogue.m_hintName |
The name of the hint to search for within the XML file. //TODO: Change this to be dynamic
| string Dialogue.m_name |
Name of the npc you're conversing with
| string [] Dialogue.m_sentences |
Array of sentences to be spoken


ArcherySec is handy tool to feed vulnerability data from DevSecOps pipeline. Vulnerability management is a key part of your DevSecOps process. In our last blog post, we saw how to integrate ArcherySec in our CI/CD pipeline. In this blog post we’ll see how ArcherySec can be deployed as a serverless.
We often heard about “serverless” in computer world. Serverless is a cloud computing performance model where the cloud provider dynamically controls the allocation and provisioning of servers. A serverless application works in stateless compute containers that are event-prompted, temporary, and completely handled by the cloud provider. The pricing in the serverless is based on the count of executions rather than pre-purchased compute capacity.
Think how if your vulnerability management application is serverless and event-driven. We need ArcherySec API when we are feeding data from our DevSecOps pipeline or when we are analyzing vulnerabilities. Hosting ArcherySec application on an EC2 Instance or in containers like ECS make us pay for the idle time too.
In this article we will guide you to deploy a ArcherySec application as server-less using Zappa. Before start deploying ArcherySec application lets understand how Zappa works.
Zappa is an open source project that helps you in building and deploying server-less, event-driven Python applications. It helps in deploying and building any WSGI compatible applications that are developed in python. It uses AWS Lambda and AWS API Gateway, and Amazon S3.
When we talk about application hosted on server-less, basically it’s not really serverless, there still is a webserver in a cloud that serving your web responses. The difference is the server life spent is measured in milliseconds. The entire life cycle of a server is within a single HTTP request.
In a traditional client server communication the client makes a request to the web server, calls the application HTML, CSS, etc and code sends back a response to the browser. The server should be up and running 24/7 just waiting for requests and responses.
With AWS Lambda + AWS API Gateway when the HTTP request comes in through the AWS API Gateway, then it creates the instance of the AWS Lambda function which process the request returns through the AWS API Gateway and then the server is wiped out. So you have used a server in a matter of milliseconds and a major advantage of this approach is that you don’t have to worry about keeping your server up and running 24/7 and you only pay aws instance for a millisecond.
AWS Lambda lets you run code without provisioning or managing servers. You pay only for the compute time you consume, there is no charge when your code is not running.
So AWS Lambda function is perfect solution for us. It scales automatically and we pay only when we consume it. If our code is not running then it’s not chargeable. Also its running with zero administration.
Before start using AWS, we have to make sure we have a valid AWS account and have the AWS access-key which we are going to use in our environment.
Get the access key from IAM
mkdir .aws
###~/.aws/credentials
[default]
aws_access_key_id = XXXXXXXXXXXXXXXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXX
Make sure you have provided correct permissions to the user. We need following permission to run Zappa.
We need to create role and provide the appropriate permissions. Zapp configuration file will use and deploy applications on Lambda and API gateway.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": [
"events.amazonaws.com",
"lambda.amazonaws.com",
"apigateway.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}
We need to trust the amazonaws events, lambda and apigateway end points.
Clone ArcherySec project folder in our local system.
$ git clone https://github.com/archerysec/archerysec.git
$ cd archerysec
Install ArcherySec required library
$ pip install -r requirements-zappa.txt
After installing Zappa, let’s configure Zappa
$ zappa init
which will ask us for the following:
archerysecurity.settings.base
Some additional parameter required by Zappa configuration file.
Zappa configuration file
{
"dev": {
"aws_region": "us-east-1",
"django_settings": "archerysecurity.settings.base",
"profile_name": "default",
"project_name": "archerysec-aws",
"runtime": "python2.7",
"s3_bucket": "zappa-test",
"manage_roles": false,
"role_name": "archerysectest",
"role_arn": "arn:aws:iam::868167788748:role/archerysectest",
}
}
Now let us deploy the app
$ zappa deploy dev
Now you need to add your AWS API Gateway host as allowed host in application settings file and disable debugging by marking it as False.
archerysecurity/settings/base.py
ALLOWED_HOSTS = ['your_api_gateway_host']
archerysecurity/settings/base.py
FORCE_SCRIPT_NAME = "/dev/"
LOGIN_URL = FORCE_SCRIPT_NAME + 'login/'
zappa update dev
Awsome!! we have successfully deployed ArcherySec tool on AWS Lambda function.
Application can be accessible on API Gateway URL: https://yoururl.execute-api.us-east-1.amazonaws.com/dev/login/?next=/dev/
Noticed that the application is not loading static files. We need to use AWS S3 bucket to upload static files and load statics file using django django-s3-storage.
Before setting up django we need to configure S3 bucket.
To serve the static file we need to enable CORS for the S3 bucket, which enables browsers to get resources from different urls.
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>
$ pip install django-s3-storage
requirements.txt
file.INSTALLED_APPS
INSTALLED_APPS = (
...,
'django_s3_storage',
)
S3_BUCKET = "itestzappa-test"
STATICFILES_STORAGE = "django_s3_storage.storage.StaticS3Storage"
AWS_S3_BUCKET_NAME_STATIC = S3_BUCKET
STATIC_URL = "https://%s.s3.amazonaws.com/" % S3_BUCKET
$ python manage.py collectstatic --noinput
It’s take a while to upload static files on AWS s3 bucket.
Once the static files are uploaded on s3 bucket you can update using Zappa command. zappa update dev
and after updating zappa, let us check by refreshing the page.
Django supports both MySQL and PostgreSQL. Hence you can integrated ArcherySec database either of any one databases.
archerysecurity/settings/base.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'archerysecdbname',
'USER': 'administrator',
'PASSWORD': 'this_is_not_a_good_password',
'HOST': 'archerysec-db.cr3erer3sjdlk.us-east-1.rds.amazonaws.com',
'PORT': '5432',
}
}
Now we add the VPC configuration to our Zappa settings file so that the lambda functions can connect to the database.
{
"dev": {
"django_settings": "archerysecurity.settings.base",
"s3_bucket": "archerysectest-code",
"aws_region": "us-east-1",
"vpc_config" : {
"SubnetIds": [ "subnet-f3446aba","subnet-c5b8c79e" ], // use the private subnet
"SecurityGroupIds": [ "sg-9a9a1dfc" ]
}
}
}
Create your migrations and push the updated code. ` zappa update dev `
Invoke the zappa manage command: zappa manage dev migrate
https://your_apigateway_end.execute-api.us-east-1.amazonaws.com/dev/webscanners/signup/
Currently ArcherySec signup page accessible publicly and we need to restrict signup page from publicly.
webscanners/web_views.py
@public
decoratorarcheryapi/views.py
@public
decoratorarcherysecurity/settings/base.py
STRONGHOLD_PUBLIC_URLS
r'^/api/createuser/$',
zappa update dev
Congratulations!! Now ArcherySec has been deployed as serverless, you can check lambda logs using zappa tail


Once students have a proficient knowledge of Python, it is time to learn about GIS and networks. GIS, or Geographic Information System, intruduces shapes, vectors, and location metadata to scripts. Networks increase the functionality of location data, making spacial computations more efficient. This allows for more advanced data analysis and mapping, critical for crisis response.
Github Repos
03-Intro-to-GIS
04-Intro-to-networks
05-Intro-to-Data-Science
Topics Covered
- Engineering design and data science
- How is data used to make decisions?
- How to identify requirements, constraints, and problems?
- How to effectively communicate between teams?
- How can engineering projects fail? What causes failures? How do we learn from failures?
- How to store and access data in a database for analysis?
- Geographic information system (GIS)
- How to use GeoPandas
- How to load various GIS file formats
- How to load raster files with GDAL
- How to create a map with layers
- How to do spatial calculations
- Common GIS tasks
- Loading basemaps from repositories
- Loading shapefiles of data layers
- Geometric operations for overlays, intersection, union, etc
- Reclassifying data
- Loading raster files
- Computing nearest neighbors, distances, spatial averages, spatial join
- Machine Learning and forecast-based financing
- Networks
- What are networks and how to use them
- How to get network data from Open Street Maps?
- What math can be done on networks, how do these algorithms work?
- How to visualize networks in GIS?
- Network properties: edges, vertices, adjacency, matrix representations
- Shortest path, Djikstra's algorithm, shortest path tree, minimum spanning tree, centrality
- Plotting measurements on the network
- Converting graph to geodataframe
- Exporting to raster, shapefile


{{< layout}} {{$main-content}}
After submitting your application, you'll need to ask someone you know well you confirm your identity. They can do this online. We'll give you all the details.
If your face has changed significantly, for example you've had a stroke or major surgery, you'll need to let us know.
Continue


| 018:048 Khan | : |
And they will be set before your Lord in (lines as) rows, (and Allah will say): "Now indeed, you have come to Us as We created you the first time.  |
| 018:048 Maulana | : |
And they are brought before thy Lord in ranks. Now certainly you have come to Us as We created you at first. Nay, you thought that We had not made an appointment for you. |
| 018:048 Pickthal | : |
And they are set before thy Lord in ranks (and it is said unto them): Now verily have ye come unto Us as We created you at the first. But ye thought that We had set no tryst for you. |
| 018:048 Rashad | : |
They will be presented before your Lord in a row. You have come to us as individuals, just as we created you initially. Indeed, this is what you claimed will never happen. |
| 018:048 Sarwar | : |
They will all be lined up in the presence of your Lord who will tell them, "Despite your belief that there would never be a Day of Judgment, all of you are brought in Our presence just as though We had created you for the first time. You believed that our promise could never come true." |
| 018:048 Shakir | : |
And they shall be brought before your Lord, standing in ranks: Now certainly you have come to Us as We created you at first. Nay, you thought that We had not appointed to you a time of the fulfillment of the promise. |
| 018:048 Sherali | : |
And they will be presented to thy Lord standing in rows; and it will be said to them, 'Now have you come to US as WE created you at first. But you thought that WE would not appoint a time for the fulfillment of OUR promise to you.' |
| 018:048 Yusufali | : |
And they will be marshalled before thy Lord in ranks, (with the announcement), "Now have ye come to Us (bare) as We created you first: aye, ye thought We shall not fulfil the appointment made to you to meet (Us)!": |
Concepts/Themes Covered: أركان الإسلام > التوحيد > توحيد الله تعالي > ربوبيته جلّ وعلا Pillars of Islam> Islamic> Oneness of Allah> His Divinity, the Great and Almighty أركان الإسلام > التوحيد > الملحدون المنكرون ليوم البعث Pillars of Islam> Islamic> The Apostates Who Denies the Resurrection الإيمان > اليوم الآخر > الإرهاصات التي تسبقه Faith> The Hereafter> The Signs which Precede it الإيمان > اليوم الآخر > العرض على الميزان واستلام الكتاب Faith> The Hereafter> The Exposure on the Balance (of Justice) and the Reception of the Record
This tool uses eight English parallel translations for the Holy Quran imported from Mr. Clay Smith. You can also visit Qurany Concepts for browsing the Quran themes or topics. If you want to search the Holy Quran for keywords, please visit Qurany Keywords.


Welcome to Dinner & A Show - plan your night out!
Event Description Pulled from API
Grab a bite to eat here before or after!
We hope you have fun!


{% extends "barriers/edit/base.html" %} {% block page_title %}{{ block.super }} - Sectors affected by the barrier{% endblock %} {% block back_link %} Back {% endblock %} {% block page_content %} {% include 'partials/heading.html' with text='Sectors affected by the barrier' %} {% form_error_banner form %}
{% endblock %}


x2d::anim::animation Class Reference
This class provides basic animation support.
More...
#include <animation.h>
List of all members.
Detailed Description
This class provides basic animation support.
Constructor & Destructor Documentation
| x2d::anim::animation::animation |
( |
float |
d |
) |
[inline] |
- Parameters:
-
| [in] | d | Default duration for each frame in animation |
Member Function Documentation
| void x2d::anim::animation::add |
( |
const frame & |
f |
) |
[inline] |
Add a frame to the animation
- Parameters:
-
| void x2d::anim::animation::draw_at_point |
( |
point |
pos |
) |
const |
Draw animation at position
- Parameters:
-
| [in] | pos | Position to draw at |
| void x2d::anim::animation::pause |
( |
|
) |
[inline] |
| void x2d::anim::animation::resume |
( |
|
) |
[inline] |
Resume animation after freeze
| void x2d::anim::animation::start |
( |
|
) |
[inline] |
Start the animation at first frame
| void x2d::anim::animation::update |
( |
const clock_info & |
clock |
) |
|
Update animation with given clock info
- Parameters:
-
| [in] | clock | The clock info |
The documentation for this class was generated from the following files:
- /Users/godexsoft/Development/Nako/x2d/x2d/x2d/src/anim/animation.h
- /Users/godexsoft/Development/Nako/x2d/x2d/x2d/src/anim/animation.cpp


{% extends "skeleton.html" %} {% block content %}
Are you sure you want to delete your list?
Movies and series that this list has will be lost


3 writes to CacheFullyLoaded
System.Management.Automation (3)
help\HelpProviderWithCache.cs (1)
226
CacheFullyLoaded
= false;
help\HelpProviderWithFullCache.cs (2)
39
this.
CacheFullyLoaded
= true;
72
this.
CacheFullyLoaded
= true;
4 references to CacheFullyLoaded
System.Management.Automation (4)
help\HelpProviderWithCache.cs (2)
60
if (!this.
CacheFullyLoaded
)
121
if (!this.
CacheFullyLoaded
)
help\HelpProviderWithFullCache.cs (2)
34
if (!this.
CacheFullyLoaded
)
67
if (!this.
CacheFullyLoaded
)


R/convertRelationships.R
convertRelationships.Rd
Part of Relations
convertRelationships(kmat, ped, ids = NULL, updateProgress = NULL)
| kmat | a numeric matrix of pairwise kinship coefficients. Rows and columns should be named with IDs. |
|---|---|
| ped | the pedigree information in datatable format with required
colnames |
| ids | character vector of IDs or NULL to which the analysis should be restricted. If provided, only relationships between these IDs will be converted to relationships. |
| updateProgress | function or NULL. If this function is defined, it
will be called during each iteration to update a
|
A dataframe with columns id1
, id2
, kinship
,
relation
. It is a long-form table of pairwise kinships, with
relationship categories included for each pair.
# \donttest{ library(nprcgenekeepr) ped <- nprcgenekeepr::smallPed kmat <- kinship(ped$id, ped$sire, ped$dam, ped$gen, sparse = FALSE) ids <- c("A", "B", "D", "E", "F", "G", "I", "J", "L", "M", "O", "P") relIds <- convertRelationships(kmat, ped, ids) rel <- convertRelationships(kmat, ped, updateProgress = function() {}) head(rel)#> id1 id2 kinship relation #> 1 A A 0.500 Self #> 2 A B 0.000 No Relation #> 3 A C 0.250 Parent-Offspring #> 4 A D 0.250 Parent-Offspring #> 5 A E 0.000 No Relation #> 6 A F 0.125 Grandparent-Grandchildped <- nprcgenekeepr::qcPed bkmat <- kinship(ped$id, ped$sire, ped$dam, ped$gen, sparse = FALSE) relBIds <- convertRelationships(bkmat, ped, c("4LFS70", "DD1U77")) relBIds#> id1 id2 kinship relation #> 1 4LFS70 4LFS70 0.50000 Self #> 2 4LFS70 DD1U77 0.03125 Other #> 4 DD1U77 DD1U77 0.50000 Self# }


Drag the slider to change the date.
This map illustrates the average daily particulate matter 2.5 during 2020. Individual readings taken from different counties in each state.
Data was taken from the EPA, sorted for PM2.5 and averaged daily county values for each state. Values were sorted using the Air Quality Index (AQI).
The plots below are visualized using Bokeh, and have been sorted generally acording to region.
Use the toolbox in the upper right corner of the Bokeh plots to zoom out/in or subselect points on the plots to show how they correlate across states.