Ryan Kelln is a programmer, designer and artist currently living in Toronto, Canada. He studied Computer Science and Visual Arts at the University of Victoria and has been trying to create the Citizen Kane of computer games ever since. He has completed a number of games while working in the industry, but nothing that he calls Art. When Ryan does make art he always ends up collaborating with his friends, making interactive video installations or participatory websites. In 2002 he decided that he could apply what he knew about making games to designing a system that would help everyone create the things they are most passionate about. This required research into an array of fields including history, economics, intellectual property, how cultures change, and how people communicate and collaborate on the 'net. Ryan has traveled and lived in both big and small places in Southeast Asia and Canada, "retired" twice, and recently became reasonably certain his Qrate design was good enough to inspire others to improve on it. He is now trying to implement the first Qrate prototype.
Ryan sincerely believes this is the most exciting time to be alive. The opportunities to make positive changes have never been so accessible and abundant. He wants make the world a better place; a place where games are art, and art is free and profitable.
Ryan hopes that he has enough time and intelligence to learn what you are trying to teach him. Humour and patience seem to work best.
Qrate
- 2002
- ongoing
- Website: Qrate
Qrate is a non-profit, digital library with an integrated patronage system that allows creators to get paid for their work. Everyone has free access to the world's digital art and information while more people can make a living doing what they love.
Qrate is designed around the principles of access, freedom, transparency, and always doing the right thing for both creators and their patrons. We now have the technology to distribute the world's best digital art, entertainment, knowledge and software to everyone for free. The question we have to answer is not "how do we stop everyone from having access", but how do we pay and reward those who enrich our lives with the culture that inspires us and makes life worth living, how do we encourage the sharing of knowledge that enlightens and empowers us and how do we encourage the creation of software tools that allow us to further create and share. Qrate's answer is to simply give you the freedom to pay; invest in projects and artists or reward those already finished. Develop your reputation as a patron of the arts — let the world know how thankful you are — how much you value what you've been given. You can never be ripped off again — you pay when you want, however much you want, to whatever projects or whomever you want.
Qrate gives everyone an opportunity to:
- Freely download and share digital art and entertainment
- Support your favourite artists and projects
- Build your reputation as a patron of the arts
- Help fund the projects you want to see created
- Find the best new art for you based on your patronage history
Qrate allows artists and creators to:
- Distribute your work to the world
- Get fairly rewarded for the work you've made freely available
- Get paid to create new work
- Track your contribution to projects down to the line of code, mouse click or keypress
- Build your reputation as a contributor and creator
- Have your work recommended to patrons who rewarded other work similar to yours
- Easily collaborate with others; remix, modify and improve existing work without fear that your contribution and authorship will be lost, hidden or faked
Qrate is designed to harness the realities of current technology and remain open to integrating future technologies. Qrate is not designed to control. Instead, it empowers both the artists whose work it distributes and everyone who supports those artists. Everyone who uses Qrate to support art and artists becomes a patron of the arts, and a large number of patrons who contribute small amounts can collectively fund even the largest projects. Supporting art doesn't need to be difficult or laborious. Patrons use automation and social networks along with flexible and evolving sets of programmable rules, called RuleCodes, to distribute their money easily, fairly and wisely. Every RuleCode is free, open source software competing in a market — the best RuleCodes make creators feel that they are fairly compensated, and in turn they generate income for those that designed and built that RuleCode. In this way we can create an environment that enriches and supports artists. This support is the incentive for each of us to create our own art.
Qrate, Inc. is just beginning its mission and is looking for experienced software engineers and technical staff. If you are interested in helping to make Qrate a reality please email me.
Image-A-Day
- 2009
- ongoing
- Website: Image-A-Day
- This software is free software, licensed under the GPL 3.
Every day in 2009 I added code to a software program that "collages" information from my day, including photos, text, website browsing history, music I listened to, number of key presses and mouse clicks, etc. It transforms this information into a single image that is then posted onto a website. Other participants also post their image every day to the website, the only rule being that each participant must upload an image for each day.
Description
This work came out of desire to challenge myself to create art every day for a year. I wanted to write software but I also wanted a project that my friends and family could join. Thus was born the Image-A-Day Journal: a website where participants could upload and share an image every day. The only rule was that you had to upload an image each day.
My software became a "collager": I "feed" it images and text from my day and it manipulates and positions them. I eventually added a number of features that collaged additional details about my day: websites I visited, number of key presses and mouse clicks, music I listened to, news and weather, etc. Through the medium of digital collage this information is shared with the other members of the project.
The Journal explores how people change as their lives become more documented and as they participate and share in artistic practice every day.
Features
Currently implemented features:
-
IMAGES
-
Process images (jpg, png)
Thanks to Python Imaging Library
- Detect common colours in images and set border, text, and background gradient from these
- Smart image scaling to adapt to different sized images
- Smart image scaling to adapt to number of images to collage and their relative sizes
- Place "recurring" images behind today's unique images
-
TEXT
- Process text files
-
Process html files
Thanks to Beautiful Soup
-
Find common words in text
Thanks to the Natural Language Toolkit (nltk)
- Find titles in text
-
TRACKING
- Track websites visited and extract common words (from Firefox)
-
Track songs listened to and display names and images of albums (from Last.FM)
Thanks to python-lastfm
-
Track tasks completed (from RememberTheMilk.com)
Thanks to Sridhar Ratnakumar and his pyrtm library
-
Track time spent on computer
Thanks to Project Hamster
-
Track number of mouse clicks and key presses
Thanks to Workrave
-
News headlines [for Toronto and copyright issues] (from Google News)
Thanks to the Universal Feed Parser
-
Current weather (Yahoo weather or Google weather)
Thanks to the Python Weather API
-
Take a snapshot from webcam each time the software is run
Thanks to Fredrik Portström and the python-v3l2-capture project
- Display time that final run of software started (to encourage me to go to bed earlier)
-
MISCELLANEOUS
- Display code changes in spiral path around border (from baazar)
- Display how much time taken working on today's code
- Display how much time taken executing/processing today's collage
- Plot a line graph of tasks completed, mouse clicks and key presses
Development
The collager software is written in Python 2.6. It relies on a large number of free and open source libraries and other projects, including but not limited to, and in no particular order:
- Python Imaging Library
- Beautiful Soup
- Natural Language Toolkit (nltk)
- python-lastfm
- pyrtm library
- Project Hamster
- Workrave
- Universal Feed Parser
- Python Weather API
- python-v3l2-capture project
- baazar
The website is a mix of PHP and javascript.
Thanks to all the people who shared their code and made this project possible.
Hourface
- 2008
- Art Gallery of Greater Victoria: September 26, 2008 to January 11, 2009
- In collaboration with: Yoko Takashima
- This software is free software, licensed under the GPL 3.
Hourface is a Processing based Java software project intended for use as an interactive video art installation. It was created in collaboration with Yoko Takashima for a show called Blend at the Art Gallery of Greater Victoria.
Description
Hourface displays two movies inside an hourglass shape; one of Yoko singing "Fly Me To The Moon", the other of her daughter singing "Twinkle, Twinkle Little Star". Each pixel of the movies acts as a grain of sand, flowing between the two halves of the hourglass. The orientation of the hourglass can be controlled with a custom-made hourglass controller (we used a large wooden with the top half painted bright orange and the bottom half painted bright green) and a Logitech® QuickCam® Pro 9000 webcam. As you turn the hourglass it creates the sounds of the sand moving and adjusts the volume and position of the movie sounds (Yoko and her daughter singing) so that Yoko's singing comes from the direction corresponding to where her face is in the hourglass. The soundscape also changes based on the state of the hourglass and the input from the controller.
Media
This video gives a brief demonstration of version 1.0 of Hourface that was shown publicly at the AGGV. (Sadly the audio quality and sync are really bad.)
You can also right-click on and download the high-quality video from my site.
Development
These videos showing how the project evolved. (These are all mpeg2 videos. Right-click or command-click and then save.)
-
April 21:
-
April 29:
-
April 30:
-
May 1:
-
June 7:
First sand physics
After researching granular flow and rigid body physics we now have something that starts to be useful for the final software.
-
June 19:
Improved sand and simple rotation
Improved sand physics with simple rotation. Currently the sand only really works properly while the hourglass is upright, but at least the entire thing is rotating now.
-
June 27:
-
June 29:
Debugging example
An example of what my "debugging" view of the hourglass looks like. This has the latest updates to rotation so that particles are (finally) being selected from the bottom up after rotation (although only in 4 directions).
-
July 8:
Sand physics beta
The sand physics is finally all debugged and now just needs more tweaking to get the feel right. There are a few issues that I may address later if I have time but this is approximately what it will look like in the final installation.
-
July 19:
Rotation with rotating faces
The faces now rotate and the pixel sand updates its color according to the rotated faces.
-
July 23:
Webcam rotation example
First example of webcam computer vision detecting a mock hourglass and rotating the on-screen hourglass.
-
July 30:
Face movies
First example of the faces being a movie rather than a still frame. The bad news? Framerate is between 1 and 2 fps. Ouch. Hopefully optimization and a faster machine will help. Alot.
Other Software and Thanks
-
Processing (0148)
- should work on 1.0+ but untested
- many thanks to Ben Fry, Casey Reas and everyone at processing.org
-
GSVideo
- I have modified gsvideo although some of that code may now be included in the main version
- many, many thanks to Andrés Colubri for all his help
-
GStreamer for Java
- used version 0.8, but there were bugs with this still
- thanks to the forums for help
-
JMyron
- I have modified JMyron to run faster and only do what I need it to do
- webcams are nasty, finicky, horrible things,... don't use them
- this library is old and needs a lot of work
-
Minim
- many thanks to Damien for answering questions and bug fixes
- I believe this is now part of Processing?
FAQ
Can you help me with <insert problem with code here>?
Probably not. Sorry. I'd love to help, but I'm usually too busy to be much use. You can try emailing me and hope for the best.
This code is terrible and out-of-date.
Yes. This is not an ongoing project, this is the duct-taped, just-finished-in-time, now-on-to-other-things version.
Can I use this for my own project?
Basically. This software is free software, licensed under the GPL 3. Just don't claim it as your own. Really, the code is just here because I promised myself I'd make it public, I don't expect anyone to use it, no one deserves that suffering. Feel free to grab bits of it (but remember the GPL requirements), or get inspired to something similar but even cooler.
If you'd like to have this set up in your gallery or other public space please contact me and we can work something out.
Wow, sand physics! I thought that was an area of open research?
Yes, it is. And no, the sand "physics" involved in this code has nothing to do with physics. I was only trying to make it look like each pixel was colliding with each other, stacking up, avalanching, and generally looking sand-like. There was precious little math involved and mostly trial and error. Think "painting of sand" not mathematics of sand.
Why didn't you just use math?
Yes, well. That seems a bit too easy doesn't it? I was looking to reduce the amount of calculations involved because it was already running slowly and there was only so much I could learn and figure out before the deadline. Please write something better and faster and I'd be happy to use it next time.
YoFace
- v1.0: 2003
- v2.0: 2004
- v1.0: Art Gallery of Greater Victoria: June 14, 2003 to September 14, 2003
- v2.0: Thailand New Media Festival 2004
- In collaboration with: Yoko Takashima
- This software is free software, licensed under the GPL 3.
Custom Java software used in the 2003 "Face-scape" installation in collaboration with Yoko Takashima. Rewritten in 2004, the second version was exhibited at the Thailand New Media Festival 2004. yoFace adds images to each other and allows for dynamic image to be built that is the sum of all of its parts.
Watch a larger version.
yoFace is a custom Java application that "mixes" images and "soundscapes". yoFace was originally used to mix images of faces, hence the name. This software is unique in that it doesn't "morph" from one image to another but continually creates a new, unique face by "adding" one face (from a database of representative faces) to the existing face. The first version of the software was written in only two months from scratch.
yoFace version 1 was used in an interactive installation called "face-scape" designed by Yoko Takashima that explores race, sex, age and artistic-style preferences. This installation used an electronic questionaire to poll the audience so that a composite of the audiences choices was created. By leaving the installation active is a specific location an "average" representation of the audience was reflected back.
Screenshot from face-scape
Example average face of combined male and female faces after a number of hours of running yoFace
The second version of yoFace was almost a complete rewrite and was used for an installation in the Thailand New Media Festival in 2004. This installation focused more a rapid mixing of the faces of tourists with local Thai faces. I was interested in exploring the differences I felt between Khao San road in Bangkok and the small rural Thai village I lived in. I also explored more radical ways of mixing faces that resulted in bizarre "mutants" or hybrids. These mixings and the addition of many Thai faces also helped explore the bizarre experience of culture specific beauty. For example, in Thailand I had many of the features that were considered desirable, but in Canada I was just a typical white male.
The Magic Fish
- 2009
- Website: The Magic Fish
A short story designed mainly to teach children and "digital immigrants" about the differences between physical objects and digital information.
The Magic Fish
An Informative Tale
Once upon a time there lived a young fisherman named Napster. Napster lived alone in a house that his father had built on the edge of a small fishing town. His parents had mysteriously died together at sea, and while he never found his parents after the accident, he did recover the boat they built together, along with his father's magic fishing net.
One day Napster got up before dawn and sailed his boat far, far out into the sea looking for a new spot to fish. With any luck he would find an area that had been missed by the huge commercial fishing boats owned by the powerful Duke who lived near the fishing town. Napster, like his father before him, preferred to remain independent even though it meant that his fortune was a result of hard labour and good luck and not the skill of the Duke's accountants.
As he always did, Napster threw his net into the water and started singing the old songs his mother had taught him. When he hauled his net back out of the water there was only a single fish in the ropey strands of the net. The fish was large, but not too big, glistening, but not too shiny, thick, but not too fat. Napster went to take his solitary catch out of the net.
“Well, a single fish is better than no fish, I suppose,” he said to himself.
“I should think so!” said the fish. Napster stopped in mid grab and looked around fearfully.
“Sorry, Napster, it's just me,” said the same watery voice from somewhere near the fish in the net.
Napster looked back down at the fish in the net and clearly saw the fish say, “I am a Magic Fish and now that you've caught me, I will grant you three Wishes.”
Napster looked around slowly once more then sat down and thought.
“Three wishes?”
“Three Wishes. But, of course, you know the rules. You can't wish for more Wishes,” said the fish matter-of-factly.
Napster hummed to himself. He was much more clever than the fish suspected and had far greater ambitions then more Wishes for himself. He smiled.
“Alright magic fish! My first Wish is that I can make as many copies of you as I want!”
The fish frowned, rolled it's eyes three times and flapped its gills as fast as a hummingbird's wings. There was a puff of smoke that hid the fish for a moment and smelled faintly like inspiration.
“Done!” squeaked the fish.
The fish and Napster looked around. They were still all alone on the old boat far away from land with nothing but water around them.
“Where are my copies, fish?”
“Magic Fish One, if you please,” said the fish, “just pick me up and you'll see.”
So Napster reached down and took Magic Fish One out of the net.
“You see, now there are two of me,” two fishy voices spoke in unison. Napster looked down and sure enough there was a second Magic Fish in his hand and One still in the net where he'd left it.
“Hello, I'm Two” said the fish in his hand.
Napster threw Two into the boat behind him and grabbed at the One in the net again.
“See? There's Three!” chorused the three Magic Fish from the net, Napster's hand, and the deck of the boat.
Napster sailed his boat back into the harbour and docked. He grabbed the Two, second copy of the Magic Fish (but actually ended up holding Four, the fourth copy), and got ready to head home, leaving two fish flopping in the deck of the boat and the original fish still stuck in the net.
“Shhhh!” he shhhhushed the fish and they looked up at him with big eyes and did their best to keep still and quiet. He threw a tarp over the deck of the small boat and hoped that would keep him out of trouble until later that night. He could come back when fewer people were around and figure out what to do with all the fish. He started walking home, stomach growling and fish in hand, and when he had walked far enough away that other Magic Fish couldn't hear him, he quickly and carefully ended the life of Four.
On the way home he stopped to buy some potatoes, butter and herbs to eat with Four that night for dinner. When he put the fish down to pay the grocer he realized he'd made a mistake. When he went to pick up the fish again he just ended up with two (well, actually Five); one (Four) still remained right where he put it down. Napster glanced nervously around, but no one had noticed his fish multiplication. He was stumped though — it was more difficult to move the fish than it was to copy it!
“Um, Roger, how about I trade you one of these nice fish here for this butter?”
Roger looked up, surprised, but readily agreed. Napster was a long time customer and good friend, and the fish did look tasty. A fish that size was worth at least three times the butter anyway!
“Deal.” Roger scooped up the fish and took it into the back. Napster gave a huge sigh of relief — there wasn't a copy still sitting on the table where he left it.
“My pleasure Roger, thanks so much!” Napster would have skipped home if he hadn't been worried about what the town's old gossips would have told the younger ladies.
Napster left Five in a freezer and from there he could grab as many fish as he needed. He made an amazing meal and tried to eat a good portion of Six. However, when he took a bite of Six he just made a copy of that bite, so no matter how much he ate, Six remained whole, although still cut up into nice succulent, bite-sized portions. Napster sighed, content and frustrated. He worried that he may soon be overrun with Magic Fish. He thought for a moment, drumming his fingers on his full belly. He tried lifting his plate — the fish stayed on the plate! He carefully got up and brought his plate over to the garbage and shook the fish off the plate.
“HA!” Napster grinned. The fish had been disposed of and he did a quick check and confirmed that Five was still in the freezer. “It might be odd to throw out a whole fish”, he thought to himself, “but I could always make more couldn't I?” Just to be sure he grabbed Seven from Five and dropped it in the trash where it lay beside the well-cooked Six.
When the moon had risen high into the sky and most of the town was asleep, Napster strolled back to his boat along with his garbage can and a broom.
“Shhhh!” said One, Two and Three as he lifted the tarp off the deck of the boat. Napster put his finger to his lips and then swept Two and Three into the garbage. He gathered up the net with One still in it and strolled back home, net and fish under one arm, garbage can in the other.
It had been awhile since Napster had been out fishing. The first Magic Fish was still in his father's net, but now graced his bedroom wall above his bed. Before bed every night, he and One would talk about the sea, other fish and how different Napster's life had become since he met the Magic Fish.
People thought that Napster had given up being a fisherman and instead become a fishmonger — selling a single type of fish for the lowest prices in town. He was attracting all sorts of attention, some of it good, from customers who loved the consistency of his fish and appreciated his low prices, and some of it not so good. Thanks to the Duke he received many visits from town officials concerning the health and safety of his business, proper business certification, and wheelchair access to washroom facilities for his customers. But business was good, since it didn't cost him any money to make a copy of a fish for a customer.
There was only one problem; being a fishmonger took almost all of his time and Napster preferred to spend his days on his boat. One night, as he lay in bed talking to Magic Fish One, Napster asked,
“Magic Fish, I'd like to make my second Wish. I Wish that I could send my fish copies to anyone in the world in the blink of an eye.”
The fish frowned, but was getting used to Napster's odd ideas and Wishes. Bubbles flew out of his mouth like water out of a firehose, his tail spun like a helicopter's rotor blade and his eyes flickered through all the colors in the rainbow eventually settling on pluberry. There was a puff of smoke and an even stronger smell of inspiration.
“Done!” squawked One, “That was a bit of an odd choice wasn't it? Don't you want a sports car? How about some money? Maybe to be President?”
“No, I don't think so,” said Napster and he hummed and smiled to himself.
The next day Napster took down the names and addresses of his customers and told them about his new delivery service. Each day they could wake up and there in their mailbox would be a fresh fish waiting for them. Napster could nearly instantaneously transfer a copy of a Magic Fish to anyone in the town, but he preferred to pretend that the deliveries happened overnight to explain why no one ever saw the delivery people.
Soon customers were coming to him with the names and addresses of relatives and friends all across the lower mainland. Napster was happy to tell them that he did indeed deliver to Springfield and added them onto his list. Next, he set up a dial-a-fish service. Customers could phone and leave a message with their orders, which he would fill in the early mornings, leaving him time for other things during the day. He started spending much less time at the small store in the front of his house and was busy preparing something Big. However, he was minding the store the morning the older gentleman dropped by.
“This is quite the business you've built for yourself Napster.”
“Thank you, Mr...?”
“Duke Reehah”, said the tall man and he shook Napster's hand with a strong grip.
“Ah, what a pleasure, I didn't know that you came to town very often, uh, your Grace.”
“Just Reehah will do, I'm not one for formalities.” The Duke smiled broadly.
“Your delivery service is all the rage amongst my staff, and I've eaten some of Napster's Fine Fish myself.” The Duke's eyebrows had put quotation marks around “Napster's Fine Fish”. Napster smiled politely and nodded.
“But,” continued the Duke, “I've never seen anyone ever deliver the fish. Odd isn't it, especially with all the security at my castle. Not a single delivery boy has ever been spotted, but right there in the morning is the fish. Amazing!” The Duke's smile didn't look quite so kind as before.
Napster had been expecting this moment for some time. His boat was repainted and ready to sail, all his debts had been paid off, and he'd put a locked chest of gold on his boat — just in case.
“Shop's closed,” Napster told the few other customers. “Please phone in your order when you get home. Thank you and sorry about this.” The remaining customers growled at the Duke and shuffled out of the small store leaving Napster and the Duke alone.
“Your Grace, please come in. Let's talk business.”
Duke Reehah nodded and followed Napster into the house. Napster took the Duke straight to his bedroom and introduced him to Magic Fish One.
It took a long time before the Duke believed that One was real. He nearly left the house in disgust three times before Napster had convinced him that the fish was real and Napster could make and send copies of the fish. Most of Ten Thousand Three Hundred Forty Six through Ten Thousand Three Hundred Fifty Two were scattered around Napster's house, but the last was in the hands of the Duke's wife. The Duke's had passed through shock, fear, greed, and many other emotions during the presentation but rode it out and ended up at the end of his line — at Business.
“Napster, how would you like to work for me? You'll have access to anything you want — women, cars, jets, money, you name it,” said the Duke.
“A generous offer Duke, but what more do I need? I have all the food I will ever need, I can trade or sell fish for anything else that I want, and I can feed the world with just a single fish! Just think about what that means for poverty and the environment!”
“What? Look Napster, there really isn't any other way. You HAVE to work for me, I'll do anything to get you on staff.”
“Can you grant me Wishes?”
“I'll make all your wishes come true” said the Duke, and the Magic Fish rolled his eyes.
“No, not wishes; Wishes. One,” he pointed at the Magic Fish, “can grant me Wishes. That's how I can make copies and transfer them to anyone around the world in the blink of an eye.”
The Duke thought for a moment. “You're the only one that it grants Wishes to?”
“That's right,” said Magic Fish One.
“Please, Napster, come work for me,” said the Duke in a sad, hard way.
“I'm sorry,” said Napster.
“I'm not,” said One.
“Fine,” said the Duke and he placed his hand on a long, legal sabre sheathed at his side. Napster had assumed it was merely ornamental, but now he wasn't so sure.
“Uhm, what are you doing?” asked Napster.
“The only thing left to do,” said Duke Reehah with a sigh and drew his sword.
“Wish!” said the Fish and Napster sprang back and shouted out the first thing that came to mind.
“I Wish that everyone could copy and transfer fish the way I can!”
Magic Fish One started spinning in both directions at once, a small thundercloud formed over his head and shot small lightning bolts at the Duke, and his scales flew off his body and danced jigs around Napster. There was a puff of smoke and an overwhelming smell of inspiration.
“Done!” squealed the fish triumphantly and slumped exhausted in the netting on the wall.
The Duke wrinkled his nose, blinked, and with his free hand he reached out, grabbed One and created copy Ten Thousand Three Hundred and Fifty Three.
The Duke left in a daze, complaining of the stink, still holding a Magic Fish in one hand and his sabre in the other. Napster phoned all of his customers and explained the situation to the best of his ability. He was closed for business, for good. That night he sank into bed completely exhausted with One still smiling above him.
“Good day, eh?” said Napster.
“Very good.” said the Magic Fish and they both smiled and fell fast asleep, dreaming of freedom.
The next day Napster rose late, awakened by the sound of pandemonium outside his window. Magic Fish were piled knee deep in the streets, people were running, shouting, laughing, slipping and falling over themselves. Fish were being thrown wildly in all directions. Napster and One looked at each other and started to walk carefully down to the docks. Napster drew a hood over his head and met no one's gaze. As he grew closer to the his boat he realized that in the piles of fish were copies of fish other than Magic Fish. Napster opened the lid to the basket that held One and showed him the other fish.
“Some sort of loophole, I think. Fish, Wish, wish, fish, they all sound so similar,” said One and grinned.
“Ah,” said Napster, replaying his last wish in his head. He smiled back at his friend.
They reached the boat and amidst the mayhem of a widespread fish fight dominated by fishermen laughing madly, Napster and One set sail on a well deserved vacation. Back where he had first caught One, Napster placed his father's magic net in the water and Magic Fish One swam out and to the other side of the boat.
“Goodbye Napster, congratulations on your Wishes,” said the Fish.
“So long One, and thanks for all the fish,” said Napster.



