Feeds:
Posts
Comments

Amino Acid

Hydrophobic

Ring

+

Polar

Linear Side-chain

Symmetric Side-chain

H-bond atom?

Cb?

Xd?

Gly, G

0

0

0

0

0

1

1

0

0

0

Asn, N

0

0

0

0

1

0

0

1

1

0

Gln, Q

0

0

0

0

1

0

0

1

1

1

Ser, S

0

0

0

0

1

1

1

1

1

0

Asp, D

0

0

0

1

1

0

0

1

1

0

Glu, E

0

0

0

1

1

0

0

1

1

1

Arg, R

0

0

1

0

1

0

1

1

1

1

Lys, K

0

0

1

0

1

1

1

1

1

1

His, H

0

1

1

0

1

0

0

1

1

1

Ile, I

1

0

0

0

0

0

0

0

1

1

Val, V

1

0

0

0

0

0

1

0

1

0

Leu, L

1

0

0

0

0

0

1

0

1

1

Ala, A

1

0

0

0

0

1

1

0

1

0

Cys, C

1

0

0

0

0

1

1

1

1

0

Met, M

1

0

0

0

0

1

1

1

1

1

Thr, T

1

0

0

0

1

0

0

1

1

0

Pro, P

1

1

0

0

0

0

0

0

1

1

Trp, W

1

1

0

0

0

0

0

1

1

1

 Phe, F

1

1

0

0

0

0

1

0

1

1

Tyr, Y

1

1

0

0

1

0

1

1

1

1

I was recently re(^n)-watching The One Where Phoebe Runs and could not stop the trail of thoughts that followed when I heard the closing dialog that Ross says to Janine, “That’s so Janine, you-you-you know what, do you know what we’re doing right now? You and I…. We’re interfacing.”

In the world of software design, it is no great mystery that the user interface (UI) of an application will either make or break it. A good UI does more than just look good.  It focuses on the user who “interfaces” with it, conforms to the user’s view of the task, and provides the user with a ground where navigation to a useful solution is easy, intuitive, and enjoyable.

There are several fundamental design guidelines that have been learnt over the years which software developers adhere to when trying to produce an application that is built to last. It amazes me that evolution appreciates some of the very same principles as evident from the way man has been thriving quite successfully for centuries while managing to understand and interface with his environment and fellow beings. Human beings have a multitude of senses with which we interface with the environment, the fundamental of them being sight, hearing, taste, smell and touch (“the 5 senses”).

In this post, I will try to draw some parallels between established software UI design principles and my observations on Nature’s “human interface design” principles.

Constantine and Lockwood describe mantras that a programmer should keep in mind to create a high quality user interface — Structure, Simplicity, Feedback, Tolerance (robustness) and Re-use. The exterior of the human body is structurally well organized. Components of the human exterior are distinguished in a “templated” fashion. These well-distinguished components (limbs, face, and abdomen) are like panels with sub-units that achieve more refined tasks. Wherein the combined outcomes are significantly more enhanced than the outcome of each part, one finds these components “grouped” in close proximity. The pleasure one gets from the aroma of a hot cup of coffee while taking a sip of it is due in part to the nose and mouth being proximal components of the human exterior. Just imagine if the nose were to have evolved to be present in the lower end of the body next to the toenails while the mouth were to have evolved to be on the face where it is! Our hand holding that aromatic cup of coffee would have had to make an extra trip to the nose besides the toenails first before coming right back up to the mouth to sip the coffee!

The biological system is big on feedback. Take for example, an allergenic reaction. There are several causes for allergies. Common allergens include proteins from food material, non-food proteins that are ingested, toxins that interact with human proteins, hygiene-related factors such as dust mite proteins and environmental factors such as pollen. When the human body is exposed to these allergens (read, a run-time error occurred), it results in an immediate inflammatory response from the immune system of the individual. For most individuals, this manifests as a rash on the skin or some perceivable symptom that can be recognized such as swelling of the tongue or breathlessness. In most cases, such perceivable systems can be immediately traced back to the source and treated appropriately by themselves or other individuals who interface with the individual exhibiting allergy-induced symptoms.

Perhaps evolution could have done better…? Like pop-up a clear large error dialog that tells you what the problem is… with all the advances in biomedical engineering, perhaps such easy to interpret user-friendly interfaces will arrive sooner than later!

One of the fundamental laws of good interface design states that ones design should mask the unnecessary details, make obvious the most relevant ones, make common tasks simple to perform, and provide good shortcuts that are meaningfully related to longer but useful procedures. From this standpoint, the human body is a perfectly evolved interface!

There are as many as a trillion cells in the human body performing thousands of thousands of functions. Each cell contains an estimated 100 trillion atoms. Advances in structural biology are revealing that every single one of these atoms works in perfect harmony to create an unbelievably remarkable machine. It takes 17 muscles for a person to smile, and all it takes to get there is a good joke or a tickle from another interfacing individual.  That is what I call a shortcut!  But seriously, we don’t feel a single muscle work when we smile, leave alone the millions of atoms reacting in perfect symphony to produce that wonderful outcome. The complexity is so well shielded!

And.. talk about being intuitive — even a 12 week old fetus knows that by stretching arms and legs out completely, the fetus gets to relax those 100 trillion atoms (even as the ultra sound technician is busy poking with a sensor!)… that’s what I call an intuitive use of every body atom!

One of my personal favorites while we are on the subject of software design is componentization and architecture of large scale software. Multi-tasking is second nature to us these days. For instance, we talk on the mobile while driving, cooking, watching TV, etc. We take notes while we are at meetings. The diversity of actions we are capable of performing simultaneously can only be attributed to the miraculous componentization of different parts of the body that have evolved to seamlessly function together in harmony. Indeed, every organ has a purpose. While they function brilliantly together, they are very, very loosely “coupled”.

Fixing a bug is much easier (to me) than sewing up a wound on my skin. But trust me, I ruminated on this and there are tons of similarities in the two processes and software engineers have things to glean here. Surgeons fix “bugs” on the human body all the time! They need to worry about qualifying their bug fix i.e. they need to ask themselves, will this change affect what exists and functions harmoniously today on this specific human body?  How effective is this “fix” in avoiding a recurrence of the same problem if triggered by the same/different cause? If the “design” needs to be refactored (read another surgery), will this change be a roadblock in implementation of future designs? I have to say that advances in medical and surgical technology are the biggest factors here. But even then, the very fact that surgeons can “work” on the same human body interface to fix issues and to implement “enhancements” proves that the overall design of the human body is robust much like an excellently designed, long-lasting product (built to last!).

A good software design reuses internal and external components and behaviors, maintaining consistency with purpose rather than merely arbitrary consistency, thus reducing the need for users to rethink and remember. We can visually observe several anatomical components re-used within the human body. Look at the similarity we can see between fingers on hands and toes of the feet! There is consistency with purpose and reuse of the same functional “template” right there! Evolution seems to totally believe in re-use and appears to have mastered the art!

Indeed, there is much that a software engineer can learn from appreciating biology as Nature’s masterpiece. For me, as I was working on a UI design project these last few weeks, I have grown to appreciate the miraculous UI that Nature has evolved on our own body.

Digital language has been developed using binary code (i.e. the bits 0 and 1) with the sole differentiating property being the bit value (0/1). Each bit has no more information content than the bit value (0/1). A bit 0 is no different from any other bit 0 (irrespective of context) and a bit 1 is no different from any other bit 1 (again, irrespective of context) – i.e. there are no context specifications for bits. A string in digital language (e.g. 001010101010110110101110101101111110010110101010111) thus has no “higher dimensional” information content other than its 1-dimensional “composition” of 0s and 1s.

This is apparently contrary to the “Language of Life“. Take DNA for instance – all DNA is coded for by 4 “bits” – A/T/G/C, In this case, each “bio bit” has a rich array of distinguishing physicochemical properties – for instance, A/T/G/C have different molecular weights, chemical structures, substitution propensities, and reactivities. Thus each of these “bio bits” has a rich set of associated properties that distinguish it from each of the other bits – unlike the digital bits 0 and 1 that differ purely by their bit value. The rich array of differing physicochemical properties of the ATGC biobits in turn enables genetic information content of DNA to be encoded in dimensions higher than the 1-D sequence –

for instance each gene (e.g. ATGCTGATGCTGATGCTAGGAGATCGGAGCTGCGCGATTAGAGGCGCGCGTTACATCTA) has in addition to its 1-D sequence, secondary (2-D) and tertiary (3-D) structures that are enabled by inter-bit interactions that stem from their finely defined and rich array of physicochemical properties. There are further dimensions involving structural interactions and networks of such interactions as well – but this builds on the same richness in fundamental bit diversity – contrary to digital language wherein complexity stems from string usage, interpretation, modification, and interactions without actually expanding on the potential richness in bit diversity.

Food for thought: if one were to look into biomimetic digital bit expansion, how would one go about that? We look forward to our reader’s thoughts on this subject.