Weeks 4 and 5 — Down and back up again

Holly, Hex, and Psychedelic Leaves

I’ll happily discard the blow-by-blow account this week in favor of talking about my ongoing projects:

Psychedelic Leaves is my Coursera Processing project; it’s a meditative interactive art animation.  Of course I haven’t had much time to work on this project given Summer Academy, and the web page and instructions, particularly, are a bit basic. I have until July 29 to perhaps revise…If I get a chance I might smarten up the presentation a bit, but chances are I’ll focus on Summer Academy stuff. A screenshot:

psych

For this course we are encouraged to develop projects that extend the work done in class, exploring code demonstrated by the lecturers, so I riffed off an algorithm that was introduced as “one of the earliest computer graphics algorithms … used by John Whitney, Sr to produce a range of really famous abstract animated pieces.” (Mick Grierson). The algorithm in one of the forms it was presented to us can be tried here (I googled a line or two of the code and found that a copy was put up on openprocessing.org recently, I imagine by someone associated with this class). It creates an animation of rainbow colored circles that change as the user moves the mouse around the window:

rings

My version has been modified extensively to use custom « leaf » inspired filled shapes rather than simple circles; to use a complex and pleasing set of colors rather than a simple set of rainbow hues; to exploit the possibilities of transparency; to allow the possibility of experimenting with layered in photos; to be accompanied by music (a choice of a Triphop inspired loop that was one of my first Logic Pro practice compositions, and one of my Bartok inspired pieces); and to allow much user interactivity via mouse and keyboard.

Note that sound may take several seconds to work after the animation is first loaded in its website presentation, as the sound files take quite a bit of time to load. Also: one must click the mouse at least once in the image window before the keyboard key controls work.

Of the two Rails projects I am developing with my husband, Ahmed Omran, Holly is more his baby. We’ve worked together on the concept/design/CSS/Ruby-logic parts, but the lion’s share of the Rails/Javascript/jQuery coding was done by him. « Holly » is a homage/reference to the « peculiar » AI computer from the show « Red Dwarf ». Holly can answer word problem math questions like “What is 70 plus 3 multiplied by 10?” and take voice input and speak the answer as well. Next we are planning to have Holly answer questions about Ruby and Rails…

The second project is Hex, an educative game app to develop fluency in naming colors by their hex codes — a color is shown, and the user has to guess its hex value; the app tells you, in a percentage score, how well you did. The next steps I plan are: a more attractive UI; the possibility to select color sets of varying difficulties; for the user to input a set of colors (via hex codes) that she would like to practice; to have a photo mode. This one is, so far, more my baby — the code resides on my computer and was typed by me, although most of the “How do you do that in Rails?” was figured out in pair programming sessions with Ahmed.

color

Meanwhile my florified follow-the-book-shopping-cart is coming along bit by bit, somewhat painfully, definitely with less enthusiasm than engendered by the above projects, but useful in that I am being exposed to (though hardly mastering) Rails in much more depth and breadth.

Week 2 — Starting to get more comfortable — most of the time…

Saturday was a short easy day, a pleasant interactive three hour lecture, just a bit of work outside of class, mostly resting and relaxing. Sunday would have been restful, but it turned out last minute that I had to drive to Montreal and back… But I did have a great visit with an old friend, who was very enthusiastic about the photos/animations/music I showed him. I even had enough energy left in the evening to do some Rails reading, and to do some final work wrapping up an art project. Monday more of the same before class; off to class for 1pm; we were only there a couple hours before we were told that the building needed to be cleared for electrical work. So back home to continue our work there. Ahmed and I worked a few hours peer programming a relatively complicated extension to our in-class Ruby exercise. I also got time to very quickly dispatch my week’s work for the Coursera processing course (basically I saved the videos for later — this fall — and just did the assignment), and to spend a few hours on my final project.

Tuesday we went in for class only to find that the building was still out of commission. I was still running an errand when I found out — turning in that art project I had been wrapping up — so it worked out great for me. Feeling relieved that I am almost done with all my outside-Summer-Academy commitments. On the way home I came up with the idea for another app to develop at Summer Academy. I want to donate my large format printer to my artist’s association, so that it can be used collectively. But such a concept would be a bookkeeping nightmare without some sort of printer Coop app to keep track of things. (Keep track of user accounts, ink usage of each person, monthly bills, yearly subscription prices, using money in kitty to buy more ink as needed, giving member dividends at the end of the year if too much money taken in).

At home, a pleasant day of doing a ruby exercise for a couple hours, then several on “css’ing up” the current state of my follow-the-rails book rails app. And then several on my processing final project (I’d meant to make this short and simple, but got engrossed in it; very satisfactory progress though).

Wednesday the building was back online. We were told to work in pre-assigned pairs. This was more challenging than last week as my new partner’s comfort level in the course was lower than that of my previous partner. In the morning we did a Ruby exercise and that went reasonably well. In the afternoon we were to listen to a seemingly endless stream of video tutorials on Bootstrap, then use it to (re)do the CSS on our app. Neither of us were happy with the video tutorials and I soon aborted it for myself, and showed him my solution, which he also preferred. I asked Ahmed to show me how to get started using it, how to find the documentation, and then I was happy learning it by applying it. I was resistant at first to replace the CSS I had coded in by hand, but eventually figured “meh, it’s saved on github, try something new,” threw away everything and started from scratch with Bootstrap. I ended up rather liking the clean new look (previous version had a leafy photo banner, a light background texture, and slightly greenish table row colors; I show the Bootstrapped version a bit below).

Thursday before class I continued my rails book work, feeling fairly good about it. It took a bit longer than I planned, but still, I felt caught up (which, to be honest, with this course, almost feels like being ahead in normal terms…). Before I was done, Ahmed came home (he’s been ferrying his little sister back and forth to a science/technology workshop all this week) and proposed we go for a walk, and I ended up, to my surprise, feeling good enough to do our old forest loop, and walk about half a hour.

Back in class, we mainly continued to refine our Bootstrap formatting of our Rails app page, and I even got my courage up enough to show it as the first demo of the day. Here is what it looked like:

flowerdepot
The code for the whole app is here and most of the code formatting that view is here (using Bootstrap classes) and here (overrides — some position adjusts, and some shadows).

Time for the evening lecture; in the first part of the lecture I felt happy, I found a vacant easychair to sit in, my foot propped up on my cushion on another chair; understanding everything (css, dev tools), in control. Then he started losing me moving on to rails and mvc, not too far out of my comprehension range but too fast, and then he told us to redo everything we had done so far from scratch with no scaffolding and… my world shattered…wha…how…? Ahmed eventually nursed me through it.

One good thing is that I’ve been pretty good about exercise — in fact better than lately, what with on the one hand my foot finally getting better, and on the other hand, being forced by Summer Academy to avoid my usual problems: too much exercise or too little exercise. There is no way I have time to do too much exercise. And yet there is no way I feel I can survive Summer Academy without finding time to spend around an hour a day on stretching, strength exercises, and walking or stationary biking. So that’s an unexpected benefit of finding it painful sitting on those chairs for hours…

Summer Academy — Coding Bootcamp Week 1

Of animation, coding, and digital sound

Slumbering in the background of my thinking for a few years now, and slamming to the surface  in the last twelve months has been the idea that

• as an artist who whole-heartedly strives to create culturally relevant contemporary art that is both of the moment and as uniquely mine as possible — reflections of my essence, my outlook and my epoch

• as an artist very interested in technological advances in art

• as a scientist who has the capacity to learn new technological systems easily

I need to go beyond drawing, painting, Photoshop, photography, and digital printmaking. I need to be creating my own tools, writing programs to create my work rather than just using programs; I need to branch out from two-dimensional art to include the dimension of time, via animation and sound.

This realization has been expressing itself in the past year as an obsession to “learn to code.” Or, better, to re-learn to code; to learn to code in modern languages and with modern practices; to work towards fluency and the use of code as second nature. My progress towards these goals has been accelerated by my discovery of the multitude of learning resources now available on the Internet, starting with Google’s Python course (see previous blog), followed by dozens of courses and mini-courses on Codecademy and Codeschool; Coursera’s Learn to Program: The FundamentalsAn Introduction to Interactive Programming in PythonComputing for Data Analysis; Stanford U/Class2go’s Introduction to Databases ; UC Berkeley/edX’s Software as a Service.

I branched out a few months ago to also start covering the sound aspect. I started with Coursera’s Introduction to Digital Sound Design and familiarizing myself with Apple’s Logic Pro in combination with Native Instruments’ AbsynthKontakt, and FM8. (I first bought the Native Instruments software package in 2010, but was then too intimidated to succeed to get anywhere with it.) Eventually I want to work with sound in a broader context than music, incorporating nature sounds, mechanical sounds, and so on, into soundscapes. I would also like to work with algorithmic, generative composition, as well as interactive sound.

My first project of animation accompanied by sound was put together in honor of my mother’s birthday. For sound, I took as my starting point the Bartok violin duets that I used to play with my father. I reworked them into layered compositions using multiple synthesized and sampled instruments for each violin part. For the animation (using Processing, the Java-based programming language for visual/new media arts) I started with the lines symbolizing the codification of information, from handwriting and calligraphy to drawn traces hinting here at writing and there at representations of sound waves, described in my previous blog posts here and here, and added interactivity and colorful imagery working with simple geometric and semi-organic forms in transparency. The initial web-based version of the project was presented via Internet on my mother’s birthday this May, with my mother in Italy and I in Canada; she was delighted. I continued the project in the form of a local-computer-based application, incorporating the layering of rectangular snippets of photos and scans rather than simple rectangles of one color. Since the load times for the initial web version are already long, the newer version, with higher resolution and involving a data folder of many relatively large image files, is not appropriate for a presentation via the Internet. Here, however, are some screenshots from the application:

artwork-1349s artwork-0737s

Here are a couple more images composed afterwards in Photoshop combining a couple screenshots each:

artwork-2279ms artwork-1556ms

As well as my interests in coding for my personal work, I serve as the technical advisor of Voix Visuelle, a non-profit contemporary art exhibition space in Ottawa. I hope to develop (along with my husband Ahmed Omran) a web-based application to automatize the clerical work associated with receiving and getting artist submissions ready for review by jury. Presently, Voix Visuelle receives its submissions on CD/DVD, on paper, or by Email; the administrators must then laboriously enter each artist’s information in an Excel database, and collate the image files into file folders to give to the jury for review. The application should not only do all this work automatically, but also automatically verify the submissions and coach each artist in making a complete submission with no missing information. (At present, the administrators must often contact artists by telephone or Email to ask them for information they have inadvertently omitted).

This application will be developed partly as a volunteer effort and partly funded by a grant graciously provided to Voix Visuelle by the Association des groupes en arts visuels francophones (l’AGAVF).

Our progress in this project will be greatly facilitated by our participation in the Summer Academy of HackerYou, an intensive full-time course in web development using Ruby on Rails, this upcoming July and August in Ottawa.

While I both enjoy self-directed learning and generally progress well with it, I feel that Summer Academy is a notable opportunity for me to re-experience a less isolated learning/working environment. I greatly look forward to interacting both with other students and with the HackerYou team. Also, while I feel fairly comfortable self-studying many programming-related topics (particularly those that are more strictly mathematical), I have so far felt clumsy and ill-prepared in my attempts to learn Ruby on Rails, the model-view-controller software architecture pattern, Git, and so on. I feel therefore I would benefit significantly from a systematic, from-the-ground-up coverage and practice of this material. While front-end development is somewhat more likely to be a future focus for me than back-end, I feel the need for a good general understanding of the whole development process. Also, I believe that handling databases with Rails will come in handy for some of my projects: particularly administrative ones such as the artists’ submissions app mentioned above, but also purely artistic projects involving data visualization and sonification.


© Copyright Abstract Digital Art | Estampe Numérique Abstraite – Paula Franzini