Monthly Archives: July 2009
Last night’s lag-fest prompted me to do a little more research into what causes lag and what, if anything, can be done about it. As I expected, there are a multitude of opinions and some amount of data about lag.
To paraphrase Caesar: All lag is divided into three parts, one of which is comprised of the local client lag, the server lag another, the third, which we call network or transfer lag.
The statistics bar (View > Statistics) will give you good information about all three kinds of lag, but the information is not labeled “lag” so much as it gives you the numbers which describe performance. That performance is usually expressed in frame-rate or frames-per-second (fps) and in general, more is better.
Think of a movie. Typical movie films run 32 frames per second through the projector, putting 32 individual still pictures up there in a sequence that's fast enough that your eyes don't see the individual pictures, but see the images on the pictures appear to move. The human eye will translate individual pictures into moving pictures with frame rates as low as 12-15 frames per second.
The same thing happens in your local computer when the viewer translates the digital data that it has into a series of moving pictures on the screen. A good frame rate of 20-30 fps will give your SL view a pretty smooth look. Phosphor refresh rates on the screens has a bit of smoothing effect as well since the images do not change instantly on an electronic display, but rather fade in and out a pixel at a time at rates approaching 60 to 120 frames per second. (Not to bury you in numbers, but note that your computer screen is probably painting each frame in your viewer at least twice before changing to the next frame). If you computer does not have accurate data, or does not have the data it needs when it needs it, or does not have the capacity to keep up with the data that is coming into it, then your view of the world, and your ability to interact with it become choppy and unreliable. In short, lagged.
There's not much you can do about that in the short term except to make your view smaller, more compact, less complex. Let your computer work less. Bring down your draw range. Tilt your camera down so that you have less horizon and fewer objects in the view. There are some other recommendations below on how to reduce the load on your computer. In the long run, if your graphics are constantly being overwhelmed, maybe upgrade your card and/or computer.
There are a lot of servers. Most of the LL servers we have no information or control over but we see them every time we upload a file, buy something from a vendor, or look at a profile. The region servers, those portions of the computing platform that represent the region and parcel an avatar occupies at any given time, we do have some information about, and that information can help inform builders.
The Statistics Bar has regional server information and the key diagnostic there is “Time Dilatation.” Time dilation runs from 0 to 1 with 1 being “real time” or “every second of in-world time takes one second of real world time” and 0 being “stopped.”
Ideally, you want to see that number stay above .98. Anything below .8 is noticeable. A time dilation of .5 means that every in-world second takes 2 real-time seconds. Your avatar might use the walk animation, but move across the landscape very slowly.
A lot of server lag can be controlled through good building practice. Keeping the number of scripts and the number of prims down is one key practice. When addressing the prim issue, it’s important to recognize that the server only dishes up what you can “see” but it also has to dish up everything that anybody can see who is in that region.
A recommended practice where there are a lot of prims and/or a lot of textures is to rely on the aggressive “occlusion” engine that LL has developed. “Occlusion” means “blocked” and what it does is lets the server ignore anything that you shouldn’t be able to see, taking it and any of its textures off the list of things it cares about, reducing the load considerably. You do that by building solid walls.
Shops with open windows are nice, but if you have a lot of them in a small area, then the regional server needs to paint every thing in your line of sight, including the vendor-boxes hanging on the wall of the shop across the street which you can see through the transparent window you’re standing in front of. It’s scenic, but it’s lag inducing. Block those views with solid walls. Not only do you reduce the regional server load by blocking them from view, you reduce transmission lag (see below) by taking them off the list of things that needs to be sent down the pipe.
Scripts are another issue. Active scripts are a big deal. While it’s true that scripts run at a lower priority, that is, only when nothing else is running, it also means that activities that rely on scripts for interaction become very problematic as the server tries to find room in the queue for them to operate. One resource reports that each active script in a region uses up .003ms of the server frame as a minimum. Just a “Hello, Avatar” script in a box will use that much. Each class five server has the potential for 45 server frames per second – giving an updated status to everybody in the region once every 22.222ms. Doing the math, I calculate that something around 7500 scripts will fill the server frame’s time slot. That’s before anything else happens, like trying to walk across the room to see what’s for sale there.
Keeping the number of scripts down is a key to keeping regional activity moving.
Network or Transfer Lag
This is the “I see gray people” or “My hair won’t rez” problem.
Remember the viewer lag? Your viewer paints the scene on your terminal but it can only paint that scene based on the data that it has. If the data doesn’t get transmitted, you can’t see it. You might not even know it doesn’t exist because what gets painted in place looks ok.
This is everything. Shapes, textures, animations, sounds, all of it.
It will stack up and eventually it’ll all come to you, but if you’re relying on reading the vendor sign in order to know what you’re buying? Transmission lag will give you grief by not letting you see what’s in the scene.
Putting It Together
The server has to figure out what everybody is seeing and send that information to each, the network has to deliver all that information to your viewer, and then the viewer has to paint it onto the screen. Ideally, it does this 45 times a second.
If the server can’t process your view in time, then the network doesn’t have it, so your viewer doesn’t get it and you can’t see it.
If the server processes it in time, but your network is unable to handle the volume, then your viewer doesn’t get it and you can’t see it.
If the server processes it in time, and your network delivers it to you, but your client can’t process it in time, then you can’t see it.
Client lag, you can do something about. Reduce the load on your computer by shutting off other applications like Skype, or email. Turn off the audio streams – whether you’re listening to inworld or iTunes, stop that. Every cycle that your machine has to work that is not related to painting the SL scene for you to see is a cycle that might be used better to show you what you need to see.
Network lag, you can do a little bit about, depending on where the problems are. Shut off your network based apps like Tweetdeck, Skype, and AIM. Not only will you save machine cycles for your viewer to use, you’ll free up bandwidth that could be used to show the texture on that skin you’re trying to demo. Turn off your Bittorents, and close browser windows. Check to see if your kids are watching YouTube videos again.
Regional server lag, you can’t do much about except vote with your feet. If the place is LagLand, leave. If you’re a builder/designer, you can do a lot to help make your region or part of the region efficient by keeping the views discretely short, and cutting out the numbers of active scripts.
Some Things You Can Do
The number one cause of lag is avatars. If there aren’t any avatars in your region, then — well, really, you don’t care because there’s nobody there to see or do anything anyway. Without avatars, lag isn’t a meaningful construct. The old ‘if a tree falls in the forest’ idea.
As a visitor, keep your active scripts to a minimum. Any blinger that listens on open chat for “bling on” needs to be inactivated. You can take it off, or you can set the bling state you want (off is good), and then edit it and use Tools > Set Scripts in Selection to Not Running from the menus. The prims represented by that object will still need to be painted on the screen, but that collection of scripts buried in all those prims will be deactivated and removed from the region’s active server load.
Same thing goes for any script you’re wearing really. Resizeable hair? Size it and then turn off the script using the same technique. You don’t need to take the hair off or remove the script. Just turn it off. You can always turn it back on later in the privacy of your own home if you need to change it. Color change shoes or jewelry? Set the colors and turn off the scripts before you leave the house. Some jewelry can have hundreds of prims and if it’s color change and sized? That gets really ugly when you and nine of your friends show up at a party.
Builders? Reduce objects and scripts. If you have a mall or a shop, use the built in ‘set for sale’ capability of the prim. Sell a copy, or the contents without adding a script to the mix. This can add up fast in a mall. If each vendor box has an active script in it, even if there’s nobody there buying anything, every single vendor box takes its .003 ms bite of the frame slice.
Also limit the numbers of different textures (to reduce network lag) and the number of flexible building components like flags and fringes (to reduce client lag).
Finally, flexi and particles (bling) do contribute to lag, but they only contribute to client lag. The actual movement and interpretation of that movement is not something that’s handled by the server, nor is each flip and flap of a flexi skirt transmitted. Instead the description of that object is transmitted and the viewer interprets what and if you see. If your viewer is already overloaded then adding this additional load will hurt your view, but will have no effect whatsoever on anybody else’s view. You can actually shut all particles off so you’re not bothered by them in the Preferences > Graphics section. This is particularly useful for griefer attacks. Turn off the particles in your viewer. No attack exists if you can’t see it.
One last note on client lag and animations. We’ve all seen the ‘dancing fool’ who can’t stop dancing on your screen, but looks perfectly normal on their own. I believe this to be an artifact of transmission lag where the local client accepts the command to stop the animation in question, but the uploaded command gets lost before the avatar server accepts it. This is not a function of the region, altho accumulated laggings would undoubtedly effect it. Repeated attempts to stop dancing are often futile as cached copies of “current anim” are crossed up and repeatedly issuing a munged command doesn’t unmung it. Frequently one can stop that with a “stop all animations” command executed a few times until the cached duplicates can all be purged.
The infamous “model scream” pose – where an avatar’s face is deformed into a wide open mouth is probably a variation on that same problem when one person’s cached version of an avatar view includes the open mouth while others see that avatar perfectly normally using a cache that was kept in sync by a fast enough transmission and update cycle. Often the victim doesn’t know there’s a problem and frequently, even other people are unable to assist because the avatar looks normal to them. The only known solution is for the avatar to log off and back on again, which has the effect of refreshing the outgoing avatar cache so everybody gets a fresh look, one that’s complete – assuming the three lags don’t interfere again.
I owe a lot of this to various resources around the web. Thank you all for your work in helping to track down this stuff and make it available:
Pandora Wrigglesworth’s Lag101, what is lag and why does it happen. Curio Obsura. This is a particularly good explanation of why sculpties possibly reduce lag.
Tonight’s contest is “Styling Lady/Male in White.” Overlooking the syntactical gender bias for the moment, the question is what kind of white? What kind of outfit would a guy wear that’s white? There’s the tropical white suit. There’s the idea of “tighty-whities and tees” … and then there’s this:
This outfit is Molto Bello from SF Designs and it’s available in white. Good whites are hard to find, because ultimately you need to put some other color with them to give them shading and structure. Swaffette Firefly did great work with Multo Bello and it’s available in several colors. I just happened to have the white one, and I think it looks smashing.
One of the challenges in styling white are the shoes. I have a pair of JCS Carl Perkins shoes in White, but they’re too casual for wearing with a tux. They might work ok with a tropical white suit, but the tux needed something else. I wound up with a pair of Tesla Men’s Oxfords in white. I’m still not happy with these. The outfit really needed something like a pair of spats with simple gray buttons on them. I searched for some, but had to make my own.
The skin is LeLutka Absolute in Suntan and I didn’t bother with prim hair under the hat. It would have just gotten in the way.
For accessories, I went with a red rose in the lapel for a splash of color, the simple diamond stud in my left ear, and a pair of SF Designs dress white gloves.
I got two votes.
I’m not even gonna try to analyze this one. One of the largest fields in recent memory. Simulator lag causing time dilation of .2 and .3. Walking was an exercise in futility and posing was a contact sport. It took almost three hours to do a one hour event.
What Would I Do Differently?
Dropped the spats, or made them shoes. Half way thru, I noticed that they shifted in unfortunate ways.
Gone with a less formal look. Perhaps a summery linen suit.
Suit: SF Design: Molto Bello (white)
Shoes: Tesla: Men’s Oxfords (white)
Gloves: SF Design: White Gloves
Earring and Spats: Roland Zepp
Boutonnierre: Essentia: Groomsman’s Buttoniere (red)
Skin: LeLutka Absolute (suntan)
Tonight’s contest was cut off jeans. I’m never at my best in these contests geared for women’s clothing, but I gave it a shot.
There’s not really a good thing to wear with cut offs. I tried several things before settling on the “normal male Second Life avatar” look. Shirtless. The cutoffs came from a value pack out of SLX and I’m not sure if I’d looked longer it would have mattered. As these things go, they are actually pretty well made and didn’t leave my crotch exposed the way some short shorts can. The sandals are my favorite BoHo from Shiny Things and they worked pretty well with the casual beachy look I was going for.
The interesting thing was the shape/skin combo. This is the same Maverick ‘Disorder’ shape and Belleza Mathieu 6 skin that I’ve entered into the Maverick Best Look competion. It works pretty well and I learned yesterday afternoon that I’ll be a finalist in Saturday’s competition for nearly 100,000L in cash and prizes.
Given the field and the poor overworked (and male) judge, I got what I expected.
What would I do differently?
Maybe a shirt. I have a couple of SHIKI’s Aloha shirts – one in red and another in pink. The male judge may have been more kindly disposed if not faced with the hairy chest.
Shorts: Aaron Value Pack (SLX search on cut offs)
Shoes: Shiny Things – BoHo Sandals
Glasses: Role Optic – Recon
Necklace: Rhiamon’s Realm – Gold Dubloon
Watch: Ishmael Ihnen – Gold watch
Hair: UW.st Hibiki, brown
Skin: Belleza – Mathieu 6 (Deep Tan)
Shape: Maverick – Disorder (un modified)
The theme tonight is Mardi Gras. It seems like an odd time of year to be doing it, but why not? In Second Life, it’s whatever season you want …
We did this theme last March, and I used a real Mardi Gras Indian outfit without much success. Looking at it now, I understand why. I took my own advice from then and went with something less authentic and more stereotype, picking the piratey goodness of a Jeanne LaFitte look and – since it really only needs a mask to be Mardi Gras – added the great Columbia Veniza from Illusions, colored blue and gold to match.
I did not find a great pair of boots in my inventory. The outfit really called for a pair of SF Designs Slouch Boots and someday I’ll own a pair, but for the contest, I was too cheap to buy a pair. None of my other boots had the right feel but the Make Him Over Hunt treasures included the Wrap Boots from Frock You. They weren’t exactly piratey, but they had a kind of costume feel and they looked ok. Note to Frock You: the boot tops are No-Mod and there’s no resize script. Fitting them on my almost 8foot frame was impossible. I wound up having to turn them upside down to get them even close. Ultimately it worked.
It was a small field and I was more than a bit surprised that I tied for third place. Xenobia Foxclaw’s Lady Pirate costume was brilliantly executed and I was basically scraping thru my inventory.
What Would I Do Differently?
Boots. These were weak.
Poses. The prim tails on this coat made pose picking much more of a challenge than normal.
Different avatar. King Neptune would have been good. So would Bacchus.
Outfit: INDI – Jack (blue and gold)
Boots: Frock You – Wrapped Boots (black)
Mask: Illusions – Columbia Venezia
Skin: LeLutka – Absolute (tan)
Hair: UW.st – Ilias (coffee)
Eyes: MADesigns – INNOCENCE (emerald and peach)
We all like the casual days. A good chance to retire the business attire and jump into the comfy clothes. Whether it’s a day out or a day in, casual is great, but it doesn’t have to mean sloppy. Tonight’s contest was Styling Casual, and after having to skip Friday’s Fishnet Stocking event (way to encourage more male participation there), I was happy to see an event that I could get into.
When I’m not on stage, or getting ready to go on stage, or writing up what happened when I was on stage, I like to kick back and relax in some of the bits and pieces that I’ve collected over the last few weeks.
Tonight I decided to wear the Marinesta Navy Parka that I got at the clothing fair along with the jeans that came with my Sartoria Sorrento suit. For footwear, I picked my new JCS Oslo boots in brown for the softer look.
To dress it up, I added a pirate skull necklace from Ripped, and my Bukka watch and iPod. Of course, to look cool, I needed my Crowe glassed from primOptic set to a medium dark.
Because the future’s so bright, you know I gotta wear shades.
I got my two votes. The judge picked some pretty casual looks and I can’t fault the choices tonight.
What Would I Do Differently?
The Shiny Things Bo Ho sandals are a bit more casual and might have gone better with, say, a pair of boardies rather than the long pants.
Less formal poses. Tonight’s outfit didn’t require them to be quite so stiff. I could have picked a few more playful ones.
Picked something a little more urban or current. Casual for me is just not casual for the grid. Call me old fashioned.
Marinesta – Navy Parka
Sartoria Sorrento Suit Pants
JCS – Oslo Brown
Ripped Pirate Necklace
UW.st Hibiki (coffee)
LeLutka Absolute Tan
MADesigns Emerald and Peach
This morning I got a chance to visit the 2009 Relay for Life build. This place is made of titanium Awesome. I wish I had more time to visit and take pictures but my RL day is already clamoring at the door, so I’m going to put up the post now and hope I get a chance to visit more — and get some more snaps — later.
Then I headed down the road only to find a wonderful faerie woodland. It’s a gorgeous bit of building but if there was a team sign there, it didn’t rez for me while I was there.
On the other side of the wood, the New Babbage Team just amped up the steam-powered goodness with this installation featuring a zeppelin mooring station, a ferris wheel, and a steam powered globe. The globe tickled me because every good steampunker knows that the world is powered by steam and this was the perfect metaphor for that.
I’d love to show you more, but I’m out of time for today. Let me close with a plea for you – whoever you are and where ever you are reading this from — visit this place this weekend. Give if you can. There are lots of ways you can contribute any time during the July 18-19th weekend. Find an installation you admire and donate there.
You can also “buy” one of the luminaria that line the walkway. Any of the white ones are open. When you buy it, it turns color and your name will appear above it. This is a great way for everybody to own a piece of the cure. If we all give just a little bit, there’s enough of us to make a huge difference when we all contribute together.
The opening ceremony is set for noon SLT on July 18th and the official walk portion will run though noon on the 19th. There will be events all weekend long, and you’ve got plenty of time to get your avis down there to see, to help, and to just be part of this amazing effort. And if you can’t be there, all the official ceremonies will be broadcast live over the Official Relay For Life Radio Stream – T1Radio.
For more information about special events, background, and schedule, visit the site and grab the notecards from the various info givers available.
One World, One Hope.
This week has been a whirlwind of activity because I got a new job on Monday. In addition to my periodic ramblings here, you’ll be able to find my by-line in AVENUE Magazine starting in the August edition. This week has been hectic as the final deadlines have come (and gone) and the final articles are being put together for a two-edition month — the normal August edition along with an SLCC special edition that will be printed on … what’s that stuff? books used to be made out of it? Oh ya. Paper.
So, thanks to all the people who helped me get the position, and to Rusch Raymaker for giving me a chance.
I’m looking forward to a deadline that’s measured in days, not hours, because I think we’re gonna have some fun here.
The theme for the evening was “Gold.” It’s always a challenge when the themes are so open ended but at least in this case “gold” has a concrete meaning that’s other than just the color.
“I am Midas, King of Pessinus in Phrygia …”
The skin is Belleza’s Mathieu in Deep Tan 6 that I got for another contest, but it just said “king” to me and coupled with the UWst “Ilias” hair, I established the basis for a king of ancient Macedonia. My tunic is SF Designs Toga and on my feet the elegant – and ubiquitous – BoHo Sandals from Shiny Things. I looked all over for a pair of strap-up “gladiator” style sandals but the only ones I found didn’t match the look I wanted.
The gold was the next problem. What kind of gold would Midas wear? Crown, natch. I added a torc, matching armbands, and a belt of golden plates. I really didn’t have time to shop for all of these items so I spent a very pleasant hour making them. The crown was the only weak part. It started as a simple circlet, but that didn’t really say “crown” to me and I added the three triangles to it. I thought it looked less polished but possibly more crown-like so I went with it.
Then I had to figure out what to say about this outfit. (At the end of the show, the master of ceremonies calls each model to the front of the stage to explain something about their outfit and how it fit the theme before they take their places for the judging.) If I depicted Midas after he met Dionysus – when his touch turned golden – then everything should be golden – including his tunic and I didn’t have a golden tunic. My solution was to pick the moment just before Midas got his power and used this paragraph to kick it up.
“I am Midas, King of Pessinus in Phrygia. In return for my hospitality in caring for his friend, the drunken satyr Silenus, the god Dionysus will grant me one wish. I go to meet him now to ask that all I touch be turned to gold. I do this for the love of my people so that we may all live in wealth and comfort until the end of our days…”
Of course, the gift becomes a curse as “everything” is interpreted literally by Dionysus, with tragic results for Midas and his people.
Unexpected is an understatement. It was a huge field and there were a number of gorgeously golden outfits there, including another male contender for a change.
What Would I Do Differently?
I liked this response to the theme. I was not happy with the crown so replacing that would be my first priority.
Finding a golden tunic and sandals would have let me be Midas in a full blown “everything I touch” mode.
Tunic: SF Designs – Roman Toga
Sandals: Shiny Things – BoHo Sandals
Skin: Belleza – Mathieu Deep Tan 6
Hair: UW.st – Ilias Coffee
Eyes: (*> Bower Bird <*) Everyday Eyes – Mahogany (lge)
The prize package is up to 90,000L and while some of it is merch, some of it is cash and it’s a rich prize indeed.
I’ve been wrestling with this for most of the month and I think I’m ready to submit it. I’ve taken a bit more care with the look than I would on a regular styling competition because it’s worth a lot more in terms of prizes.
My strategy on this has been to find a look that’s not mean looking or dark. Almost all the prototypes available for male avis involve frowns, cigarettes, tattoos, and metal sprouting from places that, personally, I’d rather not incur the abrasion. Call me old fashioned.
So, with the rest of the possible continuum of male look and behavior to draw on, I chose to go with a look I’ll call “Prêt-à-Porter” or “Ready to wear.” Working out from the Maverick Design’s “Disorder” shape, I painted on a nice Mathieu Deep Tan skin from Belleza. I love the detail and definition on the Belleza skins and Mathieu represents some of the best of what the line has to offer. In spite of my wanting to avoid the dark, I went with the Deep Tan. It’s a nice color and the full beard is nicely trimmed to give a nicely sophisticated look. I was trying for the idea of “tickle her fancy” not “threaten her children.”
I picked MADesigns David 2 for the hair because it kept my face open. I have several hairs that hang down in my eyes, but this look needed a style that let me see out, and to be seen in return. I wanted something that was slightly retro, but still stylish and the MADesigns hair fit the look I had in mind perfectly. I stayed with MADesigns for the INNOCENCE eyes in emerald and peach to give the face a bit of color and I like the depth that comes from the highlights.
After that, it’s all about the clothing.
It’s not the newest thing on the rack, but the Sartoria Project is a collection of themed, casual outfits including pants, shirt, and jacket. These are each unique items and work terrifically as mix and match components. The jacket is superb and layering the jacket over your own pants and shirt combinations is a great way to extend and shape the look. I kept the look simple here, but a hot pair of jeans and a patterned tee-shirt under this jacket make a completely different feel. The possibilities are almost limitless.
I’ve wanted this pair of JCS Oslo Boots for a long time. This contest seemed like a good excuse to pick them up. Every man needs a pair of brown boots and these Oslo Boots have a richly textured brown leather with great details like x-stitching on the toes, a buckled strap across the arch, and even an elastic gore in the side. I want these boots in RL!
With the main look established, the next challenge was getting two photographs put together for the submission. They need to really show the Best Look in a way that says what the look means, but not necessarily the picture that might be on the vendor box. It’s rather a balancing act to find a way to present the look comprehensively, while at the same time, artistically.
The photo that accompanies this post is not one of the photos I included in my submission. For those, I went more for feel than content.
We’ll see if the chance pays off.
Tonight’s theme was Body Piercing. It’s a difficult theme to do because of all the parts and places you can pierce, and then have to make visible. I did well in this theme before so I was not expecting to place this time, particularly since I was using almost the exact same outfit, but it gave me a opportunity to take some chances.
If you’ve been following along, you’ll know I’m working on a Maverick Designs contest to create a Best Look using one of their shapes. I’ve selected Disorder as my base and that’s what I wore in the contest tonight with a Belleza Thomas Tan skin. It looked ok with the abbreviated beard, and I changed out my normal hair for a MADesigns hair called David 2. It’s a little more “swept back” than I usually wear, but it got out of the way of my piercings and I was able to fit it without a lot of trouble.
I was tired of the same old footwear tonight as well, so I got into my modeling gear and found the pair of Arcavim Sky Sailor boots from the Walk of Fame Final a couple weeks ago and used the color change feature on them to turn them black. I still needed to use the V-Twins “biker jacket” to show off the navel piercing but I put on a nice pair of blue jeans from Thalia to soften the dark edges a bit. Topped off with a :sey “edokin” necklace and a pair of V-Twin biker gloves and the look came together for me. Again.
I really wasn’t expecting to place, let alone do better this time than last. First and Third Places were great examples of body art and I really don’t consider myself in their class on this event, but I’ll take it.
What Would I Do Differently?
Go back and read this section for the last time I did it and then see if the advice still makes sense. I’m not sure it does, but it would have been a good idea to follow throuth with that.
Come up with something more formal or more interesting than a grubby biker dude. Lots of people have piercings.
Thalia 505 Jeans
V-Twin Biker Jacket (Black)
V-Twin Biker Gloves
Arcavim: Sky Sailor Boots
Necklace: sey “edokin”
Piercings: Roland Zepp
Tattoo: Atui Vintage Hawaiian (faded)
Shape: Maverick – Disorder
Skin: Belleza – Thomas Tan 3
Eyes: MADesigns EYES – ABYSS – atlantic sea
Hair: MADesigns – David 2