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

Today nearly marks the close of our first week of Summer Academy (still a half day tomorrow). It’s been pretty intense. Monday I tried to get most of my week’s work done for my Coursera Processing course before and after a social get-together at the home of one of the course’s organizers, Nicole Belanger. It was Canada day, so driving in to downtown Ottawa seemed out of the question. My husband Ahmed and I (we’re taking the course together) took a bus partway, and then ended up walking across the Alexandria bridge (and later back) because we didn’t find the shuttle. (Walking through the Canada day crowds was about the closest I’ve gotten to Canada day celebrations, after over a decade in Canada, and probably as close as I want to get). It ended up being way more walking than I’ve done since January, because of a foot injury, but with many short and long stops, to my surprise and delight it went well. We had a nice time meeting our classmates and coordinators/teachers. Back home a Coursera course that I had been awaiting for months just opened (Coding the Matrix: Linear Algebra through Computer Science Applications), and I took a peek. I got sucked in by the idea of applying a fun language (Python) to a favorite subject (Linear Algebra), installed the latest version of Python, and started doing some of the first exercises.

Tuesday, wide awake at 7am (early for me, but still a bit on Rome time from our visit to my parents), messed around with the Coursera courses, and got ready for Day 1 of Summer Academy. We kicked off at 1pm with a couple of hours of fun team-building get-to-know-each-other exercises and then got to work with installing a “VirtualBox” on each of our machines — a virtual computer inside a computer that would ensure that all of us, whether on pc or mac, would be working with Rails, Ruby, Git, and so on, in identical versions. While waiting a few hours for everything to download and install, we watched, in small groups, a long video about Unix and its commands in fairly grueling detail, at least as far as we were concerned. We developed a good camaraderie with the people sharing our table (we’re working in a big open space, the lounge/cafeteria of Shopify, and clump up in groups of 6 to 10). Years of being an artist working at home have intensified my introverted nature to the point of sometimes being painfully shy with strangers, so I was happy to see I found it relatively easy and quick to start bonding with my fellow classmates. I’m pretty impressed by what a diverse collection of bright, friendly, enthusiastic people HackerYou has put together.

We took a break for dinner then had an interactive evening lecture where we built our first practice Rails app. It was a pretty tough day, especially physically — I’m completely unused to sitting in place and working for more or less 8 hours straight — I generally work both day and evening, but intersperse sitting there working with lots of breaks moving around or lying down. Home at 10pm, doing a bit of exhausted and perfunctory work on the Coursera courses.

Wednesday, a 10-6 day, again felt long and hard, even if we were let out early around 5. Gorgeous catered lunch though. We mixed individual undirected work on our Rails apps (I paraphrase, “do something cool with Rails Time methods”) with git tutorial, git practice and more git tutorial. There seems always to be more work than one can really cover in the set time, which makes some logical sense — you wouldn’t want anyone to run out of things to do and twiddle their thumbs — but since none of the work is labeled optional, a person like me, who is used to being able to finish everything assigned, and fairly easily at that, feels some confusion and frustration.

We were invited to volunteer to demo our Rails apps, and I was one of about a third of the class who raised their hands. But I chickened out after seeing the visually impressive apps that some of my classmates demo’d. I had focused on pure code, setting up a hash to display the time in 39 cities around the world without copy-pasting code, and doing various other calculations with Rails time functions. But now it seemed so boring in black and white! (I had briefly thought about how to at least make colored text, but I was stumped and soon turned to back to the tons of Git tutorials we were also supposed to be doing). Afterwards I was kicking myself for being a chicken. Ahmed asked me if he should have pushed me to present…but no, I said, I wouldn’t have wanted that either…

We went home, burnt out, and relaxed for a while. I then took a hard look at the Coursera courses, dropped the Linear Algebra one, and resolved to finish up the Processing one (too relevant to my work, and too much work already invested, to drop it) in minimal style instead of the usual maximal.

Thursday, not surprisingly, just as I was getting used to our table mates, whoops, the instructions were to switch it up. Ahmed was going to go sit away from me but I really wasn’t ready… We did though sit with several new people at a new table and I got to learn that they were just as friendly as the first set. Another packed and demanding day of doing Ruby tutorials, exercises, part of more reading on Ruby (we were supposed to read all of it but just couldn’t finish it all), and then an interesting lecture on recreating Rails using Sinatra that got really tough for most of us to follow at the end…home at 10:30.

Friday we did a day (short! 10 to 4, the first day that I didn’t feel exhausted afterwards…) of quiz and exercise content in “student-teacher” pairs. We were asked to walk to one side of the room if we felt we needed more help mastering the basic, core content of the week, and to the other side if we felt ready to help a colleague master that content. I didn’t really feel uncomfortable with the basic content, but nor did I feel really confident enough to “teach” it. But I walked to the “teacher” side, which was probably best, since the instructor ended up needing to ask a few people from the “student” side to switch over. We then paired up randomly, and I ended up with Kate Hudson. She was pretty close to my level, so I had a light job, and we made pretty quick progress with the quiz content, and practice with git forking, pull requests and so on (the practice of which was equally new to both of us, we had both only seen it in theory so far). After our lunch break, we attacked the programming exercises, and here happily I was able to feel more useful as the teaching partner. We finished our first exercise fairly quickly, ahead of most of the class, and our instructor Heather asked us to demo the program. That went well, and I felt redeemed.

Finally, for fun, here is the link to my nearly marks the close of our first week of Summer Academy (still a half day tomorrow). It’s been pretty intense. Monday I tried to get most of my week’s work done for my Coursera Processing course before and after a social get-together at the home of one of the course’s organizers, Nicole Belanger. It was Canada day, so driving in to downtown Ottawa seemed out of the question. My husband Ahmed and I (we’re taking the course together) took a bus partway, and then ended up walking across the Alexandria bridge (and later back) because we didn’t find the shuttle. (Walking through the Canada day crowds was about the closest I’ve gotten to Canada day celebrations, after over a decade in Canada, and probably as close as I want to get). It ended up being way more walking than I’ve done since January, because of a foot injury, but with many short and long stops, to my surprise and delight it went well. We had a nice time meeting our classmates and coordinators/teachers. Back home a Coursera course that I had been awaiting for months just opened (Coding the Matrix: Linear Algebra through Computer Science Applications), and I took a peek. I got sucked in by the idea of applying a fun language (Python) to a favorite subject (Linear Algebra), installed the latest version of Python, and started doing some of the first exercises.

Tuesday, wide awake at 7am (early for me, but still a bit on Rome time from our visit to my parents), messed around with the Coursera courses, and got ready for Day 1 of Summer Academy. We kicked off at 1pm with a couple of hours of fun team-building get-to-know-each-other exercises and then got to work with installing a “VirtualBox” on each of our machines — a virtual computer inside a computer that would ensure that all of us, whether on pc or mac, would be working with Rails, Ruby, Git, and so on, in identical versions. While waiting a few hours for everything to download and install, we watched, in small groups, a long video about Unix and its commands in fairly grueling detail, at least as far as we were concerned. We developed a good camaraderie with the people sharing our table (we’re working in a big open space, the lounge/cafeteria of Shopify, and clump up in groups of 6 to 10). Years of being an artist working at home have intensified my introverted nature to the point of sometimes being painfully shy with strangers, so I was happy to see I found it relatively easy and quick to start bonding with my fellow classmates. I’m pretty impressed by what a diverse collection of bright, friendly, enthusiastic people HackerYou has put together.

We took a break for dinner then had an interactive evening lecture where we built our first practice Rails app. It was a pretty tough day, especially physically — I’m completely unused to sitting in place and working for more or less 8 hours straight — I generally work both day and evening, but intersperse sitting there working with lots of breaks moving around or lying down. Home at 10pm, doing a bit of exhausted and perfunctory work on the Coursera courses.

Wednesday, a 10-6 day, again felt long and hard, even if we were let out early around 5. Gorgeous catered lunch though. We mixed individual undirected work on our Rails apps (I paraphrase, “do something cool with Rails Time methods”) with git tutorial, git practice and more git tutorial. There seems always to be more work than one can really cover in the set time, which makes some logical sense — you wouldn’t want anyone to run out of things to do and twiddle their thumbs — but since none of the work is labeled optional, a person like me, who is used to being able to finish everything assigned, and fairly easily at that, feels some confusion and frustration.

We were invited to volunteer to demo our Rails apps, and I was one of about a third of the class who raised their hands. But I chickened out after seeing the visually impressive apps that some of my classmates demo’d. I had focused on pure code, setting up a hash to display the time in 39 cities around the world without copy-pasting code, and doing various other calculations with Rails time functions. But now it seemed so boring in black and white! (I had briefly thought about how to at least make colored text, but I was stumped and soon turned to back to the tons of Git tutorials we were also supposed to be doing). Afterwards I was kicking myself for being a chicken. Ahmed asked me if he should have pushed me to present…but no, I said, I wouldn’t have wanted that either…

We went home, burnt out, and relaxed for a while. I then took a hard look at the Coursera courses, dropped the Linear Algebra one, and resolved to finish up the Processing one (too relevant to my work, and too much work already invested, to drop it) in minimal style instead of the usual maximal.

Thursday, not surprisingly, just as I was getting used to our table mates, whoops, the instructions were to switch it up. Ahmed was going to go sit away from me but I really wasn’t ready… We did though sit with several new people at a new table and I got to learn that they were just as friendly as the first set. Another packed and demanding day of doing Ruby tutorials, exercises, part of more reading on Ruby (we were supposed to read all of it but just couldn’t finish it all), and then an interesting lecture on recreating Rails using Sinatra that got really tough for most of us to follow at the end…home at 10:30.

Friday we did a day (short! 10 to 4, the first day that I didn’t feel exhausted afterwards…) of quiz and exercise content in “student-teacher” pairs. We were asked to walk to one side of the room if we felt we needed more help mastering the basic, core content of the week, and to the other side if we felt ready to help a colleague master that content. I didn’t really feel uncomfortable with the basic content, but nor did I feel really confident enough to “teach” it. But I walked to the “teacher” side, which was probably best, since the instructor ended up needing to ask a few people from the “student” side to switch over. We then paired up randomly, and I ended up with Kate Hudson. She was pretty close to my level, so I had a light job, and we made pretty quick progress with the quiz content, and practice with git forking, pull requests and so on (the practice of which was equally new to both of us, we had both only seen it in theory so far). After our lunch break, we attacked the programming exercises, and here happily I was able to feel more useful as the teaching partner. We finished our first exercise fairly quickly, ahead of most of the class, and our instructor Heather asked us to demo the program. That went well, and I felt redeemed.

Finally, for fun, here is the link to my first project from the Processing course.


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