Week 10 – Reading Response 

Week 10 – Reading Response 

 

A Brief Rant on the Future of Interaction Design:

This text provides thoughtful critiques of current visions of future technology. The author speaks about reassessing our hands, not as tools for swiping but as instruments of manipulation. One of the points the author made that I found interesting was the contrast between tying shoelaces by touch and trying to do it with numb fingers. This made me reflect on how easily we accept one-dimensional interactions with our devices. However, that being said, the main idea of the text was not to be anti-technology, but rather call for better, more human design. 

After reading this, I reflected on how I think about interactive design. I came to a realization that I have become extremely compliant in accepting the current state of touchscreens and “smart” devices when in reality, they usually feel flat and disconnected from our full human range. It made me question things like why we aren’t advancing into interfaces that are more engaging with the entire body and not just a single fingertip.

 

Responses: A Brief Rant on the Future of Interaction Design: 

This is a brutally honest text that embraces criticism, clarifying the purpose of the original piece and not proposing the solution, but rather sparking the right kind of thinking. Something I found memorable in this text was the author’s defense of incomplete visions, where rather than pretending to know the future, he leans into uncertainty. This encourages thorough research into unfamiliar areas like tangible interfaces, haptics, and dynamic materials. To me, it served as a reminder that good design doesn’t necessarily come from certainty, but from curiosity and exploration. I appreciated the comparison he made to photography in 1900, black-and-white film was revolutionary then, however, we didn’t stop there. 

This text made me reflect on the fact that valuable critique doesn’t always solve problems directly, but sometimes, it can just help us ask better questions. Additionally, it emphasized how modern design usually overlooks the human body instead of embracing it. We see many instances where rather than crafting tools that align with our physical capabilities, we’re designing around them. Overall, we all need to push ourselves to question what type of future we’re shaping, and if we are ready to imagine something a lot more meaningful than a world controlled by simple swipes and glass screens.

Week 10 – Group Musical Instrument

Week 10 – Group Musical Instrument

Our Concept

For our musical instrument, we were inspired by DJ sets and how DJs interact with their equipment during live performances. We wanted to bring that experience into a smaller format, so we built a mini DJ controller using an Arduino board.

Our DJ set includes:

  • potentiometer to control the volume, just like DJs do when they’re mixing tracks

  • LEDs that react to the sound changes, creating a responsive visual effect

  • piezo buzzer that produces the sound itself

Set-up

Code

GitHub

Week 9 – Reading Response

Week 9 – Reading Response

 

Physical Computing’s Greatest Hits (and misses):

This text offers us a thoughtful overview of the recurring themes in physical computing projects. The text highlights that ideas in physical computing, even when they seem overused, can still offer immense and creative potential. The author states that even if a project concept has been done before, the nuances of how an individual implements it can still lead to meaningful experiences. The text also highlights the significance of human gestures in making an engaging interface.  Projects that use physical computing are less about the technology and more about the quality of the interaction it creates, even if it is a subtle hand-waving over a sensor.

The author also touches on how we can expand the idea of interaction and what physical computing can be. Examples such as interactive paintings (like the Scooby-Doo-inspired projects) and remote hugs, demonstrate how we can stretch the concept of interaction. These projects show that physical computing can be a tool not just for entertainment, but for communication, empathy, and even therapy. Lastly, the author mentions that the evolution of tools and technology is extremely crucial. Projects that once took weeks to develop are now able to be prototyped in hours because of advances in technology. This evolution emphasizes that there is a change in the speed of innovation, and it also allows for an easier and broader range of creators to engage in physical computing.

Making Interactive Art: Set the Stage, Then Shut Up and Listen: 

This text serves as a significant reminder that interactive art is not about control, but rather about conversation. The role of the artist changes from just being a storyteller to becoming a stage-setter, creating spaces and experiences that invite, not dictate, meaning. For the artist, this means that instead of pre-defining what every element “means,” they come up with something that encourages exploration, play, and personal response. So instead, we should attempt to build something and then step back, observe, and listen to how others engage with it. This brings up the idea of intentional design, where the artist leaves behind clues or emotional cues, then steps away and allows various unique interpretations to emerge.

Week 9 – Analog Input & Output

Week 9 – Analog Input & Output

For this assignment, I decided to expand on my previous assignment of the unusual switch. I was thinking about a way to expand on it in a practical and useful way. Since I already had a digital sensor, for the analog sensor, I decided to use the light sensor. I was thinking that this would be a beneficial addition to the idea of the shoes because it allows it to not only glow when they are put on, but also has a built in LED light that automatically adjusts its brightness based on the ambient light. The idea of this is that the LED light is brighter when it is dark, so that you can easily find the shoes, and it dims when it is brighter because you have a clearer vision. This idea came from the countless times I’ve woken up in the middle of the night or early in the morning and wished I had a light source that would guide me without stumbling around for a switch in the dark.

I started by gathering the materials I needed: 

  • Arduino
  • Breadboard
  • Wires
  • Resistor (330k, 10k)
  • LED (multi-colour, blue)
  • Cardboard
  • Aluminum
  • Sponge
  • Tape
  • Scissors

I started by cutting out a piece of cardboard in the shape of a shoe, then cut two smaller cardboard pieces to act as the soles. I wrapped each sole in aluminum foil and built a sandwich-like structure. 

→ Taped the first aluminum sole to the base of the shoe

→ Placed a sponge layer over it as a barrier

→ Placed the second foil-wrapped sole on top

 

The sponge was necessary as it acts like a spacer that keeps the two foil layers apart unless pressure is applied (someone steps on it). When someone steps on the shoe, the pressure compresses the sponge, which allows the two foil layers to touch and complete a circuit.

After that, I set up the arduino and breadboard by starting off with what we have done in class. First, I made sure that the LED is connected to a digital output pin (pin 13) instead of directly to 5V. Then I added a wire to the bottom foil and connected it to GND and added another wire to the top foil and connected it to Digital Pin 2. Lastly I updated my code, and made sure to print in order to test the output, (0 = foot pressed→LED ON, 1 = no contact → LED OFF). 

Then, I added the light sensor circuit, connected a voltage divider using 10k and 330k resistors. I connected this to analog pin A2 and added a blue LED on pin 9, which allows me to control its brightness using analogWrite(). I chose this colour because I was hoping it would provide a more calming feeling. Using the Serial Monitor, I was able to verify that the LDR readings worked correctly. In the dark, the LED brightness increased and when I turned on a flashlight on the sensor, the brightness decreased. In the video demonstration, you can see that the brightness numbers of the LED were high when it was darker, and once I put a flash light on top of it, the brightness numbers went down. This allowed me to double check it was working correctly, even if the change was not as drastic.  

Code highlight:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
int brightness = map(lightLevel, 1023, 0, 0, 255);
analogWrite(ledAnalog, brightness);
int brightness = map(lightLevel, 1023, 0, 0, 255); analogWrite(ledAnalog, brightness);
int brightness = map(lightLevel, 1023, 0, 0, 255);
analogWrite(ledAnalog, brightness);

This allows the LED to fade dynamically depending on the amount of light in the room. The darker it gets, the brighter the LED glows, which is useful for locating the shoes at night.

 

Challenges and Future Improvements:

One of the challenges I faced was ensuring that the foil switch is stable. At first, it was difficult to get consistent readings from the foil layers. The sponge helped, but I also experimented with the positioning and pressure to make sure it only activated when stepped on.  Also, at first I thought the LED brightness was not changing, however, using the Serial Monitor I was able to confirm that it was working, even if the brightness was subtle. For future improvements, I was thinking that I could even add a soft chime when the shoe is worn in the dark so that it can enhance the feedback and add a helpful alert. Additionally, I could also work on the aesthetic aspect of it a little more. Overall, I am very satisfied with the way the shoe turned out.

Link to photos of the process

Link to final video demonstration

Week 8 – Unusual Switch

 

Week 8 – Unusual Switch

For this assignment, I had a hard time coming up with an unusual switch that didn’t require the use of hands. Eventually, I started thinking about switches that would actually be useful, something that I would genuinely want to use. That’s when I came up with the idea of creating a switch connected to a “shoe” that lights up an LED when you step on it or put it on, and turns off when you take it off. This idea came from the countless times I’ve woken up in the middle of the night or early in the morning and wished I had a light source that would guide me without stumbling around for a switch in the dark.

I started by gathering the materials I needed: 

  • Arduino 
  • Breadboard 
  • Wires 
  • Resistor 
  • LED 
  • Cardboard 
  • Aluminum
  • Sponge 
  • Tape 
  • Scissors  

I started by cutting out a piece of cardboard in the shape of a shoe, then cut two smaller cardboard pieces to act as the soles. I wrapped each sole in aluminum foil and built a sandwich-like structure. → Taped the first aluminum sole to the base of the shoe

→ Placed a sponge layer over it as a barrier

→ Placed the second foil-wrapped sole on top

 

The sponge was necessary as it acts like a spacer that keeps the two foil layers apart unless pressure is applied (someone steps on it). When someone steps on the shoe, the pressure compresses the sponge, which allows the two foil layers to touch and complete a circuit.

After that, I set up the arduino and breadboard by starting off with what we have done in class. First, I made sure that the LED is connected to a digital output pin (pin 13) instead of directly to 5V. Then I added a wire to the bottom foil and connected it to GND and added another wire to the top foil and connected it to Digital Pin 2. Lastly I updated my code, and made sure to print in order to test the output, (0 = foot pressed→LED ON, 1 = no contact → LED OFF). 

Link to photos of the process

Link to final video demonstration

 

 

 

Reading Response:

“Attractive Things Work Better” – Don Norman
Norman argues that attractive designs aren’t just superficial, but they actually improve usability. He mentions that when users find something aesthetically pleasing, they are a lot more likely to feel positive, be more creative, and continue problem-solving. However, he counters this emotional response with the logical-functional approach to usability, signifying that a good product needs to incorporate both usability and aesthetics.

He notes the psychological perspective, where he mentions the connection between emotional design and better problem-solving. This supports the idea that positive emotions lead to better cognitive performance. Additionally, his perspective encourages a switch from function-first design to a more holistic perspective where aesthetics and usability are interdependent. This idea has a significant influence on product design, branding, and architecture, proposing that the way something looks may influence not simply preference, but also performance and satisfaction.

“Her Code Got Humans On The Moon — And Invented Software Itself” – Robert McMillan

This article highlights Margaret Hamilton, a pioneering software engineer with her work at NASA during the Apollo missions in the 1960s being necessary to landing humans on the moon. She was the main developer of on-board flight software for the Apollo program at MIT’s Instrumentation Laboratory. She not only created the term “software engineering”,  but also helped set it up as a well-respected discipline. One of her most memorable moments was during Apollo 11 because her code was able to prevent a mission abort due to an overload in the spacecraft’s computer system. Due to her team’s powerful software design, she was able to ensure mission success regardless of unexpected errors.

Hamilton’s story is extremely impactful because her exceptional contributions were taking place during a time when both women in STEM and the concept of “software” were still unexplored. Her work was able to set the basis of modern software engineering as well as challenge gender norms. She was an extremely innovative individual who introduced various new ideas including prioritising tasks within software, which assisted in managing the Apollo computer’s limited memory. While her work was initially under appreciated, it is now commemorated as being crucial to not only the space race but also the evolution of computing. Her story highlights the significance of resilience and acknowledging the “what ifs” in technology.

Midterm Project – Cat Rescue Game

 

Midterm Project – Cat Rescue Game

For my midterm project, I was very excited to create a game based on something that I love, cats! As I have grown up and lived in Abu Dhabi for half my life, I have noticed that there are a lot of stray cats. So with this in mind, I wanted to design a game where the player walks around a city, rescues stray cats, and takes them to a shelter. I was inspired by a photography project I completed last semester about the spirit of street cats in Abu Dhabi. I went around the city in Abu Dhabi and captured these cats’ lives and the environment they are in. (link to the photos). The game combines movement mechanics, object interactions, and a simple pet care system. The goal of the game is to rescue and rehome all the stray cats in order to win the game. I started this midterm project by drawing a rough sketch of how I wanted it to look like, and the various screens I wanted to implement. 

Link to sketch:

Midterm Sketch

 

Final Game:

Link to final game

Essentially, my game consists of three main screens, the start, game, and restart screen. I wanted a specific look for my background that I was not able to find online, so I decided to create my own. For both the start screen and the game background screen, I used Illustrator to make various shapes and used some images like trees or garbage bins. Then I converted these to PNG files so that I was able to upload them into p5.js and use them in my code. For the shelter, I used different shapes to make it look like a house. Additionally, I made the start screen display a box with on-screen text explaining how to play the game. Similarly, the restart screen also has a circle with on-screen text showing that you won, and a button to restart. For the interaction aspect of my project, I implemented a way for the player to control the girl using the arrow keys on the keyboard to move around. The stray cats are located at random locations in the city and if the girl touches a cat, it is rescued and sent to a shelter. I also used happy, chill background music that I found fitting to the game that starts once you press “Start Game”.

Overall I am extremely satisfied with the way that my final game turned out. Something I am particularly proud of is that instead of using pre-made designs from the internet, I designed my own backgrounds in Illustrator, which gives my game the unique quality I was seeking. Also, I am proud that I was able to successfully implement a collision detection system that ensures that once the player rescues a cat, it gets added to the shelter. I also liked the three-screen system (Start → Game → Restart) which provides the game with a clear structure. Lastly, I am extremely proud that I was able to draw inspiration from my real-life experiences in Abu Dhabi, which makes the game more unique and personal to me. I was able to connect my previous photography project and this game, linking different creative disciplines. I like that my game has an underlying story about spreading awareness about stray cats, which adds an emotional layer to my project.

 

Car class (which represents the girl’s movement):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
class Car {
constructor() {
this.x = width / 2;
this.y = height - 80;
this.size = 50;
}
move() {
if (keyIsDown(LEFT_ARROW)) this.x -= 5;
if (keyIsDown(RIGHT_ARROW)) this.x += 5;
if (keyIsDown(UP_ARROW)) this.y -= 5;
if (keyIsDown(DOWN_ARROW)) this.y += 5;
// Keep girl inside canvas
this.x = constrain(this.x, 0, width - this.size);
this.y = constrain(this.y, 0, height - this.size);
}
display() {
image(carImage, this.x, this.y, 60, 100);
}
class Car { constructor() { this.x = width / 2; this.y = height - 80; this.size = 50; } move() { if (keyIsDown(LEFT_ARROW)) this.x -= 5; if (keyIsDown(RIGHT_ARROW)) this.x += 5; if (keyIsDown(UP_ARROW)) this.y -= 5; if (keyIsDown(DOWN_ARROW)) this.y += 5; // Keep girl inside canvas this.x = constrain(this.x, 0, width - this.size); this.y = constrain(this.y, 0, height - this.size); } display() { image(carImage, this.x, this.y, 60, 100); }
class Car {
  constructor() {
    this.x = width / 2;
    this.y = height - 80;
    this.size = 50;
  }

  move() {
    if (keyIsDown(LEFT_ARROW)) this.x -= 5;
    if (keyIsDown(RIGHT_ARROW)) this.x += 5;
    if (keyIsDown(UP_ARROW)) this.y -= 5;
    if (keyIsDown(DOWN_ARROW)) this.y += 5;

    // Keep girl inside canvas
    this.x = constrain(this.x, 0, width - this.size);
    this.y = constrain(this.y, 0, height - this.size);
  }

  display() {
    image(carImage, this.x, this.y, 60, 100);
  }

 

Throughout developing this game, I faced a few challenges that required me to problem-solve. One of the issues was ensuring that the text box and circle were layered properly over the background so they remained visible. It took me some time to adjust their positioning and layering so that they were correctly visible on the screen. Another challenge I came across was making sure that the girl’s movement worked smoothly in all directions (up, down, left, and right). Debugging this movement system took some trial and error, but I was able to fix it. Additionally, I ran into smaller, frustrating issues, like file name errors, for example, a missing capital letter caused images not to load properly. Debugging these minor but important details taught me the importance of careful file management. However, I was able to overcome these challenges and successfully build a functioning game. 

If I had more time, there are a few features I would have liked to add to enhance the user experience. One idea was to expand on the rescue aspect, right now, when the cats reach the shelter, they are considered rescued. However, I would have liked to add an extra step where the player needs to care for the cats (feeding them, treating injuries, etc.) before they are fully rescued. Another improvement would be to introduce different difficulty levels (Easy, Medium, Hard) by adding obstacles that the player must overcome to rescue the cats. Also, smaller interactive details, like the cats meowing when clicked, would also add to the game. Even without these extra features, I am really happy with how my game turned out. This project challenged me to problem-solve, debug, and think creatively, and I’m proud of what I was able to accomplish.

 

Music citation:

Music track: Marshmallow by Lukrembo

Source: https://freetouse.com/music

Week 5 – Computer Vision for Artists and Designers

Week 5 – Reading Response

->  Computer Vision for Artists and Designers

I believe that computer vision differs from human vision in several ways. First, unlike human vision, which is connected to cognition, experience, and contextual understanding, computer vision processes images as raw pixel data. This means that it does not know what it is looking at unless it is programmed to recognise specific patterns. Second, humans are able to recognise objects in various lighting conditions and angles, while computer vision usually has a hard time with these unless trained on extensive datasets. Additionally, human vision uses sensory data in real time with prior knowledge, while computer vision relies on predefined algorithms to take out meaningful information. Lastly, on instinct, humans are able to infer meaning from abstract images or recognise emotions in facial expressions, but computer vision needs complex models to achieve basic levels of recognition.

Due to the fact that computer vision lacks human intuition, we can improve its ability to recognise and track objects. This may be done by using lighting conditions to ensure the subject is distinguishable from the background (Myron Krueger’s Videoplace). Also, you could enhance visibility in low-light conditions by using infrared light, which is not visible to humans but detectable by cameras. Computer vision’s ability to track people and objects has a significant impact on interactive art. This means that artists can now use vision-based systems to create interactive installations that respond to body movement, voice, or gestures. It can also be used to highlight issues of privacy, surveillance, and control (Sorting Daemon). Overall, computer vision can reshape interactive art by allowing new forms of engagement, however, its surveillance capabilities also raise questions about privacy and ethics. This means that while this technology enables creative expression, it can also be a tool for control, highlighting the importance for artists/designers to handle these implications thoughtfully.

Week 5 – Midterm Progress 

Week 5 – Midterm Progress

Concept:
For my midterm project, I wanted to create a game based on something I love, cats! Growing up and living in Abu Dhabi, I’ve noticed that there are a lot of stray cats, so I wanted to design a game where the player drives around a city, rescues stray cats, and takes them to a shelter. I got inspired by a photography project I did last semester about the spirit of street cats in Abu Dhabi. I went around the city in Abu Dhabi  and captured these cats lives and the environment they are in. (link to the photos). The game will combine movement mechanics, object interactions, and a simple pet care system. The goal of the game is to rescue and rehome all the stray cats before the game ends.

User Interaction and Design:
For the interaction, I would like to implement a way for the player to control the car using arrow keys to move around. The stray cats will be at random locations in the city and if the car touches a cat, it is rescued and sent to a shelter. I was also thinking of adding more to the game, where inside the shelter, the player can click on the cat to heal or feed them. Finally, once all the cats are healthy, the game ends and displays a win screen.
→ Visual:
Start Screen: Shows the game instructions and a “start” button.
Game Screen: Has a city background with a moving car, stray cats, and a shelter section.
End Screen: Congratulates the player and has a restart button.

Code Structure:
In order to ensure the code is organized, I plan to use Object-Oriented Programming by creating three main classes.
Car Class:
– Player movement (arrow keys).
– Checks for collisions with pets.
Pet Class:
– Stores pet location and condition (hungry, injured).
– Moves to the shelter when rescued.
Shelter Class:
– Displays rescued pets.
– Tracks pet status and healing progress.

Challenging Part & How I’m Addressing It:
I think that the most frightening part of this project is implementing collision detection between the car and pets. Because the game involves movement, I need to find a way to detect when the car “rescues” a pet. To try to solve this collision detection, I wrote a small sample using dist() function to check if two objects are close enough to interact. This will reduce my risk by confirming that object detection works before I use it in the full game.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
function checkCollision(car, pet) {
let d = dist(car.x, car.y, pet.x, pet.y);
return d < 30; // If distance is small, they collide
}
function checkCollision(car, pet) { let d = dist(car.x, car.y, pet.x, pet.y); return d < 30; // If distance is small, they collide }
function checkCollision(car, pet) {
let d = dist(car.x, car.y, pet.x, pet.y);
return d < 30;  // If distance is small, they collide
}

Week 4 – Reading Response

Week 4 –  The Design of Everyday Things, The Psychopathology of Everyday Things

In Chapter 1, Don Norman introduces the idea of human-centered design (HCD) and claims that a well-designed object should be intuitive and easy to use. He emphasizes how poor design may lead to confusion and frustration, which highlights that when people are struggling to use a product, it’s often the fault of the designer, not the user. Additionally, there are a few key principles that were introduced including affordances, signifiers, feedback, and conceptual models. Affordances refer to the properties of an object that indicate how it should be used (a handle affords pulling). Signifiers give clues about how an object functions, such as labels or icons. Feedback ensures that users receive a response when they interact with a design (a light turning on when a button is pressed). Lastly, conceptual models help users predict how an object will behave based on previous experiences. Norman critiques some common usability failures, such as confusing doors (push vs. pull) and complicated appliances. He believes that a well-thought-out design prioritizes clarity, simplicity, and usability rather than just aesthetics.

His valuable insights point out how much bad design impacts daily life. Usually, people will blame themselves for struggling with an object when, in reality, the issue lies in poor design choices. This made me think about how many times I’ve encountered objects that don’t work the way I expect them to, especially digitally where buttons are unresponsive. The chapter reinforces the idea that usability should always come before aesthetics in design. One thing that I find annoying is some modern car systems. Many car manufacturers have replaced physical buttons with touchscreen controls for functions like climate control. The reason that this is frustrating is that they often have poor menu structures, which require you to open multiple tabs for simple tasks like changing the AC temperature. There are various ways to improve this with one being to simply bring back physical buttons for frequently used functions like temperature, volume, and hazard lights. Another thing that could be done is the use of haptic feedback on touchscreens so users can feel when they’ve selected something. Applying Norman’s principles to interactive media can significantly improve usability and user experience. For example, buttons should look clickable, and the links should be distinguishable. Loading animations, confirmation messages, or vibrations on a touchscreen can signal that an action has been completed. Similarly, error messages should be clear and instructive and tell users what went wrong and how to fix it. By prioritising usability over aesthetics, designers are able to create interactive media that feels intuitive rather than frustrating.

Week 4 – Displaying text

Week 4 – Displaying Text

For this project, I wanted to make something fun, so I created a random law generator. The goal was to create absurd but still convincing-sounding fake laws that feel like they could exist in some strange town. The program works by randomly generating a town name, a weird law, and an exception. When the user clicks on the canvas, a new random law appears. As for the visual aspect, the law is displayed on a lined piece of paper with a pencil next to it. I added a brown background to make it look like the paper is resting on a wooden table.

One of the main parts of the project is how the laws are randomly generated and displayed:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
function generateLaw() {
let town = random(towns);
let action = random(illegalActions);
let exception = random(exceptions);
randomLaw = `In the town of ${town}, it is illegal to ${action} ${exception}.`;
}
function generateLaw() { let town = random(towns); let action = random(illegalActions); let exception = random(exceptions); randomLaw = `In the town of ${town}, it is illegal to ${action} ${exception}.`; }
function generateLaw() {
  let town = random(towns);
  let action = random(illegalActions);
  let exception = random(exceptions);

  randomLaw = `In the town of ${town}, it is illegal to ${action} ${exception}.`;
}

This selects a random town name from the towns array and picks a random illegal action from illegalActions. Then it selects a random exception from exceptions and combines them into an absurd law.

I faced a few challenges I had to overcome, including correctly aligning the pencil. At first, the pencil eraser and tip didn’t align properly with the body, so I had to adjust the x and y positions carefully to ensure the pencil remained vertical. Additionally, the lines on the paper were too bold, which made it feel unrealistic so I had to adjust the stroke colour and spacing.

Overall, I am satisfied with the way this turned out as it was a fun way to practice generative text output in p5.js. I learned how randomization in programming can create entertaining and unexpected results. Additionally, I had another chance to explore loops, which were useful for drawing repetitive elements like notebook lines. However, there are a few things I could improve on next time like including a hand holding the pencil or making the paper slightly curved for a more realistic effect. I also thought of an interesting element I could add, where I may add a “law history” section that can keep track of the previous laws.