Just finished presenting the ZigBee Internet Gateway at Sketching in Hardware 2010, held at the Encounter dome at LAX airport. My presentation covered the basics of (essentially) bringing web services to the Arduino via a ConnectPort and XBee radios from Digi International. The Gateway is intended for use in schools, design firms, hacker spaces or art venues. Some engineers from Sparkfun wanted to know if this was something I’m selling. Nope, it’s all going to be free.
Search Results for 'Xbee'
Whole Class:
Students:
Adi Marom
- Imagining Sociable Objects
- Doorbell Projects
- Romance Lighting Sensor
- Observation Assignment
- Final Project
Adib Dada
- Imagining Sociable Objects
- Doorbell Projects
- Romance Lighting Sensor
- Simple Sensor Network
- Observation Assignment
- Final Project
Asli Sevinc
- Imagining Sociable Objects
- Doorbell Projects
- Romance Lighting Sensor
- Observation Assignment
- Final Project
Laewoo Kang
- Imagining Sociable Objects
- Doorbell Projects
- Romance Lighting Sensor
- Observation Assignment
- Final Project
Liangjie Xia
- Imagining Sociable Objects
- Doorbell Projects
- Romance Lighting Sensor
- Sensor Network
- Observation Assignment
- Final Project
Matt Ganucheau
- Imagining Sociable Objects
- Doorbell Projects
- Romance Lighting Sensor
- Observation
- Final Project
Michael Martinez-Campos
- Imagining Sociable Objects
- Doorbell Projects
- Romance Lighting Sensor
- Sensor / Actuator
- Observation Assignment
- Final Project
Michael Lewis
- Imagining Sociable Objects
- Doorbell Projects
- Romance Lighting Sensor
- Simple Sensor Network
- Observation Assignment
- Final Project
- Imagining Sociable Objects
- Doorbell Projects
- Romance Lighting Sensor
- Observation Assignment
- Final Project
Morgen Fleisig
- Imagining Sociable Objects
- Doorbell Projects
- Nap Doorbell
- Romance Lighting Sensor
- Observation Assignment
- Final Project
Richard Upchurch
- Imagining Sociable Objects
- Doorbell Projects
- Romance Lighting Sensor
- Observation Assignment
- Final Project
Sarah Dahnke
- Imagining Sociable Objects
- Doorbell Projects
- Romance Lighting Sensor
- Observation Assignment
- Final Project
Sebastian Buys
Print This Post
|
Sociable Objects Workshop Spring 2010 NYU, Tisch School of the Arts Interactive Telecommunications Program v1.0 |
Instructor: Rob Faludi rob@faludi.com 212-989-6888 |
Course Description:
Sociable objects are devices that share. They can talk to each other, gain information about their context and react accordingly. Recent advances in wireless mesh networks have created the potential for a massively interconnected world of easy information sharing. Cheap communications, high reliability, unique addressing, small size, standardization, and routing features combine to enable exciting new interactions. Developers of toys, wearables, performance devices, portables, network objects and sensor arrays can take advantage of radio mesh networking to design more interesting, better informed and more complex behaviors for their projects. This course explores devices that connect with and respond to each other. The technical focus will be on ZigBee wireless mesh networks. Interconnections with other platforms and devices will be examined as appropriate. Students will gain an expertise in all functions of the ZigBee system to facilitate smart and novel behaviors in their projects. Through a series of weekly exercises, students will build skills and explore the challenges and delights of mutual connectivity. As a final project, the class will construct dynamic device networks. Prior experience with basic electronics and physical computing is helpful, but not required. Most labs and projects involve group work, so students should be ready to collaborate extensively as they experiment on the cutting edge of device interaction.
Note that this course will be taught as a hands-on workshop, with projects taking place both in and outside of the classroom.
Goals:
Students will learn technical skills in wireless networking, programming and serial communication. They will gain a deeper understanding of how collaboration can enrich information in devices and enhance creativity in people. Assigned projects will explore networking, collaborative efforts and the sharing of data and behaviors between disparate systems.
Class Schedule:
- Intro, overview, basics and background: class introduction, student introductions, overview & syllabus review, about Sociable Objects, about ZigBee, buying an XBee, buying an adaptor, terminal programs, addressing.
Assignments: Imagining Sociable Objects; purchase two XBee ZB Radios (Series 2) and one adaptor - Imagining Sociable Objects Presentations: presentation of assignments with experimental 360º critique exercise
- XBee Configuration: PAN ID assignment, firmware updates, basic configuration, pair exercise
Assignments: pairs exercises - ZigBee Arduino: exercise review, math for mesh, firmware updates, ZigBee and Arduino, breakout board hookups, doorbell exercises
Assignment: doorbell assignments - Input/Output: exercise review, I/O Mode, I/O demo, API mode overview, API basics, I/O asssignment.
Assignment: romantic lighting sensors - Sensor Networks: assignment review, API for I/O mode, API for remote AT commands, types of networks, simple sensor network.
Assignment: Simple Sensor Network - End Devices, Sleep and Actuation: sensor network workshop, collaboration, sleep mode, end devices, direct actuation
Assignment: Sensor/Actuator Proposals - Mesh Networking: sensor shortcuts, data reporting, review project proposals, floor-wide sensor network workshop, organize observation assignment
Assignment: Observation Assignment - ZigBee Internet Gateway: overview of gateways, basic, Twitter, SMS, voice, email, basic ConnectPort, easy connections to the Internet
Assignment: Sensor/Actuator Network - Advanced ZigBee: multicast, clusters and endpoints, security, profiles. Ranging with RSSI and output strength.
Assignment: Final Project ideas - Lecture Wrap-up: Topics by request, reviewed and covered in more detail. Possibly power management, advanced serial, TCP/IP basics, resources.
Assignment: Final Project proposals - Production workshop with technical reviews
Assignment: Final Project - Final Presentations
- Final Presentations
Assignments:
Imagining Sociable Objects: Think of a system of things that communicate. Mock it up and present it to the class. Clearly and physically show what it is, how it would work and communicate the experience of using it, interacting with it and living in a world where it was real. Focus on a great idea and a great presentation. Please, no scrolling through a web page. Give us the story.
Doorbell Projects: Working in pairs, create a basic doorbell using ZigBee and Arduino, enhance this doorbell with roundtrip feedback so the visitor knows that the buzzer has rung. Next, create a doorbell with a nap mode with a silent alert for regular visitors but an eventual wakeup for insistent visitors. Finally, create an advanced doorbell of your choosing, perhaps one that only responds to a secret code, one with a history feature, one that sends an SMS or Tweets, one that provides a text display, or anything else that builds a better doorbell. Use this assignment as an opportunity to get comfortable with round-trip communications, and to think about enhancing practical interactions.
Simple Sensor Network: Using ZB XBees we will create mesh networks that cover large areas including the boards, enclosures, mountings and documentation. The end result will be a robust infrastructure that anyone could understand, use and extend. Each student will take on an area of responsibility to collaborate on making this network.
Observation Assignment: A one-week project chosen from a deck of project cards. Cards will be selected at random, with a white elephant process to exchange with classmates. Each project must be completed by the next class, including your documentation. The goal will be to notice something new about the world, and to begin preparing you for your final project ideation and iterations.
Sensor / Actuator Project: Generate an interactive system using the on-floor ZB XBee mesh network. One group will create a network of sensors that detect something about the world and use it to generate a data feed. The second group will obtain that data and produce a network of outputs or actuators that respond. The two groups will need to collaborate internally and with each other. Consider choosing work roles. Remember the importance of clear communications protocols in the data handoff. Be careful not to take on more work than can be done in a week, including troubleshooting. Work in stages, getting simple success as early as possible. Help each other as often and much as you can.
Final Project: work in groups to create a system or device of your choosing. Your creation should use multiple nodes to create a sensing network, display network or complex interaction. This is potentially a challenging assignment in a short period of time so consider what you know about collaboration. Keep moving forward.
Documentation:
- links to documentation for each completed assignment must be provided for posting in the student work area
- documentation is due within one week after completing each assignment
Grading:
Class participation & attendance 30%
Presentations and assignments 20%
Projects and documentation 30%
Final Project 20%
Office Hours
To Be Announced
Laptops
Can be open during lectures but should be closed when your fellow students are speaking or presenting.
Making the Most of It:
For best results, come to class early, participate in discussions, ask lots of questions, offer copious and constructive feedback, stretch yourself and have fun.
SELECTED READINGS
- Economist articles: http://rob.faludi.com/classes/sociableobjects/readings/Economist_Wireless_articles_2007-4-26.pdf
- Weiser, M. The Computer for the 21st Century: http://www.ubiq.com/hypertext/weiser/SciAmDraft3.html
- There Will Come Soft Rains – Bradbury: http://rob.faludi.com/classes/sociableobjects/readings/Bradbury_Soft_Rains_1950.pdf
Math and Communication Protocols:
- Binary: http://www.swansontec.com/sbinary.htm
- Binary in Pink: http://www.mathsisfun.com/binary-digits.html
- Binary Game: http://forums.cisco.com/CertCom/game/binary_game_page.htm
- Hex Headquarters: http://www.intuitor.com/hex/index.html
- Finger Binary: http://en.wikipedia.org/wiki/Finger_binary
- http://www.intuitor.com/counting/
- Levity: http://www.qwantz.com/archive/001038.html
- XBee ZB Manual: http://ftp1.digi.com/support/documentation/90000976_C.pdf
- Demystifying 802.15.4 and ZigBee:
http://www.digi.com/pdf/wp_zigbee.pdf - XBee Antenna Considerations:
http://ftp1.digi.com/support/images/XST-AN019a_XBeeAntennas.pdf - Tom Igoe’s “Making Things Talk”, Chapter 6, pages 192-206: http://rob.faludi.com/classes/sociableobjects/readings/MTT_Chp6_FI_ti04.pdf
- Tom Igoe’s “Making Things Talk”, Chapter 7: http://rob.faludi.com/classes/sociableobjects/readings/MTT_Chp7_F1_ti04.pdf
- The Internet of Things: http://www.faludi.com/classes/networkobjects/readings/Internet_of_Things-SciAmer_2004.pdf
- X-CTU Guide:
http://ftp1.digi.com/support/documentation/90001003_A.pdf - Vehicle Warning System Trialed: http://news.bbc.co.uk/2/hi/technology/6461831.stm
- ‘Smart dust’ to explore planets: http://news.bbc.co.uk/2/low/science/nature/6566317.stm
- Everything, Everywhere: http://rob.faludi.com/classes/sociableobjects/readings/Nature_Everything_Everywhere_2006.pdf
- Cooperative Artifacts: http://rob.faludi.com/classes/sociableobjects/readings/Cooperative_Artefacts_2004.pdf
- “How Management Teams Can Have a Good Fight” from HBR: http://rob.faludi.com/classes/sociableobjects/readings/How_Management_Teams_Can_Have_a_Good_Fight.pdf
- Zigbee: “Wireless Control that Simply Works”: http://rob.faludi.com/classes/sociableobjects/readings/Zigbee_Wireless_That_Works-ZMDAmerica.pdf
- http://en.wikipedia.org/wiki/ZigBee
- http://www.zigbee.org/
- Tinker: A Tool for Designing Data-Centric Sensor Networks, Jeremy Elson, 2006:http://research.microsoft.com/apps/pubs/default.aspx?id=70237
- ConnectPort User’s Guide:
- http://ftp1.digi.com/support/documentation/90000832_a.pdf
- Python Programmer’s Guide (for ConnectPort):
- http://ftp1.digi.com/support/documentation/90000833_b.pdf
Robert Faludi is a professor in the MFA program at the School of Visual Arts in Manhattan and in the Interactive Telecommunications program at NYU. He specializes in behavioral interactions through physical computing and networked objects. He frequently consults on interactive projects including recent work in entertainment, architecture and toys. Faludi is currently developing device networking and customer engagement systems for GroundedPower, a smart energy monitoring start-up. His work has appeared in The New York Times, Wired Magazine, Good Morning America, and BBC World among others. He is a co-creator of LilyPad XBee wearable radios, and Botanicalls, a system that allows thirsty plants to place phone calls for human help.
Students:
- Article Assignment
- Arduino Data Gathering
- Self Portrait
- Discovery Seeker
- √ UCAIHS Certification
- Quincunx
Dharmarajan Ayakkad
- Article Assignment
- Arduino Data Gathering
- Self Portrait
- Data Gathering Redux
- Discovery Seeker
- √ UCAIHS Certification
- Quincunx
Eun Joo(EJ) Lee
- Article Assignment
- Arduino Data Gathering
- Self Portrait
- Data Gathering Redux
- Discovery Seeker
- Discovery Redux
- √ UCAIHS Certification
- Quincunx
India Amos
- Article Assignment
- Arduino Data Gathering
- Self Portrait
- Data Gathering Redux
- Discovery Seeker
- √ UCAIHS Certification
- Quincunx
Michael Doherty
- Article Assignment
- Arduino Data Gathering
- Self Portrait
- Data Gathering Redux
- Discovery Seeker
- √ UCAIHS Certification
- Quincunx
Morgen Fleisig
- Article Assignment
- Arduino Data Gathering
- Self Portrait
- Data Gathering Redux
- Discovery Seeker
- √ UCAIHS Certification
- Quincunx
Zoe Fraade-Blanar
- Article Assignment
- Arduino Data Gathering
- Self Portrait
- Discovery Seeker
- Discovery Second Round
- √ UCAIHS Certification
- Quincunx
Print This Post
|
Sociable Objects Workshop Summer 2009 NYU, Tisch School of the Arts Interactive Telecommunications Program v1.1 |
Instructor: Rob Faludi rob@faludi.com 212-989-6888 |
Course Description:
Sociable objects are devices that share. They can talk to each other, gain information about their context and react accordingly. Recent advances in wireless mesh networks have created the potential for a massively interconnected world of easy information sharing. Cheap communications, high reliability, unique addressing, small size, standardization, and routing features combine to enable exciting new interactions. Developers of toys, wearables, performance devices, portables, network objects and sensor arrays can take advantage of radio mesh networking to design more interesting, better informed and more complex behaviors for their projects. This course explores devices that connect with and respond to each other. The technical focus will be on ZigBee wireless mesh networks. Interconnections with other platforms and devices will be examined as appropriate. Students will gain an expertise in all functions of the ZigBee system to facilitate smart and novel behaviors in their projects. Through a series of weekly exercises, students will build skills and explore the challenges and delights of mutual connectivity. As a final project, the class will construct dynamic device networks. Prior experience with basic electronics and physical computing is helpful, but not required. Most labs and projects involve group work, so students should be ready to collaborate extensively as they experiment on the cutting edge of device interaction.
Note that this course will be taught as a hands-on workshop, with projects taking place both in and outside of the classroom.
Goals:
Students will learn technical skills in wireless networking, programming and serial communication. They will gain a deeper understanding of how collaboration can enrich information in devices and enhance creativity in people. Assigned projects will explore networking, collaborative efforts and the sharing of data and behaviors between disparate systems.
Class Schedule:
- Intro, overview, basics and background: class introduction, student introductions, overview & syllabus review, about Sociable Objects, about ZigBee, buying an XBee, buying an adaptor, terminal programs, addressing.
Assignments: Imagining Sociable Objects; purchase two XBee ZB Radios (Series 2) and one adaptor - XBee Configuration: assignment presentations, PAN ID assignment, firmware updates, basic configuration, pair exercise, doorbell description
Assignments: pairs exercises, begin doorbell assignments - ZigBee Arduino: exercise review, math for mesh, firmware updates, ZigBee and Arduino, breakout board hookups, doorbell exercises
Assignment: finish doorbell assignments - Input/Output: exercise review, I/O Mode, I/O demo, API mode overview, API basics, I/O asssignment.
Assignment: romantic lighting sensors - Sensor Networks: assignment review, API for I/O mode, API for remote AT commands, types of networks, simple sensor network.
Assignment: Simple Sensor Network - End Devices, Sleep and Actuation: sensor network workshop, collaboration, sleep mode, end devices, direct actuation
Assignment: Sensor / Actuation Proposals - Mesh Networking: sensor shortcuts, data reporting, review project proposals, floor-wide sensor network workshop, organize card assignment
Assignment: Card Assignment 1 - ZigBee Internet Gateway: overview of gateways, basic, Twitter, SMS, voice, email, basic ConnectPort, easy connections to the Internet
Assignment: Sensor/Actuator Network - Advanced ZigBee: multicast, clusters and endpoints, security, profiles. Ranging with RSSI and output strength.
Assignment: Final Project proposals - Lecture Wrap-up: Topics by request, reviewed and covered in more detail. Possibly power management, advanced serial, TCP/IP basics, resources.
Assignment: Final Project
11.Production workshop with technical reviews
12.Final Presentations
Assignments:
Imagining Sociable Objects: Think of a system of things that communicate. Mock it up and present it to the class. Clearly and physically show what it is, how it would work and communicate the experience of using it, interacting with it and living in a world where it was real. Focus on a great idea and a great presentation. Please, no scrolling through a web page. Give us the story.
Doorbell Projects: create a basic doorbell using ZigBee and Arduino, enhance this doorbell with roundtrip feedback so the visitor knows that the buzzer has rung. Next, create a doorbell with a nap mode with a silent alert for regular visitors but an eventual wakeup for insistent visitors. Finally, create an advanced doorbell of your choosing, perhaps one that only responds to a secret code, one with a history feature, one that sends an SMS or Tweets, one that provides a text display, or anything else that builds a better doorbell. Use this assignment as an opportunity to get comfortable with round-trip communications, and to think about enhancing practical interactions.
Simple Sensor Network: Using ZB XBees we will create a mesh network that covers the ITP floor. Everything will be created to be permanent including boards, enclosures, mountings and documentation. We will test for redundancy, stability, extensibility and usability. The end result will be a roust infrastructure that anyone at ITP can understand, use and extend. Each student will take on an area of responsibility to collaborate on making this permanent installation
Card Assignments: one-day projects inspired by a phrase from a deck of inspiration cards. Cards will be chosen at random, with a white elephant process to exchange with classmates. Each project must be completed by the next class,including your documentation, so think small. All projects need a name, public documentation, and have to be demonstrated by the deadline. Scale your ideas to fit the time allotted and you’ll be impressed with what you can accomplish.
Sensor / Actuator Project: Generate an interactive system using the ZB XBee mesh network we created, . One group will create a network of sensors that detect something about the world and use it to generate a data feed. The second group will obtain that data and produce a network of outputs or actuators that respond. The two groups will need to collaborate internally and with each other. Consider choosing work roles. Remember the importance of clear communications protocols in the data handoff. Be careful not to take on more work than can be done in a week, including troubleshooting. Work in stages, getting simple success as early as possible. Help each other as often and much as you can.
Final Project: work in groups to create a system or device of your choosing. Your creation should use multiple nodes to create a sensing network, display network or complex interaction. This is potentially a challenging assignment in a short period of time so consider what you know about collaboration. Keep moving forward.
Documentation:
- Class blog: …?…
Warmups:
Some classes may include a warm-up intended to enhance the collaborative atmosphere.
Grading:
Class participation & attendance 30%
Presentations and assignments 20%
Projects and documentation 30%
Final Project 20%
Office Hours
To Be Announced
Making the Most of It:
For best results, come to class early, participate in discussions, ask lots of questions, offer copious and constructive feedback, stretch yourself and have fun.
SELECTED READINGS
- Economist articles: http://rob.faludi.com/classes/sociableobjects/readings/Economist_Wireless_articles_2007-4-26.pdf
- Weiser, M. The Computer for the 21st Century: http://www.ubiq.com/hypertext/weiser/SciAmDraft3.html
- There Will Come Soft Rains – Bradbury: http://rob.faludi.com/classes/sociableobjects/readings/Bradbury_Soft_Rains_1950.pdf
Math and Communication Protocols:
- Binary: http://www.swansontec.com/sbinary.htm
- Binary in Pink: http://www.mathsisfun.com/binary-digits.html
- Binary Game: http://forums.cisco.com/CertCom/game/binary_game_page.htm
- Hex Headquarters: http://www.intuitor.com/hex/index.html
- Finger Binary: http://en.wikipedia.org/wiki/Finger_binary
- http://www.intuitor.com/counting/
- Levity: http://www.qwantz.com/archive/001038.html
- XBee ZB Manual: http://ftp1.digi.com/support/documentation/90000976_C.pdf
- Demystifying 802.15.4 and ZigBee:
http://www.digi.com/pdf/wp_zigbee.pdf - XBee Antenna Considerations:
http://ftp1.digi.com/support/images/XST-AN019a_XBeeAntennas.pdf - Tom Igoe’s “Making Things Talk”, Chapter 6, pages 192-206: http://rob.faludi.com/classes/sociableobjects/readings/MTT_Chp6_FI_ti04.pdf
- Tom Igoe’s “Making Things Talk”, Chapter 7: http://rob.faludi.com/classes/sociableobjects/readings/MTT_Chp7_F1_ti04.pdf
- The Internet of Things: http://www.faludi.com/classes/networkobjects/readings/Internet_of_Things-SciAmer_2004.pdf
- X-CTU Guide:
http://ftp1.digi.com/support/documentation/90001003_A.pdf - Vehicle Warning System Trialed: http://news.bbc.co.uk/2/hi/technology/6461831.stm
- ‘Smart dust’ to explore planets: http://news.bbc.co.uk/2/low/science/nature/6566317.stm
- Everything, Everywhere: http://rob.faludi.com/classes/sociableobjects/readings/Nature_Everything_Everywhere_2006.pdf
- Cooperative Artifacts: http://rob.faludi.com/classes/sociableobjects/readings/Cooperative_Artefacts_2004.pdf
- “How Management Teams Can Have a Good Fight” from HBR: http://rob.faludi.com/classes/sociableobjects/readings/How_Management_Teams_Can_Have_a_Good_Fight.pdf
- Zigbee: “Wireless Control that Simply Works”: http://rob.faludi.com/classes/sociableobjects/readings/Zigbee_Wireless_That_Works-ZMDAmerica.pdf
- http://en.wikipedia.org/wiki/ZigBee
- http://www.zigbee.org/
- Tinker: A Tool for Designing Data-Centric Sensor Networks, Jeremy Elson, 2006:http://research.microsoft.com/apps/pubs/default.aspx?id=70237
- ConnectPort User’s Guide:
- http://ftp1.digi.com/support/documentation/90000832_a.pdf
- Python Programmer’s Guide (for ConnectPort):
- http://ftp1.digi.com/support/documentation/90000833_b.pdf
Basic XBee Examples
- XBee Practical Example - Using the XBee ZigBee radios in paired communication between two PIC microcontrollers.
- XBee Firmware Upgrade Example - Demonstrates how to build a bare-bones circuit for loading firmware and configurations to the XBee radio without the need for custom interface boards.
- Common XBee Mistakes – A helpful list for troubleshooting why your XBee radio isn’t doing what you think it should.
- XBee Power Management - Jeff LeBlanc’s documentation of our power management and pin sleep research.
- XBee Direct Input/Output - Moving data without external microcontrollers.
Applied Examples
- LilyPad XBee – a sew-in wearable radio system.
- Programming Arduino Wirelessly - Put an Arduino on the ceiling, underwater, up a tree, stuffed in a turkey or what have you and still be able to change and improve its behavior.
- ZigBee Internet Gateway – A system to allow prototype devices to transparently connect to any URL on the Internet.
- XBee API Library for Processing - a Processing library for Digi’sXBee radios.
Presentations
- XBee DriveBy - The PDF from my students-teaching-students presentation at ITP on XBee ZigBee radios, covering the basics of applications, comparisons to other technologies, how to make one, advanced projects and some configuration in-depth.
Resources
- Digi - Manufacturer of the XBee radios.
- Product Manual -XBee OEM Module information (for 802.15.4 firmware).
- ITP Internal ZigBee Wiki - ITP students and staff can register a unique PAN ID here for themselves and their projects.
The XBee Terminal Max is an improved version of the original XBee Terminal for Processing that features a much bigger screen, scrolling text areas, interactive serial port management and helpful reminder messages.
Thanks to Max Whitney for generating many of the improvements and Tom Igoe for the original code.
Gave a talk (more of a conversation really) about Smart Energy and What Lies Ahead at ETech, the Emerging Technology Conference in San Jose last week. Slides for the online casinotalk are online.
Also gave a workshop called Socializing Stuff about wireless objects that was a hands-on introduction to 802.15.4 and ZigBee radios. Wrapped it all up at the last-night Fest with Wireless Wearables and the LilyPad XBee before renting a car and heading to Point Reyes to unwind by the foggy Pacific. Lots of cows and no cell phone service are the perfect complement to a week of tech.
An improved version of the original XBee Terminal for Processing that features a much bigger screen, scrolling text areas, interactive serial port management and helpful reminder messages.
Download for:
You can also download the original source code, in which case you’ll also need the controlP5 GUI library.
Thanks to Max Whitney for generating many of the improvements and Tom Igoe for the original code. Oh, and a handy tweak from Usman Haque.



