loading

Archive for January, 2006

Alison

well, looks like UnrealArt (or possibly something …

well, looks like UnrealArt (or possibly something else of mine) is going to be in an exhibition in Manchester… in Victoria Baths. heres the floor plan of the turkish bath area my space is the 2 rooms to the right…




2 whole rooms all to my self… warm up the printers! Alisons going canvas crazy, mwahahaha




you can see pictures of the space here -





piccie
Daniel

mmm. . .binary trees. . .

Today in my Programming from A to Z course we’ll be going over how to program a simple concordance in Java storing words in a binary search tree. It may be hairy, but I hope it proves to be a useful means for improving the programming skills of ITP students. . . if any data structure / algorithm gurus wander by this site, please feel free to correct any mistakes i’ve made in this initial tutorial. . . being the severely flawed human being that i am, i’m sure they exist. .

020200 - analog digital design

Nam June Paik has died.

A good time to read about his life and his art. He started out as a componist and went well known for one of the first Videoartists in the world. Check the TV programm for specials upon Nam June Paik at late night.

Quote: “Actually I have no principles.
I go where the empty roads are.”

Some Links (quick google, if you got cool links, leave a comment):
http://www.guggenheim.org/exhibitions/past_exhibitions/paik/paik_top.html
http://www.namjunepaik.de/
http://www.medienkunstnetz.de/kuenstler/paik/biografie/

thinking on digital tools

Nam June Paik has died.

A good time to read about his life and his art. He started out as a componist and went well known for one of the first Videoartists in the world. Check the TV programm for specials upon Nam June Paik at late night.

Quote:
“Actually I have no principles.
I go where the empty roads are.”

Some Links
(quick google, if you got cool links, leave a comment):
http://www.guggenheim.org/
http://www.namjunepaik.de/
http://www.medienkunstnetz.de/kuenstler/paik/biografie/

blog.blprnt.com - Processing

Toxi on OOP

Toxi has posted a follow-up to last week’s discussion about where Processing falls short with a post on the importance of design in programming. He goes a bit into OOP theory and discusses why he thinks good programming practice is an important part of producing expressive code. It’s a good short read for people who aren’t scared of words like ‘polymorphism’ and ‘inheritence’.

I teach OOP to beginning programmers and I think I do a fairly good job of it. Still, when it gets down to the nitty gritty of it, concepts like interfaces and inheritance can be a bit tough to swallow. Mind you, programming in general can be tricky for beginners, and I’m not convinced that OOP makes it any harder. In fact, in a lot of ways, I think it makes things a little bit smoother, since you can very quickly learn to recognize patterns in code that act as landmarks of a sort. Particularly with ActionScript, I find that understanding the Object Model takes some of the mystery out of code for new users.

toxi

Importance of design

When I recently criticized Processing’s lack of object orientation I seemed to have hit a sore spot. The majority of the responses have emotionally defended the current syntax as sufficient and most suitable for beginners. At the same time they dismissed my insistance on OO principles as strictly unnecessary and considered these proposed methods as mere “niceties” which can easily be lived without. I think that’s missing my point completely!

Object orientation is not to be mixed up with “nice” looking, cleanly formatted or easy-to-read source code. Even though all those things are more than often features of software developed that way, practicising an object oriented approach has far more fundamental differences, techically as well as conceptually. What I consider to be those differences is explained in more detail below.

Another related and still consistently misunderstood point of my critique was that I claimed Java to be more expressive than Processing. Expressiveness is not just the result of a statement, but also how it is communicated. I was purely arguing Java’s language constructs to be better suited to express complex abstract concepts by means of OOP. Of course Processing wins hands down when it comes to quickly producing sketchy prototypes, yet I wished Processing syntax would not so much focus on this “instant gratification” part. As teaching tool it should be able to grow with the user and “gently”, yet consistently introduce core concepts from the beginning, since often it’s easier to learn something than to unlearn it.

A programme is a step-by-step description of a process. However I am arguing we should not separate the act of encoding the step-by-step instructions from the actual act of decomposing the structure of the process in question. OO is not primarily concerned with syntax. It is all about reaching an optimal design solution as result of decomposition and abstraction of an idea. It itself is an iterative process and a more than useful “tool” to engage with bigger and more complex ideas in order to encode them as software. Aiming for literacy in this field will have (and has had for most) direct impact on the conceptual quality and complexity of work produced. If this is not the aim of teaching people programming then I don’t know what is. I sincerely wished Processing would have embraced this further and I still can’t see any why it shouldn’t be possible to marry an easy-to-use syntax with those more conceptual aspects of structure and means of expression.

So I still don’t really buy the arguments presented so far that OO thinking is too hard to grok for novices without any background in computing. Object thinking is all based on a certain perception and assumptions of the world. It does require certain skills to abstract and translate observations, but these are skills needed as much in other disciplines like design or philosophy (or art) and so have not much to do with requiring a Maths degree as prerequisite.

The world around us

A helpful, yet pretty simplistic view for the sake of argument below could be: We all live in the same world and to some extend share and agree on some aspects of this reality. One of them is that this reality is filled with a multitude of “objects”: Your notebook, pen, mobile, toothbrush, dog, boy/girlfriend, iPod, power plugs… In the same way we can consider more abstract things as objects too: the Internet, an mp3 file, ski trip, club night, video game, story, softness, theatre play… All those objects, physical or not, have something in common: each one of them can also just be considered as “idea” or “concept” and as such they all can be mentally isolated and treated on their own and yet they are somehow related to each other and anchored into reality (well, that’s the common assumption at least). The question’s is, what is it which ties each of these objects into reality.

We humans use our various languages to refer to and communicate ideas (concepts) with each other. To simplify that process of communication we slowly (over millennia) have developed symbols for frequently used concepts. Those symbols are called “words” and we’ve been conditioned to associate each one of them with a more or less stable meaning/concept since the day we were born (Behaviorist theory). But remember each of our words only is a way to refer to an idea or concept. Each concept itself “exists” on its own, regardless if there’s a word for it. Words form the basis for only that part of our description of the world which we all agree on, with an infinity of ideas (and their corresponding symbols) outside of it. By means of our own aquired private symbol collections and thought processes we mentally can construct any number of new ideas or concepts (with the restriction we can’t think of anything using symbols unknown [to us]).

In order to avoid ambiguity or to communicate concepts (incl.entirely new ones) to others, we have to use a set of known established symbols (words) and put them into the “right” sequence (syntax) to communicate and explain the new concept each other (I’ve put “right” in quotes here since in theory we’ve got quite a choice of languages to express ourselves in). That necessary expansion of symbols to statements means our languages are self referential. We make use of this feature to create semantic layers: Once a new idea is becoming popular enough a new symbol will be introduced by someone familiar with the concept to refer to it more directly. A side effect of the sheer existence of this new symbol/phrase is that it now hides level of detail of the original (longer) idea to its new users. (AJAX as a recent example). In many modes of conversation this is desired and sufficient. The new symbol provides a higher level of abstraction of the idea and at the same time encapsulates its deeper knowledge.

As general principle it can be said that in order to (re)gain this “hidden” knowledge we’ll have to inspect and engage with the underlying ideas, which again means nothing more than undergoing a potentially recursive learning process to recover the full extend of the bigger idea - or in Newspeak reverse engineering. This is true for your own ideas as much as for external ones. As a sidetrack: This also is a strong argument for Open Source when considering code as extension to language.

Object anatomy

By all means I’m not proposing this to be a correct theory of language, but taking this simplified theory as starting point we can see object orientation as idea is not as alien to most of us as it may seem. If we treat objects as ideas we can come to the following conclusions:

  • objects can be analyzed in isolation and are based on a number of properties (sub ideas) which are “hidden” by default. This is called encapsulation.
  • objects are nested (a novel is a specialized idea of a story). This is called inheritance.
  • nesting causes objects to have manifold appearances based on current context (my wife is my friend but also is a female, a mother, daughter, is human etc.) This is called polymorphism.
  • some objects (remember: as ideas) are used as prototypes/interface: for example “female” is a specialization of gender, which ultimately can be reduced to the idea of “binary” or opposition. Those special types of objects are also called interfaces and are employed on many levels across languages/cultures/contexts: ying-yang, on-off, black&white, male-female, plugs and sockets (to reference an example from the initial list of objects above) etc.
    Okay, some of those might be a bit contrived, but I hope you get my point…

Since this is no tutorial about OOP I won’t go into much technical detail here, but for some reason more than often discussion about OOP quickly locks in on the topic of inheritance. It’s true it’s one of the pillars of OOP yet IMHO a more suitable way of introducing object thinking to newcomers is by focussing on encapsulation, polymorphism and the interface metaphor since their basics can all be explained without deep understanding of the inner workings of inheritance.

To be continued…

020200 - analog digital design

I can’t say it loud enough

Ishkur

Simply on of the best Websites in the world.
Ishkurs Guide to Electronic Music.

thinking on digital tools

I can’t say it loud enough

Ishkur

Simply one of the best Websites in the Internet.
Ishkurs Guide to Electronic Music.

020200 - analog digital design

Why commercial blogs suck

I just wanted to read a comment.

It is easy to setup an own blog. Get some mySql/php webspace. It is cheap this days. Set up WordPress or Nucleus and start blogging.

thinking on digital tools

Why commercial blogs suck

Just wanted to read a comment!

I just wanted to read a comment.

It is easy to setup an own blog. Get some mySql/php Webspace. It is cheap this days. Set up WordPress or Nucleus and start blogging.

blog.blprnt.com - Processing

reflektions.miniml


If you’re looking for a place to find some useful chunks of ActionScript, complete with full code and examples, you probably should keep an eye on Paul Orchanian’s blog, reflektions.miniml. He’s got some good samples over there for tricky things, including a lot of 3d code.

It takes a lot of effort to keep a blog like this regularly updated, and I can tell you from my experience that the authors are usually only doing it for the reward of helping people out. Paul is a great guy - I had the pleasure of meeting him at FITC in Toronto last year and in 2004. So head on over and check it out.

v3ga

OGLE

googleEarthRipped

OGLE (i.e. OpenGLExtractor) is a software package by Eyebeam R&D that allows for the capture and re-use of 3D geometry data from 3D graphics applications running on Microsoft Windows. It works by observing the data flowing between 3D applications and the system’s OpenGL library, and recording that data in a standard 3D file format. In other words, a ’screen grab’ or ‘view source’ operation for 3D data.

This is just so amazing. I quickly installed it (it needs GLIntercept to work) and was able to grab 3D models. A must see.

Via Downloadsquad.

v3ga

OGLE

googleEarthRipped

OGLE (i.e. OpenGLExtractor) is a software package by Eyebeam R&D that allows for the capture and re-use of 3D geometry data from 3D graphics applications running on Microsoft Windows. It works by observing the data flowing between 3D applications and the system’s OpenGL library, and recording that data in a standard 3D file format. In other words, a ’screen grab’ or ‘view source’ operation for 3D data.

This is just so amazing. I quickly installed it (it needs GLIntercept to work) and was able to grab 3D models. A must see.

Via Downloadsquad.

Daniel

Week 2 is upon us

nature of code
week 2 tutorial — Vectors

Week two of the nature of code tutorials is up. I guess I don’t really need to post announcements here each time a new tutorial goes up, but at least it gives the appearance that I’m keeping this blog (oh dear, I have a blog, how embarrasing) up-to-date. . .

Oh, and for that matter, a new tutorial about regular expressions in Java for the Programming from A to Z class is available too. Let the world of regular expression masters slowly pick it apart for all its inadequacies. . .