Showing posts with label design. Show all posts
Showing posts with label design. Show all posts

Sunday, May 23, 2010

Cultural Matrix: C.A. 2005

Cultural partical simulation

Each individual is populated with a collection of multidimensional memes. The position and color of each meme is stored in an individual's mind, which is in turn presented as an object in a 2 dimensional plane.

The goal of this is to abstract a meme into a simplified object with a position and color in a person's mind, giving color and contour to an individual's mind.

The more contact an individual has with other individuals, the more their memescape comes to resemble that of its peers, often taking on new memes, and new territories are opened in their individual memescape.

This comes with neccesary improvisational algorithms which enable each individual to assimilate sections of memescape into their own cultural matrix.

An individual will feel most comfortable communicating with peers with similar memescapes, and gravitate towards memescapes which they have found to be compatible with their own. However, depending on certain attitudes encoded in their cultural matrix, may gravitate toward diversely appearing individuals, or conversely toward similarly appearing individuals. This may also depend on the size and color of their memescape.

The effect of mass encultration on various groups may have interesting effects as well.

The overarching goal of this simulation is to produce an interesting and complex visual presentation which enables one to more simply and visually think about these complex abstract concepts.

The precise parameters of the simulation still require much development, but overal may produce an interesting emergent behavior.



Meme:
Each meme consists of a multidimensional point (the number of dimensions being adjustable, as long as it is equal or more to 2) , a color (consisting of a 3 dimensional position in a color space such as L*a*b), and a directional vector of dimensions matching that of each meme's position. A meme's vector would consist of the averaged directions of a set of peer memes selected according to a process in which an adjustable threshold is used to identify similarly colored memes. Therefore a meme would gravitate toward memes of similar color.

The peer memes selected in the aforementioned process would be connected, in addition to unarticulated rules to produce the cultural matrix


Cultural matrix:

A cultural matrix is composed of a collection of memes interconnected according to a set of rules which allows for random and intuitive improvisation. This matrix would be processed in such a way to be capable of producing a visually representable landscape. Additional rules may be made to evaluate one matrix's similarity to another's.

Friday, June 1, 2007

What is Design?

This is one of those ideas that is not just a "cool idea", or something that I just have a random kink or obsession about. This project would be genuinely useful to me. Enough that I have seen other designers do exactly the same project, design organizations, such as AIGA, and others.

The problem essentially is that most people really don't understand what graphic design, or design in general is, or what its value is. It also happens to be these very people who would benefit most from design.

What I need, as a designer, is a booklet, a manual, or something that is easy to read, well designed, and not only explains why design is a valuable thing, but demonstrates it in a clear and obvious way.

It perhaps shouldn't go into too much detail about how to design something, but through popular examples.

For instance, the most obvious example is the iPod. Now, hindsight is 20/20 of course, but according to the logic of those who don't understand design, the iPod should have been a failure. The iPod wasn't the first mp3 player. It wasn't even the first hard drive based mp3 player. It was more expensive than other music players when it was first released, and still is. In terms of hardware, it doesn't have as much capacity as other players, and didn't when it first came out. It doesn't play as many formats as some. The iPod was even the last digital player to play videos. About the only obvious advantage it's had is that it's slightly smaller than the others. If you look at it in these terms, it's a complete mystery why the iPod has been such a success.

There are other examples too. The branding for chipotle, the architecture of their restaurants. Starbucks, flckr, and others. With no obvious advantage over competitors in a purely statistical standpoint, it's clearly the superior design which gives these companies the win.

There are smaller scale examples too. The clarity of communication in a sparse design which makes good use of negative space, vs. a crowded design which sees empty space as wasted space. The direct financial benefit that comes from designing an ecommerce site to channel viewers into becoming buyers- Design has a direct and real relationship with conversion rates in this arena.

Design is important, and it's not always easy to explain why verbally. A handout for potential clients would be invaluable.

Tuesday, April 10, 2007

Programming Language

1. Why create a new programming language?
I have an idea for a programming language. There are hundreds already though, why create a new one? I firmly believe that the bulk of programming languages are missing the point. They don't lack effort or thought, many are theoretically sound, many aren't. Some of my favorites are Lisp, Ruby and APL.

What's lacking in the world of programming languages though, is the perspective of a designer, because frankly, every programming language I see is ugly. Every programming language I have seen, to one extent or another flagrantly disregards the history and culture of punctuation and symbology. They abuse symbols, assigning them meaning they were never meant to have. These programming languages force their readers to cross their eyes, and ignore their years of cultural training to follow the specific and unique logic which applies only to the world of programming. The relatively high density of brackets, and nesting lead to a visual ambiguity which requires an expert, and a good code formatter to decipher. Code should not be code.

And why should code be beautiful, you may ask? The end users don't have to look at it, and the programmers should be clever enough to deal with any sort of cryptic obfuscation, and difficult to type out structure. They are professionals after all! Sure, but the key point is, they are also human. Difficult to read, and hard on the eyes code leads to more mistakes, more fatigue, and over all a more grueling experience. Your average person can usually look at a gramatically incorrect sentence, and immediately sense that something is wrong. Your average programmer doesn't necessarily have this ability with a line of code. Due to the haphazard and thoughtless design of programming languages, you still have to read through word for word, symbol for symbol to figure out why something doesn't work, why something is illogical.

I think there's a better way. I think there is room for a humanistic programming language. I think it's time for one too. There is currently no technical reason it is not possible. The *only* reason we still code using these brutal machine languages, is due to the short history of computers, and their original strict limitations. These limitations no longer exist, but the assumptions that we built from those limitations still do. Let's work to improve this.

2. Design goals

It's easy to lose sight of your goal, in the midst of the process of creation. See my earlier post about creative briefs. Ruby on Rails has a number of design principles. there's Don't Repeat Yourself, and the principle of least surprise, for a couple of examples. A humanistic programming language should have some basic guidelines to enforce a certain amount of self consistancy.

Here is the space where I will keep my working list of HPL ideals.

Respect the punctuation

Don't violate the history, culture and meaning of symbols. We are no longer limited to just what's at the top of the keyboard, above the numbers. Nowadays, we have the entire Unicode symbol library at our command. Let's find appropriate symbols, and use them for their appropriate meanings.

Whitespace is not irrelevant

Having a standard indentation style has proven invaluable to the open source projects that have enforced it. Having a common visual expectation for the code makes collaboration that much easier. Let's not rely on humans to enforce the visual style. We have computers for droning repetetive tasks like that.

Dielects over Bloat

In the real world, different professions each have their own specific languages. Think about the show ER, and the sheer amount of latin they use just to get around having to tediously describe in detail every little thing. Verbal shortcuts. The same should apply to programming. If I'm making a web application, don't make me tediously describe the process of retrieving information from a form, or persisting data in a database. We know in advance we need to do these similar tasks many times. Provide shortcuts for doing them.

Loops are a bad solution to an old problem

The typical tasks which need to be performed by loops is well understood by now. Some task needs to be performed on a list of things, a tree needs to be traversed to find a needle in a haystack, etc. Make syntax for the task, not the computer's method of performing it.

Syntax for the task, not the method

nuf said

Brackets are bad, nested brackets are worse

Brackets are actually visually useful, as long as the opening and closing bracket are on the same line, and there are no other brackets nesting in or around them. Once you break them out into multiple lines, nest them, and worst of all, have a line with nothing but a bracket, things start getting confusing and visually ugly. A closing bracket visually points to the left. If it's on its own, it is pointing at nothing. It is closing and resolving nothing. Combine it with nesting, and reading a page of code becomes a game of matching opening brackets to closing brackets. How can you debug your code, if you have no idea what is going on in it, and it is not visually obvious that you have made a typo? XML endevoured to solve the matching problem. How? More brackets! MANY MORE BRACKETS. Great. I think we can do better.




3. Parallelism


4. Relational integrity

5. MVC enforcement

6. Event Model

7. REST architecture provides a means for sharing work, without working to share.

8. Internet provides a means for automatic distributed super computing.