Transcriptions V

Sharing.  Some system designs are proprietary.  Or, to see this another way, some system designs are made by others and kept secret: you do not get to look at them.  Sometimes this is for the good of the many, sometimes it is more for the good of those who designed the system, as they want their design to make money for them or to give them some other advantage.

Should your design be proprietary?  Let us consider why it should not be.

A design that is shared with others is sometimes called open.  This is because it is open to inspection and to critical review.  It is also open to modification or adaptation.  Others are free to provide enhancements or make faulty versions.  If you as designer are open to hear of such changes and criticisms, you may find that you got some good (and perhaps some bad) design review, audit, and testing for free.

This is especially good if your design is an evolving one.  While there are those with bad intent or narrow perspective who may give you bad advice or reviews, most are not with bad intent, and many have an interest in improving your system, and not stealing credit or advantage from you.  So consider sharing.



Redundancy.  It is useful to do things more than once, especially when you are not sure it was done right the first time, or can be done reliably a second time.

Systems which need continuous operation need fall back or backup systems.  These are often copies of the original system, but scaled down or simplified so that there is less chance of failure.  They could also be predecessors of the system being supported.

Systems keep copies of information to ensure the information is never lost.  It also helps to recover and reassemble information when some of it is lost, if you have to spread pieces of it around to start.



Creativity.  It is a creative act when you say, “I shall design a system to do the following:…”, primarily when this saying is a recognition of an unmet need, or of a better mousetrap, or even of a desire for self-improvement.  But you may yearn for creativity in the system, or the approach to solving certain problems that arise in the design, or evem in the implementation.  What do you do to stimulate creativity?

One way is to read, play, and involve oneself in things other than the system design.  If you are truly motivated in creating this system, it will be a part of you even as you do other things.  Then when inspiration strikes from outside, it will be because you have experienced many things, and exposed yourself to many suggestive influences, one of which became quite influential.

Another way is to set challenging subtasks within the design process.  If you test yourself by adding unlikely constraints to the requirements, you may come up with an unlikely and thus creative resolution to those constraints.

Even if you lack creativity, you can list things that are normal constraints as well as things that satisfy those constraints.  By routine analysis and attention to detail, uninspired thinking can still lead to good design, and a good design well-implememted is creative enough.




Happy Anniversary To Me!

Do you remember the very beginning?  How about just before that?

I describe a brief dream sequence below, and then some of what it suggests.

“I see my head spinning.  It is like someone takes a head shot of me, fixes it on a wall, and then rotates it counterclockwise around the middle of my forehead,  about one revolution per second.  I don’t see the someone though, nor the headshot.  I just sense it is me spinning like this.

Now I switch to another scene, where there is something like a rapidly spinning odometer on the right, and a growing me on the left. (Ìt makes more sense to describe it as an image, but this is a dream sequence, so I can say it is me growing, and not an image or sequence of images.)  I sense the odometer represents time, and I on the left am growing and aging, but I do not read the units, nor do I clearly distinguish my features.  I only sense that I am watching time pass quickly (months per second? years per second?  I cannot tell) and seeing how it affects me physically.

Now I switch to another scene: as if my eyes open, I see the hall and then the opening to the kitchen, in the house where I am living.”

The first two scenes in the description above are much like imaginings, thoughts created by an active mind, perhaps an expression of the subconscious, while the last scene corresponds to an observation made by a conscious and present observer.


Why do I relate these scenes?  They represent my very first memories.  There is no earlier memory that I have.


My memories dim over time, but this one I struggle to keep. When I had this experience of the mental images followed by the view of the hall and the kitchen, I was not aware of anything that had preceded it. It was not like yesterday was fuzzy or forgotten. Yesterday was nonexistent.  The full aspect of consciousness was complete at that time, and I became not only aware, but able to remember. This was truly the first day of my existence.

That was 49 years ago, on October 30, in my childhood home in the Willowbend district in South Houston.  At one point I could remember the following Halloween, or my birthday a few days away, but I dont have those memories now.  I never had memories of any time before that day.

Do I maintain that I was nonexistent before that moment, and that I sprang into being, with language and emotion wellformed?  No.  I think that some aspect which allows me today to recall, to think, to be, became active at that moment, and has continued nonstop for 49 years since.  It is what I know of as conscience, or soul, or being.

I do not know of anyone telling of an experience like this, of such a transition to existence.  I am not courageous enough to ask what nonexistence feels like.  The two scenes described above are all that I have “before the beginning” of my life.

Ìn the meantime, I have occasionally thought about the implications of this, but to no definite conclusion.  It might say that consciousness is a process, or perhaps the term is self-awareness, that some psychological constructs form gradually but only when a certain level is reached does a switch happen, a rapid transition, that leads to a person able to remember and internalize experience in a conscious way, no longer existing as a collection of cells but as a thinking and responsive and ŕemembering imdividual.


I kept this mostly to myself for many years, relating it only to a couple of people.  Now I think it is past time to share this, my birth of being.

In a few days, I will open this post up to commentary, for those who are inspired to share similar experiences.  I recommend writing your own journal entry with some detail.  A collection of such reports might inform researchers of consciousness.

What was your first moment, your first experience, your first memory?  And what came just before that?

Happy (personal) fifth MathOverflow anniversary!

(Kevin Buzzard is partly to blame for my participation; his sci.math.research posting first made me aware of the MathOverflow forum.)

In celebration of MathOverflow’s fifth anniversary, I have a post on which answers the question “How is MathOverflow useful to me?”, and I would expand on both the answer and the question now.

A brief recap of my posted answer: MathOverflow allows me to express that part of me which enjoys mathematics and sharing mathematics. It gives me the benefits of academia that I enjoyed as a graduate student, which I see as access to the thoughts and opinions of a select and like-minded group of people as well as the ability to contribute, while avoiding the major disadvantages of academia, which for me appear to involve politics and the pressures to perform associated and distracting administrative tasks.

I would expand the question to ask how MathOverflow can be useful to me and to others. Here are some of my ideas and observations.

MathOverflow serves as an online forum where (often) specific questions are asked and specific and relevant answers to these questions are given. Other things also happen on this forum and associated fora (chat and meta versions), some of which are useful side effects:

  • collaboration on existing research questions,
  • hyperlinked references to useful material,
  • some discussion,
  • some automated cross-referencing,
  • some crowdsourcing requests,
  • some new research questions are asked,
  • some insights and suggestions for understanding arise.

I think the following are related to and can be derived from the current efforts at MathOverflow:

  • making an archive version of some of the database
  • creating a public directory of those wishing an online presence that reflects and enhances their real-life interests in mathematics
  • allowing the creation of several templates for collaborative efforts, such as proof-wikis, tackling research problems, documenting the current and future historical development of disciplines of mathematics as well as past development.

I also think that certain efforts outside of MathOverflow can benefit from the work being done on the forum. In particular, encouraging and influencing the development of the WDML (World Digital Mathematics Library), helping people in developing countries with their mathematical efforts by showing them how to create localized (language-specific) versions of MathOverflow, and development of applications to facilitate various kinds of computation on low and intermediate levels and make them available to many. Further, I believe MathOverflow heralds the development of online resources to accompany and perhaps surpass upon current graduate level textbooks, improving their breadth and accessibility.

It is presently beyond the basic mission of MathOverflow to attempt any of the above efforts under its umbrella. I would instead suggest various project proposals for public consideration and I shall create some “Internet space” for development and small-scale implementation of some of these proposals. Serious inquiries can be directed to an email address found on my MathOverflow user page; a link to this page is at the meta post above.

Transcriptions IV

Templates. It is good to find a useful pattern, which can be successfully repeated. Template design should come after some experience in using the pattern you wish to copy. It is often desired to make templates out of durable material. Laminated sheets, metal versions of wood fabrications and saved (on a read only disk) files are such examples.

Macros are a special example of template. In preparing text-based systems, there is a program that will do pattern replacement. One can then make special words which are abbreviations of longer phrases or concepts. Some macros are modifiable, so that if you provide the abbreviation and some special text, the resulting substitution contains the special text.

Macro design and usage is nontrivial. One needs to see if the pattern occurs often enough that it is worth creating a macro for it. One also has to consider if the pattern will be useful in all the places it presently occurs.


Power tools. Once one has experience designing systems one can start using/making tools to design systems faster/better. When one has used/made some tools, one looks for power tools.

Power tools relieve one of the drudgery and tedium associated with certain tasks. Pneumatic hammers, drill presses, mold making machines, tunnel builders are some progressively complex power tools for physical manufacture. Include files, abstract data types, object classes, automated design tools, are some similar examples in the software domain.

Power tools often need training and discipline to use. Because they do so much so fast, it is easy to use them in the wrong way, sometimes with harmful consequences. One can build more complex systems with power tools, but a lack of understanding of how the tool (and the system it helps to create) will affect the environment, such a lack can lead to failure, even death.

Thus, power tools, and even tools, (and even systems) should not be used willy-nilly. Experience and guidance are suggested in learning and using even the simplest of systems.


Connections. Usually a system is designed as a collection of components which bear some relations to one another. Often this relation is called a connection. It represents a point of contact, or something being shared.

In many cases, the connections deserve as much design considerations as the components. Care must be taken in specifying the connection as it will often determine bottlenecks in future performance of the system.

Connections often indicate flow of material or information. The flow can be multi- or single-directional. If there is need for more of a commodity to flow, the connection is sometimes drawn at a size roughly proportional to the size of the flow.

THe flow can be highly specialized. Thus components will be designed with certain specifications in regard to the “shape” of the connection. Interface files in C programming are one such example.

Connections can also be physical as in forces on members of a truss.


Transcriptions, III

Communication. In designing systems for others you need to make your intentions for usage known. This is sometimes called documenting the system.

You should write documentation with one target audience in mind. Then review the documentation with an eye toward rewriting it for a less savvy audience.

It is useful to write something like a theory of operation section, which gives the user some notion of what the system does and why he/she would want it to do that. Then, technical details of how can follow.

One also should consider that no one reads the documentation. Thus, appropriate blurbs should be used. (Don’t put remaining hand in grinder.) Further, the design should consider making the documentation simpler.


Constraints. They can be a good thing. In designing a system, limiting ones choices can focus the development of the design, and allow it to go more quickly. Indeed, given enough carefully chosen constraints, very few design possibilities result, and the system comes together like putting a jigsaw puzzle together.

It is good to know where constraints come from, and why. Many result from user requirements, some from the capabilities of the components, some from economic consideration. Whatever the source, it helps to know if a constraint can be removed, or relaxed. This is especially important when there are too many constraints, i.e. the limitations make it unlikely to produce a result satisfying all of the limits. It is not expected to build an ice cube maker, that, under normal conditions, produces ice cubes that are cube-shaped and warm to the touch, i.e. should be both below and above 50 degrees F at the same time.


Maintenance. How long does your system last?

For systems with physical components, it is easy to think of such systems needing occasional repair and maintenance. If well designed, such repair can be done quickly and easily. However, complex nonphysical systems
also need maintenance. A common type of example is a data storage system. In order to use less space, data may be reorganized and rearranged and rerepresented. In software, garbage collection is a type of routine used in
memory management. Systems also need updates and improving to keep up with changing demand. Thus, flexible systems can accommodate redesign and adaptations. Certain government codicils allow for such amendments.


Transcriptions II

Perspective. I stand over someone, my head 2 feet above theirs. I point to something in some bushes at my eye level. Can the other person see it?

A lot of interesting things can happen because of differences, even minor differences, in points of view. Arguments can start, ideas discovered, new systems invented. In doing a system design, some changes in perspective can be quite useful. In doing usability studies, some system designers use and watch users use the prototypes, in order to improve the performance of the system under conditions in the field. By viewing a particular problem in more than one way, the solution becomes clear.

A classic example: Plant 10 trees in 5 rows of 4 trees each. One can look at this from the perspective of 10 trees. It becomes clear that the 5 rows can’t all be parallel and so one starts placing 10 trees in various arrangements. It can take some time to arrange these trees to get 5 rows with 4 trees in each row.

Now comes the change in perspective: Instead of placing trees, try placing rows. Since some rows will intersect, you can start by choosing 5 lines, no 2 of which are parallel. When you do this, you will find the 10 points of intersection satisfy the desired conditions. Instead of hunting around for a placement of points, any line placement works.


Delegate. In dealing with large systems, it helps to forget some details, at least temporarily.

Two methods take advantage of this forgetfulness. Designing from the top down involves representing the components of the system by blocks and requirements and interrelations between the blocks, and then considering each block as a system to be designed to fit the previous requirements and interrelations. If necessary, each block can itself be broken into smaller blocks and interrelations.

The second method involves recognizing a set of primitive components, each of which can be easily designed and implemented, and then forgetting the implementation of the components and combining them in interesting ways to form larger systems.


What is success? The system you make should meet some goal, and in some cases you need to demonstrate the goal is being achieved, at least in part. So what do you do?

One strategy is design-to-test. This strategy says to create components that allow you to measure, or test, parts of the system to establish yes/no answers related to the system goals.

One such goal is reliability. Given the same conditions or stimuli, will the system give the same response? Will the system respond the same way even under environmental extremes? What limits will the system endure, or start to malfunction?

Other tests are diagnostics. If the system fails a certain test, does the failure indicate what portions need repair/replacing?

Some systems are transparent enough that all required tests can be performed externally, without the need for components specific for testing. Black box design does require at times a design-for-test philosophy.


Get ready, get set, …

I feel the need for another preface. The next set of postings are lightly edited transcriptions from notes made some years ago. They may seem like disjointed topics grouped together; they should be considered as kernels for larger essays to be developed. One intent is to be provocative: I want you to think critically about the subject and find something to add or subtract from it. The notes will be posted with a title like “Transcriptions” here. I will also include some numbers for my temporary reference. When the sdfae domains are configured, the posts will be rearranged and expanded to accommodate other goals.

I thank you for waiting and storing your feedback to give when the proper mechanisms are in place. Your patience is appreciated and I will reward it.