Audio clip from the film What About Bob?

Audio clip from the film Wedding Crashers.

My first lip-sync ever! I like this part of the animation task best, I think — minimal drawing with quickly satisfying results!

Your browser settings might noy support Flash content.

These slides accompany my 20-minute portfolio presentation. After compiling them, I realized that these pieces also represent all the things other than design that I’m passionate about.

If you like creating simple melodies and finding harmonies…

I’ve always enjoyed the simple music-making applications with available notes on a grid that the user can turn on and off. Often these applications use a pentatonic scale (i.e. just the black key notes) so that nothing the user does can sound dissonant. But I prefer the challenge of finding something that sounds good, tripping over awkward chords on the way.

As a kid, I learned insane amounts from just playing around with the software my parents gave me or happened to have installed on our machine. I developed La Pastorale with these experiences in mind, aiming to create a setting in which people can learn about music theory simply by exploration and trial-and-error.

Have fun!


Maybe you’d like to see some the of the functionality explained. Here is a script for the brown bar that moves across the grid, responsible for triggering the notes.

Since each row of notes is a different color, I can associate color with the notes that I want Scratch to play. The variable called ‘speed’ is a value that changes when you press allegro, andante, or presto. I needed to have the note length and wait time adjust with each speed so that the note would play only once per beat.

Lots of people have asked how I make the melody to switch from major to minor. It’s easier than it seems! There is an adjustment to just one note that makes that happen: the third note in the scale. In our case, it’s an E. To make the entire melody sound minor, the E shifts down to become an E flat. So because the value of E changes, I used a variable for this row of notes.

The value of the variable changes when the user clicks the ‘major’ and ‘minor’ button sprites. Here are some scripts attached to the ‘minor’ button. The one on the left tells the button to appear to be off as long as E has value of 64 (its major value). On the right, you can see that clicking the button sprite changes E to its minor value and makes the minor button appear to be on.

This all essentially switches in the scripts for the ‘major’ button sprite.

This is my first political cartoon. I began thinking about the issues surrounding the tenth anniversary of the attacks on the World Trade Center, and “Islamophobia” strikes me as one of them. I am bothered by the image of the Muslim culture to which the majority of Americans (including myself) often subscribe. We need to understand that violent extremists are not representative of the Muslim people any more than American serial killers are poster children for America (although both point to serious deficiencies in our respective cultures).

On a purely technical note, drawing in a cartoon style was hard! The extreme economy of line and anatomic liberties escorted me far outside my comfort zone. I tried to copy the style of Mike Smith, who draws for the Las Vegas Sun. Of all the editorial cartoons I looked at, I particularly fell in love with his line quality and the human appeal of his characters.

When it comes to political cartoons, the broad range of historical styles are interesting. I particularly noticed the changes in the way cartoonists tend to draw people. Is it just a tendency towards greater efficiency, or does the progression reflect something about the way we as a society see ourselves? Hm. Forgive me for not appropriately crediting these Google Image search results, but they quickly illustrate my point.

A few weeks ago, I sat down and put words to my passion for graphic design.

You can download my statement in PDF form here.

Pac-man enthusiasts, rejoice! I have you made you one attractive and fully playable level.

The end results of Programming are, of course, all lollipops and rainbows. But I’m here to tell you about the frustration that precedes the satisfaction.

Behind-the-Scenes Hair-Pulling Moment Number 1: Designing a stage.

I knew that Pac-man’s maze needs to be not too basic and not too complex. It should be symmetrical and nice-looking. It needs to accommodate moving characters and fit within 480 x 360 pixel screen area. And since would be controlling movement with numbers of pixels, I knew it would be to my advantage to make the most mathematically regular system of paths units as possible.

Pulling all these requirements together was harder than I anticipated, and I spent a lot of time on failed attempts. In the end, I built a grid of blocks in Illustrator, drew a stroke that went through only the exact centers of blocks (Smart Guides, I love you), and adjusted the width of that stroke until there seemed to be a nice path/wall thickness ratio that fit both my screen dimensions and the size of my characters. Success.

Behind-the-Scenes Hair-Pulling Moment Number 2: Pellets.

Oh, they were easy enough to draw. But I did spend nearly an hour placing them equidistant on my nicely-drawn paths by inputting coordinate values. See the first part of this code? I had to come up with 128 different values for those.

Behind-the-Scenes Hair-Pulling Moment Number 3: Pac-man’s Movement.

The $1,000,000 question is: How do you keep Pac-man on the path and from munching his way through walls? I examined a number of different Scratch projects to find the answer, and there are actually many different ways of doing this, each with various glitch potential. All made use of the “color # touching color #” functionality, but this played out quite differently depending on how the arrow keystrokes were programmed. Does the right arrow key aim a perpetuum mobile Pac-man in an easterly direction? Or does it inch him there at a prescribed distance? Where is the colored pixel that determines whether Pac-man has hit a wall, and should he bounce back in this event or simply halt? I experimented for hours with all these options and came up with functionality that is infrequently glitchy, but still not perfect. Sigh.

Behind-the-Scenes Hair-Pulling Moment Number 3: Ghost Movement.

Thankfully with the ghosts, I didn’t need them to do anything special like think for themselves or chase Pac-man. I simply gave the illusion of random movement by preprogramming three different cycles of movement around the stage that were decently complex. Each ghost has a script that begins something like this…

… and continues on for at least six times the length you see here.

Conclusions? I obviously can’t bring myself to create an ugly game, regardless of the low number of viewers and even lower number of players it will have. Beauty takes time and thought. And for beauty, I’m always ready to give both!