<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AgileAndArt &#187; qconsf</title>
	<atom:link href="http://www.agileandart.com/tag/qconsf/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.agileandart.com</link>
	<description>The Art Improving Agile Software Development</description>
	<lastBuildDate>Sun, 21 Apr 2013 22:45:53 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>#QCON &#8211; Functional Programming, Music and Art</title>
		<link>http://www.agileandart.com/2008/12/23/qcon-functional-programming-music-and-art/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=qcon-functional-programming-music-and-art</link>
		<comments>http://www.agileandart.com/2008/12/23/qcon-functional-programming-music-and-art/#comments</comments>
		<pubDate>Tue, 23 Dec 2008 11:56:00 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
				<category><![CDATA[Academic]]></category>
		<category><![CDATA[Art]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[functional programming]]></category>
		<category><![CDATA[haskell]]></category>
		<category><![CDATA[programação funcional]]></category>
		<category><![CDATA[qcon]]></category>
		<category><![CDATA[qconsf]]></category>

		<guid isPermaLink="false">http://www.agileandart.com/?p=49</guid>
		<description><![CDATA[Last month, at QCON, I was in a great talk about functional programming languages (like Haskell) and their benefits to the Art world. The title of the talk was &#8220;How Functional Programmers canHelp, Inspire, or even Be Artists&#8221;. First of all I&#8217;d like to emphasize that all good programmers are artists, and as Richard Gabriel [...]]]></description>
				<content:encoded><![CDATA[<p>Last month, at QCON, I was in a great talk about functional programming languages (like Haskell) and their benefits to the Art world. The title of the talk was &#8220;How Functional Programmers can<br />Help, Inspire, or even Be Artists&#8221;. First of all I&#8217;d like to emphasize that all good programmers are artists, and as <a href="http://java.sun.com/features/2002/11/gabriel_qa.html">Richard Gabriel said 6 years ago</a>, we programmers should be trained like artists. This is the major problem of our Computer Science Courses.</p>
<p>We all know artificial intelligence and computer tools are getting better and better. Right know we can easily produce things like this video:</p>
<p><object height="344" width="425"><param name="movie" value="http://www.youtube.com/v/QStm3ZyzgY0&amp;hl=en&amp;fs=1&amp;rel=0&amp;color1=0x402061&amp;color2=0x9461ca"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"><embed src="http://www.youtube.com/v/QStm3ZyzgY0&amp;hl=en&amp;fs=1&amp;rel=0&amp;color1=0x402061&amp;color2=0x9461ca" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"></embed></object><span id="more-49"></span></p>
<p>In his talk, Prof. Paul Hudak also showed the examples of how we can do image animation using functional programming. The project he described was the <a href="http://conal.net/fran/">Functional Reactive Animation (FRAN)</a>. All these things are not really new, but now that functional languages are returning to the main stream, those are the things that begin to appear. With tools like FRAN, an animation can be made as easy as this:</p>
<table>
<tbody>
<tr>
<td>
<pre> growFlower u = buttonMonitor u `over`<br />           stretch (grow u) flower<br /><br />grow u = size<br />where<br />size = 1 + atRate rate u<br />rate = bSign u</pre>
</td>
<td>
<p align="center"><img src="http://conal.net/fran/gifs/growFlower.gif" height="164" width="164" /></p>
</td>
</tr>
</tbody>
</table>
<p>Of course if you don&#8217;t know functional programming this is strange and difficult, but just think about an application which enlarges and shrinks an image when you press right or left mouse button. Think that this application can be written in those 6 code lines above.</p>
<p>Another application for functional programming is music. I recently acquired my MacBook last week I used Garage Band software for the first time. It is amazing what one can do with music software. I&#8217;ve already played with <a href="http://flstudio.image-line.com/">Fruit Loops Studio</a> (my favorite), Sony <a href="http://www.sonycreativesoftware.com/products/soundforgefamily.asp">SoundForge</a> (great too)  and who don&#8217;t remember one of the first DJ software called <a href="http://www.mixman.com/">MixMan</a>.</p>
<p>But the focus of Paul&#8217;s presentation wasn&#8217;t in using tools, but in how you can build wonderful tools with less lines of code, just because functional programming were made for this kind of application. He showed an example of his <a href="http://www.haskell.org/haskore/">Haskore</a> project, a nice way to compose music using the Haskell functional language. You specify the program in terms of WHAT to do, not HOW to do it.</p>
<p>The design goals of the Haskore project are:
<ul>
<li>Simplicity, expressiveness, generality and performance</li>
<li>Real-time sound synthesis</li>
<li>Transparency</li>
<li>Good for signal processing, algorithmic composition and interactive applications</li>
</ul>
<p>A small example of how you can write a song using Haskore. Here is the language definition for notes:</p>
<p><span style="font-family:courier new;">type Octave = Int </span><br /><span style="font-family:courier new;">type Dur = Rational </span><br /><span style="font-family:courier new;">type Pitch = (PitchClass, Octave) </span><br /><span style="font-family:courier new;">data PitchClass = Cff | Cf | C | Dff | Cs | Df | Css | D | Eff | Ds </span><br /><span style="font-family:courier new;">data PitchClass = Cff | Cf | C | Dff | Cs | Df | Css | D | Eff | Ds </span><br /><span style="font-family:courier new;">| Ef | Fff | Dss | E | Es | Ff | F | Gff | Ess | Fs | Gf | Fss | G </span><br /><span style="font-family:courier new;">| Aff | Gs | Af | Gss | A | Bff | As | Bf | Ass | B | Bs | Bss </span><br /><span style="font-family:courier new;">data Prim a = Note Dur a | Rest Dur </span></p>
<p>So, a prim(itive) can be defined as
<ul>
<li>a note with a Picth (class + octave) and a duration (expressed as a real number)</li>
<li>or a rest with a duration (silence)</li>
</ul>
<p>For example:</p>
<p><span style="font-family:courier new;">Note (1/4) (C,4) :: Prim Pitch  &#8211; it is a Middle C quarter note</span></p>
<p>The music is defined as a sequence of primitive notes, or notes played in parallel:</p>
<p><span style="font-family:courier new;">data Music a = Primitive (Prim a) –primitive note or rest </span><br /><span style="font-family:courier new;">| Music a :+: Music a &#8211;sequential composition </span><br /><span style="font-family:courier new;">| Music a :=: Music a &#8211;parallel composition </span><br /><span style="font-family:courier new;">| Modify Control (Music a) &#8211;modifier </span></p>
<p>This is just a little example, the language is much more complete, you can even define performance and interpretation using the language.</p>
<p>Ok, all these geek things are great and we love it. But I still have some doubts about how the most rooted concepts of creativity can be applied to these computational tools. I mean, I love music and I feel it when I listen to it, I feel it when I play the guitar with my band. I really don&#8217;t know how this tools can contribute to produce human interaction. Of course one can go home and program a nice music using Haskore, or do a couple of clicks in Garage Band to produce a pre-factoried song. This is wonderful, people can produce things that they could not some time ago. But what about the old fashion music composition? Will people in future have to know something about the pentagram and how to write a sheet?</p>
<p>To fill a song I need to close my eyes. To compose something in my piano I just close my eyes and play what comes, don&#8217;t know from where. Is there any computer tool that I can use with closed eyes? Or am I wrong and closing eyes isn&#8217;t necessary?</p>
<p>Professor Paul ends his talk telling us about an computacional application for dance. It is like a pentagram like represantation of steps and body movements. All right! Now you can formally define a dance script and send it to a robot and he will do a nice job, dancing.</p>
<p>My final question is: what is the robot feeling while he is in his perfect dance defined by an algorithm?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agileandart.com/2008/12/23/qcon-functional-programming-music-and-art/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Breakfast as QCON SF 2008 with Martin Fowler</title>
		<link>http://www.agileandart.com/2008/12/05/breakfast-as-qcon-sf-2008-with-martin-fowler/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=breakfast-as-qcon-sf-2008-with-martin-fowler</link>
		<comments>http://www.agileandart.com/2008/12/05/breakfast-as-qcon-sf-2008-with-martin-fowler/#comments</comments>
		<pubDate>Fri, 05 Dec 2008 19:46:00 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[martin fowler]]></category>
		<category><![CDATA[qcon]]></category>
		<category><![CDATA[qconsf]]></category>
		<category><![CDATA[qconsf08]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.agileandart.com/?p=47</guid>
		<description><![CDATA[For me, it was an honor to eat my morning croissant with Martin Fowler. Sharing my emotion with you!]]></description>
				<content:encoded><![CDATA[<p>For me, it was an honor to eat my morning croissant with Martin Fowler. Sharing my emotion with you!</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/MGEBE6gxvi0&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/MGEBE6gxvi0&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agileandart.com/2008/12/05/breakfast-as-qcon-sf-2008-with-martin-fowler/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Photos QCON San Francisco 2008</title>
		<link>http://www.agileandart.com/2008/11/19/photos-qcon-san-francisco-2008/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=photos-qcon-san-francisco-2008</link>
		<comments>http://www.agileandart.com/2008/11/19/photos-qcon-san-francisco-2008/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 01:13:00 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
				<category><![CDATA[Art]]></category>
		<category><![CDATA[Photos]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[photos]]></category>
		<category><![CDATA[qcon]]></category>
		<category><![CDATA[qconsf]]></category>

		<guid isPermaLink="false">http://www.agileandart.com/?p=43</guid>
		<description><![CDATA[Here are some photos of the first and second days of QCON SF 2008. Enjoy! QCON SF 2008]]></description>
				<content:encoded><![CDATA[<p>Here are some photos of the first and second days of QCON SF 2008. Enjoy!</p>
<table style="width:194px;">
<tbody>
<tr>
<td align="center" style="height:194px;background:url(http://picasaweb.google.com/f/img/transparent_album_background.gif) no-repeat left"><a href="http://picasaweb.google.com/danicuki/QCONSF2008#"><img src="http://lh5.ggpht.com/_t3QKIVOmzys/SSNktA0Gb-E/AAAAAAAABCc/lBmuMaK65_M/s160-c/QCONSF2008.jpg" width="160" height="160" style="margin:1px 0 0 4px;" /></a></td>
</tr>
<tr>
<td style="text-align:center;font-family:arial,sans-serif;font-size:11px"><a href="http://picasaweb.google.com/danicuki/QCONSF2008#" style="color:#4D4D4D;font-weight:bold;text-decoration:none;">QCON SF 2008</a></td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.agileandart.com/2008/11/19/photos-qcon-san-francisco-2008/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Padrões Para Introduzir Novas Idéias</title>
		<link>http://www.agileandart.com/2008/11/18/padroes-para-introduzir-novas-ideias-2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=padroes-para-introduzir-novas-ideias-2</link>
		<comments>http://www.agileandart.com/2008/11/18/padroes-para-introduzir-novas-ideias-2/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 09:01:00 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
				<category><![CDATA[Academic]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Patterns]]></category>
		<category><![CDATA[Videos]]></category>
		<category><![CDATA[linda rising]]></category>
		<category><![CDATA[new ideas]]></category>
		<category><![CDATA[qcon]]></category>
		<category><![CDATA[qconsf]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.agileandart.com/?p=42</guid>
		<description><![CDATA[Participei hoje do primeiro tutorial na QCON San Francisco 2008. O tutorial foi sobre o assunto que eu venho estudando há algum tempo: Padrões para Introduzir Novas Idéias. Em termos de conteúdo, não vi nada muito novo. Mas o que mais me impressionou foi a presença de espírito da Linda Rising. Foi um enorme prazer [...]]]></description>
				<content:encoded><![CDATA[<p>Participei hoje do primeiro tutorial na QCON San Francisco 2008. O tutorial foi sobre o assunto que eu venho estudando há algum tempo: Padrões para Introduzir Novas Idéias. Em termos de conteúdo, não vi nada muito novo. Mas o que mais me impressionou foi a presença de espírito da <a href="http://lindarising.org/">Linda Rising</a>. Foi um enorme prazer estar com ela todo esse dia e ouví-la falar sobre os padrões. A sua fala é tranqüila, clara e perfeita. Nunca tinha vista alguém da área da computação se expressar de forma tão maravilhosa. Me sinto privilegiado de ter participado de um tutorial ao lado de uma das mulheres que seja talvez um dos maiores nomes da computação atual.
<div></div>
<div>Para compartilhar o momento com todos, filmei alguns momentos. Linda propôs que, para aprender melhor sobre os padrões do livro Fearless Change, algumas pessoas fizessem encenações de um script escrito por ela. São pequenas <span class="Apple-style-span" style="font-style: italic;">sketches</span> que ilustram momentos de personagens como o Inovador, o Evangelista e outros. Espero que todos gostem!</div>
<div></div>
<div></div>
<p><object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/Ho14NAVNmqg"></param> <embed src="http://www.youtube.com/v/Ho14NAVNmqg" type="application/x-shockwave-flash" width="425" height="350"></embed></object></p>
<p>Clique no link &#8220;YouTube&#8221; acima para ver os outros vídeos relacionados</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agileandart.com/2008/11/18/padroes-para-introduzir-novas-ideias-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
