The App Compat Guy

Chris Jackson's Original Recipe Awesomesauce

Browse by Tags

Tagged Content List
  • Blog Post: Designing the User Experience

    So far, I have covered two important aspects of software design that will impact how this software will evolve into the future. A brief recap: Evolvability. When developing software, you are fighting a battle against the combinatorial mathematics that govern the complexity of any respectably sized...
  • Blog Post: Stealing Ideas: External Evolutionary Events and API Mimicry

    Last month, we released the .NET Framework 2.0 . However, a significant number of organizations are not going to immediately migrate to the new platform and tools. While it's not that difficult to see the benefits of using the new platform, most organizations are very careful and deliberate about changing...
  • Blog Post: What is the sweet spot for genetic programming?

    Alex Barnett posted a comment in my last post referencing a video on the University of Washington website: http://uwtv.org/programs/displayevent.asp?rid=902 . This is a worthwhile video, and I wanted to comment on some of the contents. Of course, I freely admit my bias towards some of his opinions, because...
  • Blog Post: Genetic Programming and Units of Selection

    Genetic Programming is a fascinating field of study. Essentially, this is the study of software that writes software, selecting the software it has written that exhibits the highest degree of fitness, and allowing this software to continue to evolve over time. In essence, what Genetic Programming is...
  • Blog Post: Developing Less Complex Software: Gadgets and Coding for Fun

    In my last entry, I discussed complexity in evolution, and how the most highly complex software is, in fact, the edge case. Far more software is less complex; more people have written a "Hello World" program than have written an application of the complexity of, say, Microsoft BizTalk Server. This...
  • Blog Post: Evolution, Complexity, and Software Platforms

    Webster's Dictionary defines evolution as, "a process of continuous change from a lower, simpler, or worse to a higher, more complex, or better state." I really hate pretty much every speech or writing which starts with the dictionary definition of something. Certainly it is a starting point, but...
  • Blog Post: Defining Units of Selection

    In my previous posts, I discussed the concepts of non-random selection and arms races. With this understanding in mind, we can start to see a very important concept arise. Accurately defining the unit of selection is absolutely critical to effectively evolving your software. It is all too...
  • Blog Post: Selection and Evolutionary Arms Races

    Selection is the basis by which evolution can develop the enormously complicated systems that exist today. The underlying principal is non-random selection of random mutations. In any organism, there is some degree of genetic drift. Despite the built-in error correction of DNA replication, mutations...
  • Blog Post: Evolution vs. Revolution

    In my previous posts, I have been arguing the point that throwing away source code and starting over from scratch is a notably bad idea in general. In this, I am echoing what Joel Spolsky says so eloquently in his post Things You Should Never Do . (Incidentally, I just observed the zero-filled naming...
  • Blog Post: Evolving an Imperfect Design

    I continue to be surprised by suggestions that an entire body of code - one which has proven its ability to survive in the software ecosystem, should be completely disposed of and replaced with new, less "buggy" code. I read another treatise on this recently, and I still fail to understand the logic...
  • Blog Post: Single Step Selection

    Have you ever pondered about some really amazing feature of the biological world? The eye? The ear? The sense of touch? Bird flight? These are features evolved very gradually, over many generations. The net result was something that seems incredibly impressive. Sometimes so much so that it is hard to...
  • Blog Post: Mutation and Genes

    From the comments I received, it is apparent that I rushed through my description of mutation, which seems to have led to some confusion. I will attempt to rectify that shortcoming. When I speak of mutation being non-random in biological life, there are a couple of ways to think of this. First, consider...
  • Blog Post: Terminology and Non-Random Mutation

    I want to take a moment to go back and review some of the terminology I have been using, to ensure that there is no confusion. The reader will kindly indulge any ambiguity in my language up to this point – I am quite literally making this up as I go along. Binary Code == DNA In the analogy I have...
  • Blog Post: On the Nature of Software Organisms and Selection

    In my last entry , I attempted to illustrate (hopefully with some degree of success) the reasoning behind viewing software as an organism, and all of the associated learning we may gain from such a comparison. In this entry, I am hoping to clarify this analogy a bit more, in order to provide for us a...
  • Blog Post: Software as an Organism

    Can we correctly describe software as an organism? I believe that we can make a compelling argument to do exactly that. To achieve this, I first intend to run through analogies that will describe some of the correlations between software and biological life, which may help to explain why we would...
Page 1 of 1 (15 items)