Sunday, December 27, 2015

We conceive of limits to variation in animal behaviors and morphology. When we deduce something about the constraints acting on the development of an organism and on the evolution of a species we must distinguish between two kinds of observed limits. The first kind is a limit due to actual biological limitations, whether on embryological development, lack of viability (i.e., animals having the variation die before they can reproduce), or lack of fecundity. The second kind is a limit on what we as scientists can actually observe due to lack of a fossil record either for the animal as a whole or for the specific variation in question, or due to limitations in our methods or devices. The upshot of this difference is that the first kind of limit is fit for building our philosophy of nature while the second kind is misleading and has the power to render our predictive tools worthless.

There are, of course, mitigations to the perfidy of the second kind of limit. For instance, we can determine in some cases that a variation, such as a distinctive birdsong sung by an ancient bird, would not be visible to our tools. In addition, constraints determined in one area may depend on constraints in another area which confound limits of the second kind. Ultimately, these ways of thinking lead to the practice of integrating heterogeneous models of living systems into a single model. The hope is that there is a dependence between parts of the system which constrain those variations which cannot be constrained through observation. In the limit, this approach frees us entirely from the "black swans" since it produces an emulation of reality. In the real world, however, where computational limitations prevent perfect copies of reality, there may yet be independent pockets of variability that we will always fail to pick up either in observations or in our models.

~~~~

Friday, December 11, 2015


Colored Square. © 2015, by Mark W.
~~~~

Monday, July 20, 2015

Kinds of tests

These are my thoughts on software testing terminology. Some of these tests have definitions that float, and I want to get down my definitions, so that I can refer to them and refer people to them if there's any uncertainty about what I mean.
Integration test
A test of the boundary between components. An integration test in project A for components B confirms that the interface A expects of B matches up with the interface that B provides. Such tests make sense whenever component B is not available to A's developer at the time that she writes A.
Unit test
A test of the primary functionality of a component and of the edge cases and error modes of the component. The component for which a unit test is written should not have untested sub-parts -- in other words, the unit test assumes that below the level of abstraction at which the test is performed, all components perform perfectly. It may be necessary to make "perfect" sub-parts (e.g., "mock" objects) to effectively test at the desired level of abstraction.
Acceptance test
A test of a component against customer requirements. These are tests which must be passed for acceptance of the component by the customer.
Formal test
A test of the mathematical abstraction of the software component against known failure modes which can be formally proven to occur, not occur, or possibly occur under a class of inputs.

~~~~

Sunday, July 19, 2015

Human communication protocols. You can't tell what type PDU you deal with sans reading a variable number of headers, the offsets for each header encoded, in prose, by a randomly selected preceding header. Then, when you finally get to the damn payload, too often there's virtually no content. Absurd.

~~~~

Saturday, June 13, 2015

TV show substitutes for "fuck":
  • Frell - Farscape
  • Frak/Frack - Battlestar Galactica (and many, many others)
  • Rut - Firefly (actually refers to "a recurrent period of sexual excitement and reproductive activity" in modern English. Collins English Dictionary)

~~~~

Saturday, May 9, 2015

Where terrorism is taking us

Consider that each attack demands that we become more careful of what we say and of what is published. We fear our fellows and their heritage. Our fundamental freedoms are restricted by the eroding influence of the attackers. Seeing the ways that the freedmoms provoke the terrorists, authority figures say, "We must take precautions around all free expressions which may offend the terrorists." The "may" allows room to expand the presence of protections -- never to contract. The terrorist will not moderate his stance by saying, "Such and such class of action is no longer offensive," but with each additional attack on a previously putatively excluded action, the fear makes a retraction by us, and not the terrorist, most natural. So, an unfettered growth in the presence of free-expression-police seems to be in effect. These police have as their mission to defend those freely and legally expressing their opinions from terrorists. Could these figures, however, be perverted such tthat the police inhibit free expression to pre-empt potential attackers? This danger could manifest in other ways, but in particular I think of the asymmetry of possible attackers to defenders, the definitional foundation of terrorism. That is, an attack will be effective with any success and most mentions of attacks among us, but police cannot continually protect all targets. In the face of this asymmetry, authorities may opt for reducing the number of targets -- restraining liberty. Is there an alternative response to terrorism that prevents a chilling of liberties while still effectively reducing the scale and volume of terrorist attacks?

~~~~

Saturday, February 28, 2015

Kind of a cool idea: a recorder that allows you to pin back later audio onto an earlier part of a recording. You, an interviewer, are recording an interview, and you hear the interviewee say something interesting about XXX. You hit a button on your audio recorder, the interview goes on to YYY and ZZZ, and then you say, "Can you say a little more about XXX?" You hit the button again and the interviewee expands on XXX. You hit another button. On the first button press, a pin is attached at the point where the interviewee mentioned XXX, when you press the button again a thread is attached to the pin with the audio from that point attached. When you press the other button, the thread is cut. The linear track of audio as spoken is preserved the whole way, but now there's another track where you can attach a single excerpt from later parts in the track to earlier parts.

There are, of course, limitations to the method. You can't attach a thread to either YYY or ZZZ with only the two buttons. You may be able to return to XXX depending on how we set the semantics of that first button, but it makes much more sense for that button to do the same thing as before by either pinning to one of the second-track threads in a sort-of skewed tree:

-------------
   `---------
       `-----
          `--
or to re-pin on the base track (p means pin):
--------p----
   `---------
Maybe it would be better to have a three-button system to set multiple pins with the first button, a second button to attach the thread to the earliest pin, and a third button to cut the current pin.

I'm focusing on a simple button system which can be managed more or less without thinking about what thread you're on since I think that, when I talk, my model of the conversation has this sort of folding linearity that matches with this system. Obviously, a full tablet computer with a display of these threads would allow for great flexibility, but wouldn't that display get in the way of engaging with the interviewee, the focus of your activity? There's also much more applicability for the simple thing than the complicated pretty thing that's all about itself and not about the thing that you're doing with the thing. I might permit a dial of sorts that allows you to move between pins more freely.

~~~~