Copyleft Architecure Project ID: D_055


02 ASCII vs The Blob
+------+    +--------+    +--------------+
! OPEN !----! SOURCE !----! ARCHITECTURE !
+------+    +--------+    +--------------+

Is architecture becoming software?
Architecture is definitely becoming more software-intensive and in-turn software dependent. The main difference resides in the production of a building compared to the production of software. Architecture is contrsucted, built and assembled on site. It must comply with the local code standards and the architect and the builder are liable for any potential damages that may occur. Software is compiled, installed, configured and almost all software venues claim no liability for anything that may happen while using their software.

When it comes to the software used to develop architectural ideas, unfortunately, much of it is not inteded for use within the field of architecture. Architects must then misuse/abuse 3D animation programs and such to get the desired results.

In response to the limitations of the form follows software product, the accpetance of open source can push the boundaries of what computer source means to an architecural project. What language is may be best used to decribe a space? What does the source of a CAD file look like anyhow? Since its not really in any human readable format, should it be? Could it be? What would the code mean to the architect anyhow? Should there be any stuctural honesty between the structure of the progamming elements of the digital file and the end design?

ASCII (American Standard Code for Information Interchange)
"The ASCII code was the first 8-bit standard code that let characters - letters,numbers, punctuation, and other symbols - be represented by the same 8-bits on many different kinds of computers. It is limitted to the alphabet popular at the time in the USA but was adopted internationally( see ISO_Latin_1). It is the code used on the Internet. " more from Dick Botting

Blobs
When working with related database management systems (RDBMS), blobs (Binary Large Objects) are long strings of unstructured data used for storing data like word docs, images, pdfs, mp3s and most images. Blobs are examples of unstructured data and must be processed through some sort of client software to read any meaning out of them. When using Blobs in database the goal is to store and organize this data. If the desire is to extract more sophisticated information from the block of data, then Blobs will prove difficult to work with. Architecture of Variables in Blobs

Version Control
One of the great benefits of working with ASCII text files is the ability to work with a version control system.

                                      +-------------+
           Branch 1.2.2.3.2 ->        ! 1.2.2.3.2.1 !
                                    / +-------------+
                                   /
                                  /
                 +---------+    +---------+    +---------+
Branch 1.2.2 -> _! 1.2.2.1 !----! 1.2.2.2 !----! 1.2.2.3 !
               / +---------+    +---------+    +---------+
              /
             /
+-----+    +-----+    +-----+    +-----+    +-----+
! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 !  <- The main trunk
+-----+    +-----+    +-----+    +-----+    +-----+
                !
                !
                !   +---------+    +---------+    +---------+
Branch 1.2.4 -> +---! 1.2.4.1 !----! 1.2.4.2 !----! 1.2.4.3 !
                    +---------+    +---------+    +---------+

Diagram above and content below from the Concurrent Versions System manual

While the need to manage binary files may seem obvious if the files that you customarily work with are binary, putting them into version control does present some additional issues.

One basic function of version control is to show the differences between two revisions. For example, if someone else checked in a new version of a file, you may wish to look at what they changed and determine whether their changes are good. For text files, CVS provides this functionality via the cvs diff command. For binary files, it may be possible to extract the two revisions and then compare them with a tool external to CVS (for example, word processing software often has such a feature). If there is no such tool, one must track changes via other mechanisms, such as urging people to write good log messages, and hoping that the changes they actually made were the changes that they intended to make.

Another ability of a version control system is the ability to merge two revisions. For CVS this happens in two contexts. The first is when users make changes in separate working directories (see section Multiple developers). The second is when one merges explicitly with the `update -j' command (see section Branching and merging).

In the case of text files, CVS can merge changes made independently, and signal a conflict if the changes conflict. With binary files, the best that CVS can do is present the two different copies of the file, and leave it to the user to resolve the conflict. The user may choose one copy or the other, or may run an external merge tool which knows about that particular file format, if one exists. Note that having the user merge relies primarily on the user to not accidentally omit some changes, and thus is potentially error prone.

If this process is thought to be undesirable, the best choice may be to avoid merging. To avoid the merges that result from separate working directories, see the discussion of reserved checkouts (file locking) in section Multiple developers. To avoid the merges resulting from branches, restrict use of branches.