<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?>

<feed xmlns="http://purl.org/atom/ns#" version="0.3" xml:lang="en-GB">
<link href="https://www.blogger.com/atom/6064652" rel="service.post" title="toxi.in.process" type="application/atom+xml"/>
<link href="https://www.blogger.com/atom/6064652" rel="service.feed" title="toxi.in.process" type="application/atom+xml"/>
<title mode="escaped" type="text/html">toxi.in.process</title>
<tagline mode="escaped" type="text/html"></tagline>
<link href="http://www.toxi.co.uk/blog/" rel="alternate" title="toxi.in.process" type="text/html"/>
<id>tag:blogger.com,1999:blog-6064652</id>
<modified>2006-04-21T15:26:40Z</modified>
<generator url="http://www.blogger.com/" version="6.72">Blogger</generator>
<info mode="xml" type="text/html">
<div xmlns="http://www.w3.org/1999/xhtml">This is an Atom formatted XML site feed. It is intended to be viewed in a Newsreader or syndicated to another site. Please visit the <a href="http://help.blogger.com/bin/answer.py?answer=697">Blogger Help</a> for more info.</div>
</info>
<convertLineBreaks xmlns="http://www.blogger.com/atom/ns#">true</convertLineBreaks>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/6064652/114563273476482674" rel="service.edit" title="Quality data for visualizationists" type="application/atom+xml"/>
<author>
<name>toxi</name>
</author>
<issued>2006-04-21T13:58:00+01:00</issued>
<modified>2006-04-21T15:26:40Z</modified>
<created>2006-04-21T15:18:54Z</created>
<link href="http://www.toxi.co.uk/blog/2006/04/quality-data-for-visualizationists.htm" rel="alternate" title="Quality data for visualizationists" type="text/html"/>
<id>tag:blogger.com,1999:blog-6064652.post-114563273476482674</id>
<title mode="escaped" type="text/html">Quality data for visualizationists</title>
<content type="application/xhtml+xml" xml:base="http://www.toxi.co.uk/blog/" xml:space="preserve">
<div xmlns="http://www.w3.org/1999/xhtml">Quite a few Processing users (incl. myself) are <a href="http://benfry.com">working</a> <a href="http://www.bewitched.com/">professionally</a> and/or <a href="http://www.tom-carden.co.uk/p5/tube_map_travel_times/applet/">experimentally</a> with (data) <a href="http://www.visualcomplexity.com/vc/">visualizations</a>. Interesting and good works in this field are not just down to ingenuity of their authors but also largely dependent on quality data sources. Often those can be quite hard to come by, especially if you're reliant on free data sources. The creation and preparation of your own data can turn into a big stumbling stone since you are suddenly confronted with major technical issues about retrieval, parsing, storage, transformation, putting bits of data into relationships etc. No wonder a lot of amateur experiments are based around the readily available data as, for example, provided by <a href="http://flickr.com/services/api/">Flickr</a>, <a href="http://technorati.com/developers/api/">Technorati</a> or <a href="http://del.icio.us/help/api/">del.icio.us</a>.<br/>
<br/>As the blogging and Open Source movement has shown, innovation in any domain can and does happen bottom-up and amateurs play a major role in that. As <a href="http://paulgraham.com/opensource.html">Paul Graham writes</a>:<blockquote>There's a name for people who work for the love of it: amateurs. The word now has such bad connotations that we forget its etymology, though it's staring us in the face. "Amateur" was originally rather a complimentary word. But the thing to be in the twentieth century was professional, which amateurs, by definition, are not.<br/>
<br/>That's why the business world was so surprised by one lesson from open source: that people working for love often surpass those working for money.</blockquote>Related anectode about amateur hardship: When working on <a href="http://toxi.co.uk/base26/">base26</a> two years ago, I've spent about 5 long nights going page by page through the Oxford Dictionary manually filtering four-letter words and noting down their usage types, all for lack of an electronic version with this information.<br/>
<br/>On a large scale, good quality Open data is still generally rare, but steadily growing across various domains. The success of XML based standard data formats like RSS has been playing another important role on the road to liberated and readily usable data, yet the inherent problem with these formats is their lack of (direct) support for multi-dimensional and multi-directional data relationships.<br/>
<br/>So with these (amongst many other things) in mind, today reasearchers at Austrian company <a href="http://systemone.at">System One</a> have <a href="http://lists.w3.org/Archives/Public/semantic-web/2006Apr/0149">announced</a> the release of a snapshot of the entire English version of Wikipedia, converted into common flavours of <a href="http://rdfabout.com">RDF</a> (RDF/XML, Ntriples and Turtle) and licensed as <a href="http://www.gnu.org/copyleft/fdl.html">GFDL</a>. <a href="http://labs.systemone.at/wikipedia3">Wikipedia<sup>3</sup>
</a>, a monthly updated dataset currently counts in at approx. 47 Million triples (metadata statements about wikipedia articles) and that so far only includes the combined structural information of each article, like internal link and category relationships. A separate dataset containing the actual annotated articles is planned as is support for inter-wiki relationships and a <a href="http://sparql.org/">SPARQL</a> interface for processing remote queries. <br/>
<br/>This is a pretty amazing endeavour and hopefully will provide enough incentive for people to pick up and learn to use RDF technologies as flexible and powerful tool also for infoviz purposes.<br/>
<br/>
<div class="tag_list">Tags: <a href="http://technorati.com/tag/visualization" rel="tag">visualization</a> <a href="http://technorati.com/tag/rdf" rel="tag">rdf</a> <a href="http://technorati.com/tag/opendata" rel="tag">opendata</a> <a href="http://technorati.com/tag/wikipedia" rel="tag">wikipedia</a> <a href="http://technorati.com/tag/xml" rel="tag">XML</a> <a href="http://technorati.com/tag/semweb" rel="tag">semweb</a>
</div>
</div>
</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/6064652/114067039767549812" rel="service.edit" title="Soundtoys relaunch" type="application/atom+xml"/>
<author>
<name>toxi</name>
</author>
<issued>2006-02-23T04:24:00+00:00</issued>
<modified>2006-02-23T18:38:20Z</modified>
<created>2006-02-23T04:53:17Z</created>
<link href="http://www.toxi.co.uk/blog/2006/02/soundtoys-relaunch.htm" rel="alternate" title="Soundtoys relaunch" type="text/html"/>
<id>tag:blogger.com,1999:blog-6064652.post-114067039767549812</id>
<title mode="escaped" type="text/html">Soundtoys relaunch</title>
<content mode="escaped" type="text/html" xml:base="http://www.toxi.co.uk/blog/" xml:space="preserve">Another post, another (re)launch... ;)&lt;br /&gt;&lt;br /&gt;With a strange feeling of positive disbelief I'm happy to finally reveal now some of the fruits of one of my most intense labours (of love nonetheless) of the past couple of years: Yesterday &lt;a href="http://stanza.co.uk"&gt;Stanza&lt;/a&gt; officially re-launched the &lt;a href="http://soundtoys.net"&gt;Soundtoys&lt;/a&gt; website which has undergone a complete rebuilt during nightshifts and the wee morning hours over the past 10 months and now hopefully is more present-and-future-proof than any previous iteration. So firstly major thanks to Stanza and Gill (for patience, trust and making it all happen in the first place) and &lt;a href="http://watershed.co.uk"&gt;all&lt;/a&gt; &lt;a href="http://soundtoys.net/artists/neil-jenkins"&gt;other&lt;/a&gt; &lt;a href="http://soundtoys.net/artists/adam-hoyle-with-julian"&gt;people&lt;/a&gt; &lt;a href="http://soundtoys.net/artists/philip-odwyer"&gt;involved&lt;/a&gt;...&lt;br /&gt;&lt;br /&gt;The brief for the new site was simple enough: Provide a mechanism for commissioned artists to produce alternative ways to navigate, browse and experience the site, which is more suitable and closer to the heart and essence of the Soundtoys collection, yet open to be extended. This was early February of last year. I was starting to really enjoy my High induced by having used &lt;a href="http://del.icio.us"&gt;del.icio.us&lt;/a&gt; for almost half year and having just spent a few months researching and &lt;a href="http://foafgen.net"&gt;hacking&lt;/a&gt; on some &lt;a href="http://en.wikipedia.org/wiki/Semantic_Web"&gt;Semantic Web&lt;/a&gt; related tech. There it was, the chance to work with a unique database of content waiting to be re-utilized. Wild ideas were spinning around my head: Social networks of artists, visualization ideas, interfaces becoming audio visual pieces of art themselves, browsing the current approx. 300 artworks conceptual, or by platform, location, media type, shifting contexts, clean URIs, RSS feeds, tagging, content aggregation &amp; syndication - the full Web2.005 monty!&lt;br /&gt;&lt;br /&gt;However, in order to provide maximum flexibility for extending the database in future, a lot of thought went into the structural planning of the new site. My original plan was to employ a &lt;a href="http://rdfabout.net"&gt;RDF&lt;/a&gt; storage instead of a classic relational database. RDF keeps on getting a lot of bad mouthing from various people, yet after having followed the discussion for the past 2 years I am more and more feeling comfortable in thinking its simplicity and &lt;a href="http://www.xml.com/pub/a/2005/11/16/introducing-sparql-querying-semantic-web-tutorial.html"&gt;benefits&lt;/a&gt; are widely misunderstood outside the RDF &lt;a href="http://dannyayers.com"&gt;fan&lt;/a&gt; &lt;a href="http://planetrdf.com"&gt;club&lt;/a&gt;, IMHO wrongly so. RDF is encoding knowledge (data relationships) rather than pure (hierarchical/tree) data as XML does. Yet, like any other technology, in order to successfully work with RDF and flesh out an initial "design" for a data store one also requires a set of swiss-army-knife-like tools and frame of mind, none of which I had quite available when I embarked on this project. On top of that there still is a substantially bigger amount of such &lt;a href="http://en.wikipedia.org/wiki/XSLT"&gt;tools&lt;/a&gt; available for working with XML (plus the format is socially more acceptable, at least amongst non-techie artists). So I soon felt the immediate benefits outweigh RDF's superior longterm flexibility and decided to go with a standard PHP5+MySQL approach using &lt;a href="http://toxi.co.uk/emitter/"&gt;my own framework&lt;/a&gt; and XML as pivot point of the entire site by exposing the majority of the database via an XML API, &lt;a href="http://soundtoys.net/contribute/api"&gt;documented here&lt;/a&gt;. (One year on the situation might already have &lt;a href="http://www.appmosphere.com/pages/en-arc_rdf_store"&gt;looked different&lt;/a&gt;)...&lt;br /&gt;&lt;br /&gt;Almost all pages on the new site are created by transforming the API data via XSLT into various target formats (currently only XHTML, JavaScript and &lt;a href="http://atomenabled.org"&gt;Atom&lt;/a&gt; for feeds). Every artist, every soundtoy, news item, journal entry or tag has its own unique and easy to remember URI which is mapped to its respective record(s) in the database:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://soundtoys.net/api/artists/toxi"&gt;soundtoys.net/api/artists/toxi&lt;/a&gt; (API) &amp;raquo; &lt;a href="http://soundtoys.net/artists/toxi"&gt;soundtoys.net/artists/toxi&lt;/a&gt; (XHTML) &amp;raquo; &lt;a href="http://soundtoys.net/feeds/artists/toxi.xml"&gt;soundtoys.net/feeds/artists/toxi&lt;/a&gt; (Atom)&lt;br /&gt;&lt;br /&gt;This API is now open for everyone to use and we encourage you to play around with the available data. If you have special requests for certain types of data you want adding we'll try to accomodate those too (provided it's justified, manageable and not too labour intense). Stanza is even &lt;a href="http://soundtoys.net/news/soundtoys-commissions-now-available"&gt;offering hard ca$h for two upcoming commissions&lt;/a&gt;, so hurry to get your proposals in pronto! :)&lt;br /&gt;&lt;br /&gt;Ever since I started using &lt;a href="http://del.icio.us/toxi"&gt;del.icio.us&lt;/a&gt; I've also been addicted to data feeds to at least make an attempt (and give me the illusion) of staying on top of interesting things/sites and people (and their interests), the logical progression to subscribing to endless email newsletters. I think it's still safe to say we all collectively haven't fully understood the potential and use case scenarios of data feeds, but it sure had to be a feature of the new Soundtoys site too (and as that not just for copy-cat purposes!). So currently you can subscribe to all news and artists, with tags and web links coming soon. You can even subscribe to the entire artist section via the blogroll (OPML formatted) of &lt;a href="http://soundtoys.net/feeds/artists/"&gt;all available artist feeds&lt;/a&gt;, careful though, there're quite a few (260+)!&lt;br /&gt;&lt;br /&gt;Speaking of &lt;a href="http://soundtoys.net/tags/"&gt;tags&lt;/a&gt;, these have become the other main improvement and are used as driving force to re-arrange the collection thematically as well as being the required machanism to browse context sensitive or allow us to add new bits of metadata to content in future (e.g. adding geo or exhibition tags). FWIW tags on Soundtoys are NOT a &lt;a href="http://en.wikipedia.org/wiki/folksonomy"&gt;wide folksonomy&lt;/a&gt; (just like on Flickr, only the author can set them [so far]). However, tags can be combined in different ways to narrow or broaden the current context (explained on site).&lt;br /&gt;&lt;br /&gt;Altogether it was a fantastic project to learn a vast amount of new skills, technologies, metaphors and standards, some of which have directly to do with my previous posts about code re-use and which I'm still continuing to expound on (more quietly this time ;) in the background...&lt;br /&gt;&lt;br /&gt;Enjoy the show!&lt;br /&gt;&lt;br /&gt;&lt;div class="tag_list"&gt;Tags: &lt;a href="http://technorati.com/tag/soundtoys" rel="tag"&gt;soundtoys&lt;/a&gt; &lt;a href="http://technorati.com/tag/tagging" rel="tag"&gt;tagging&lt;/a&gt; &lt;a href="http://technorati.com/tag/api" rel="tag"&gt;API&lt;/a&gt; &lt;a href="http://technorati.com/tag/rest" rel="tag"&gt;rest&lt;/a&gt; &lt;a href="http://technorati.com/tag/xml" rel="tag"&gt;XML&lt;/a&gt; &lt;a href="http://technorati.com/tag/xslt" rel="tag"&gt;XSLT&lt;/a&gt; &lt;a href="http://technorati.com/tag/rdf" rel="tag"&gt;RDF&lt;/a&gt; &lt;a href="http://technorati.com/tag/art" rel="tag"&gt;art&lt;/a&gt;&lt;/div&gt;</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/6064652/113898114641270879" rel="service.edit" title="Processinghacks.com launched" type="application/atom+xml"/>
<author>
<name>toxi</name>
</author>
<issued>2006-02-03T15:34:00+00:00</issued>
<modified>2006-02-03T15:39:06Z</modified>
<created>2006-02-03T15:39:06Z</created>
<link href="http://www.toxi.co.uk/blog/2006/02/processinghackscom-launched.htm" rel="alternate" title="Processinghacks.com launched" type="text/html"/>
<id>tag:blogger.com,1999:blog-6064652.post-113898114641270879</id>
<title mode="escaped" type="text/html">Processinghacks.com launched</title>
<content type="application/xhtml+xml" xml:base="http://www.toxi.co.uk/blog/" xml:space="preserve">
<div xmlns="http://www.w3.org/1999/xhtml">Based on yet another superb idea by <a href="http://www.tom-carden.co.uk/">Mr. Tom Carden</a>, we launched a new community site/wiki into the Processing universe today:<br/> <br/>
<a href="http://processinghacks.com">processinghacks.com</a>
<br/> <br/>We're still in the process of collecting, adding, updating and heavily editing articles, but hoping to turn this wiki - with your help - into something worthwhile, stable and useful, above all! The wiki itself is a customized and extended version of the great DokuWiki platform with added features especially for Processing (syntax colouring, link types, applet support (coming real soon) etc.)<br/> <br/>This is just a quick heads up before the weekend starts, everything is much better explained on the site...<br/>
<br/>
<div class="tag_list">Tags: <a href="http://technorati.com/tag/processing.org" rel="tag">processing.org</a> <a href="http://technorati.com/tag/processinghacks.com" rel="tag">processinghacks.com</a> <a href="http://technorati.com/tag/programming" rel="tag">programming</a> <a href="http://technorati.com/tag/dokuwiki" rel="tag">dokuwiki</a>
</div>
</div>
</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/6064652/113837398922864274" rel="service.edit" title="Importance of design" type="application/atom+xml"/>
<author>
<name>toxi</name>
</author>
<issued>2006-01-27T14:53:00+00:00</issued>
<modified>2006-01-27T15:59:31Z</modified>
<created>2006-01-27T14:59:49Z</created>
<link href="http://www.toxi.co.uk/blog/2006/01/importance-of-design.htm" rel="alternate" title="Importance of design" type="text/html"/>
<id>tag:blogger.com,1999:blog-6064652.post-113837398922864274</id>
<title mode="escaped" type="text/html">Importance of design</title>
<content mode="escaped" type="text/html" xml:base="http://www.toxi.co.uk/blog/" xml:space="preserve">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!&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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 "&lt;a href="http://www.generatorx.no/20060121/processing-or-die/"&gt;instant gratification&lt;/a&gt;" part. As teaching tool it should be able to grow with the user and "gently", &lt;em&gt;yet consistently&lt;/em&gt; introduce core concepts from the beginning, since often it's easier to learn something than to unlearn it.&lt;br /&gt;&lt;br /&gt;A programme is a step-by-step description of a process. However I am arguing we should &lt;strong&gt;not&lt;/strong&gt; 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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;The world around us&lt;/h3&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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 (&lt;a href="http://en.wikipedia.org/wiki/Philosophy_of_language#Mind_and_language"&gt;Behaviorist theory&lt;/a&gt;). 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]).&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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 &lt;a href="http://en.wikipedia.org/wiki/Newspeak"&gt;Newspeak&lt;/a&gt; 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.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Object anatomy&lt;/h3&gt;&lt;br /&gt;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:&lt;ul&gt;&lt;li&gt;objects can be analyzed in isolation and are based on a number of properties (sub ideas) which are "hidden" by default. This is called &lt;strong&gt;encapsulation&lt;/strong&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;objects are nested (a novel is a specialized idea of a story). This is called &lt;strong&gt;inheritance&lt;/strong&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;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 &lt;strong&gt;polymorphism&lt;/strong&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;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 &lt;strong&gt;interfaces&lt;/strong&gt; and are employed on many levels across languages/cultures/contexts: ying-yang, on-off, black&amp;white, male-female, plugs and sockets (to reference an example from the initial list of objects above) etc.&lt;br /&gt;&lt;sub&gt;Okay, some of those might be a bit contrived, but I hope you get my point...&lt;/sub&gt;&lt;/li&gt;&lt;/ul&gt;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.&lt;br /&gt;&lt;br /&gt;To be continued...&lt;br /&gt;&lt;br /&gt;&lt;div class="tag_list"&gt;Tags: &lt;a href="http://technorati.com/tag/processing.org" rel="tag"&gt;processing.org&lt;/a&gt; &lt;a href="http://technorati.com/tag/programming" rel="tag"&gt;programming&lt;/a&gt; &lt;a href="http://technorati.com/tag/art" rel="tag"&gt;art&lt;/a&gt;  &lt;a href="http://technorati.com/tag/oop" rel="tag"&gt;oop&lt;/a&gt; &lt;a href="http://technorati.com/tag/language" rel="tag"&gt;language&lt;/a&gt;&lt;/div&gt;</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/6064652/113776202159448781" rel="service.edit" title="Dissecting the discourse" type="application/atom+xml"/>
<author>
<name>toxi</name>
</author>
<issued>2006-01-20T12:31:00+00:00</issued>
<modified>2006-01-20T14:21:44Z</modified>
<created>2006-01-20T13:00:21Z</created>
<link href="http://www.toxi.co.uk/blog/2006/01/dissecting-discourse.htm" rel="alternate" title="Dissecting the discourse" type="text/html"/>
<id>tag:blogger.com,1999:blog-6064652.post-113776202159448781</id>
<title mode="escaped" type="text/html">Dissecting the discourse</title>
<content type="application/xhtml+xml" xml:base="http://www.toxi.co.uk/blog/" xml:space="preserve">
<div xmlns="http://www.w3.org/1999/xhtml">As a follow up to yesterday's stormy discussions on the <a href="http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Collaboration;action=display;num=1137655161">Processing discourse</a>, I have to say I've been quite perplexed by the impact of my <a href="http://toxi.co.uk/blog/2006/01/note-this-article-is-using.htm">last post</a> and the intensity of the discussion started. It's true I got things mushed up got carried away with some of my subjective views, yet I think Processing can't be talked about merely as tool. We all know that and I take it the resulting intensity is a sign we all feel Processing has become a very important part of our (at least) creative lives...<br/>
<br/>The 2 main points of criticism of my raised issues were:<br/>
<blockquote>
<p>"I also think it encouraged a slightly superficial view of computational design by quickly gaining cult status amongst people never been exposed to programming before. I think it's dangerous and a sign of crisis if every recycled L-System, Neural Network, Wolfram automata or webcam tracking experiment automatically is considered art (by their authors), simply because it's been "(Re)Built with Processing"..."</p>
</blockquote>
<br/>For some reason (Sorry, I can't quite isolate it) this has been interpreted as me preaching elitism or belittling beginners which is <strong>absolutely not</strong> the case. As I mentioned previously, my entire knowledge of programming is based on years of playful (often seemingly meaningless) experimentation. The above statement was more concerned with some of the emerging ego issues amongst the userbase. I think I also finally realised (not for the 1st time) that my concept of an artist is strangely incompatible with that of most others and my remarks where caused by this.<br/>
<br/>FWIW I consider an artist to be a seeker of knowledge, understanding, a master of craft and resulting insights into the very nature of what we call the universe. This is a process which doesn't require nor has it place for bullshit. Life's too short for such things and I can't grasp why people do it instead of trying harder and raising their own standards a little. My mummy told me, be quiet if you don't have something useful to say.<br/>
<br/>Maybe I should have taken this partial advice yesterday, yet I think the gist of my argument is valid somewhat, but should have been expressed differently. Don't be hurt!<br/>
<blockquote>
<p>"In terms of pure expressiveness of ideas, concepts and thought processes as code, Processing is inferior to straight Java or dynamically typed languages like JavaScript or Ruby."</p>
</blockquote>
<br/>Now this really was a tricky one and definitely should have been expounded by me a bit deeper. What constitutes Java is not just its overblown and almost uncomprehensible standard library, it also is just a language with very nice features. Try to consider them on their own, the statement above was referrig purely to that. The same goes for the other two languages mentioned. I know exactly where most of you were coming from with your criticism of this above statement: Getting simple things done in straight Java can be cumbersome. On the other hand the language has a handful of simple mechanisms to allow us to construct increasingly complex systems of code without having to constantly reinvent the wheel. My question to that was why does "Processing" not make use of those handy features? - and here it's not really the tool I am talking about but the way those things are totally excluded from the processing reference. If people (beginners) are never made aware that things exists how can they learn about it (Google doesn't count here!)? I also think the teachers amongst us should maybe give students a little bit more credit in grasping OOP concepts?<br/>
<br/>Another weird question, but it would be ++interesting to know: Has it maybe to do with the fact that most of you (teachers) have never been taught OOP/design patterns yourself?<br/>
<br/>A while ago I decided for myself that everything (code related) I do should be specialized and yet generic enough to be reusable in future projects, but alas I cannot do that fully with Processing in its current form.<br/>
<br/>Re: JavaScript and other dynamic languages. I think Ben's argument of saying he can't produce his work with JS is a slight paradox. If he would have chosen JS as base language for his project (with an underlying layer in C, e.g. by using <a href="http://www.mozilla.org/js/spidermonkey/">SpiderMonkey</a>) - he maybe would be able by now to do so. IMHO it's a little bit misconstrued, but I won't hit on it any further, since as he rightfully pointed out, there're much more important things to be solved at current.<br/>
<br/>Reason why I mentioned JS (and above all Ruby) as alternative was because those dynamically typed languages allow for very powerful coding idioms which one can only dream of in Java. But of course these again are very advanced topics and as such are only interesting to that part of our community. This was one of the mushed points of my last post.<br/>
<br/>Keeping on talking about object orientation just a bit longer, I find it very interesting <a href="http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Collaboration;action=display;num=1137655161#6">Casey mentioning MAX, PD and VVVV</a> as tools being almost purely targeted at the artist community. All of those tools are not dealing with text based programming, yet are deeply rooted in an object oriented approach. In fact their entire essence is based on an huge number of tiny encapsulated objects, fulfilling very specialized tasks and are loosely coupled. In order to create a "sketch" people choose them like building blocks and connect them via "wires" to create a directed process graph/execution flow.<br/>
<br/>So I think some take away points from that are:<br/>
<ul>
<li>Objects are not alien concepts to programming newbies - I think it's all down to teaching styles. The visual programming metaphor obviously helps beginners on those platforms more since with the textual approach of Processing the connecting wires are initially invisible and have to be mapped out and "stored" in the students mind.</li>
<br/>
<li>Secondly, the highly modular architecture of those systems has contributed to their incredible success (IIRC, MAX has been on the market for +15 years). Also because of their fine grained modules (which have to be written in C++, lo and behold...) beginners can start out writing just tiny atoms of code instead of thinking on library scale. Because those tools enforce by their nature all objects/patches to be encapsulated, every effort spent on writing those extra bits of code is well spent in the knowledge it can be easily reused, potentially in infinite ways. This behaviour is not the case with Processing.</li>
<br/>
</ul>
<br/>To back up some of the above, here're some search results for the word "object" for the various community websites:<br/>
<br/>
<a href="http://www.google.co.uk/search?q=object+site%3Apuredata.info">PureData</a> ~35200 results<br/>
<a href="http://www.google.co.uk/search?q=object+site%3Avvvv.meso.net">VVVV</a> ~2400<br/>
<a href="http://www.google.co.uk/search?q=object+site%3Aprocessing.org">Processing</a> 442 results<br/>
<br/>I couldn't find a decent start site for MAX, but there's <a href="http://www.maxobjects.com/">maxobjects.com</a> which is hosting roughly 2900 MAX/MSP objects of various complexity.<br/>
<br/>Do you get my drift?!<br/>
<br/>
<div class="tag_list">Tags: <span style="font-size: 70%;">
<a href="http://technorati.com/tag/processing.org" rel="tag">processing.org</a> <a href="http://technorati.com/tag/programming" rel="tag">programming</a> <a href="http://technorati.com/tag/art" rel="tag">art</a>  <a href="http://technorati.com/tag/flow" rel="tag">flow</a> <a href="http://technorati.com/tag/pd" rel="tag">pd</a> <a href="http://technorati.com/tag/vvvv" rel="tag">vvvv</a>
</span>
</div>
</div>
</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/6064652/113763821425995305" rel="service.edit" title="&amp;lt;/Procrastination&amp;gt;" type="application/atom+xml"/>
<author>
<name>toxi</name>
</author>
<issued>2006-01-19T02:24:00+00:00</issued>
<modified>2006-01-19T07:06:23Z</modified>
<created>2006-01-19T02:36:54Z</created>
<link href="http://www.toxi.co.uk/blog/2006/01/note-this-article-is-using.htm" rel="alternate" title="&amp;lt;/Procrastination&amp;gt;" type="text/html"/>
<id>tag:blogger.com,1999:blog-6064652.post-113763821425995305</id>
<title mode="escaped" type="text/html">&amp;lt;/Procrastination&amp;gt;</title>
<content type="application/xhtml+xml" xml:base="http://www.toxi.co.uk/blog/" xml:space="preserve">
<div xmlns="http://www.w3.org/1999/xhtml">Note: This article is using "computational art/design" as compound term also including "generative" approaches.<br/>
<br/>Code lies at the very heart of computational design, a discipline becoming increasingly popular as proven by the mushrooming number of blogs, books written, conferences and workshops held - all using "code" as their core concept and pivotal sales hook. Yet there's apparently little intelligent discussion taking place about Code (with capital C) which goes beyond the art theoretical/cultural mindset and touches more on its raw (dare I say "technical" side), discussion about its manifold structures, expressiveness, metaphors in generative systems...<br/>
<br/>Code is language. It can be used and articulated in infinite ways. Poets use language in different, often far more subtle and sophisticated ways compared to our average modes of conversation. Their mastery and/or unique approach to language is what makes them artists, even before theorists can utter the words "political" or "historical" as their main point of interest. I much rather subscribe to something like <a href="http://www.algorithmicaesthetics.org/page190.htm">Tolstoy's naturalistic description of art</a>.<br/>
<br/>So personally and especially in regards to computational art, I find myself repeatedly standing in direct conflict with the often voiced opinion that literacy in the digital medium is unobtainable or even undesirable.<br/>
<br/>Processing...<br/>
<br/>...is a real phenomenon. Heralded as the new "it" tool for computational artists, it actually doesn't directly embrace or promote any state-of-the-art software designs (i.e. code structures). It's true, Processing has been primarily developed as teaching tool and always had in mind a beginner target audience, yet I've been thinking for quite some time that it merely delays the learning curve and lures in an increasing number of users (or shall I say "ongoing generative artists"?) with its easy to learn (and teach!) syntax to get quick visual (mainly) bang-for-the-buck. There's no arguing about its potential as digital sketching tool and its suitability for short workshops.<br/>
<br/>Being focused on small code sketches/experiments and used by various respected artists the tool created an huge amount of interest fairly quickly. In retrospect (well, for me after almost 3 years) I also think it encouraged a slightly superficial view of computational design by quickly gaining cult status amongst people never been exposed to programming before. I think it's dangerous and a sign of crisis if every recycled L-System, Neural Network, Wolfram automata or webcam tracking experiment automatically is considered art (by their authors), simply because it's been "(Re)Built with Processing"... Of course this is in no way to attack the tool or its intent, but is my growing issue with the surrounding community ethos. We have blogs writing about data equals nature and math being the language of nature, yet there doesn't seem to be any deep understanding of the importance of clean code designs and intelligent data structures or even community interest in further researching and experimenting with those artistically.<br/>
<br/>
<pre>boolean isWrong = ( isExperimental != hasGoodDesign);</pre>
<br/>In fact from conversations with various fellow Processing users and lecturers I gather most are not aware of the total absence of decent software designs in the majority of the work produced with the tool so far. Due to the simplicity of its syntax, authoring environment and reference examples, the implicitly encouraged coding style is somewhere between procedural C programming (minus the pointer mess) and barely scratching the surface of object oriented designs.<br/>
<br/>In terms of pure expressiveness of ideas, concepts and thought processes as code, Processing is inferior to straight Java or dynamically typed languages like JavaScript or Ruby. Its ease of use has been gained by sacrifying scalability. Processing is based on convenience methods and it shows indirectly too. The Processing community at large has started to grow into one of consumers of previously written code.<br/>
<br/>On the other hand I believe artists (ongoing or not) working with "computational strategies" (can we please quit the marketing speak) must, or at least should, be aware of and work on intelligent software designs in order to advance the(ir) discipline. Form follows function.<br/>
<br/>In response to that I also believe it might hurt Processing as platform in future if experienced users will find themselves forced to breakout and leave the tool behind. To pre-empt this to happen, I think the community at large should pay more attention and spend time on extending the current library base. Above all, library authors should also respect the tremendous amount of work put in by Ben+Casey so far and too embrace the open source mentality of their core tool. The licenses are many (as well as much misunderstood, choose wisely!). That way existing library functionality can be further extended without having to reinvent the wheel (yet again!)...<br/>
<br/>An extensive library base for Processing will help the tool's longevity, even if users will slowly outgrow the initial proposal of the tool and only continue to use it library itself.<br/>
<br/>Open source is for doers. Happy, belated 2006! Glad I'm still alive...<br/>
<br/>
<div class="tag_list">Tags: <span style="font-size: 70%;">
<a href="http://technorati.com/tag/processing.org" rel="tag">processing.org</a> <a href="http://technorati.com/tag/generative" rel="tag">generative</a> <a href="http://technorati.com/tag/art" rel="tag">art</a> <a href="http://technorati.com/tag/opensource" rel="tag">opensource</a>
</span>
</div>
</div>
</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/6064652/113293997404072918" rel="service.edit" title="In all briefness - jEdit abbreviations for Processing" type="application/atom+xml"/>
<author>
<name>toxi</name>
</author>
<issued>2005-11-25T17:22:00+00:00</issued>
<modified>2005-11-28T12:17:39Z</modified>
<created>2005-11-25T17:32:54Z</created>
<link href="http://www.toxi.co.uk/blog/2005/11/in-all-briefness-jedit-abbreviations_25.htm" rel="alternate" title="In all briefness - jEdit abbreviations for Processing" type="text/html"/>
<id>tag:blogger.com,1999:blog-6064652.post-113293997404072918</id>
<title mode="escaped" type="text/html">In all briefness - jEdit abbreviations for Processing</title>
<content type="application/xhtml+xml" xml:base="http://www.toxi.co.uk/blog/" xml:space="preserve">
<div xmlns="http://www.w3.org/1999/xhtml">I'd originally posted a follow up about using jEdit as editor here half an hour ago, but then quickly had to remove it again, since Blogger had to be helpful(?), automatically "clean up" my tables and was totally breaking the layout.<br/>
<br/>So in all briefness, let me re-direct you to its <a href="http://toxi.co.uk/p5/jedit/">new home</a> for some serious editing goodness. You won't regret it... ;)<br/>
<br/>
<div class="tag_list">Tags: <span style="font-size: 70%;">
<a href="http://technorati.com/tag/jedit">jEdit</a> <a href="http://technorati.com/tag/processing.org">processing.org</a> <a href="http://technorati.com/tag/programming">programming</a> <a href="http://technorati.com/tag/util">util</a>
</span>
</div>
</div>
</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/6064652/112860277394764779" rel="service.edit" title="Growth in progress" type="application/atom+xml"/>
<author>
<name>toxi</name>
</author>
<issued>2005-10-06T13:18:00+01:00</issued>
<modified>2005-10-06T14:08:36Z</modified>
<created>2005-10-06T12:46:13Z</created>
<link href="http://www.toxi.co.uk/blog/2005/10/growth-in-progress.htm" rel="alternate" title="Growth in progress" type="text/html"/>
<id>tag:blogger.com,1999:blog-6064652.post-112860277394764779</id>
<title mode="escaped" type="text/html">Growth in progress</title>
<content mode="escaped" type="text/html" xml:base="http://www.toxi.co.uk/blog/" xml:space="preserve">Just a little follow-up to the &lt;a href="http://www.toxi.co.uk/blog/2005/09/two-small-helpers-for-doing.htm"&gt;previous post&lt;/a&gt;. I've put up some &lt;a href="http://flickr.com/photos/toxi/sets/1083688/"&gt;screen shots / wall papers&lt;/a&gt; of the Shockwave prototype of the aforementioned work project. For various reasons the real thing won't look anything like it, but I thought it might be quite interesting anyways:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://flickr.com/photos/toxi/sets/1083688/"&gt;&lt;img src="http://static.flickr.com/24/49921326_d7d6e54678.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The 3D meshes are created by building a simple (randomly generated) tree structure to define branch hierarchies. Upon rendering each branch is then assigned an individual attractor target and two sine waves to modulate its growth direction vector. Add some glossy texture, some fog and...&lt;br /&gt;&lt;br /&gt;Arrgh, how i hate deconstructing... ;)&lt;br /&gt;&lt;br /&gt;&lt;div class='tag_list'&gt;Tags: &lt;span style=font-size:70%;&gt;&lt;a href=http://technorati.com/tag/lingo rel=tag&gt;lingo&lt;/a&gt; &lt;a href=http://technorati.com/tag/shockwave rel=tag&gt;shockwave&lt;/a&gt; &lt;a href=http://technorati.com/tag/3d rel=tag&gt;3d&lt;/a&gt; &lt;a href=http://technorati.com/tag/generative rel=tag&gt;generative&lt;/a&gt; &lt;a href=http://technorati.com/tag/growth rel=tag&gt;growth&lt;/a&gt; &lt;a href=http://technorati.com/tag/tree rel=tag&gt;tree&lt;/a&gt; &lt;a href=http://technorati.com/tag/random rel=tag&gt;random&lt;/a&gt; &lt;/span&gt;&lt;/div&gt;</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/6064652/112808755064853204" rel="service.edit" title="Two small helpers for doing multiscreen 3D" type="application/atom+xml"/>
<author>
<name>toxi</name>
</author>
<issued>2005-09-30T14:09:00+01:00</issued>
<modified>2005-09-30T13:39:10Z</modified>
<created>2005-09-30T13:39:10Z</created>
<link href="http://www.toxi.co.uk/blog/2005/09/two-small-helpers-for-doing.htm" rel="alternate" title="Two small helpers for doing multiscreen 3D" type="text/html"/>
<id>tag:blogger.com,1999:blog-6064652.post-112808755064853204</id>
<title mode="escaped" type="text/html">Two small helpers for doing multiscreen 3D</title>
<content mode="escaped" type="text/html" xml:base="http://www.toxi.co.uk/blog/" xml:space="preserve">My current work project involves displaying a panoramic 3D scenery "seamlessly" across a multi-screen/multi-machine setup. The system needs to support a flexible number of viewports and screen dimensions, so each client will have to be coded with a flexible view frustum in mind: Say, if there're 6 machines used, each box will have to render 60 degrees of the panorama...&lt;br /&gt;&lt;br /&gt;Now the issue at hand is that Processing, Shockwave3D and many other 3D engines based on OpenGL usually specify their view angle (FOV) in the vertical direction, not horizontally (as I always assumed since it's far more natural). That's not very helpful in my situation above as I need to figure out the horizontal orientation of each machine's camera/viewport:&lt;br /&gt;&lt;br /&gt;Machine #1 camera rotation @ 30 (renders 0-60 degrees)&lt;br /&gt;Machine #2 camera rotation @ 90 (renders 60-120 degrees)&lt;br /&gt;etc.&lt;br /&gt;&lt;br /&gt;Since most displays are not squared, but rectangular, the horizontal FOV will be larger than the vertical, but exactly how much? Of course there're ways to easily compute this horizontal angle, only googling for a solution did take me quite a while  - and of course I found it where I'd thought I would - on &lt;a href="http://astronomy.swin.edu.au/~pbourke/raytracing/aperture/"&gt;Paul Bourke's site&lt;/a&gt; (incidentally, one of my favourite websites)&lt;br /&gt;&lt;br /&gt;So here's a tiny code snippet to convert FOV bothways, in case you'll ever run into similar situations:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;/**&lt;br /&gt; * computes horizontal FOV from window size and vertical FOV&lt;br /&gt; * @param   fov   vertical FOV (in degrees)&lt;br /&gt; * @return        horizontal FOV (in degrees)&lt;br /&gt; */&lt;br /&gt;float apertureV2H(float fovV) {&lt;br /&gt;  fovV=radians(fovV);&lt;br /&gt;  return degrees(2*atan(width*tan(fovV/2)/height));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * computes vertical FOV from window size and horizontal FOV&lt;br /&gt; * @param   fov   horizontal FOV (in degrees)&lt;br /&gt; * @return        vertical FOV (in degrees)&lt;br /&gt; */&lt;br /&gt;float apertureH2V(float fovH) {&lt;br /&gt;  fovH=radians(fovH);&lt;br /&gt;  return degrees(2*atan(height*tan(fovH/2)/width));&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class='tag_list'&gt;Tags: &lt;span style=font-size:70%;&gt;&lt;a href=http://technorati.com/tag/3d rel=tag&gt;3d&lt;/a&gt; &lt;a href=http://technorati.com/tag/fov rel=tag&gt;fov&lt;/a&gt; &lt;a href=http://technorati.com/tag/programming rel=tag&gt;programming&lt;/a&gt; &lt;a href=http://technorati.com/tag/math rel=tag&gt;math&lt;/a&gt; &lt;a href=http://technorati.com/tag/processing.org rel=tag&gt;processing.org&lt;/a&gt; &lt;a href=http://technorati.com/tag/panorama rel=tag&gt;panorama&lt;/a&gt; &lt;a href=http://technorati.com/tag/opengl rel=tag&gt;opengl&lt;/a&gt; &lt;/span&gt;&lt;/div&gt;</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/6064652/112775965282354744" rel="service.edit" title="1st Ave Machine" type="application/atom+xml"/>
<author>
<name>toxi</name>
</author>
<issued>2005-09-26T19:34:00+01:00</issued>
<modified>2005-09-26T18:40:38Z</modified>
<created>2005-09-26T18:34:12Z</created>
<link href="http://www.toxi.co.uk/blog/2005/09/1st-ave-machine_26.htm" rel="alternate" title="1st Ave Machine" type="text/html"/>
<id>tag:blogger.com,1999:blog-6064652.post-112775965282354744</id>
<title mode="escaped" type="text/html">1st Ave Machine</title>
<content type="application/xhtml+xml" xml:base="http://www.toxi.co.uk/blog/" xml:space="preserve">
<div xmlns="http://www.w3.org/1999/xhtml">Usually I don't do link blogging, but there're exceptions to every rule.<br/>
<br/>
<a href="http://1stavemachine.com">1st Ave Machine</a> is a CG animation/postproduction house in NYC, doing some very slick projects mixing (semi)generative 3d and real world footage to blur the line between "what we perceive as real and impossible". Mutated botanics, weird worm-like creatures, glossy urchins, near perfect light matching, shaky cam, added film grain - the works. It's a model citizen of <a href="http://en.wikipedia.org/wiki/Uncanny_Valley">Uncanny Valley</a>. A very inspiring one, I think...<br/>
<br/>Now if only that'd be interactive, some of the creatures would make some cute <a href="http://www.rspca.org.uk/cyberpet">cyber pets</a> ;)</div>
</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/6064652/112505775997770031" rel="service.edit" title="Using JEdit as external code editor for Processing" type="application/atom+xml"/>
<author>
<name>toxi</name>
</author>
<issued>2005-08-26T12:59:00+01:00</issued>
<modified>2005-08-26T12:11:19Z</modified>
<created>2005-08-26T12:02:39Z</created>
<link href="http://www.toxi.co.uk/blog/2005/08/using-jedit-as-external-code-editor.htm" rel="alternate" title="Using JEdit as external code editor for Processing" type="text/html"/>
<id>tag:blogger.com,1999:blog-6064652.post-112505775997770031</id>
<title mode="escaped" type="text/html">Using JEdit as external code editor for Processing</title>
<content mode="escaped" type="text/html" xml:base="http://www.toxi.co.uk/blog/" xml:space="preserve">As you might know, the Processing IDE (to a large part) is based on the open source &lt;a href="http://jedit.org/"&gt;JEdit&lt;/a&gt; editor. Having grown fond of this powerful and customizable editor, I've been using it for most of my XML and programming tasks over the years, whenever &lt;a href="http://eclipse.org/"&gt;Eclipse&lt;/a&gt; is a too big a gun to fire up. JEdit only becomes "truly" efficient via its many plugins available, but it also rocks in ease of customization.&lt;br /&gt;&lt;br /&gt;Due to my new job I've become a semi-Mac user again (at least to 50%) and haven't got around installing much software yet. So using the existing definition for Java and some handy Regular Expressions I quickly converted the list of processing keywords (located in the file /lib/keywords.txt inside the Processing root folder) into a JEdit &lt;a href="http://toxi.co.uk/p5/jedit/processing.xml"&gt;edit mode XML definition for PDE source files&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Brief note for installation:&lt;br /&gt;&lt;br /&gt;1) put this file into the /modes directory inside the JEdit root folder&lt;br /&gt;2) copy &amp; paste the following XML node into the file "catalog" inside the same folder&lt;br /&gt;&lt;br /&gt;&lt;tt&gt;&amp;lt;MODE NAME="processing" FILE="processing.xml" FILE_NAME_GLOB="*.pde" /&amp;gt;&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;Syntax colouring/checking for PDE files should now be ready. Please do let me know any errors/suggestions. Maybe it'd be handy to include method names and constants of some common P5 libraries too?&lt;br /&gt;&lt;br /&gt;Btw. If you're interested the JEdit RegExp used for turning the plaintext list into XML are here:&lt;br /&gt;&lt;br /&gt;search pattern: &lt;tt&gt;^(\w+)\t(\w+).*$&lt;/tt&gt;&lt;br /&gt;replace pattern: &lt;tt&gt;&amp;lt;$2&amp;gt;$1&amp;lt;/$2&amp;gt;&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class='tag_list'&gt;Tags: &lt;span style=font-size:70%;&gt;&lt;a href="http://technorati.com/tag/processing.org" rel="tag"&gt;processing.org&lt;/a&gt; &lt;a href="http://technorati.com/tag/jEdit" rel="tag"&gt;jEdit&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/6064652/112292004147170917" rel="service.edit" title="Remembering your limits" type="application/atom+xml"/>
<author>
<name>toxi</name>
</author>
<issued>2005-08-04T17:28:00+01:00</issued>
<modified>2005-08-04T16:35:04Z</modified>
<created>2005-08-01T18:14:01Z</created>
<link href="http://www.toxi.co.uk/blog/2005/08/remembering-your-limits.htm" rel="alternate" title="Remembering your limits" type="text/html"/>
<id>tag:blogger.com,1999:blog-6064652.post-112292004147170917</id>
<title mode="escaped" type="text/html">Remembering your limits</title>
<content type="application/xhtml+xml" xml:base="http://www.toxi.co.uk/blog/" xml:space="preserve">
<div xmlns="http://www.w3.org/1999/xhtml">Recently I've been receiving quite a few emails with an empty body and the subject line "tell me more!" - my standard one used for embedded <tt>mailto:</tt> links in early Flash experiments I'd published on various sites. I had hoped all these sources of neglect would have been eradicated in meantime. Now thanks to the 1st person in years to actually include a message in of these emails the culprit turned out to be my <a href="http://www.ultrashock.com/flas/Detailed/158.html">3D DotMatrix Scroller</a>. Done back in 1999 with Flash 4 it somehow seems to enjoy some belated attention again.<br/>
<br/>Oh my... The doors of perception opened wide and all the memories came flooding back at once. The mental pain of programming by selecting commands from a drop-down list and filling in form fields. Not being able to define functions, no local variables, the lack of most mathematic functions and operations apart from the main four. Flash forced one to adapt a surprisingly low level programming methodology, alien to many if not to most of its users, but especially the ones then considered primary target group: (web)designers. At the same time, Macromedia's chosen approach to get the beginnings of ActionScript into their tool was quite cunning. Those with a keen interest in interactivity and those who remained stoic in the light of these severe limitations of functionality (and usability!) came up with many creative solutions - sometimes by re-inventing the wheel, sometimes with true original thought. It very much reminded me of my previous dealings with writing applications and <a href="http://homepages.rtlnet.de/stpollok0/AURA/scr_aura43.gif">games</a> in assembler (or before that in straight hex code). It too was "Xtreme Programming" with a much more literal meaning of the term than it is used currently. Many of us have a story to tell about the Oldskool ways of writing software. Remembering these things sometimes is important to me, as it's not always the very opposite to the way software is being built today. Often we're still being forced to reinvent the wheel, because we rely (too much?) on many other tools created without a long term vision. Looking back sometimes helps us to see things more in perspective.<br/>
<br/>Of course the lack of essential coding concepts in a tool like Flash was questionable, though limitation is not always a bad thing. I'm certainly not the first one to stress its benefits when applied to creative processes (where I consider coding to be one of them). Yet, in our age of apparently infinite possibilities and constant exposure to <a href="http://fresh.homeunix.net/delicious.html">tempting mental side tracks</a>, <a href="http://www.w-uh.com/articles/030308-tyranny_of_email.html">interruptions</a>, consciously choosing limiting factors for one's work requires growing mental strength, <a href="http://trimpath.com/project/wiki/NextAction">focus</a> and effort. This is especially true when we're repeatedly told only being limited by our own creativity (or the lack of it).<br/>
<br/>Once again less is more. <a href="http://simplicity.media.mit.edu/">Limit the noise</a>. Often we forget limitation (consciously or not) can nurture and encourage experimentation, improvisation and hence <a href="http://www.amazon.co.uk/exec/obidos/ASIN/0714834491/026-3718303-1294030">creative thinking</a>. It also can help you focusing more on core ideas of a (new) project and lead to a deeper understanding of a concept or an entire medium than any textbook can offer. I'm sure all those factors were a major influence on the simplicity and resulting popularity of <a href="http://processing.org">Processing</a>.<br/>
<br/>I always believed in and practiced "learning by doing". So far I've been challenged the most and learned the most in situations ruled by limitation: lack of time (both in project duration and execution time), available tools, assets, grand ideas, and above all lack of prior knowledge about best practices. However I attempt to take away exactly the latter from each project I've worked on. You could call it learning the Hard Way and sometimes it involves scaling down my own expectations prior to starting work in order to tackle the core parts of a problem successfully.<br/>
<br/>Though, what does "successful" mean in this case? Trying to be realistic about what you can do and what you can't is a two sided sword. It doesn't mean you should be happy with achieving mediocrity, relative to your true skills. It's more about figuring out and appreciating where you're on your path to ??? (fill in yourself) and then adjusting your goals.<br/>
<br/>The key is to accept, respect and admit failure. Personally, I think there's a big, positive mental payoff for a successfully completed project. The payoff is even bigger if you've managed to learn something totally new on the way, if your goal was beyond what you'd thought you could achieve - if you have succeeded in the face of limitation and superseded yourself. But even a failure is another piece in the big puzzle and is always part of the equation, at least to an extend.<br/>
<br/>No big punchline here. A <a href="http://lateral.net">personal era is coming to a close</a> and it was time to reconsider...</div>
</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/6064652/112065149517018340" rel="service.edit" title="648 ney, 14 hey, 18 couldn't care less" type="application/atom+xml"/>
<author>
<name>toxi</name>
</author>
<issued>2005-07-06T12:46:00+01:00</issued>
<modified>2005-07-06T12:30:29Z</modified>
<created>2005-07-06T12:04:55Z</created>
<link href="http://www.toxi.co.uk/blog/2005/07/648-ney-14-hey-18-couldnt-care-less.htm" rel="alternate" title="648 ney, 14 hey, 18 couldn't care less" type="text/html"/>
<id>tag:blogger.com,1999:blog-6064652.post-112065149517018340</id>
<title mode="escaped" type="text/html">648 ney, 14 hey, 18 couldn't care less</title>
<content mode="escaped" type="text/html" xml:base="http://www.toxi.co.uk/blog/" xml:space="preserve">While the entire office is celebrating London winning the 2012 Olympics, I think this day already has had a more important &amp;amp; historic decision: &lt;a href="http://quote.bloomberg.com/apps/news?pid=10000006&amp;sid=a9_JRGCE0h6A&amp;refer=home"&gt;EU Parliament rejects Patent Law&lt;/a&gt; with a whopping 648:14 majority - quite simply amazing, and also quite surprising, it made my day! Thanks to all the nice people at &lt;a href="http://ffii.org/"&gt;FFII&lt;/a&gt; et al...&lt;br /&gt;&lt;br /&gt;&lt;div class='tag_list'&gt;Tags: &lt;span style=font-size:70%;&gt;&lt;a href="http://technorati.com/tag/software+patents" rel="tag"&gt;software patents&lt;/a&gt;, &lt;a href="http://technorati.com/tag/opensource" rel="tag"&gt;opensource&lt;/a&gt; &lt;/span&gt;&lt;/div&gt;</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/6064652/111684838816822934" rel="service.edit" title="The joys of screen scraped feeds" type="application/atom+xml"/>
<author>
<name>toxi</name>
</author>
<issued>2005-05-23T12:38:00+01:00</issued>
<modified>2005-07-06T12:32:00Z</modified>
<created>2005-05-23T11:39:48Z</created>
<link href="http://www.toxi.co.uk/blog/2005/05/joys-of-screen-scraped-feeds.htm" rel="alternate" title="The joys of screen scraped feeds" type="text/html"/>
<id>tag:blogger.com,1999:blog-6064652.post-111684838816822934</id>
<title mode="escaped" type="text/html">The joys of screen scraped feeds</title>
<content mode="escaped" type="text/html" xml:base="http://www.toxi.co.uk/blog/" xml:space="preserve">So I only noticed yesterday that apparently the most recent message in the Processing forums was on the 18th, something i simply couldn't believe... A quick sanity check of my local version quickly turned out the offending culprit wasn't actually my fault. Someone has changed the &lt;a href="http://as.processing.org/discourse/yabb_beta/YaBB.cgi?action=recent"&gt;HTML&lt;/a&gt; of the forum to bring it a step closer to validating and correctly put all tag attributes into double quotes. Good. Only problem was this tiny change stopped the main RegExp used for the feed generation from matching &lt;strong&gt;anything&lt;/strong&gt; on that page - hence we had an empty feed for the past 4 days. Now fixed again until further (lack of) notice... ;)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;UPDATE: There was actually a bit more broken/changed, and you also might have to remove and then re-add the feed in order to see the new items in your reader software. I don't get quite why, but it seemed to have helped in Thunderbird...&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&lt;div class='tag_list'&gt;Tags: &lt;span style=font-size:70%;&gt;&lt;a href="http://technorati.com/tag/processing.org" rel="tag"&gt;processing.org&lt;/a&gt; &lt;/span&gt;&lt;/div&gt;</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/6064652/111626432439897513" rel="service.edit" title="Processing recent posts feed fixed" type="application/atom+xml"/>
<author>
<name>toxi</name>
</author>
<issued>2005-05-16T18:18:00+01:00</issued>
<modified>2005-05-16T17:25:24Z</modified>
<created>2005-05-16T17:25:24Z</created>
<link href="http://www.toxi.co.uk/blog/2005/05/processing-recent-posts-feed-fixed.htm" rel="alternate" title="Processing recent posts feed fixed" type="text/html"/>
<id>tag:blogger.com,1999:blog-6064652.post-111626432439897513</id>
<title mode="escaped" type="text/html">Processing recent posts feed fixed</title>
<content type="application/xhtml+xml" xml:base="http://www.toxi.co.uk/blog/" xml:space="preserve">
<div xmlns="http://www.w3.org/1999/xhtml">just a quick note to announce a minor bug fix in the screen scraped <a href="http://toxi.co.uk/feeds/p5recent.php">Atom feed</a> of the <a href="http://processing.org/discourse/">Processing discourse</a>: the RegExp to isolate single posts was a bit dodgy and the 1st paragraph of each went AWOL on the way. no more so (at least until someone updates the HTML of that page... ;)<br/>
<br/>btw. the link to the personal profile page of the author of each post is fixed now too. thanks for your attention, please continue with your regular online activities!</div>
</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/6064652/111584270487991635" rel="service.edit" title="On-the-fly Sparklines with JavaScript and XBM" type="application/atom+xml"/>
<author>
<name>toxi</name>
</author>
<issued>2005-05-11T21:07:00+01:00</issued>
<modified>2005-05-11T20:18:24Z</modified>
<created>2005-05-11T20:18:24Z</created>
<link href="http://www.toxi.co.uk/blog/2005/05/on-fly-sparklines-with-javascript-and.htm" rel="alternate" title="On-the-fly Sparklines with JavaScript and XBM" type="text/html"/>
<id>tag:blogger.com,1999:blog-6064652.post-111584270487991635</id>
<title mode="escaped" type="text/html">On-the-fly Sparklines with JavaScript and XBM</title>
<content type="application/xhtml+xml" xml:base="http://www.toxi.co.uk/blog/" xml:space="preserve">
<div xmlns="http://www.w3.org/1999/xhtml">Inspired by <a href="http://overstimulate.com/">Jesse Andrews'</a> idea to <a href="http://overstimulate.com/projects/svg/">generate Sparklines with JavaScript</a>, I just spent the last 3 hours writing an <a href="http://toxi.co.uk/dev/sparklines/">alternative version </a> to use bitmaps instead of <a href="">SVG</a> as platform for the visualization. Apart from the limitation of only working in B&amp;W, the <a href="http://netghost.narod.ru/gff/graphics/summary/xbm.htm">XBM image format</a> is highly suitable for this purpose, as the bitmap data can be manipulated with JavaScript. (btw. <a href="http://www.wolf5k.com/">Wolfenstein 5K</a> must be the by far most impressive use of this format ;)</div>
</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/6064652/111564125630169578" rel="service.edit" title="Ess - a new sound library for Processing" type="application/atom+xml"/>
<author>
<name>toxi</name>
</author>
<issued>2005-05-09T13:11:00+01:00</issued>
<modified>2005-05-09T13:19:38Z</modified>
<created>2005-05-09T12:20:56Z</created>
<link href="http://www.toxi.co.uk/blog/2005/05/ess-new-sound-library-for-processing.htm" rel="alternate" title="Ess - a new sound library for Processing" type="text/html"/>
<id>tag:blogger.com,1999:blog-6064652.post-111564125630169578</id>
<title mode="escaped" type="text/html">Ess - a new sound library for Processing</title>
<content type="application/xhtml+xml" xml:base="http://www.toxi.co.uk/blog/" xml:space="preserve">
<div xmlns="http://www.w3.org/1999/xhtml">
<a href="http://www.tree-axis.com/">Krister Olsson</a> has just posted the first release of his new sound  library <a href="http://www.tree-axis.com/Ess/">Ess</a>, making use of the <a href="http://java.sun.com/products/java-media/sound/index.jsp">JavaSound API</a>, which is part of Java since v1.3. That is really good news as that way the library can be easily used in conjunction with other java sound libs, like the <a href="http://www.tritonus.org/plugins.html">Tritonus API plugins</a> or <a href="http://www.javazoom.net/javalayer/sources.html">JLayer</a>. It also doesn't require people to have the <a href="http://www.softsynth.com/jsyn/">JSyn</a> browser plugin (although requires the Java plugin, but that's less of a problem IMO).<br/>
<br/>The library is also a lot more feature rich than <a href="http://pitaru.com/sonia/">Sonia</a> currently is, which until now has been the de-facto standard lib for using audio in Processing. Ess, on the other hand, has high-level synthesis functions for basic waveforms and various types of noise. It also has filters and analysis tools (FFT code still apparently based on <a href="http://toxi.co.uk/p5/fftDebug/">my own hacks</a> ;)<br/>
<br/>Looking forward to play around with it more, just hope Krister will release the source code too, and support the system's AudioInputStream...</div>
</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/6064652/111452276756720613" rel="service.edit" title="cybersonica 2005" type="application/atom+xml"/>
<author>
<name>toxi</name>
</author>
<issued>2005-04-26T14:04:00+01:00</issued>
<modified>2005-04-26T13:39:27Z</modified>
<created>2005-04-26T13:39:27Z</created>
<link href="http://www.toxi.co.uk/blog/2005/04/cybersonica-2005.htm" rel="alternate" title="cybersonica 2005" type="text/html"/>
<id>tag:blogger.com,1999:blog-6064652.post-111452276756720613</id>
<title mode="escaped" type="text/html">cybersonica 2005</title>
<content type="application/xhtml+xml" xml:base="http://www.toxi.co.uk/blog/" xml:space="preserve">
<div xmlns="http://www.w3.org/1999/xhtml">short notice as usual... This year's <a href="http://cybersonica.org">Cybersonica </a> audiovisual culture festival will take place this weekend (28/04 - 01/05) in London, hosted at illustrious venues like the <a href="http://www.danacentre.org.uk/">Dana Centre</a> (Science Museum), <a href="http://www.ica.org.uk/">ICA</a> and Truman Brewery in Brick Lane.<br/>
<br/>Via <a href="http://stanza.co.uk">Stanza</a>, initiator and curator of <a href="http://soundtoys.net">SoundToys.net</a>, I just received final confirmation about Thursday's opening programme. As part of the <a href="http://www.cybersonica.org/festival_programme/full.php?id=3">symposium</a> taking place at the Dana Centre in the afternoon, I shall be giving a brief presentation and overview of my sound-reactive <a href="http://toxi.co.uk/hub/">works</a>, followed later by a <a href="http://www.cybersonica.org/festival_programme/full.php?id=5">live performance</a> with übercool audio artist <a href="http://pelado.co.uk">pelado</a> in the evening (1900-2230). Other artists taking part in the symposium include the fabulous <a href="http://www.flatearth.co.uk/404/">Julian baker</a>, up-and-coming pixelsumo artist and Processing fellow <a href="http://www.pixelsumo.com/blog/">Chris O'Shea</a>, <a href="http://www.suckmypixel.com/">Adam Hoyle</a> and of course Stanza.<br/>
<br/>The festival's keynote speech will be delivered by none else than the almighty <a href="http://www.flong.com/">Golan Levin</a> - definitely looking forward to this one!<br/>
<br/>If you're in town, let's meet up!<br/>
<br/>
<span style="font-size:85%;">ps. phew, that was enough name dropping for a whole year! :)</span>
</div>
</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/6064652/111393408991818474" rel="service.edit" title="google world map" type="application/atom+xml"/>
<author>
<name>toxi</name>
</author>
<issued>2005-04-19T18:54:00+01:00</issued>
<modified>2005-04-19T18:08:09Z</modified>
<created>2005-04-19T18:08:09Z</created>
<link href="http://www.toxi.co.uk/blog/2005/04/google-world-map.htm" rel="alternate" title="google world map" type="text/html"/>
<id>tag:blogger.com,1999:blog-6064652.post-111393408991818474</id>
<title mode="escaped" type="text/html">google world map</title>
<content mode="escaped" type="text/html" xml:base="http://www.toxi.co.uk/blog/" xml:space="preserve">serendipity? the world according to &lt;a href="http://maps.google.co.uk/maps?q=Charlotte+Road,London,EC2A&amp;hl=en"&gt;google maps&lt;/a&gt; is quite a sight. obviously caused by a serious lack of data, medieval maps and the perception of the world were impacted similarily... the quest for asia is starting all over ;)&lt;br /&gt;&lt;br /&gt;&lt;img src="http://toxi.co.uk/img/misc/googleworld.png" border="0" /&gt;</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/6064652/111391466433940578" rel="service.edit" title="processing beta released" type="application/atom+xml"/>
<author>
<name>toxi</name>
</author>
<issued>2005-04-19T13:26:00+01:00</issued>
<modified>2005-04-19T19:37:19Z</modified>
<created>2005-04-19T12:44:24Z</created>
<link href="http://www.toxi.co.uk/blog/2005/04/processing-beta-released.htm" rel="alternate" title="processing beta released" type="text/html"/>
<id>tag:blogger.com,1999:blog-6064652.post-111391466433940578</id>
<title mode="escaped" type="text/html">processing beta released</title>
<content type="application/xhtml+xml" xml:base="http://www.toxi.co.uk/blog/" xml:space="preserve">
<div xmlns="http://www.w3.org/1999/xhtml">
<b>WOW!</b> i guess this is one of the days <a href="http://acg.media.mit.edu/people/fry/">Ben</a> and <a href="http://reas.com/">Casey</a> have been dreaming about and (even more intensely) working towards for the past 3+ years. a big congratulations to them and all involved for reaching <a href="http://processing.org/">BETA!</a>
<br/>
<br/>good things come to those who wait...</div>
</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
</feed>

