Comm Lab Final: Glenn And The Superstar
After a rather disturbing case of the dog eating my homework, it is here. Thanks to my boy Ethan for helping me and keeping me from jumping out of the window.
After a rather disturbing case of the dog eating my homework, it is here. Thanks to my boy Ethan for helping me and keeping me from jumping out of the window.
Chris, Ania, Hana and I worked on a short film that offered a twist on cliches. It’s kind of quirky and funny. Even funnier stuff happened behind the scenes, but that is about all I will say.
It was really interesting to observe chemistry between Ania, Chris and Hana. Chris and Ania have worked on a couple of projects together in the class. I sense the three of them will continue to collaborate beyond it.
FCP is one of those Apple applications where you can get the rundown on how things work, but actual interaction is where things to start to click. For the purpose of seeing what can be done and also getting a feel for how shots, lighting, sound, scene selection and editing work, I am not sure I could have been part of a better team. It’s a little tricky to absorb stuff on the fly, but I am encouraged to spend some time playing around with FCP over a couple of weekends.
**Update 2:
This is copied over from my Word document. Forgive any typos and/or formatting errors. The kind of short version is that the Hero character still needs to be programmed to jump and fall. It also needs to reset to the starting platform when an obstacle (ball or post collides with it).
I need to figure out what is going on with the platform creation code. Initially it would draw properly when the draw(){} method was placed without the ball objects or if the background (); was moved into the setup() {} method. Now I receive an error when I run the code no matter what I put in draw() {} or setup() {}. I’ve changed the placement and messed with if statements vs. function definitions. Neither have resolved the error.
Besides that, I need to include additional game elements including a timer, game music, data input for scores and settings and eventually two more levels and an alternative game controller.
I am pleased that I figured out a lot of mistakes I made. That actually took up the vast majority of my time on the project. Still, given where I was just a week ago in terms of understanding everything that has been discussed in class, I have progressed.
For the things I have not completed yet, I know what needs to be done and have an idea how to do so for the most part. I at least have a slight clue, which is far better than how I felt last week.
The final note for now is that while I feel good about how I broke things into pieces while working on sketches, I did jump around more than I should have. I also ended up putting together sloppy structure around my code. I will clean it up over the next couple of days, putting classes in separate tabs, which will move a lot of the code out of the draw (){} and make things more concise.
By Monday, I would like to tighten up the code and nail the remainder of what I planned to have ready for presentation in class.
Now for the notes, which will be reformatted and moved to another page later…
—-
levelGame initially mocked up just using void setup() and void draw() methods
Initially the line would follow the mouse, but now this code unintentionally created a short streaking trail:
float ballX=200;
float ballY=0;
float ballW=50;
float ballH=50;
float speed=3;
//run once
void setup() {
size(800,800);
smooth();
frameRate(30);
}
//run forever
void draw() {
background(#4CACED);
//setting ellipse and rectangle modes to CENTER
ellipseMode(CENTER);
rectMode(CENTER);
//draw game background objects
stroke(#000000);
strokeWeight(1);
fill(#000000);
rect(400,700,800,110); //bottom border
noStroke();
fill(#4CACED);
rect(100,700,75,150); //spike bars
rect(205,700,75,150);
rect(306,700,75,150);
rect(407,700,75,150);
rect(508,700,75,150);
rect(609,700,75,150);
rect(710,700,75,150);
//draw ball obstacle
stroke(#DDDDDD); //light gray
strokeWeight(1); //setting stroke thickness for ball
fill(#97CDF3); //deep sky blue
ellipse(ballX,ballY,50,50); //ball is drawn at coordinates
ballY=ballY+speed;//sets ball speed on y-axis
if((ballY>height) || (ballY<0)) {
speed=speed*-1;
}
//draw starting platform
stroke(#FFFFFF);
strokeWeight(10);
line(25,385,35,385);
//draw exit platform
stroke(#FFFFFF);
strokeWeight(3);
fill(#F68A03);
triangle(715,60,735,80,696,80);
rect(715,100,30,30);
//draw hero character’s head
stroke(#768E12);
strokeWeight(1);
fill(#768E12);
ellipse(30,349,8,8);
//draw hero character’s body
stroke(#768E12);
strokeWeight(1);
fill(#768E12);
rect(30,360,10,10);
//draw hero character’s arms
stroke(#768E12);
strokeWeight(3);
line(22,358,22,368); //left arm
line(38,358,38,368); //right arm
//draw hero character’s legs
stroke(#768E12);
strokeWeight(3);
line(28,368,28,378); //left leg
line(32,368,32,378); //right leg
//draw character-controlled platform line
stroke(#FFFFFF);
strokeWeight(7);
line(pmouseX,pmouseY,mouseX,mouseY);
}
//functions, events, methods
Code focusing just on Hero and making a Class and Object for it:
Initial Hero movement issues:
When coding Hero with void keyPressed() {} method, I didn’t map the values correctly, so the ending points for the lines representing Hero’s limbs stay fixed and stretch.
Also, I did not program the UP and DOWN arrow keys properly so they move Hero LEFT and RIGHT instead.
Code follows:
void keyPressed() {
if(key == CODED) {
if(keyCode == LEFT) {
heroHead=heroHead-1;
heroBody=heroBody-1;
heroRightArm=heroRightArm-1;
heroLeftArm=heroLeftArm-1;
heroRightLeg=heroRightLeg-1;
heroLeftLeg=heroLeftLeg-1;
} else if(keyCode == RIGHT) {
heroHead=heroHead+1;
heroBody=heroBody+1;
heroRightArm=heroRightArm+1;
heroLeftArm=heroLeftArm+1;
heroRightLeg=heroRightLeg+1;
heroLeftLeg=heroLeftLeg+1;
} else if(keyCode == UP) {
heroHead=heroHead-1;
heroBody=heroBody-1;
heroRightArm=heroRightArm-1;
heroLeftArm=heroLeftArm-1;
heroRightLeg=heroRightLeg-1;
heroLeftLeg=heroLeftLeg-1;
} else if (keyCode == DOWN) {
heroHead=heroHead+1;
heroBody=heroBody+1;
heroRightArm=heroRightArm+1;
heroLeftArm=heroLeftArm+1;
heroRightLeg=heroRightLeg+1;
heroLeftLeg=heroLeftLeg+1;
}
}
}
When I changed the hard-coded x values for the ending points in the lines representing Hero’s limbs to variable names, movement worked correctly. I stumbled across this fix as I was actually doing it to adhere to coding convention. So, now LEFT and RIGHT key-coded movement works (I am now a big believer in variables. LOL!):
AFTER
//draw hero character’s head
stroke(#768E12);
strokeWeight(1);
fill(#768E12);
ellipse(heroHead,349,8,8);
//draw hero character’s body
stroke(#768E12);
strokeWeight(1);
fill(#768E12);
rect(heroBody,360,10,10);
//draw hero character’s arms
stroke(#768E12);
strokeWeight(3);
line(heroLeftArm,358,heroLeftArm,368); //left arm
line(heroRightArm,358,heroRightArm,368); //right arm
//draw hero character’s legs
stroke(#768E12);
strokeWeight(3);
line(heroLeftLeg,368,heroLeftLeg,378); //left leg
line(heroRightLeg,368,heroRightLeg,378); //right leg}
BEFORE
//draw hero character’s head
stroke(#768E12);
strokeWeight(1);
fill(#768E12);
ellipse(heroHead,349,8,8);
//draw hero character’s body
stroke(#768E12);
strokeWeight(1);
fill(#768E12);
rect(heroBody,360,10,10);
//draw hero character’s arms
stroke(#768E12);
strokeWeight(3);
line(heroLeftArm,358,22,368); //left arm
line(heroRightArm,358,38,368); //right arm
//draw hero character’s legs
stroke(#768E12);
strokeWeight(3);
line(heroLeftLeg,368,28,378); //left leg
line(heroRightLeg,368,32,378); //right leg
}
Setting a speed to 1 was too slow, so I increased it to 3 and eventually 5. I won’t settle on a final speed until the next iteration of the project.
Adding Collision
I tweaked and added code based upon an example included in Processing documentation. While it was fairly clear to follow, I will need to work on more examples before I can come up with everything from scratch. I adjusted settings for gravity, random ball display and spring functions. Of course, I didn’t need another setup() {} or draw{} and to keep things neat, I will move the class/object data into a tab.**
**Update 1:
My class shows midterm projects tomorrow and I went from feeling extremely frustrated and anxious about not getting things to work to feeling relaxed and patient. First, I recognize that my attitude is pretty much killing my ability to enjoy what I am doing. Loosening up hasn’t been an easy concept for me to master, but I don’t think I am going to get very far this semester or for the remaining time in this program if I don’t.
Initially I wanted to create a whole level, but I think a level is probably a better final project idea given that I am just about caught up to where the syllabus is (minus one or two subjects). For tomorrow, I am just going to work on getting the hero character to move, balls to bounce and some kind of interaction between them. I spent way too much time trying to get the line to draw when the balls fall and bounce. While each worked separately, placing background code in the draw() { } method kept the balls from following a weird trailing behavior, but caused lines to streak. Placing background code in the setup() {} method did the opposite, causing the line to draw but trails followed the balls as they moved.
Another issue (now resolved) was getting a line to draw when the mouse was pressed. Initially, I had used the void mousePressed() {} method when I should have used an if statement. It is simple thing, but tricky for me as a novice.
I found that working everything out strictly using setup(){} and draw(){} were very useful, although time consuming. It actually helped me to think about how I would incorporate modular structure rather than create a big mess that I couldn’t read. It also helped me put together a simple sketch of my sketch (for lack of a better word) even though the pieces were not fully functioning as intended. Due to time constraints, I am going to finish as much as I can using objects, functions and arrays and then perhaps come back to finish the basic sketch as an exercise after.
So, changes in my original midterm idea mayinclude:
I’ll try to post screen shots and another update before tomorrow’s class. That was part of the assignment anyway. ; -D**

**Original post:
I had a couple of ideas for the ICM midterm project, but in the interest of doing something that can be completed in a week and expanded upon for the final, I am going to create a level (or three) of a game inspired by Trace, an iPhone/iPod Touch game by Kevin Calderone. The player creates their own platforms to get the character to navigate obstacles to an exit. The game is timed and you can compare scores vs other players after all levels are completed or as each level is completed.
In my game, Level, the scene will be created in Processing (of course). For the midterm, navigation is controlled by the arrow keys on the key board. A mouse controls the ability to draw a platform. Ultimately, I want to control navigation by embedding sensors in a mat to move the character left, right or jump as the player does or by using motion/IR sensors. To draw platforms, the user will either wear a glove that connects to a homemade track pad or IR sensors connected to switches or a Wii nunchuck. I would love to build a display-controller via an ad-hock whiteboard or something that borrow’s from Matt Parker’s Lumarca project.
I drew inspiration from a few people, including Plusea, who has some terrific projects on Instructables including a glove-touch controller. Johnny Lee inspired me to think about the DIY whiteboard and augmentation.
I have been interested in playing with ways to get physical game (such as board game) and video-game players to interact in one game. I started with a project idea in my PComp class and now that I have a few more concepts in Processing under my belt, I am looking forward to putting this together.**

The chalk level in Trace-- Screenshot from YouTube video by the makers of Trace

Touch finger trackpad-- Screenshot from Plusea's page on Instructables
Johnny Lee's Virtual Reality Demo

Johnny Lee's whiteboard hack

My MB connections

A PowerMac
We Mac fans are regarded as loving our Apple products for their simplicity, style and intuitiveness. So, I find it amusing that a friend and I both observed that the design (some might say bareness) of the towers for the Power Mac leave us both a bit confused when connecting peripherals. I have been using Macs for several years, as has he. I switched over to using laptops a long time ago and he still prefers to be tethered.
A few nights ago in the loft, I was preparing to transfer media via a mini to standard USB cable. As I thought about it, I realized that I didn’t really know where the proper ports were on the tower. I have pretty much fumbled around and connected by feeling around and plugging whatever works. USB? No problem. But, that is where it stops. I can’t tell you off the top of my head where to connect anything else!
I do not have the same issue with my first-generation Macbook. Everything is on either side of the keyboard and labeled accordingly with symbols. If I do stick something in the wrong location, I recognize it almost immediately.
All this is not to say that the Power Mac design is poor– it is just interesting to consider that many folks like myself may have been silently wondering the same thing to ourselves for years, perhaps not to battle the truly avid fans’ diehard loyalty to the brand due to its ease of use.

MicroTrack II
***Update: I am still having difficulty linking the files to my server. I am sure it is a basic mistake– I will have to tinker more later. I took more audio and the quality wasn’t that great after converting to mp3. I think it has something to do with multiple conversions.
I should have tried another mic, but initially I didn’t want to be seen with it. I actually recorded a whimsical conversation between Ethan and his friend, but I didn’t ask for permission, so publishing it is a no go for now.
Interestingly enough, a friend and I argued over “public” recordings, whether audio or visual. I understand that in many, if not most cases, things that happen in the public stay that way, but there is something troubling about the idea of grabbing a snap shot or audio segment of someone without asking for permission. Perhaps if there is no obvious way to identify the parties involved, it might seem less invasive, but it remains a touchy subject for plenty of people.
My friend received negative feedback on her blog from someone after posting an unsupsecting subway rider’s picture on her blog (she writes about life as a daily commuter in NYC). I think if she had just taken a shot below the head or out of focus where one can’t clearly identify the person, it might have been less controversial. Then again, celebrities have their faces plastered on magazines without permission all of the time. Where should the line be drawn?
I was filming Prayer in the Square a few weeks ago. Thousands of people show up for the event every year (this was the third and final year). As I raised my camera to record and panned around the crowd, a woman frowned and put her hand against my lense. On one hand, it annoyed me, but I could understand her not wanting to be recorded. Who knows where these footage will end up? Or, who knows what editing effects will be included? I am rambling… Back to the project.
When I was recording my Ethan playing bass, the playback was fine on the recorder but a lot of noise translated that I assumed would not appear. I ended up going with a last-minute recording from an ambient station. I also added something I made up. Both were edited using GarageBand on my computer but I played around with Audacity and ProLogic at my friend’s studio. ProLogic, and I suppose Sound Track Pro, seemed more intuitive because of similar visual interfaces (kind of) to GB. Audacity felt too PC for me, but I’ll give it another shot sooner than later.**
**Original post: Last week, I captured my train ride home from the loft. I mostly wanted to focus on the presence of ambient noise around me, something that I hardly notice when I read on my iPod Touch. Conversations, music, foot tapping, screeching train wheels– all seem to blend into white noise. It is amazing what people say in public, as if no one notices. The truth is, not many do unless as in my case, an assignment requires paying attention to surroundings. Unfortunately, my sound level settings were off and everything came out as a whisper. The second time around, I captured a 15 minute walk from the loft on Broadway into the train station at W. 4th Street. Eventually a few clips should appear below.
Items used:
M Audio MicroTrack II- a portable audio recording device
T-mic- a small mic with stereo inputs that connects to the top of the M Audio MicroTrack II
Skull Candy headphones- mine
GarageBand 06- audio editor (comes with Macbook)
iTunes 8 or 9 or whatever- I used iTunes to create a .wav file since GB only saves as .m4a and converts to aiff It was slightly annoying to have to go through so many steps just to save as a .wav file. Next time, I will use either Audacity or Logic Pro, but since GB and iTunes come installed, I didn’t have to shell out extra money or space to capture, edit and convert the audio, so I am satisfied. **
We’re gearing up for midterms and I am already thinking about a final project that can implement what I have been learning in each of my classes. We’ve been discussing serial output with Processing and Arduino. Next week, we should go into more depth which will be very helpful. More on that shortly.

Week 6 PhysComp Lab using Processing for Serial Output

Week 6 PhysComp Lab Serial Output using Arduino
For the week-5 assigned Comm Lab project, Mark and I worked on a stop motion involving a balloon, a girl and a revolt.
Initially, I wanted to work with a mixture of whiteboard and Play Doh, but we ended up using paper for the introduction and white board to express the characters. I was thinking of experiences to play off of (I am going to get it into a project before the semester is over). A grin and occasional laughs to himself pretty much indicated that Mark came up with an interesting, albeit morbid sketch.
We used colored pencils and graph paper for the title segment. We thought we would crumple paper and show it unfolding with dialog enclosed, as Mark initially suggested, but the roll up made the cut.
For the most part, the shots came out fine, but in the movie I snapped a shot of Mark animating a scene. It’s kind of funny and almost adds to the tone of the short, but it was completely accidental. In another project, I would like to leave in the hand shots.
While the project was fun, it amazed me how much time is required when you get into things. We used a simple USB camera, my Macbook, and a white board, capturing everything with iStopMotion. I created and edited the soundtrack in GarageBand and converted to a QT file. For a simple movie, we only took a couple of hours, but there are many ways it could have taken longer if we chose to create a more involved piece and to nail everything down to the last detail (like mixing the sound better).
I don’t know how I will find the time, but I aim to create a few more stop motion pieces merging various objects and techniques like Play Doh, white boards and pixilation. It was fun and I am thinking about creating an IF (interactive fiction) piece that incorporates stop motion.

Is this thing on???
This was a relatively simple lab assignment that would power a servo (180 degrees) when connected to an analog input switch. I used a potentiometer instead of the suggested flex sensor.
I ran into one problem after making sure power was connecting from the Arduino to the board. The breakout pin connectors were not long enough and so power wasn’t getting through. A quick chat with Chris C. and a few probes with the multimeter illuminated the problem. The fix: pushed the top pins on a table, forcing them to extend further out. Problem solved.
Here is a video:

Unblocked: a "stupid pet trick" project for my Phys Comp class at ITP.
The goal of this project (Unblocked) was to demonstrate an understanding of what was taught during the first three weeks in Physical Computing. That includes digital input, digital output and analog input. Although stupid pet tricks imply a device that would do something frivolous but amusing, I really wanted to build a simple game. I set out to create a physical representation of a game available on iPhone/iPod called Unblock Me. For the purposes of the lab, I call the game Unblocked. Initially, I wanted to recreate BoxedIn, but I was under the impression the assignment was due within a week rather than two, thus the “simpler” game was used.
The game:
The virtual game of Unblock Me involves moving around a group of blocks to get a particular one to the exit point (red colored block). There are certain directions each block is limited to moving in. Upon reaching the exit with the exit block, the player is moved to the next level.
Here is a video of level 3 being solved:
Long term idea:
Ultimately, I want to create a game that brings together players of video games with board game players. With Unblock Me, I thought this could be achieved on a basic level by creating physical pieces that can be moved. When the physical exit piece reaches the exit point, an LED will turn off. Another LED will increase in brightness, serving as a timer (abouy 30 seconds in this case). When the maximum brightness is reached, a series of LEDs will blink indicating time is up. The player has to get the exit block to the exit point before the lights blink in series.
The first version (what is being shown in class tomorrow) is simply a series of LEDs connected to an Arduino. Two wires are connected as a switch that turns off the first red LED if the pressure from the exit block makes contact. If it does not, the green LED continues to brighten until maximum brightness is reached. At that point, all of the LEDs blink in series.
A long term idea would be to make each block a self-contained unit that can communicate with other blocks. When the switch from the LED is activated, all of the blocks would blink multiple colors. If time is up, the blocks would all blink a red color, turn off completely or power lights on in a pattern that creates a sad emoticon and a sign connected to the game board would light up that says “Try Again”.
In addition to the physical pieces, two players could interact, one using the physical pieces and the other using a video game version. Each player’s move would impact the physical and digital pieces in real time.
In single player mode, a player could use the physical blocks to control what is happening on the screen or he/she could use the video game controller (iPod Touch/Iphone) to move the physical pieces.
Materials, Code, Lessons Learned (Read: Reflections):
Initially, I intended to use wood for the pieces and board. I was stuck at home sick and was limited to what was on hand. It turned out to be a good thing because I ended up spending a bit more time considering the process, materials and thinking of how important collaboration can be in creation.
I have to point out that my mom gets a huge shout out. She suggested I mock up the game before actually building it. To be honest, I didn’t really want to do it. I just wanted to get it done, but there is much to be said about mocking up a project with whatever you have as available resources. She served as an excellent collaborator and was both enthusiastic and encouraging.
The game was mocked up by cutting pieces of oak-tag paper in the form of the actual game pieces and board. It turned out that making the pieces fit to scale was a bit more difficult than initially anticipated (partially because I made the board rectangular when it should have been a square).
I used pretty much whatever came as packaging for my first generation Macbook (thanks again to Mom for the suggestions). It turned out to be great because the styrofoam (or whatever the cushioning was made of) was easier to manipulate and everything fit nicely into a handy container. I even added a strap that turned the box into a carrying container.
The problem with using the packaging material was that it stuck when rubbed together. So, I put cardboard over the playing surface and used a hot glue gun to bond pieces of cardboard to the block pieces. This made the playing surface a little smoother, but the pieces would move off of the surface. I created a boarder out of spare cardboard to keep the blocks inside. I cut a piece of one side of the board border out so the exit piece could move out to the exit point and touch the wire switches.
When my mom played the game, she kept picking pieces up (understandable due to the sticky factor) and moved them in directions she would not have been able to if she were playing the video game. To remedy that problem, I labeled each block and included arrows to indicate the correct direction each could be moved.
I drew a diagram of the starting position and final position of the pieces so players would know what they needed to come up with. It might be considered cheating a bit, but being that I did not make the pieces out of a better material for movement, I figured it was necessary to keep people engaged.
Chris Cerrito helped me jazz up the design a bit by suggesting the LED as a timer. He was very helpful because rather than just telling me the code, he made me think about how to write the instructions and comment everything out. If you can explain it to someone else, you probably understand what is going on.
Issues:
If I had a bit more time, I probably would have made the pieces out of wood, but I decided to try it and a couple of additions later, especially after I receive feedback from demoing the project. I consider what I am presenting tomorrow a very basic step that I can build upon on my own pace as I understand more about electronics and interactivity. For me, this was a good first step. I may include sound from the tone lab assigned in week 4 and include an accelerometer for the blocks by the time the semester ends. If I am feeling pretty good about it, I may use it as a final project.
Improvements to make will certainly include a less primitive way to connect the switches. I used scotch tape to position the wires in a way that will connect when a block touches at least one of them, but it’s a sketchy arrangement.
I will also try to build a digital interface that works with the physical components in a single and two player mode using Processing. I am almost certain I will need to become more knowledgeable in serial communication for Arduino before I can get to this point, but my goal stands.
I am also going to make the timer and “try again” indicators more interesting, extending beyond basic LEDs as the output for that aspect of the game.
As mentioned, I intend to make the blocks interactive as well, using light (various LEDs), sensors (accelerometer or force, perhaps?) and maybe sound (microspeaker and possibly a buzzer?).
I just thought of this, but I am going to toss it into the pot: to include a way for viewers to suggest moves that can be sent to the player (single, computer or two players) and receive feedback in the form of a move or a text or other output response to mark action or inaction by players.
I could go on, but I have class and still need to upload the photos. Code is included as a page on this blog, marked Stupid Pet Trick.
Photos:

Setting pieces on cardboard for game board.

Putting cardboard on the blocks for better movement.

Surface before cardboard was added.

Cutting pieces of styrofoam from packaging into blocks and labeling them.

More cutting.

Side pieces were removed to use for blocks.

Game materials sourced from old Macbook packaging.

Another reason for recycling-- Phys Comp!

It's a good idea to label the block movement directions.

Setting up the LEDs

You can't really tell, but the green LED is getting brighter.

Unblocked Starting position.

It's not Pablo Picasso...

Our first team assignment in Comm Lab was to create a comic using media from photo, video, or drawing (actually anything of our choosing).
Kody and I swapped some ideas back and forth including a parody subway experience involving obnoxious riders such as “seat squeezers” and “nail clippers”. Kody came up with a hysterical idea involving Maclaren strollers and Lady Gaga cell phone conversations.
Ultimately, we decided on the NYU takeover concept, inspired in part by an article Kody read that mentioned NYU’s increasing popularity (evidenced by a rise in applications) and expense (lots $$$$ involved).
On a drenched Saturday afternoon (I mean, it was POURING), we gathered to select a concept, determine scene locations and other details. It was Alumni Day, which produced a number of people on the street. There might have been about three people in the whole area due to the rain, but thanks to Alumni Day, there were just enough folks braving the elements with us.
We took about 100 shots over the course of an hour- most were of specific locations we felt were symbolic of NYU and NYC: cabs, NYU flag, torches, violet, street signs, buildings, Broadway, etc.
Kody edited in most of the graphics and coloring. The idea was to capture the notion of NYU taking over the city, thus, the increasing violet and NYU symbols as each frame progresses (ten years into the future).
I wanted to include people and money interacting with the reader in some form. That is how the guy with the thumbs up pose entered the scene. I also included captions at the bottom explaining the corner bubbles, but Kody made things flow a lot better by tweaking the dialog and bottom banner.
This was my first purposeful experience with Photoshop. I don’t own a copy, so I use whatever alternative applications are available to me. I also tend to use drawing programs more than image editing programs, so initially, the interface was a little strange. Unfortunately, once I started getting the hang of it, the assignment was finished. At least now I have something to work with.