<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-149744453012114738</id><updated>2011-04-21T23:19:10.899-06:00</updated><category term='silly'/><category term='xui'/><category term='ossviewer'/><category term='gripe'/><category term='art'/><category term='feature'/><category term='musings'/><category term='adventures'/><category term='not-a-meme'/><category term='howto'/><category term='classic'/><title type='text'>Jacek Lives</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jacek</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_RAYeU6b6zmE/SLos9tPhkRI/AAAAAAAAAAY/fHlrFqE0yos/S220/jacek-Aug-2008_square2_80.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>46</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-7366822922015339278</id><published>2007-02-14T00:01:00.000-06:00</published><updated>2007-02-14T00:21:06.424-06:00</updated><title type='text'>Moved!</title><content type='html'>Whaaaaat?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jacek.meratalk.com/?p=48"&gt;I moved my blog AGAIN&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;You're going to have to &lt;a href="http://jacek.meratalk.com/"&gt;update all your bookmarks and RSS readers&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;That's insane!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-7366822922015339278?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/7366822922015339278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=7366822922015339278' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/7366822922015339278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/7366822922015339278'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2007/02/moved.html' title='Moved!'/><author><name>J</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-1516157096439226542</id><published>2007-02-13T19:28:00.000-06:00</published><updated>2007-02-13T20:57:54.880-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='not-a-meme'/><title type='text'>Challenge #3 Response</title><content type='html'>Like many of the &lt;a href="http://jacek-antonelli.blogspot.com/2007/02/challenge-3-have-you-ever-burned-out-on.html"&gt;other&lt;/a&gt; &lt;a href="http://meratalk.com/blog.php?p=256"&gt;people&lt;/a&gt; &lt;a href="http://www.lovelymachine.com/Dolmere/2007/02/jaceks_challenge_have_you_burned_out.html"&gt;who&lt;/a&gt; have already responded, I've been burnt out on some particular part of SL at once time or another. And I know for certain that I have felt burnt out &lt;span style="font-style: italic;"&gt;while in SL&lt;/span&gt;. But I'm not sure if I was burnt out on SL, or burnt out about something else while I happened to be in SL.&lt;br /&gt;&lt;br /&gt;You see, I'm a creature of change, and I have to move from project to project quickly or I become bored and apathetic—not just with that one project, but with other things in my life, too. So if I get burnt out on something in RL, my mood tends to carry over into SL, and vice versa. As I've come to know this about myself over the years, I have been careful to monitor my mood, identify anything that is bothering me, and make a change to fix it.&lt;br /&gt;&lt;br /&gt;I can distinctly remember, when I was merely a wee newblet crawling my way around the Grid as I drew sustenance from the Shelter, that I had concerns that I was spending too much time in SL. Like many other new Residents, I got hooked, and wanted to spend as much time as possible exploring this marvelous new world! I knew that if I kept it up, I would burn out and get sick of SL.&lt;br /&gt;&lt;br /&gt;When I (inevitably) started to get tired of SL, and &lt;span style="font-style: italic; color: $textcoloralt;" title="the #1 surest sign of apathy in a Jacek!"&gt;couldn't think of anything to do&lt;/span&gt;, I cut back on the hours I was spending in SL, and paid more attention to the things that interested me in RL.&lt;br /&gt;&lt;br /&gt;I have, from time to time since then, noticed myself spending too much time in SL. When that happens, I take a little bit of time off, or just cut back my hours for a while. So far, I've always come back to SL, and always found it more enjoyable and interesting than it had seemed before.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-1516157096439226542?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://jacek-antonelli.blogspot.com/2007/02/challenge-3-have-you-ever-burned-out-on.html' title='Challenge #3 Response'/><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/1516157096439226542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=1516157096439226542' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/1516157096439226542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/1516157096439226542'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2007/02/challenge-3-response.html' title='Challenge #3 Response'/><author><name>J</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-9007208577943146573</id><published>2007-02-11T18:43:00.001-06:00</published><updated>2007-02-11T14:43:18.463-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='not-a-meme'/><title type='text'>Challenge #3: Have you ever burned out on Second Life?</title><content type='html'>The question for consideration this round:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Have you ever burned out on Second Life?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;By "burn out", I mean "&lt;span class="var"&gt;&lt;/span&gt;experience fatigue, frustration, or apathy resulting from prolonged stress, overwork, or intense activity."&lt;br /&gt;&lt;br /&gt;Basically, have you ever just got sick and tired from too much SL? What happened? How did you deal with it?&lt;br /&gt;&lt;br /&gt;I'll post my own response soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-9007208577943146573?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/9007208577943146573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=9007208577943146573' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/9007208577943146573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/9007208577943146573'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2007/02/challenge-3-have-you-ever-burned-out-on.html' title='Challenge #3: Have you ever burned out on Second Life?'/><author><name>J</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-7534484129768846573</id><published>2007-02-11T14:23:00.000-06:00</published><updated>2007-02-10T14:02:02.246-06:00</updated><title type='text'>Plugging my 3PM Building Class at Swinside</title><content type='html'>This afternoon at 3PM PST, I'm giving a 1-hour lecture and demo at the Shelter in Swinside! The topic is prim attributes&amp;mdash;you know, things like Twist and Taper and &lt;del&gt;Hole Size&lt;/del&gt; &lt;add&gt;Thickness&lt;/add&gt;, which let you tweak a prim's shape into a multitude of wootworthy shapes! If you haven't been able to make it to my Friday evening classes at NCI, this is your chance. (I might start teaching at Swinside regularly, but only if enough people show up to be taught, so  attend today!)&lt;br /&gt;&lt;br /&gt;Everybody should &lt;a href="http://slurl.com/secondlife/Swinside/220/104//?msg=Jacek%20Antonelli%20teaches%20at%20the%20Shelter%20in%20Swinside%21" title="Hot diggity! I'm gonna get me some learnin' in mah brain!"&gt;come at get some learnin'&lt;/a&gt; in their brains about prim attributes! I offer my knowledges to you for free!&lt;br /&gt;&lt;br /&gt;And then you should stick around after the class, because at 4:30PM is the überfun Building Shelter contest, hosted by our favorite commodity, &lt;span title="Coal's stocks are going up!"&gt;Coal Nelson&lt;/span&gt;! With the power of prim attributes unleashed, you can be sure that there will be some cool builds today!&lt;br /&gt;&lt;br /&gt;P.S. I'm going to try to think up a Not-A-Meme challenge for folks today. Stay tuned!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-7534484129768846573?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/7534484129768846573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=7534484129768846573' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/7534484129768846573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/7534484129768846573'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2007/02/plugging-my-3pm-building-class-at.html' title='Plugging my 3PM Building Class at Swinside'/><author><name>J</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-4809940894602066405</id><published>2007-02-10T00:28:00.000-06:00</published><updated>2007-02-10T01:09:46.750-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='musings'/><category scheme='http://www.blogger.com/atom/ns#' term='not-a-meme'/><title type='text'>Challenge #2: What You Like Most About Second Life</title><content type='html'>Mera &lt;a href="http://meratalk.com/blog.php?p=254"&gt;poses the challenge&lt;/a&gt;: Tell us what you like most about Second Life.&lt;br /&gt;&lt;br /&gt;Dolmere wrote in &lt;a href="http://www.lovelymachine.com/Dolmere/2007/02/what_you_like_most_about_second_life.html"&gt;his response&lt;/a&gt; to the challenge: &lt;blockquote&gt;I still remember Mera exclaiming something like "I love this place. It's good to know that the skills I have spent my life learning are appreciated somewhere".&lt;/blockquote&gt;That reflects much of the appeal of Second Life to me: the sense of efficacy and satisfaction that I derive from it. The things that I love are things that matter in Second Life. And I love what things matter in Second Life.&lt;br /&gt;&lt;br /&gt;Consider a game such as, say, World of Warcraft, the massively multiplayer online stupefacient that held my attention prior to joining Second Life. I could perform decently in such a game, but the things that mattered&amp;mdash;the things around which the hierarchy of reputation was formed&amp;mdash;were the ability to kill things quickly, and the ability to kill other things quickly. Rarely was there reverance for a great healer; appreciation, of course, because they helped the other people continue to kill things; but not reverance.&lt;br /&gt;&lt;br /&gt;I was never very competetive by nature, nor was I destructive. I found more satisfaction in cooperation and creation. I did not care to organize a group of other players to attack the enemy's home cities and kill their citizens. I would rather (and did, on several occasions) organize a dance-raid: march into the enemy city and have a peaceful dance party with the enemy! (For some reason, the enemy did not usually appreciate my efforts.)&lt;br /&gt;&lt;br /&gt;Second Life was different.&lt;br /&gt;&lt;br /&gt;Many people take great pains to stress that Second Life is not a game. But for me, it always has been a game&amp;mdash;of sorts&amp;mdash;and one that I was good at (and more, enjoyed!). In this amazing new game, instead of killing things, people created things. Instead of smacking each other with swords, they joined hands and made the world better. The people who were most widely-known and respected were renowned for their &lt;span style="font-style:italic;"&gt;creative ability&lt;/span&gt; or &lt;span style="font-style:italic;"&gt;friendliness&lt;/span&gt;! What a marvelous thing to find!&lt;br /&gt;&lt;br /&gt;Of course, the "rules" to this "game" aren't as concretely established as in Warcraft, and everybody "plays" a different way. But for me, every time I create a new sculpture or enjoy an activity with my friends, it's more satisfying and rewarding than killing monsters or running around from place to place ever was.&lt;br /&gt;&lt;br /&gt;So, what do I like most about Second Life?&lt;br /&gt;&lt;br /&gt;It's not the amazing and wonderful people I've met. It's not the dynamic environment. It's not even the building.&lt;br /&gt;&lt;br /&gt;It's the attitude and spirit.&lt;br /&gt;&lt;br /&gt;Create, not destroy.&lt;br /&gt;Help, not harm.&lt;br /&gt;Join together, not tear apart.&lt;br /&gt;&lt;br /&gt;Everything worthwhile in Second Life is a branch on this tree.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-4809940894602066405?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://meratalk.com/blog.php?p=254' title='Challenge #2: What You Like Most About Second Life'/><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/4809940894602066405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=4809940894602066405' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/4809940894602066405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/4809940894602066405'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2007/02/challenge-2-what-you-like-most-about.html' title='Challenge #2: What You Like Most About Second Life'/><author><name>J</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-421835455694827367</id><published>2007-02-09T23:27:00.000-06:00</published><updated>2007-02-09T23:46:40.440-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silly'/><category scheme='http://www.blogger.com/atom/ns#' term='not-a-meme'/><title type='text'>Challenge #2: What U Lieking Most Aboot Second Lief??</title><content type='html'>&lt;a href="http://meratalk.com/blog.php?p=254"&gt;Mera demands: Tell us what you like most about Second Life.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Oooh, that's a toughie. Well, after thinking it over for a while, I decided that what I like most about Second Life is...&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;img style="border-width: 0pt;" title="LET US EAT BLING TOGETHR!!!!!!" src="http://bp0.blogger.com/_BJUcN3gVhrg/Rc1YfQzArQI/AAAAAAAAAD8/KqzQdSIT9YM/s400/bling.jpg" alt="Jacek looking rather blingy" /&gt;&lt;p&gt;TEH BLING, BABY!. AWWWW YAEH!!!1&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Hoo-ha-ha! Just kidding, gentle reader! The thing that I actually like the most about Second Life is...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;img src="http://bp0.blogger.com/_BJUcN3gVhrg/Rc1YfQzArQI/AAAAAAAAAD8/KqzQdSIT9YM/s400/bling.jpg" alt="Jacek still looking exactly the same about of blingy" border="0" /&gt;&lt;p&gt;TEH PEOAPLE, BAYBEE!. AWWWW YAEH!!!!!!11!1&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Ah-ha-ha! I kill me with my own humor! I am truly slain with laughing!&lt;br /&gt;&lt;br /&gt;Tune in again later for less silliness!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-421835455694827367?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://meratalk.com/blog.php?p=254' title='Challenge #2: What U Lieking Most Aboot Second Lief??'/><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/421835455694827367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=421835455694827367' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/421835455694827367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/421835455694827367'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2007/02/challenge-2-what-u-liek-most-aboot.html' title='Challenge #2: What U Lieking Most Aboot Second Lief??'/><author><name>J</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_BJUcN3gVhrg/Rc1YfQzArQI/AAAAAAAAAD8/KqzQdSIT9YM/s72-c/bling.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-4547725343416440193</id><published>2007-02-06T21:11:00.000-06:00</published><updated>2007-02-06T23:52:20.488-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='not-a-meme'/><title type='text'>Challenge: Two Newbie Locations</title><content type='html'>If I were to &lt;a href="http://www.lovelymachine.com/Dolmere/2007/02/challenge_name_two_newbie_locations.html"&gt;name two locations in Second Life to show a new Resident&lt;/a&gt;, what would they be?&lt;br /&gt;&lt;br /&gt;Well, if I'm going to be giving a newbie the ultra-premium tour de luxe of Second Life, that newbie is probably a clever one, bursting with raw creative will!! I want to expose that Resident to the amazing possibilities in Second Life, and get them started on the path to supreme excellence!&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;First stop: Jopsy Pendragon's Particle Laboratory!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://slurl.com/secondlife/Teal/200/50/22"&gt;&lt;img alt="" src="http://bp1.blogger.com/_BJUcN3gVhrg/RclZkK32nEI/AAAAAAAAADM/Qhs8IfEATjM/s400/particle_lab.jpg" /&gt;&lt;p&gt;Jopsy Pendragon's Particle Laboratory&lt;/p&gt;&lt;/a&gt;&lt;/div&gt;Jopsy Pendragon is amazing. He is like a deity that reaches his hand out into the cosmos and gathers up the stars and nebulae and puts them on display for us mere mortals to gaze upon in awe. And he is a kindly god, too: his Particle Laboratory includes a free, first-rate self-guided tutorial about particle systems! How neat is that?&lt;br /&gt;&lt;br /&gt;Jopsy's place is huge, with so many different particle-related things to see. I haven't even seen half of it, and there's more being added all the time! But there's one part in particular you definitely have to check out: the Cloud Chateau!&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt; &lt;a href="http://slurl.com/secondlife/Hina/10/15/746"&gt;&lt;img alt="" src="http://bp0.blogger.com/_BJUcN3gVhrg/RclZo632nFI/AAAAAAAAADU/4UtNKpMOF-k/s400/cloud_chateau.jpg" /&gt;&lt;p&gt;The Cloud Chateau&lt;/p&gt;&lt;/a&gt;&lt;/div&gt;A still image cannot hope to capture the beautiful moving designs you will find in the Chateau; you'll have to see it for yourself. It's a great place to relax and get inspired, and I love to visit it! One note: if you try to teleport there (like from the link above), you'll be placed on the ground level. The Chateau is many hundred meters in the air, but luckily there's a handy elevator bubble that will take you directly there. Enjoy!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Next stop: The Photography Studio in Grignano!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://slurl.com/secondlife/Grignano/113/117/27"&gt;&lt;img alt="" src="http://bp0.blogger.com/_BJUcN3gVhrg/RclZt632nHI/AAAAAAAAADk/-1lbveIuZs0/s400/photo_studio2.jpg" /&gt;&lt;p&gt;The Photography Studio in Grignano&lt;/p&gt;&lt;/a&gt;&lt;/div&gt;The Studio is headed by Osprey Therian, a very cool gal with a very cool hat and a very cool gallery! There is a loosely-themed photography contest just about every month, with cash prizes (yay, money!). I've even entered a few of them myself!&lt;br /&gt;&lt;br /&gt;There is a lot to see at the Studio. Downstairs is the studio proper, with backdrops for snapshots and a collection of "old-timey" snapshots. On the second floor to the right are a collection of books and other entertaining things. But my favorite part is the gallery, where the monthly photo contests entries hang in all their snapshot glory. Second Life has some very unique and talented artists among its population, and the Photography Studio in Grignano is a fantastic place to see the works of established as well as up-and-coming Resident photographers!&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img alt="" src="http://bp3.blogger.com/_BJUcN3gVhrg/RclZtq32nGI/AAAAAAAAADc/PggDXU5eMy0/s400/photo_studio.jpg" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-4547725343416440193?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.lovelymachine.com/cgi-bin/mt-tb.cgi/352' title='Challenge: Two Newbie Locations'/><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/4547725343416440193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=4547725343416440193' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/4547725343416440193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/4547725343416440193'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2007/02/challenge-two-newbie-locations.html' title='Challenge: Two Newbie Locations'/><author><name>J</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_BJUcN3gVhrg/RclZkK32nEI/AAAAAAAAADM/Qhs8IfEATjM/s72-c/particle_lab.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-5446631684296406586</id><published>2007-02-03T17:55:00.000-06:00</published><updated>2007-02-03T18:29:55.933-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ossviewer'/><category scheme='http://www.blogger.com/atom/ns#' term='feature'/><title type='text'>Arbitrary Prim Attributes</title><content type='html'>&lt;a href="http://torley.com/please-give-us-brightness-contrast-and-saturation-controls-for-textures/trackback/"&gt;What a super idea!&lt;/a&gt; I've got the YAYZERAMA HANDS too now!!&lt;br /&gt;&lt;br /&gt;Features like this (and other cool things, too!) could be added to the viewer client, 'specially now that it's open source, but so many features require just a little bit of help from the server to do it properly.&lt;br /&gt;&lt;br /&gt;For example, right now there's no good way for the sim to remember "This prim has a saturation of 0.5 on all its sides" and tell that to everybody that comes by, so there isn't any way to share the desaturated goodness with anyone else! (Maybe you could store some cryptic data in the prim's name or description for other special viewers to notice, but that would be a dirty, dirty hack. Yuck!)&lt;br /&gt;&lt;br /&gt;Sure, we could tug on the Linden programmers' shirt tails every time there's a new client-side feature we'd like the sim to store a little bit of data for. But, even if they were just twiddling their thumbs all day and waiting for something to do, there would never be enough time to add something for every feature that someone thinks up. (Plus they'd have to do a grid-wide update every 15 minutes.)&lt;br /&gt;&lt;br /&gt;A better way would be to give each prim a little pocket where it can hold some arbitrary data to give to viewers that see it. There would be a hard limit on the size of the data (maybe 1k, or 5k), and it would be completely up to the viewer software to decide what to do with it. And of course, scripts would have to be able to read and write this data!&lt;br /&gt;&lt;br /&gt;Ideally, objects and prims in SL should be sent as XML, kinda like this:&lt;br /&gt;&lt;pre&gt;&amp;lt;primitive &lt;br /&gt;    name="My Awesome Prim"&lt;br /&gt;    description="The best prim ever made."&lt;br /&gt;    shape="torus"&lt;br /&gt;    texture_uuid="top: [uuid], bottom: [uuid]" &lt;br /&gt;    contents="[first_item_uuid], [second_item_uuid]"&lt;br /&gt;    size="8m 2m 2m"&lt;br /&gt;    skew="80%"&lt;br /&gt;    awesomeness="23.5" /&amp;gt;&lt;br /&gt;&lt;/pre&gt;Then the scripts could do something like this:&lt;br /&gt;&lt;pre&gt;if( llGetAttribute( "shape" ) == "torus" )&lt;br /&gt;{&lt;br /&gt;    llSetAttribute( "awesomeness", "infinity" );&lt;br /&gt;}&lt;/pre&gt;Or if we had a decent scripting language, like ruby, it would be like this:&lt;br /&gt;&lt;pre&gt;if self.shape == "torus"&lt;br /&gt;  self.awesomeness = "infinity"&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;And if you had a special viewer client that was programmed to understand the "awesomeness" attribute, the client could do something cool like write "This prim is so awesome!!" on your screen with a big squiggly arrow pointing to it.&lt;br /&gt;&lt;br /&gt;That would be awesome.&lt;br /&gt;&lt;br /&gt;P.S. If you're worried that this would contribute to sim load because of the increased amount of data being sent, remember that textures are the #1 cause of &lt;del&gt;teen pregnancy&lt;/del&gt; &lt;add&gt;sim lag&lt;/add&gt;. Plus, the sim could enforce a data size for the prim declaration, by dropping out some nonstandard attributes if it gets too big.&lt;br /&gt;&lt;br /&gt;P.P.S. Yeah, I know this could be a big ol' security hole. What isn't? 'specially if you're using a custom viewer client provided by some homeless person down the street.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-5446631684296406586?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://torley.com/please-give-us-brightness-contrast-and-saturation-controls-for-textures/trackback/' title='Arbitrary Prim Attributes'/><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/5446631684296406586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=5446631684296406586' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/5446631684296406586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/5446631684296406586'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2007/02/arbitrary-prim-attributes.html' title='Arbitrary Prim Attributes'/><author><name>Jacek</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_RAYeU6b6zmE/SLos9tPhkRI/AAAAAAAAAAY/fHlrFqE0yos/S220/jacek-Aug-2008_square2_80.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-5995873577437195636</id><published>2007-01-29T21:57:00.000-06:00</published><updated>2007-01-29T22:23:58.367-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='musings'/><title type='text'></title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_BJUcN3gVhrg/Rb7FgeNn5yI/AAAAAAAAADA/GoJTPaELs_c/s1600-h/farewell.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_BJUcN3gVhrg/Rb7FgeNn5yI/AAAAAAAAADA/GoJTPaELs_c/s400/farewell.png" alt="" id="BLOGGER_PHOTO_ID_5025671395848742690" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-5995873577437195636?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/5995873577437195636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/5995873577437195636'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2007/01/blog-post.html' title=''/><author><name>J</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_BJUcN3gVhrg/Rb7FgeNn5yI/AAAAAAAAADA/GoJTPaELs_c/s72-c/farewell.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-1726820971378893745</id><published>2007-01-22T23:02:00.000-06:00</published><updated>2007-01-23T00:01:14.192-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ossviewer'/><title type='text'>Local subversion repository</title><content type='html'>Another post? It's like a post overload!&lt;br /&gt;&lt;br /&gt;I've set up a local subversion (svn) repository to manage the viewer source code as I make revisions, allowing me to easily save old versions, view what I've changed, and revert to the older version if something bad happens. It's not accessible over the internet (at least not yet), which means that it is of very limited usefulness to other people. But hey, I know how fun it is to read about what other people are doing that doesn't really affect me personally, so now my readers (I think I have some of those? Maybe I'm thinking of lemurs.) can enjoy the same luxury.&lt;br /&gt;&lt;br /&gt;Here's the plan for repository layout:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;tt&gt;linden&lt;/tt&gt; &amp;mdash; contains the most recent vanilla source code from Linden Lab.&lt;/li&gt;&lt;li&gt;&lt;tt&gt;jacek&lt;/tt&gt; &amp;mdash; contains my tinkered source code.&lt;/li&gt;&lt;/ul&gt;You might be wondering why I would maintain a directory with the untouched source code, when I can always revert any changes that I've made. My reasoning has to do with managing changes to the linden branch and merging them into my own branch as needed. When a new version of the source comes out, I can update the &lt;tt&gt;linden&lt;/tt&gt; branch, see what changed, and apply those changes to my branch&amp;mdash;without overwriting any changes I may have made to the same files.&lt;br /&gt;&lt;br /&gt;I might also make more branches off of &lt;tt&gt;jacek&lt;/tt&gt; if I ever decide to implement something that takes a really long time to code, then merge the changes back when I'm done.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-1726820971378893745?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/1726820971378893745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=1726820971378893745' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/1726820971378893745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/1726820971378893745'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2007/01/local-subversion-repository.html' title='Local subversion repository'/><author><name>J</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-4223865770808516943</id><published>2007-01-22T18:51:00.000-06:00</published><updated>2007-01-22T19:50:02.093-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='art'/><title type='text'>UI abstraction follow-up</title><content type='html'>Not to toot my own horn in public, but one of &lt;a href="http://jacek-antonelli.blogspot.com/2007/01/ui-abstraction-photo-contest.html"&gt;my images for the UI Abstraction Photo Contest&lt;/a&gt; won first prize! I thought that was pretty neat. It was this one:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_BJUcN3gVhrg/RbFUjtniEMI/AAAAAAAAACY/Iun62e5qgnI/s1600-h/welcome1.png"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_BJUcN3gVhrg/RbFUjtniEMI/AAAAAAAAACY/Iun62e5qgnI/s320/welcome1.png" alt="" id="BLOGGER_PHOTO_ID_5021888032012374210" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;There were a metric ton of other really awesome images in the show, in a surprising variety of styles! The social phenomenon that is &lt;a href="http://torley.com/"&gt;Torley&lt;/a&gt; submitted some images, and they were pretty awesome, which is natural, seeing as how Torley is to UI abstraction what Rembrandt van Rijn was to portraiture. I even use a mash-up of &lt;a href="http://torley.com/tellus/"&gt;one of Torley's pics &lt;/a&gt;as my desktop wallpaper. Not to mention Torley's texture packs—they look really cool on a nice twisty torus! And there is a new pack out that I have to &lt;a href="http://slurl.com/secondlife/Grasmere/164/33/45/?x=250&amp;y=300&amp;amp;img=http%3A//farm1.static.flickr.com/187/363848542_98a7d9d25d_m.jpg&amp;title=Torley%20Textures%20@%20the%20Linden%20Village&amp;amp;msg=Come%20visit%20Watermelinden%20Land%20and%20get%20these%20textures%20for%20free%21%20Just%20click%21"&gt;run out and get&lt;/a&gt;! And the songs, oh so many wonderful songs (especially lovin' the piano fantasies)! *gush* &amp;lt;3 We all love Torley! &amp;lt;3&lt;br /&gt;&lt;br /&gt;(Hey, that's like 3 posts in one day. This is starting to turn into a blog or something. What the cube?)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-4223865770808516943?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/4223865770808516943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=4223865770808516943' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/4223865770808516943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/4223865770808516943'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2007/01/ui-abstraction-follow-up.html' title='UI abstraction follow-up'/><author><name>J</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_BJUcN3gVhrg/RbFUjtniEMI/AAAAAAAAACY/Iun62e5qgnI/s72-c/welcome1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-6600213007524032477</id><published>2007-01-22T17:03:00.000-06:00</published><updated>2007-01-22T17:06:42.561-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><title type='text'>Disabling Typing Sound Client-side</title><content type='html'>You know that really loud and annoying typing sound? The one that plays whenever anybody starts to chat? The one that used to ruin in-world live music events? The one you muted all sound effects to get rid of?&lt;br /&gt;&lt;br /&gt;Yeah, you know the one. Well guess what: you can replace it with the sound effect of your choice, or just get rid of it entirely. You don't even have to change any code in the viewer source; we could have done this all along. (Which really rubs salt in the wound, doesn't it?)&lt;br /&gt;&lt;br /&gt;Here's how:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Enable the Client and Server debug menus with Ctrl-Alt-Shift-D.&lt;/li&gt;&lt;li&gt;Client &gt; Debug Settings (second entry from the bottom)&lt;/li&gt;&lt;li&gt;Type or find "UISndTyping" in the drop-down menu box.&lt;/li&gt;&lt;li&gt;To get rid of the typing sound: clear the text entry box at the bottom. To use a different sound file, paste its UUID into the text entry box. (You can get a sound's UUID by right clicking it in your inventory and choosing "Copy Asset UUID".)&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;That should save the setting to your user_settings.xml file: &lt;code&gt;&lt;/code&gt;&lt;pre&gt;    &amp;lt;!--Sound file for starting to type a chat message (uuid for sound asset)--&amp;gt;&lt;br /&gt;   &amp;lt;UISndTyping value=""/&amp;gt;&lt;/pre&gt;This only changes what you hear from your own client, which means everyone else will hear whatever they set. And best of all, you won't hear typing from other avatars, either! Now that's music to my ears!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-6600213007524032477?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/6600213007524032477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=6600213007524032477' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/6600213007524032477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/6600213007524032477'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2007/01/disabling-typing-sound-client-side.html' title='Disabling Typing Sound Client-side'/><author><name>J</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-6464313430131834499</id><published>2007-01-22T16:58:00.000-06:00</published><updated>2007-01-22T17:06:03.516-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ossviewer'/><title type='text'>OSS Viewer success</title><content type='html'>Minor news bulletin: I compiled the latest viewer source and successfully connected to the grid today. I'm not sure exactly why it worked this time, but there are a few major possibilities:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;I used the faster, but proprietary jpeg2000 decoder library.&lt;/li&gt;&lt;li&gt;I actually followed all the instructions.&lt;/li&gt;&lt;/ol&gt;But there's no way of knowing exactly which it was... so, um... yeah.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-6464313430131834499?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/6464313430131834499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=6464313430131834499' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/6464313430131834499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/6464313430131834499'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2007/01/oss-viewer-success.html' title='OSS Viewer success'/><author><name>J</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-2767221156010174545</id><published>2007-01-19T17:23:00.000-06:00</published><updated>2007-01-19T19:05:44.829-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='art'/><title type='text'>UI Abstraction Photo Contest</title><content type='html'>You may have &lt;a href="http://nwn.blogs.com/nwn/2007/01/finding_art_in_.html"&gt;read about&lt;/a&gt; the &lt;a href="http://sl-art-news.blogspot.com/2006/12/octree.html"&gt;next contest&lt;/a&gt; at the Photography Studio in Grignano. I've submitted two images to the contest, which you can view below! &lt;br /&gt;&lt;br /&gt;Both entries are based on a set of snapshots I did of one scene; every snapshot in the set was of the same scene from the same angle, but with different settings. The stark difference between the images below is the product of experimenting with how the many snapshots were layered and combined. The series is entitled "Welcome".&lt;br /&gt;&lt;br /&gt;Click each image to view a larger size.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_BJUcN3gVhrg/RbFUjtniEMI/AAAAAAAAACY/Iun62e5qgnI/s1600-h/welcome1.png"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_BJUcN3gVhrg/RbFUjtniEMI/AAAAAAAAACY/Iun62e5qgnI/s320/welcome1.png" alt="" id="BLOGGER_PHOTO_ID_5021888032012374210" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_BJUcN3gVhrg/RbFS_NniELI/AAAAAAAAACQ/8fw9JQszDcw/s1600-h/welcome2.png"&gt;&lt;img style="cursor: pointer;" src="http://bp1.blogger.com/_BJUcN3gVhrg/RbFS_NniELI/AAAAAAAAACQ/8fw9JQszDcw/s320/welcome2.png" alt="" id="BLOGGER_PHOTO_ID_5021886305435521202" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;They will be hanging on the walls of the venerable Studio with all the other entries for the exhibit, so you should check the place out!&lt;br /&gt;&lt;br /&gt;Also, if you're thinking of submitting an entry, you'd better hurry: the deadline for submission is tomorrow evening!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-2767221156010174545?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/2767221156010174545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=2767221156010174545' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/2767221156010174545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/2767221156010174545'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2007/01/ui-abstraction-photo-contest.html' title='UI Abstraction Photo Contest'/><author><name>J</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_BJUcN3gVhrg/RbFUjtniEMI/AAAAAAAAACY/Iun62e5qgnI/s72-c/welcome1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-3321179640465735544</id><published>2007-01-16T12:18:00.000-06:00</published><updated>2007-01-16T12:25:14.520-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silly'/><category scheme='http://www.blogger.com/atom/ns#' term='adventures'/><title type='text'>Purple Reinaday!</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_BJUcN3gVhrg/Ra0YcdniEJI/AAAAAAAAAB8/nuqrH46spqo/s1600-h/reinaday.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_BJUcN3gVhrg/Ra0YcdniEJI/AAAAAAAAAB8/nuqrH46spqo/s400/reinaday.png" border="0" alt="Be Purple for Reinaday... or else." id="BLOGGER_PHOTO_ID_5020696036853813394" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-3321179640465735544?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/3321179640465735544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=3321179640465735544' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/3321179640465735544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/3321179640465735544'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2007/01/purple-reinaday.html' title='Purple Reinaday!'/><author><name>J</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_BJUcN3gVhrg/Ra0YcdniEJI/AAAAAAAAAB8/nuqrH46spqo/s72-c/reinaday.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-1077031093505644466</id><published>2007-01-13T17:13:00.000-06:00</published><updated>2007-01-13T17:13:01.024-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ossviewer'/><title type='text'>Status Update 01-13</title><content type='html'>I've compiled the vanilla viewer 3 times so far, twice as "release" and once as "releasefordownload". I've also connected to the Grid (Agni) several times, but each time the connection was apparently interrupted or died or was deauthorized soon after log-in.&lt;br /&gt;&lt;br /&gt;Movement, teleportation, profile viewing, map viewing, and who knows what else were non-operational. The Friends list seemed to work, and I tried to send a couple IMs to my online friends, but they were not received. L$ balance was blank, and some menu options were disabled (specifically "Appearance" and "Upload ____"). My avatar was invisible except for a few attachments attachments, and no in-world objects were visible. The terrain &lt;span style="font-style: italic;"&gt;was&lt;/span&gt; visible, however.&lt;br /&gt;&lt;br /&gt;There were several varieties of suspicious/interesting messages which flooded the console at various times.&lt;br /&gt;&lt;br /&gt;The first variety looked like this:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;[INFO] tile 1 of 1&lt;br /&gt;[INFO] - tiers-1 took 1.032843 s&lt;br /&gt;[INFO] - dwt took 2.815572 s&lt;br /&gt;[INFO] - tile decoded in 4.792272 s&lt;/pre&gt;&lt;/blockquote&gt;I think it is reporting on the download and decoding of texture files from jpeg2000 format. Some time after the log-in process began, an increasing amount show up like this:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;[INFO] tile 1 of 1&lt;br /&gt;[ERROR] tcd_decode: incomplete bistream&lt;br /&gt;[INFO] - tiers-1 took 0.117982 s&lt;br /&gt;[INFO] - dwt took 0.406939 s&lt;br /&gt;[INFO] - tile decoded in 0.736888 s&lt;br /&gt;[ERROR] read error&lt;/pre&gt;&lt;/blockquote&gt;If I try to move or fly, I get messages like this:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;2007-01-11T23:22:44Z WARNING: sendMessage - Trying to send AgentUpdate on unknown circuit 72.5.13.29:13004&lt;/pre&gt;&lt;/blockquote&gt;If I try other things, I get the same message, but with "AgentUpdate" replaced with other message names, like "ViewerEffect" or "TeleportLandmarkRequest" or "AgentPause" or "LogoutRequest".&lt;br /&gt;&lt;br /&gt;Finally, here is an example of the message log summary I get when I quit the viewer.&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;2007-01-13T23:04:01Z INFO: START MESSAGE LOG SUMMARY&lt;br /&gt;2007-01-13T23:04:01Z Run time:      591.330 seconds&lt;br /&gt;2007-01-13T23:04:01Z Incoming:&lt;br /&gt;2007-01-13T23:04:01Z Total bytes received:                     78004 ( 1.06 kbits per second)&lt;br /&gt;2007-01-13T23:04:01Z Total packets received:                     403 ( 0.68 packets per second)&lt;br /&gt;2007-01-13T23:04:01Z Average packet size:                        194 bytes&lt;br /&gt;2007-01-13T23:04:01Z Total reliable packets:                      24 ( 5.94%)&lt;br /&gt;2007-01-13T23:04:01Z Total compressed packets:                    71 (17.57%)&lt;br /&gt;2007-01-13T23:04:01Z Total compression savings:                 8097 bytes&lt;br /&gt;2007-01-13T23:04:01Z Avg comp packet savings:                    112 ( 1.38 : 1)&lt;br /&gt;2007-01-13T23:04:01Z Avg overall comp savings:                    20 ( 1.10 : 1)&lt;br /&gt;2007-01-13T23:04:01Z&lt;br /&gt;2007-01-13T23:04:01Z Outgoing:&lt;br /&gt;2007-01-13T23:04:01Z Total bytes sent:                          2000 ( 0.03 kbits per second)&lt;br /&gt;2007-01-13T23:04:01Z Total packets sent:                         437 ( 0.74 packets per second)&lt;br /&gt;2007-01-13T23:04:01Z Average packet size:                          5 bytes&lt;br /&gt;2007-01-13T23:04:01Z Total reliable packets:                      71 (16.21%)&lt;br /&gt;2007-01-13T23:04:01Z Total compressed packets:                    14 ( 3.20%)&lt;br /&gt;2007-01-13T23:04:01Z Total compression savings:                  244 bytes&lt;br /&gt;2007-01-13T23:04:01Z Avg comp packet savings:                     16 ( 1.22 : 1)&lt;br /&gt;2007-01-13T23:04:01Z Avg overall comp savings:                     0 ( 1.12 : 1)&lt;br /&gt;2007-01-13T23:04:01Z&lt;br /&gt;2007-01-13T23:04:01Z SendPacket failures:                          0&lt;br /&gt;2007-01-13T23:04:01Z Dropped packets:                             10&lt;br /&gt;2007-01-13T23:04:01Z Resent packets:                              34&lt;br /&gt;2007-01-13T23:04:01Z Failed reliable resends:                     42&lt;br /&gt;2007-01-13T23:04:01Z Off-circuit rejected packets:               267&lt;br /&gt;2007-01-13T23:04:01Z On-circuit invalid packets:                   0&lt;br /&gt;2007-01-13T23:04:01Z&lt;br /&gt;2007-01-13T23:04:01Z Decoding:&lt;br /&gt;2007-01-13T23:04:01Z                             Message     Count      Time       Max       Avg&lt;br /&gt;2007-01-13T23:04:01Z END MESSAGE LOG SUMMARY&lt;/pre&gt;&lt;/blockquote&gt;On the plus side: except for not being able to log in or do much of anything, it works great! ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-1077031093505644466?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/1077031093505644466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=1077031093505644466' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/1077031093505644466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/1077031093505644466'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2007/01/status-update-01-13.html' title='Status Update 01-13'/><author><name>J</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-4130804849357268755</id><published>2007-01-10T19:42:00.000-06:00</published><updated>2007-01-10T22:27:13.604-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ossviewer'/><category scheme='http://www.blogger.com/atom/ns#' term='feature'/><title type='text'>Miscellaneous Feature Ideas</title><content type='html'>Just brainstorming features (large and small) that would be both possible and desirable to add to the Second Life viewer client. Things which would require server changes don't fit here, only things which can be accomplished by changing the client only. I'm also focusing only on new features for this post; I might make another post of bugs that should be fixed.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Menu items for builder tools (e.g. Edit Linked Parts, Ruler Modes, Color/Texture Pickers).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Hide/show specific UI elements. (Tateru gets the credit for thinking up this one.)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Arbitrary number of clothing layers on all body sections.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Improved avatar mesh UV maps, so clothing and skins are easier to create and align.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Improved avatar mesh weighting, so joints don't bend in such an ugly way.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Modifiable menus (rearrange and set shortcuts on the fly).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;UI color schemes.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Additional image file formats (e.g. PNG).&lt;/li&gt;&lt;li&gt;Client-side script API, allowing interpreted scripts to access client functions.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Here's how I would rank them:&lt;br /&gt;&lt;br /&gt;The three least difficult to accomplish, in increasing difficulty:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Menu items for builder tools.&lt;/li&gt;&lt;li&gt;Hide/show UI elements.&lt;/li&gt;&lt;li&gt;Improved avatar mesh weighting.&lt;/li&gt;&lt;/ol&gt;The three most beneficial, in decreasing benefit:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Client-side script API.&lt;/li&gt;&lt;li&gt;Arbitrary clothing layers.&lt;/li&gt;&lt;li&gt;Modifiable menus.&lt;/li&gt;&lt;/ol&gt;The three best time investments (most gain for time spent), in decreasing return on investment:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Client-side script API. (The gain is simply astounding.)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Menu items for builder tools. (The gain is only moderate, but the effort is minimal.)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Arbitrary clothing layers. (The gain is very great.)&lt;/li&gt;&lt;/ol&gt;If you care to comment on how you would rank the listed items differently, please do so. I'm not asking for new ideas for features, though; I think there are more appropriate (and worthwhile) channels to be heard.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-4130804849357268755?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/4130804849357268755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=4130804849357268755' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/4130804849357268755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/4130804849357268755'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2007/01/miscellaneous-feature-ideas.html' title='Miscellaneous Feature Ideas'/><author><name>J</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-3592860268701157127</id><published>2007-01-08T19:11:00.000-06:00</published><updated>2007-01-08T21:00:22.257-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ossviewer'/><title type='text'>Post-OSS Plans</title><content type='html'>I've dived head-first into the client source code. For the moment, I'm just orienting myself, poking my head around to see what goes where, building up a mental map of how the pieces fit.&lt;br /&gt;&lt;br /&gt;An obvious next step is to attempt a compile of the viewer as-provided, before making any changes. That way, if something doesn't work, I will know that at least it &lt;span style="font-style: italic;"&gt;used&lt;/span&gt; to work, so something I did broke it.&lt;br /&gt;&lt;br /&gt;I'm also familiarizing myself with Linden Lab's issue tracker, wiki, mailing list, etc.&amp;mdash;all the new stuff that appeared. I'll probably see if there are any little bugs in the issue tracker that I can fix.&lt;br /&gt;&lt;br /&gt;In the meantime, I'm noting areas of the source code that interest me, so that I can focus and specialize in them. At the moment, improving the user interface seems to be where I get my kicks. The things I noted in my &lt;a href="http://jacek-antonelli.blogspot.com/search/label/xui"&gt;exploration of XUI&lt;/a&gt; as being impossible without access to the source code are now, of course, possible.&lt;br /&gt;&lt;br /&gt;Lots of new toys to play with.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-3592860268701157127?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/3592860268701157127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=3592860268701157127' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/3592860268701157127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/3592860268701157127'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2007/01/post-oss-plans.html' title='Post-OSS Plans'/><author><name>J</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-8365105521088987797</id><published>2007-01-08T16:49:00.000-06:00</published><updated>2007-01-08T17:36:05.883-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ossviewer'/><title type='text'>Second Life Viewer Open-Sourced</title><content type='html'>This is quite simply &lt;a href="http://blog.secondlife.com/2007/01/08/embracing-the-inevitable/"&gt;the most important SL news ever&lt;/a&gt;. Don't I seem excited? Well, I am. You could say I am cautiously optimistic.&lt;br /&gt;&lt;br /&gt;Linden Lab has put a lot of thought and planning into this move, as evidenced by the info-laden &lt;a href="http://secondlife.com/developers/opensource/"&gt;open source page&lt;/a&gt; and &lt;a href="https://wiki.secondlife.com/wiki/Main_Page"&gt;new wiki&lt;/a&gt;. I can only hope they know what they are doing.&lt;br /&gt;&lt;br /&gt;Yes, part of me worries about the negative effects we will almost certainly see in the near future. This has the potential to be much worse than the CopyBot scare, and with good reason&amp;mdash;this turns the Grid upside-down. The assumptions that had been in place are now defenestrated, and business models will have to adapt, and adapt &lt;span style="font-style: italic;"&gt;fast&lt;/span&gt;. Except for scripters and sex workers, there is no SL market I can think of that will not have to fundamentally rearrange itself.&lt;br /&gt;&lt;br /&gt;Honestly, Linden Lab should have given an announcement several days prior to the source code release, to give time for preparation. I would not be surprised if many content providers close down temporarily, until they decide what to do.&lt;br /&gt;&lt;br /&gt;We will probably see theft and panic. Temporary economic instability. But people will adapt. New business models will emerge. And most importantly, new tools will be created to improve Second Life.&lt;br /&gt;&lt;br /&gt;Let's have hope for the future. The next few days will be rough as vendors panic, but things will calm down. Later, probably within a week, some new tool will be released to exploit some security hole, and more people will panic. But things will calm down again.&lt;br /&gt;&lt;br /&gt;And then we'll see some really neat stuff. The kind of stuff that restores your faith in humanity.&lt;br /&gt;&lt;br /&gt;That's how I see it, anyway. Time will tell.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-8365105521088987797?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.secondlife.com/2007/01/08/embracing-the-inevitable/' title='Second Life Viewer Open-Sourced'/><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/8365105521088987797/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=8365105521088987797' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/8365105521088987797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/8365105521088987797'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2007/01/second-life-viewer-open-sourced.html' title='Second Life Viewer Open-Sourced'/><author><name>J</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-2008877942212128734</id><published>2006-12-24T20:38:00.000-06:00</published><updated>2006-12-24T20:41:44.179-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silly'/><category scheme='http://www.blogger.com/atom/ns#' term='adventures'/><title type='text'>Happy Patiday</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_BJUcN3gVhrg/RY856S_zJ6I/AAAAAAAAABA/zSeGvGLg-IA/s1600-h/patiday.png"&gt;&lt;img style="cursor: pointer;" src="http://bp1.blogger.com/_BJUcN3gVhrg/RY856S_zJ6I/AAAAAAAAABA/zSeGvGLg-IA/s400/patiday.png" alt="" id="BLOGGER_PHOTO_ID_5012288583981279138" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-2008877942212128734?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/2008877942212128734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=2008877942212128734' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/2008877942212128734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/2008877942212128734'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2006/12/happy-patiday.html' title='Happy Patiday'/><author><name>J</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_BJUcN3gVhrg/RY856S_zJ6I/AAAAAAAAABA/zSeGvGLg-IA/s72-c/patiday.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-1072506419437760899</id><published>2006-12-20T18:39:00.000-06:00</published><updated>2006-12-20T20:09:27.378-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='musings'/><title type='text'>On the Technical Town Hall</title><content type='html'>Some &lt;q&gt;excerpts&lt;/q&gt; from the &lt;a href="http://blog.secondlife.com/2006/12/20/town-hall-with-cory-introductory-transcript/"&gt;Technical Town Hall transcript&lt;/a&gt; that I found particularly interesting or insightful, for whatever reason. Quotes are sometimes followed by my comments, when I have something to add. All emphasis in the quotes is mine.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Server scaling, other than the centralized services issues I just covered, is primarily a function &lt;span style="font-style:italic;"&gt;texture prioritization&lt;/span&gt;/downloading, script processing, physical simulation, and &lt;span style="font-style:italic;"&gt;interest list calculation&lt;/span&gt;.&lt;/blockquote&gt;&lt;br /&gt;The phrase &lt;q&gt;interest list calculation&lt;/q&gt; gave me a fascinating little peek at how the servers prioritize what content (esp. animations, sounds, and textures) to keep ready-at-hand to feed to your viewer. It also explains why editing or hovering your mouse cursor over an unrezzed texture often makes it rez faster. And why textures you haven't accessed in a year take longer to rez than textures a dozen people see every day.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;We had a serious bug through october and november that was crashing sims in the messaging code. That bug is now fixed, so sim crash rates should drop. As we find them we try to kill them.&lt;/blockquote&gt;&lt;br /&gt;Background: for several consecutive weeks in November, the sim where I host my Advanced Building class would crash 3-4 times within the 2-hour class session. On more than one occassion, I strongly considered retiring from teaching in SL, simply because of this issue.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;I will say that we are trying to update our messaging system to more properly leverage existing standards rather than our hand-rolled one. &amp;hellip; Doing this is, as you might imagine, a tremendous amount of work, because we have to start by &lt;span style="font-style:italic;"&gt;taking message template out behind the shed and shooting it.&lt;/span&gt; Then, we need simulators and viewers to &lt;span style="font-style:italic;"&gt;be able to discover what features they have&lt;/span&gt;, be able to fall back gracefully, etc etc.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;I would ask folks to remember that when we undertake major changes, it is a little like trying to rebuild the engine of a car. While driving it. And changing to a hydrogen economy. Without hitting anyone, losing control, or breaking the car.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;If they [libsecondlife developers] break the terms of service we treat them like any other resident, but &lt;span style="font-style:italic;"&gt;just because they tinker does not make them criminals.&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Speaking of hiring &amp;hellip; to reinforce what Philip said, if you and a friend are somewhere   other than the Bay Area, we still should talk. We are already a distributed company and I see no reason why we can’t become more of one.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-1072506419437760899?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/1072506419437760899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=1072506419437760899' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/1072506419437760899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/1072506419437760899'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2006/12/on-technical-town-hall.html' title='On the Technical Town Hall'/><author><name>J</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-1309659004721296467</id><published>2006-12-17T18:35:00.000-06:00</published><updated>2006-12-17T16:43:58.222-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xui'/><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='feature'/><category scheme='http://www.blogger.com/atom/ns#' term='adventures'/><title type='text'>Rolling Your Own Menu</title><content type='html'>&lt;div class="floatright"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_BJUcN3gVhrg/RYWnoy_zJ5I/AAAAAAAAAAw/kbTzOnVB13w/s1600-h/buildertools.png"&gt;&lt;img style="cursor: pointer;" src="http://bp1.blogger.com/_BJUcN3gVhrg/RYWnoy_zJ5I/AAAAAAAAAAw/kbTzOnVB13w/s320/buildertools.png" alt="" id="BLOGGER_PHOTO_ID_5009594479845517202" border="0" /&gt;&lt;/a&gt;&lt;p&gt;Jacek's secret herbs and spices&lt;/p&gt;&lt;/div&gt;Have you ever wanted to gather all your favorite and most-used items from Second Life's main menus, and put them all in one place for easy access? Well, you can do exactly that by &lt;a href="http://jacek-antonelli.blogspot.com/2006/12/my-xui-wishlist.html"&gt;editing SL's XUI files&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;For my own purposes, made a new sub-menu, &lt;q&gt;Builder Tool&lt;/q&gt;, which lives under the &lt;q&gt;Tools&lt;/q&gt; main menu. In it, I put lots of useful building tools and options that I took from various other menus. Now I can tear off one little menu, and have them close at hand while working! Yay!&lt;br /&gt;&lt;br /&gt;I also added two new menu items, for options found in the Edit tool window: Stretch Both Sides and Stretch Textures! Because they are now menu entries instead of checkboxes in the Edit window, I can assign keyboard shortcut keys to toggle them! Double-Yay!&lt;br /&gt;&lt;br /&gt;Rather than walk through every step of editing the XML, I'll just point out the important or new things. All the editing is done in &lt;tt&gt;menu_viewer.xml&lt;/tt&gt;, the same file we editted to &lt;a href="http://jacek-antonelli.blogspot.com/2006/12/hacking-xui-for-fun-and-goodness.html"&gt;change the keyboard shortcuts&lt;/a&gt; before, but I also referred to &lt;tt&gt;floater_tools.xml&lt;/tt&gt;, as described later in this post.&lt;br /&gt;&lt;br /&gt;Creating a new menu is fairly easy: just make (or duplicate and modify) a &lt;tt&gt;&amp;lt;menu&amp;gt;&lt;/tt&gt; block, being careful (of course) to close the block with a &lt;tt&gt;&amp;lt;/menu&amp;gt;&lt;/tt&gt; tag. Gathering items from other menus is a simple matter, just copy and pasting each desired &lt;tt&gt;&amp;lt;menu_item_*&amp;gt;&lt;/tt&gt; block into the middle of your new menu block. From what I can tell, the positioning attributes (&lt;tt&gt;bottom&lt;/tt&gt;, &lt;tt&gt;left&lt;/tt&gt;, etc.) are ignored or overridden by SL, so you don't even have to worry about getting those numbers right.&lt;br /&gt;&lt;br /&gt;Adding the two new menu items, &lt;q&gt;Stretch Both Sides&lt;/q&gt; and &lt;q&gt;Stretch Textures&lt;/q&gt;, was not much harder. But in fact, it is only possible because of the particular way that those two options, along with the &lt;q&gt;Snap to Grid/Use Grid&lt;/q&gt; option, were implemented; I suspect that they were all once menu items in the past, or were intended to be so. &lt;q&gt;Snap to Grid&lt;/q&gt; currently &lt;span style="font-style: italic;"&gt;is&lt;/span&gt; a menu item in the Tools menu, and it was by examining the XML for the menu item and comparing it to the corresponding checkbox in the Edit window that I discovered that it was possible to do the same with the other two options.&lt;br /&gt;&lt;br /&gt;The key is that all three of these options are manipulated by calling the &lt;tt&gt;ToggleControl&lt;/tt&gt; function and passing the &lt;q&gt;control name&lt;/q&gt; of the option. Both the menu and the checkbox refer to the &lt;tt&gt;SnapEnabled&lt;/tt&gt; control name: in &lt;tt&gt;floater_tools.xml&lt;/tt&gt;, the &lt;q&gt;Use Grid&lt;/q&gt; checkbox has an attribute, &lt;tt&gt;control_name="SnapEnabled"&lt;/tt&gt;; in &lt;tt&gt;menu_viewer.xml&lt;/tt&gt;, the &lt;q&gt;Snap to Grid&lt;/q&gt; item has two lines which mention &lt;tt&gt;SnapEnabled&lt;/tt&gt;, once in an &lt;tt&gt;&amp;lt;on_click&amp;gt;&lt;/tt&gt; tag, and once in an &lt;tt&gt;&amp;lt;on_check&amp;gt;&lt;/tt&gt; tag.&lt;br /&gt;&lt;br /&gt;Making the two new menu items was just a matter of looking up their control names (&lt;tt&gt;ScaleUniform&lt;/tt&gt; and &lt;tt&gt;ScaleStretchTextures&lt;/tt&gt;) in &lt;tt&gt;floater_tools.xml&lt;/tt&gt;, and plugging them into copies of the &lt;q&gt;Snap to Grid&lt;/q&gt; menu item definition  in both lines (be sure to change the text labels to be descriptive of their new functions).&lt;br /&gt;&lt;br /&gt;Doing a quick grep of the XML files, there are a handful of other miscellanious options which have &lt;tt&gt;control_name&lt;/tt&gt;s. This suggests to me that menus could be built to change these too. Some notable example uses are: (un)muting audio; the &lt;tt&gt;Copy Selection&lt;/tt&gt; tool; toggling chat bubbles; toggling avatar names above their heads.&lt;br /&gt;&lt;br /&gt;It may also be possible to change other options which are not simple on/off switches. For example, it just might be possible to make a menu item which changes all the render detail settings and draw distance to the minimum, for dealing with crowded areas.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Unfortunately&lt;/span&gt;, this dependence on knowing the option's control name means that this method does not allow us to add an "Edit Linked Parts" menu item—the checkbox in the Edit window does not refer to any control name. I still hope that it can be added somehow, but for now it's up to the Lindens.&lt;br /&gt;&lt;br /&gt;Happy building!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-1309659004721296467?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/1309659004721296467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=1309659004721296467' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/1309659004721296467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/1309659004721296467'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2006/12/rolling-your-own-menu.html' title='Rolling Your Own Menu'/><author><name>J</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_BJUcN3gVhrg/RYWnoy_zJ5I/AAAAAAAAAAw/kbTzOnVB13w/s72-c/buildertools.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-2992195693911723047</id><published>2006-12-06T17:37:00.000-06:00</published><updated>2006-12-06T18:25:41.337-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xui'/><category scheme='http://www.blogger.com/atom/ns#' term='feature'/><title type='text'>My XUI Wishlist</title><content type='html'>There are specific things that I want to accomplish which drive me to &lt;a href="http://jacek-antonelli.blogspot.com/2006/12/hacking-xui-for-fun-and-goodness.html"&gt;poke my nose in SL's XML User Interface (XUI) definitions&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here are the ones I have already accomplished:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://jacek-antonelli.blogspot.com/2006/12/hacking-xui-for-fun-and-goodness.html"&gt;Customize some menu shortcuts.&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://jacek-antonelli.blogspot.com/2006/12/im-in-ur-xml-fixin-ur-interfacez.html"&gt;Rename "Hole Size" to "Thickness".&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://jacek-antonelli.blogspot.com/2006/12/ooey-gooey-xui-filling.html"&gt;Decripple Transparency.&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;Here are the things I want to accomplish, but are probably impossible through XUI-editing alone:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Define keyboard shortcuts to toggle "Edit Linked Parts" and "Stretch Both Sides".&lt;/li&gt;&lt;li&gt;Move the color and texture eyedroppers/pipettes from the Color/Texture Selection windows to the Toolbox's Texture panel, next to the swatches.&lt;/li&gt;&lt;li&gt;Decripple the prim attributes.&lt;/li&gt;&lt;li&gt;In particular, be able to edit the Profile Cut attribute for Box, Cylinder, and Prism.&lt;/li&gt;&lt;/ol&gt;I have already tried #2, performing a simple copyandpastectomy of the pipette button from the Color Selection window to the Texture panel, but the button was nonfunctional/disabled. I suspect that the Toolbox window does not have the proper function(s), or is not programmed to listen for clicks to that button. Likewise for #1: the &lt;tt&gt;button&lt;/tt&gt; tag may not respond to &lt;tt&gt;shortcut&lt;/tt&gt; attributes as the menu items did.&lt;br /&gt;&lt;br /&gt;#3 and the more specific #4 appear to be impossible because the functionality involved in limiting, adjusting, and hiding various attributes based on prim type is programmed into the SL viewer, and is not part of the XML. To be able to coax the Profile Cut attribute to appear for Boxes, I would probably need access to SL's source code; of course, I do not &lt;span style="font-style: italic;"&gt;have&lt;/span&gt; access to the source code, so this seems to be out of my hands.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-2992195693911723047?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/2992195693911723047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=2992195693911723047' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/2992195693911723047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/2992195693911723047'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2006/12/my-xui-wishlist.html' title='My XUI Wishlist'/><author><name>J</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-534752524012880804</id><published>2006-12-06T16:46:00.000-06:00</published><updated>2006-12-06T17:31:28.582-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xui'/><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='feature'/><category scheme='http://www.blogger.com/atom/ns#' term='adventures'/><title type='text'>Decrippling the UI</title><content type='html'>Ok, so &lt;a href="http://jacek-antonelli.blogspot.com/2006/12/im-in-ur-xml-fixin-ur-interfacez.html"&gt;I changed the Second Life XML User Interface files&lt;/a&gt; to change some text labels and names in the Toolbox (Edit window). This was just a simple matter of reading through the &lt;tt&gt;floater_tools.xml&lt;/tt&gt; file and changing a few words here and there. No biggie. (No, I did not add a new prim type!—I just renamed "Sphere" to "Watermelon". It's much nicer, don't you think?)&lt;br /&gt;&lt;br /&gt;But aside from the obvious comedic value, what can changing the UI do for us?&lt;br /&gt;&lt;br /&gt;Here's a good one, the true poster child of useful UI changes: &lt;span style="font-style: italic;"&gt;we can decripple the Texture panel's "Transparency" input form&lt;/span&gt;. Have you noticed that you can only make an object 90% transparent using the UI, but you can make it 100% transparent with a single function call in a script? Linden Lab crippled the UI, perhaps to prevent new Residents from making hundreds of totally invisible prims and forgetting where they put them.&lt;br /&gt;&lt;br /&gt;Well, if you are capable enough to edit SL's UI definitions, you are experienced enough to toss aside that crutch! Please note that the &lt;a href="http://jacek-antonelli.blogspot.com/2006/12/hacking-xui-for-fun-and-goodness.html"&gt;same disclaimer as my earlier post&lt;/a&gt; also applies here—you are doing this at your own risk! Here's how: in &lt;tt&gt;floater_tools.xml&lt;/tt&gt;, search for the string &lt;q&gt;ColorTrans&lt;/q&gt;. That should take you to a &lt;tt&gt;&amp;lt;spinner&amp;gt;&lt;/tt&gt; tag defining the spinner (a numeric entry form with up/down arrows on the side) that controls transparency. That tag has an attribute, &lt;tt&gt;max_val&lt;/tt&gt;, which defines the highest number you are allowed to put in it. Change that number from 90 to 100. While you are at it, change the &lt;tt&gt;increment&lt;/tt&gt; attribute to something more useful, like 5 or 10; now it will increase by that amount whenever you click the up/down arrows on the spinner (or use your mousewheel ← bonus pro tip for you!). The default value of 2 gives you a good degree of precision, at the expense of convenience. Don't forget that you can always just click on it and type in whatever number you want, when you need precision!&lt;br /&gt;&lt;br /&gt;Now start (or restart) SL, and enjoy your newfound freedom!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-534752524012880804?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/534752524012880804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=534752524012880804' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/534752524012880804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/534752524012880804'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2006/12/ooey-gooey-xui-filling.html' title='Decrippling the UI'/><author><name>J</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-3380199788848209648</id><published>2006-12-05T23:32:00.000-06:00</published><updated>2006-12-05T23:38:32.890-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xui'/><category scheme='http://www.blogger.com/atom/ns#' term='silly'/><category scheme='http://www.blogger.com/atom/ns#' term='feature'/><category scheme='http://www.blogger.com/atom/ns#' term='adventures'/><title type='text'>IM IN UR XML IMPROVIN UR INTERFACEZ</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_BJUcN3gVhrg/RXZWMAME2II/AAAAAAAAAAM/o04GFWoaOFw/s1600-h/torusheart.png"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_BJUcN3gVhrg/RXZWMAME2II/AAAAAAAAAAM/o04GFWoaOFw/s400/torusheart.png" alt="" id="BLOGGER_PHOTO_ID_5005282800077953154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_BJUcN3gVhrg/RXZWMAME2JI/AAAAAAAAAAU/YCg7vcz-4ks/s1600-h/watermelonprim.png"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_BJUcN3gVhrg/RXZWMAME2JI/AAAAAAAAAAU/YCg7vcz-4ks/s400/watermelonprim.png" alt="" id="BLOGGER_PHOTO_ID_5005282800077953170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(Write-up and &lt;span style="font-style: italic;"&gt;useful&lt;/span&gt; changes to XUI tomorrow.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-3380199788848209648?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/3380199788848209648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=3380199788848209648' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/3380199788848209648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/3380199788848209648'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2006/12/im-in-ur-xml-fixin-ur-interfacez.html' title='IM IN UR XML IMPROVIN UR INTERFACEZ'/><author><name>J</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_BJUcN3gVhrg/RXZWMAME2II/AAAAAAAAAAM/o04GFWoaOFw/s72-c/torusheart.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-8346079137570939089</id><published>2006-12-04T18:29:00.000-06:00</published><updated>2006-12-04T21:25:20.449-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xui'/><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='adventures'/><title type='text'>Hacking XUI for Fun and Goodness</title><content type='html'>Today, I was writing up a huge post about custom keyboard shortcuts. I was covering all the bases: why keyboard shortcuts make everything happy and warm, the ways in which SL's shortcuts are poo, and how Linden Lab could and should implement custom keyboard shortcuts. During my research into this last aspect, I realized something:&lt;br /&gt;&lt;br /&gt;I can do it myself.&lt;br /&gt;&lt;br /&gt;In fact, I not only &lt;span style="font-style: italic;"&gt;can&lt;/span&gt; do it, I &lt;span style="font-style: italic;"&gt;have&lt;/span&gt; done it. As a proof of concept, I successfully remapped the  Ctrl-Shift-M shortcut. It had previously been bound to View &gt; Mini-Map; it is now, for my Viewer, bound to World &gt; Force Sun &gt; Midnight.&lt;br /&gt;&lt;br /&gt;This is just the beginning.&lt;br /&gt;&lt;br /&gt;For the curious, here's how I did it.&lt;br /&gt;&lt;br /&gt;Second Life's user interface is (at this point in the time, but not so in the past) defined as XML located in the &lt;tt&gt;skins/xui/xyz/&lt;/tt&gt; directory (where &lt;tt&gt;xyz&lt;/tt&gt; is the language code; for English readers like myself, it's &lt;tt&gt;en-us&lt;/tt&gt;). The XML for the menu bar along the top of the viewer is in the &lt;tt&gt;menu_viewer.xml&lt;/tt&gt; file.&lt;br /&gt;&lt;br /&gt;The majority of this file are &amp;lt;menu_item_call&amp;gt;  tags, one block for each menu item. One of the possible attributes for this tag is "shortcut". The values for the shortcut attribute are a pipe-separated list of modifiers followed by a key. For example, the "Ctrl-Shift-M" key combination is expressed as "control|shift|m".&lt;br /&gt;&lt;br /&gt;Make a backup copy of &lt;tt&gt;menu_viewer.xml&lt;/tt&gt; before you make any changes, in case you break something and need to revert. Then use a text editor (or, if you have one, a dedicated XML editor) to open the file. Find the entry for "Mini-Map", and cut out the part that says: &lt;tt&gt;shortcut="control|shift|m"&lt;/tt&gt;. Then find the entry for "Midnight", and paste it after &lt;tt&gt;name="Midnight"&lt;/tt&gt; (but before the closing brace; and don't forget to put a space between between the quote after Midnight and the beginning of shortcut).&lt;br /&gt;&lt;br /&gt;That's it. Start up SL, and if everything went as planned, the "World &gt; Force Sun &gt; Midnight" menu item will show a shortcut key combo next to it, and "View &gt; Mini-Map" will not. You can press Ctrl-Shift-M to see for yourself that it now forces the sun to midnight.&lt;br /&gt;&lt;br /&gt;Like I said earlier: This is just the beginning. There are dozens of other XML files in that same folder, defining such things as the layout of the edit window, the min and max values of number entry forms, and many, many other things which I intend to experiment with.&lt;br /&gt;&lt;br /&gt;I will close with this disclaimer: I re-read the &lt;a href="http://secondlife.com/corporate/tos.php"&gt;SL Terms of Service&lt;/a&gt; tonight, especially section 4.2, which covers accessing SL with "unauthorized" software (this is one of the sections that was amended after the recent CopyBot scare). And although I think that modifying the XML files accessed by the SL Viewer client is probably &lt;span style="font-style: italic;"&gt;not&lt;/span&gt; a violation of the spirit of the TOS, should you choose to do it, you do so at your own risk.&lt;br /&gt;&lt;br /&gt;It would be a mistake for Linden Lab to discipline anyone for trying to improve their own user experience without harming others; but it wouldn't be Linden Lab's first. Fair warning.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-8346079137570939089?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/8346079137570939089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=8346079137570939089' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/8346079137570939089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/8346079137570939089'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2006/12/hacking-xui-for-fun-and-goodness.html' title='Hacking XUI for Fun and Goodness'/><author><name>J</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-4774368926311326135</id><published>2006-11-23T23:29:00.000-06:00</published><updated>2006-11-23T21:46:48.317-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='musings'/><category scheme='http://www.blogger.com/atom/ns#' term='feature'/><title type='text'>Unheavenly Bodies</title><content type='html'>The sun and moon in Second Life are unrealistic and just plain ugly.&lt;br /&gt;&lt;br /&gt;That's right, I said it. &lt;span style="font-style: italic;"&gt;I went there&lt;/span&gt;. &lt;span style="font-weight:bold;"&gt;Ugly!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="floatright"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/x/blogger2/3378/18279352174330/1600/963301/badsun.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/x/blogger2/3378/18279352174330/200/422169/badsun.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;p&gt;Figure A.&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;As I see it, there are three main problems with Second Life's sun and moon:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Their reflections on water stretch unrealistically.&lt;/li&gt;&lt;li&gt;They sometimes appear as dark or darker than the sky around them.&lt;/li&gt;&lt;li&gt;Background stars are drawn in front of them.&lt;/li&gt;&lt;/ol&gt;Examine Figure A; the left half is raw, untouched snapshot of a near-sunset in SL at 300m; the right half is what I think it should look like. (NB: the bottom of the reflection is partially obscured by clouds.) Both problems 1 and 2 are in full force here.&lt;br /&gt;&lt;br /&gt;&lt;div class="floatright"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/x/blogger2/3378/18279352174330/1600/661009/suntest.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/x/blogger2/3378/18279352174330/200/777781/suntest.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;p&gt;Figure B.&lt;/p&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;Optics minilesson #1:&lt;/span&gt; In the real world, a reflection of the sun or moon on the water &lt;a href="http://www.wayfarer.grafham.org/pics/P4-sunset.JPG"&gt;appears stretched&lt;/a&gt; because of small irregularities (i.e. ripples) on the surface of the water which change the angle at which light is reflected. You can see this in Figure B, a test image I rendered in &lt;a href="http://www.blender.org/"&gt;Blender&lt;/a&gt; using raytraced reflections. The image shows a lit sphere resting on a perfectly reflective surface. On the left side, the mirror is completely smooth; note that no stretching occurs in the reflection. On the right side, however, the mirror has small ripples which affect the angle of reflection, causing the same type of stretching seen in the real world.&lt;br /&gt;&lt;br /&gt;My graphics card is not powerful enough to enable &lt;a href="http://www.sluniverse.com/pics/pic.aspx?id=93117&amp;sort=PictureID+desc&amp;amp;Type=BestOf&amp;sourcename=best+of+snapzilla&amp;amp;source=Snapshots.aspx%3ftype%3dbestof"&gt;fancy water&lt;/a&gt;, so I, like many Residents, simply see an upside down and yuckily stretched version of the sun or moon in the water. I know the programmer who did that meant well—he or she just wanted to make it look as if there were ripples distorting the reflection. But all it accomplished was making it look like the Grid is a concave Discworld.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Optics Minilesson #2&lt;/span&gt;: In the real world, the sun can &lt;span style="font-style: italic;"&gt;never&lt;/span&gt; appear as dark or darker than the surrounding sky for the simple reason that the brightness of the sky is due to partial scattering of the light from the sun. Most of the light from the sun passes through the atmosphere without much scattering, which is why the sun appears to be a circle with definite edges, rather than a vague patch of brightness.&lt;br /&gt;&lt;br /&gt;&lt;div class="floatright"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/x/blogger2/3378/18279352174330/1600/9617/badmoon.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/x/blogger2/3378/18279352174330/200/231102/badmoon.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;p&gt;Figure C.&lt;/p&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;Optics Minilesson #3:&lt;/span&gt; The moon, too, will always appear &lt;span style="font-style: italic;"&gt;at least as bright&lt;/span&gt; as the sky around it, never darker (as it does in the left half of Figure C). This is especially obvious on days when the moon is visible during the early morning or late afternoon; the unlit parts of the moon, which would appear black at night, &lt;a href="http://antwrp.gsfc.nasa.gov/apod/image/0312/venus37moon_young.jpg"&gt;appear the color of the sky&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Why does this occur, when mountains and skyscrapers &lt;span style="font-style: italic;"&gt;do&lt;/span&gt; appear dark against the sky? Quite simply, because mountains and skyscrapers block the scattered light from the sky. The moon, because it is outside the atmosphere, does &lt;span style="font-style: italic;"&gt;not&lt;/span&gt; block it.&lt;br /&gt;&lt;br /&gt;Also note in Figure C the star appearing in front of the moon. That's just crazy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-4774368926311326135?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/4774368926311326135/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=4774368926311326135' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/4774368926311326135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/4774368926311326135'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2006/11/unheavenly-bodies.html' title='Unheavenly Bodies'/><author><name>J</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-192702055659442993</id><published>2006-11-21T17:12:00.000-06:00</published><updated>2006-11-21T21:00:18.989-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='musings'/><category scheme='http://www.blogger.com/atom/ns#' term='adventures'/><title type='text'>Oi, clients.</title><content type='html'>This is not a rant. This is a cautionary tale.&lt;br /&gt;&lt;br /&gt;I have done all my ranting about this issue in private conversation; ranting in public would do nothing to help it. I will not be naming names, and I ask that anyone familiar with the situation refrain from the temptation as well. I am not writing this to attack any individual, but as a general warning to others, and a reminder to my future self.&lt;br /&gt;&lt;br /&gt;Over the past month, I have been working with an individual, "X", to thrash out the design for a large-scale building project. We went through several iterations of the design as I began to understand what X wanted. Finally, X was satisfied with the direction I was taking the design, and asked me to submit a formal bid&amp;mdash;how long it would take to build, and how much I would charge to build it.&lt;br /&gt;&lt;br /&gt;I mulled it over for a couple days, and sent my bid to X: estimates for what work I would be doing, how many hours each part of the work would take, when I would start construction, and when construction would be complete&amp;mdash;along with my fee (regardless of how long it &lt;span style="font-style: italic;"&gt;actually&lt;/span&gt; took to build). Given the number of hours of work estimated, I was charging about US $15/hour for construction, texture treatment, and scripting (my design allowed for the layout of the building to easily change with the client's needs).&lt;br /&gt;&lt;br /&gt;It was, from my point of view, a fair offer. Given the scope of the project and the skills involved, I could have asked for much more than that. However, I am not a big-name well-established builder, so there is some amount of risk, from the client's viewpoint, that what I deliver would not meet the client's expectations. I took this risk into account in my fee, among many other risks on both sides. Confident that my offer was reasonable, I sent my bid to X.&lt;br /&gt;&lt;br /&gt;To put it nicely, X was not prepared to pay what I asked, and rejected my bid.&lt;br /&gt;&lt;br /&gt;To put it accurately, X snidely accused me of charging an excessive amount for my services and dismissed me without any further discussion.&lt;br /&gt;&lt;br /&gt;X, it seems, would not pay more than a certain amount which, given the number of hours I had estimated as necessary, came out to less than US $3.50 per hour. Upon hearing this, I (trying to remain civil) asked X for verification of that rate, and asked if the number of hours I was estimating was, perhaps, more than would be necessary to achieve X's vision. X refused to discuss it.&lt;br /&gt;&lt;br /&gt;Now, X had been a difficult client to work with during the design phase. X's "requirements" were vague, and in some cases contradictory or simply impossible given the realities of three-dimensional space. (On the other hand, if I were building for four-dimensional space, such pithy concerns as distance and volume could be ignored). I was warned by another builder who had worked with X. I had no reason to expect X to act rationally, but hope springs eternal.&lt;br /&gt;&lt;br /&gt;The lessons I have learned (or had reinforced) are:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Make sure the client knows what he/she wants before you begin, and can communicate it to you.&lt;/span&gt; Otherwise, you are trying to hit an unknown and possibly moving target, which is quite frustrating! It also increases the likelihood that the client will pull something new out of their hat halfway through the process.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;If you are designing a build in addition to constructing it, treat them as separate processes, and charge separately.&lt;/span&gt;&lt;/span&gt; Planning the design before you build is good on general principle, of course, and treating them as separate processes helps enforce that. On top of that, it ensures that you will be paid for the design work, even if the client changes his/her mind about hiring you for the building. I also recommend charging as-you-go for each revision of the design if possible, for the same reason.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;If the client is full of drama &lt;span style="font-style: italic;"&gt;before&lt;/span&gt; you are working for them, they will probably be even more full of it &lt;span style="font-style: italic;"&gt;while&lt;/span&gt; you are.&lt;/span&gt; If drama, headaches, and frustration are what you are searching for, this is good news. On the other hand, if you value your sanity, pass up that client.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Contracts protect both sides.&lt;/span&gt; Write up contracts for every step of the way, outlining the expectations of both parties, and what should happen if those expectations are not met. Have the client sign/agree to each contract, then stick to it.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-192702055659442993?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/192702055659442993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=192702055659442993' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/192702055659442993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/192702055659442993'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2006/11/oi-clients.html' title='Oi, clients.'/><author><name>J</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-1101526745028276492</id><published>2006-11-12T18:07:00.000-06:00</published><updated>2006-11-12T16:33:56.766-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='musings'/><title type='text'>Linden Lab to Instructors: kthxbye</title><content type='html'>Linden Lab recently announced that it would be &lt;a href="http://forums.secondlife.com/showthread.php?t=148150"&gt;ceasing the instructor subsidy program effective December 9&lt;/a&gt;—after that date, Linden Lab will no longer pay L$500 per class an Instructor teaches.&lt;br /&gt;&lt;br /&gt;Apparently, this  both upset and &lt;span style="font-style: italic;"&gt;surprised&lt;/span&gt; a number of instructors! To them, this is the latest in a series of moves by Linden Lab to destroy everything we used to love about Second Life.&lt;br /&gt;&lt;br /&gt;Me? I don't really care. I have never requested any subsidy payments for my teaching. I don't want hand-outs, and I'm not teaching as a favor to Linden Lab, so they can keep their money.&lt;br /&gt;&lt;br /&gt;I take tips from students. At the end of (almost) every class, I mention that I do take tips, and that a contribution of any size is a good way to tell me that you appreciated the class—but that the class is free, and tips are entirely optional. I get paid iff my students think what I have taught them is worth paying me for.&lt;br /&gt;&lt;br /&gt;On only one occasion have I received more in tips than I would have received as a subsidy payment; usually I receive about half. But I know I earned it.&lt;br /&gt;&lt;br /&gt;There are two factors which, one might argue, make my situation unusual among instructors (and thus renders my opinion on this matter entirely invalid).&lt;br /&gt;&lt;ol&gt;&lt;li&gt;I do not teach in SL as my means of survival. (I teach because I enjoy it, and to make a bit of spending money.)&lt;/li&gt;&lt;li&gt;The material I teach is not geared towards newbies, but instead Residents who have been in-world for a while and wish to improve their skills for personal or commercial benefit. (Oldbies and professional builders are apparently more likely to have money on hand with which to tip someone who teaches them techniques to improve their building efficiency.)&lt;/li&gt;&lt;/ol&gt;"Of course &lt;span style="font-style: italic;"&gt;you&lt;/span&gt; don't mind," writes an imaginary instructor. "You don't &lt;span style="font-style: italic;"&gt;need&lt;/span&gt; the money, and besides, the way you teach is more profitable! I, on the other hand, have to teach a hundred newbies to put on their own pants just to make enough money to buy a pre-owned can of chicken broth!"&lt;br /&gt;&lt;br /&gt;Yes, it's true: instructors who have been surviving on hand-outs from Linden Lab in return for teaching newbies the utter basics are getting the shaft. Tough break for you? My only advice is to adapt your business model. Find a business to sponsor your class. Start charging for admission. Teach something that people with money will pay you to teach.&lt;br /&gt;&lt;br /&gt;Linden Lab is, in some ways, giving themselves and every Resident on the Grid the long-term shaft, too. Hordes of the unwashed masses are already trampling everything; now they will be unwashed, &lt;span style="font-style: italic;"&gt;uneducated&lt;/span&gt; masses! Terrible, disgusting plebians whose purest motive in SL is to figure out how to attach a giant penis to their own forehead and find the nearest free sex community.&lt;br /&gt;&lt;br /&gt;Boy, the Grid is going to /dev/null in a handbasket, I tell ya. It's enough to make me yearn for &lt;span style="font-style: italic;"&gt;ye dayes of olde&lt;/span&gt; when a prim was a just a prim, grass textures were greener and never had to rez, and every Resident descended onto Help Island from the immaculate Skybox of knowledge and dedication.&lt;br /&gt;&lt;br /&gt;Those were the days.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-1101526745028276492?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/1101526745028276492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=1101526745028276492' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/1101526745028276492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/1101526745028276492'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2006/11/linden-lab-to-instructors-kthxbye.html' title='Linden Lab to Instructors: kthxbye'/><author><name>J</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-4989289498138044560</id><published>2006-11-06T18:22:00.000-06:00</published><updated>2006-11-06T18:25:44.476-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='musings'/><title type='text'></title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;a href="http://torley.com/my-advice-for-living-a-creative-vital-and-happy-life/"&gt;This is all.&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;(It's enough.)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-4989289498138044560?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/4989289498138044560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=4989289498138044560' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/4989289498138044560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/4989289498138044560'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2006/11/this-is-all.html' title=''/><author><name>J</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-6726592767702494532</id><published>2006-11-04T14:26:00.000-06:00</published><updated>2006-11-04T12:22:18.019-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='feature'/><title type='text'>Chat Range</title><content type='html'>There is still one more part of Color Curves yet to be written, but it requires significant research and development into methods of algorithmically generating intermediary control points between the two blended colors, taking into account neighboring control points. (For the transition between two curves to be visually smooth, it must be continuous, which means that the end point and the control points on either side must be collinear, i.e. they are all in a straight line.)&lt;br /&gt;&lt;br /&gt;But that is a post for another day. Today's post requires much less education in maths to understand. The topic: chat ranges!&lt;br /&gt;&lt;br /&gt;Right now, avatars have two options for range when it comes to speaking: you can speak normally, in which case anyone (and anything) within 20m of you will hear you; or, you can shout, in which case the range is increased to 100m.&lt;br /&gt;&lt;br /&gt;Scripted objects have one additional option, designed to reduce the noise in the chat channel: they can whisper, which carries for only 10m. (Avatars cannot whisper, only scripted objects.)&lt;br /&gt;&lt;br /&gt;Being the person that I am, this limitation is dissatisfying to me. What if I want to have a conversation around a dinner table, without disturbing (or being overheard) by the group at the neighboring tables? Or what if I am teaching in a 60m-wide lecture hall, and I want even the students in the back to hear me&amp;mdash;but I don't want to bother the people out in the lobby, who are 80m away?&lt;br /&gt;&lt;br /&gt;Even if avatars had the whisper option made available to them, the granularity of three choices of range&amp;mdash;10m, 20m, or 100m&amp;mdash;is unsatisfactory. There are too many situations where something in between (or smaller) is needed.&lt;br /&gt;&lt;br /&gt;In some situations, you can work around this with scripted objects. If you need a smaller range, you can attach an object to your avatar which listens for your chat on a hidden channel, and whispers it into chat for you (thus emulating a whisper option for avatars). If you need a range between 20m and 100m, you can set up scripted relay objects, like small intercomm systems which listen to chat in one place, broadcast it on a hidden channel, and then repeat any broadcasts it receives into chat. Both of these solutions are suboptimal.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;"Alright, Jacek. Get to the point. Tell us your solution,"&lt;/span&gt; you say? Oh rude and belligerent imaginary reader, I was just about to tell you!&lt;br /&gt;&lt;br /&gt;The solution is this: on the chat bar, in lieu of the "Shout" button, we should have a numeric input box, into which we can type the desired range of our chat. This setting would remain in effect until the next time you changed it; a checkbox toggle in Preferences would determine whether the setting is saved across sessions of SL.&lt;br /&gt;&lt;br /&gt;This renders the shout and whisper actions obsolete for the most part, but they do offer something useful which the proposed solution, as presented thus far, lacks: by appearing to other users as &lt;span style="font-style:italic;"&gt;"Jacek Antonelli shouts: Yay! Candy!! \o/"&lt;/span&gt; or &lt;span style="font-style:italic;"&gt;"Considerate Vendorbot whispers: Your purchase of 'Xcite! Interactive Torus Attachment' will be delivered soon."&lt;/span&gt;, they convey important information about the range of the chat, and who else can hear it.&lt;br /&gt;&lt;br /&gt;It would be simple enough to automatically label chat as whisper, normal, or shout based on range (anything &lt;=10m is whisper, anything &gt;=50m is shout, for example). But we can do so much better&amp;mdash;let's let the user define custom ranges and labels for their own chat!&lt;br /&gt;&lt;br /&gt;This would be a new tab of the Preferences window. In it, you could define "rules" for determining what label chat will be given, based on range. An example rule might be something like this: &lt;span style="font-style:italic;"&gt;&amp;gt;25m, &amp;lt;51m: "calls out"&lt;/span&gt;. After defining that rule, anything I said with a range greater than 25m but less than 51m would appear like, &lt;span style="font-style:italic;"&gt;"Jacek Antonelli calls out: CANNONBALL!! *splash*"&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;The other logical alternative would be for each user to define rules to label *incoming* chat based on range, rather than labelling their own *outgoing* chat for other people to see. I prefer the latter for its roleplay possibilities (you can easily establish a "personality" for your avatar based on how you label what you say), but the former would offer more uniformity in what each user sees (you won't have to figure out what the heck so-and-so meant when they "burbledummed" bad jokes at everybody in the room). For the best of both worlds, checkbox preferences for "accept chat labels from other users" and "apply custom labels to incoming chat" could be offered to let each user decide.&lt;br /&gt;&lt;br /&gt;There is one more aspect of this feature proposal: remap the Ctrl-Enter keyboard command to send chat with a user-defined range. This way, users could decide whether Ctrl-Enter should send chat with a wide range (like the current Shout action does), a normal range, or a short range. Sending chat with Ctrl-Enter would not reset the range for other chat, so you could use it for those times when you want to send one or two lines of chat at a different range than the rest of your conversation. (For example, you are talking to your date across the dinner table, but you want to call out a song request with a normal chat range, then continue whispering sweet nothings.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-6726592767702494532?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/6726592767702494532/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=6726592767702494532' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/6726592767702494532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/6726592767702494532'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2006/11/chat-range.html' title='Chat Range'/><author><name>J</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-3110469841562949996</id><published>2006-10-29T15:14:00.001-06:00</published><updated>2006-10-31T17:58:21.022-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='feature'/><title type='text'>Curves: Color (Part 2)</title><content type='html'>Attention: Maths ahead! Non-geeks may prefer to avoid the equations, and just look at the pretty colors instead. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;a href="http://jacek-antonelli.blogspot.com/2006/10/curves-color.html"&gt;Previously&lt;/a&gt;, on Jacek Writes: our hero introduced the topic of smoothly blending between two colors algorithmically.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="floatleft"&gt;&lt;img alt="Linear blend from red to blue." src="http://photos1.blogger.com/blogger2/3378/18279352174330/1600/linearblend1.png" /&gt;&lt;/div&gt;Last time, I defined an equation for blending linearly between two color vectors &lt;span style="font-style: italic;"&gt;a&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;b&lt;/span&gt; as time, &lt;span style="font-style: italic;"&gt;t&lt;/span&gt;, increases from 0 to 1:&lt;br /&gt;&lt;br /&gt;&lt;div class="equation"&gt;line(t, a, b) = a + t * (b - a)&lt;/div&gt;&lt;br /&gt;After a little algebra, we can rewrite that function as:&lt;br /&gt;&lt;br /&gt;&lt;div class="equation"&gt;line(t, a, b) = (1-t)(a) + bt&lt;/div&gt;&lt;br /&gt;Linear blending looks just fine for blending between two colors, as demonstrated above. Starting from the left, we progress from red to blue, passing through magenta and purples. Looks pretty good, right?&lt;br /&gt;&lt;br /&gt;&lt;div class="floatright"&gt;&lt;img alt="Linear blend from red to blue to green." src="http://photos1.blogger.com/blogger2/3378/18279352174330/1600/linearblend2.png" /&gt;&lt;/div&gt;The problem arises when we try to add a third color, blending from &lt;span style="font-style: italic;"&gt;a&lt;/span&gt; to &lt;span style="font-style: italic;"&gt;b&lt;/span&gt;, then from &lt;span style="font-style: italic;"&gt;b&lt;/span&gt; to &lt;span style="font-style: italic;"&gt;c&lt;/span&gt;. As you can see, there is a "spike" at the point where we reach pure blue. To use a spatial analogy, we are driving from point A to point B, then taking a hard right turn and going to point C; it's the spot that we take the turn that ruins the smoothness.&lt;br /&gt;&lt;br /&gt;But there are other techniques besides linear blending, which can solve this discontinuity. The technique that I prefer (for its versatility) is &lt;a href="http://en.wikipedia.org/wiki/B%C3%A9zier_curve"&gt;Bézier curve&lt;/a&gt; blending.&lt;br /&gt;&lt;br /&gt;For the uninitiated, Bézier curves are a beautiful and elegant mathematical technique for modelling smooth curves like those used in graphic and industrial design. They are closely related to NURBS (Non-Uniform Rational B-Splines) Surfaces, a modelling technique popular among computer animators for producing smooth, organic shapes. (Although, NURBS surfaces have somewhat fallen out of use in favor of other techniques like Catmull-Clark &lt;a href="http://en.wikipedia.org/wiki/Subdivision_surface"&gt;subdivision surfaces&lt;/a&gt;.)&lt;br /&gt;&lt;br /&gt;Bézier curves have several properties which are important for our purposes: 1) they are smooth, 2) they are not difficult to compute, and 3) each curve can be defined through a small number of control points, or "knots".&lt;br /&gt;&lt;br /&gt;Based on viewing the wonderful &lt;a href="http://en.wikipedia.org/wiki/B%C3%A9zier_curve#Constructing_B.C3.A9zier_curves"&gt; animated diagrams&lt;/a&gt; on Wikipedia, I set about reverse-engineering Bézier curves. (Sure, I could just find an equation on the web somewhere, but where's the fun in that?)&lt;br /&gt;&lt;br /&gt;What I find so elegant about Bézier curves is that the equation can be a fractal, recursively defined. Using our linear blend function defined above, we can define a quadratic Bézier curve which passes through points &lt;span style="font-style: italic;"&gt;a&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;c&lt;/span&gt;, with a control point &lt;span style="font-style: italic;"&gt;b&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;div class="equation"&gt;quad(t, a, b, c) = line( t,  line(t, a, b), line(t, b, c) )&lt;/div&gt;&lt;br /&gt;That may make a mathematician's lips quiver with joy at its simplicity and elegance (especially if you then use that function to define a cubic Bézier curve, as I will do next time), but it has certain redundancies when it comes to evaluating it with a computer (i.e. it takes more separate mathematical operations than necessary).&lt;br /&gt;&lt;br /&gt;So, I got out my pencil and pad and expanded the equations by hand, combining terms and simplifying, then using that equation to write an equation for a cubic Bézier curve. In fact, I did so in four different ways (only two of which were novel in the fact that they contained algebra errors so foolish that they would embarrass an English major).&lt;br /&gt;&lt;br /&gt;My final equation for a quadratic Bézier curve is as follows:&lt;br /&gt;&lt;br /&gt;&lt;div class="equation"&gt;quad(t, a, b, c) = (1 - t)&lt;sup&gt;2&lt;/sup&gt;(a) + (1 - t)(2bt) + ct&lt;sup&gt;2&lt;/sup&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="floatright"&gt;&lt;img src="http://photos1.blogger.com/blogger2/3378/18279352174330/1600/bezquadblend.png"  alt="Quadratic Bézier blend with red, blue, and green control points."/&gt;&lt;/div&gt;Using this equation to blend between three colors produces the image seen here. As you can see, it is definitely very smooth; it has solved the problem we saw with the linear blend, the spike when we reached blue and make a hard right towards green.&lt;br /&gt;&lt;br /&gt;But there is a problem.&lt;br /&gt;&lt;br /&gt;It never hits pure blue.&lt;br /&gt;&lt;br /&gt;It gets close, there in the middle. We pass near blue. We are definitely in Blue County, Color-ado.&lt;br /&gt;&lt;br /&gt;But we &lt;span style="font-style:italic;"&gt;never actually see pure blue!!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Have Bézier curves failed our hero? Is this the end?!? Don't miss the shocking conclusion next time, Issue #1397: Crossed Controls &amp; Cubic Curves&lt;/span&gt;&lt;span style="font-style: italic;font-size:130%;" &gt;&lt;span style="font-weight: bold;"&gt;  --JA&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-3110469841562949996?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/3110469841562949996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=3110469841562949996' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/3110469841562949996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/3110469841562949996'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2006/10/curves-color-part-2.html' title='Curves: Color (Part 2)'/><author><name>Jacek</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_RAYeU6b6zmE/SLos9tPhkRI/AAAAAAAAAAY/fHlrFqE0yos/S220/jacek-Aug-2008_square2_80.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-2243856407035937594</id><published>2006-10-22T12:08:00.000-06:00</published><updated>2006-10-22T12:12:30.861-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='feature'/><title type='text'>Curves: Color</title><content type='html'>I wrote a &lt;a href="http://jacek-antonelli.blogspot.com/2006/09/section-radius.html"&gt;post about "section radius"&lt;/a&gt; recently, which involved drawing curves with a discreet number of anchor points. The application there was a more robust replacement for the Taper attribute of prims. Of course, the usefulness of using a curve instead of one or two numbers is not limited to Taper alone&lt;a href="http://torley.com/the_em_dash_conspiracy.htm"&gt;—&lt;/a&gt;there are innumerable other uses for them, completely aside from the Object attributes.&lt;br /&gt;&lt;br /&gt;One of my backburner obsessions for the past few months has been color. (No surprise there, given that I'm currently enrolled in a color theory class, I suppose.) In particular and with regard to SL, two aspects have been on my mind. The first is using a base color as input to an algorithm to generate related colors (lighter tint, darker shade, blue-shifted, red-shifted, visual complement...). The second is blending between two colors in a smooth and visual appealing fashion.&lt;br /&gt;&lt;br /&gt;This is where curves come in.&lt;br /&gt;&lt;br /&gt;You see, colors can be represented in a computer program as multidimensional vectors, usually 3-vectors: the x component corresponds to the intensity of the red color channel, the y to the green, and the z to the blue. For example, [1.0, 0.0, 0.0] is pure red, [0.8, 0.5, 0.0] is an orangey color, [1.0, 1.0, 1.0] is pure white, and [0.0, 0.0, 0.0] is pure black.* (In additive color models, such as light, the presence of all colors is white. In subtractive color models, such as pigment or paint, the presence of all colors is black, at least theoretically; in practice, mixing all your paint colors together usually makes a grayish brown.)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;* NB: for convenience, I am denoting vectors with square brackets, [ ], instead of the usual angled brackets, &amp;lt; &amp;gt;, which are also used to denote HTML tags, causing the silly Blogger software to interpret my vectors as malformed HTML code. Yes, I am too lazy to search-replace them with the symbol codes.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So suppose we want to blend between, say, [1.0, 0.0, 0.0] red and [0.0, 0.0, 1.0] blue. The simplest way to do this would be a straight &lt;span style="font-style: italic;"&gt;linear&lt;/span&gt; blend. Since positions in space, like colors, can be represented as 3-vectors, a linear blend is equivalent to moving in a straight line from point A to point B.&lt;br /&gt;&lt;br /&gt;We could write an algorithm thusly, with &lt;span style="font-style: italic;"&gt;a&lt;/span&gt; being the starting color/point, &lt;span style="font-style: italic;"&gt;b&lt;/span&gt; being the ending point, and &lt;span style="font-style: italic;"&gt;t&lt;/span&gt; being a number between 0.0 and 1.0, representing our progress moving from &lt;span style="font-style: italic;"&gt;a&lt;/span&gt; to &lt;span style="font-style: italic;"&gt;b&lt;/span&gt; (e.g. t = 0.5 means we are exactly halfway between the two; t = 0.25 means we are ¼ of the total distance from &lt;span style="font-style: italic;"&gt;a&lt;/span&gt;, and so ¾ of the distance from &lt;span style="font-style: italic;"&gt;b&lt;/span&gt;):&lt;br /&gt;&lt;pre&gt;line(t, a, b) = a + t * (b - a)&lt;/pre&gt;Here are some sample points using our algorithm to blend between red and blue:&lt;br /&gt;&lt;pre&gt;line(0.00, [1,0,0], [0,0,1]) = [1.00, 0.00, 0.00]&lt;br /&gt;line(0.25, [1,0,0], [0,0,1]) = [0.75, 0.00, 0.25]&lt;br /&gt;line(0.50, [1,0,0], [0,0,1]) = [0.50, 0.00, 0.50]&lt;br /&gt;line(0.75, [1,0,0], [0,0,1]) = [0.25, 0.00, 0.75]&lt;br /&gt;line(1.00, [1,0,0], [0,0,1]) = [0.00, 0.00, 1.00]&lt;/pre&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;To be ct'd in Issue #452: Pierre Bézier and Paul de Casteljau unite once more in... &lt;span style="font-style:italic;"&gt;O What a Twisted Curve We Weave!!&lt;/span&gt; Don't miss it, gang!   &lt;/span&gt;&lt;span style="font-style: italic;font-size:130%;" &gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;--JA&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-2243856407035937594?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/2243856407035937594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=2243856407035937594' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/2243856407035937594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/2243856407035937594'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2006/10/curves-color.html' title='Curves: Color'/><author><name>Jacek</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_RAYeU6b6zmE/SLos9tPhkRI/AAAAAAAAAAY/fHlrFqE0yos/S220/jacek-Aug-2008_square2_80.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-1461349171432344870</id><published>2006-10-08T16:46:00.000-06:00</published><updated>2006-10-08T17:42:45.254-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='musings'/><title type='text'>My Agenda</title><content type='html'>I didn't conciously realize this when I first started writing here, but my feature requests have a very specific agenda. To put it succinctly:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;I want Second Life to be more like a high-level 3D modelling application.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;My education is in 3D computer modelling and animation, and I have a good understanding of computer programming. Thus, my perspective on Second Life is from the angle of someone who uses high-level modelling and animating tools like Maya and Blender, and high-level programming languages like Ruby, Python, and LISP.&lt;br /&gt;&lt;br /&gt;The tools offered in Second Life are technically inferior to just about everything I have used, but it has the definite advantages of being &lt;span style="font-style: italic;"&gt;collaborative, interactive, and visible&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;By collaborative, I mean that many people can use it and work on a single project at the same time, in the same working space. Rather than many people working separately on their individual parts, we can come together and build something together, watch each other build, and see how our work fits within the whole project.&lt;br /&gt;&lt;br /&gt;By interactive, I mean that there is a great degree of communication between the user and the tool, and between the user and other users. You can see the changes you are making &lt;span style="font-style: italic;"&gt;as you make them&lt;/span&gt;. And not only can you see them, but your partners can see them. This makes Second Life an excellent platform, again, for collaborative work, but also for education and error correction: rather than a teacher seeing only the finished product of a student's work, the teacher can see the student's process and suggest improvements to it.&lt;br /&gt;&lt;br /&gt;By visible, I mean that the work exists in a "real" space where audiences can see it. Gallery spaces can be created and work arranged within that space for people to see. Multiple viewers can see it at once, discuss what they see and think about it, and interact with each other and with the artist. This has a definite advantage over a simple web page with several images ordered sequentially. It even has an advantage over a web forum where users can post work and comment on the work of others.&lt;br /&gt;&lt;br /&gt;To bring all these points together: the high level 3D modelling applications that I use are missing something which Second Life has; and Second Life is missing something that the modelling applications have.&lt;br /&gt;&lt;br /&gt;But there's more to the story than just that.&lt;br /&gt;&lt;br /&gt;High-level 3D modelling applications have a lot of features which are not necessary or even useful in the context of Second Life, for reasons technical and otherwise. It is not my agenda to graft unneeded and pointless features onto Second Life. Doing so would waste resources which would be better used on more important things.&lt;br /&gt;&lt;br /&gt;Second Life is a lot more than a distributed 3D modelling platform. It has social, commercial, educational, and recreational value, all of which are undeniably important parts of what make Second Life what it is. It is &lt;span style="font-style: italic;"&gt;not&lt;/span&gt; my agenda to reduce or remove any of these facets of Second Life. They are the &lt;span style="font-style: italic;"&gt;reason and purpose&lt;/span&gt; for the 3D modelling aspect to exist; without them, Second Life would be pointless.&lt;br /&gt;&lt;br /&gt;And yet, just as tools without a purpose would be pointless, a purpose without the tools to fulfill it would be squanderage. The scenery of Second Life is a critical part of its social, commercial, education, and recreational value. It is toward the purpose of fulfilling the potential of Second Life that I propose features and changes. Every feature I suggest, I do so because the benefit towards fulfilling important values would be far greater than the cost of implementing the feature.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;I want Second Life to be more like a high-level 3D modelling application...&lt;br /&gt;&lt;br /&gt;...because that would facilitate the creation of new, interesting, beautiful, and useful things which would enrich Second Life.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-1461349171432344870?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/1461349171432344870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=1461349171432344870' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/1461349171432344870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/1461349171432344870'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2006/10/my-agenda.html' title='My Agenda'/><author><name>Jacek</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_RAYeU6b6zmE/SLos9tPhkRI/AAAAAAAAAAY/fHlrFqE0yos/S220/jacek-Aug-2008_square2_80.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-1759869802046691305</id><published>2006-09-29T16:55:00.000-06:00</published><updated>2006-09-29T16:57:05.328-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='adventures'/><title type='text'>Tofu loves us, too!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/3378/18279352174330/1600/tofu_with_shirt.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger2/3378/18279352174330/400/tofu_with_shirt.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-1759869802046691305?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/1759869802046691305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=1759869802046691305' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/1759869802046691305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/1759869802046691305'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2006/09/tofu-loves-us-too.html' title='Tofu loves us, too!'/><author><name>Jacek</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_RAYeU6b6zmE/SLos9tPhkRI/AAAAAAAAAAY/fHlrFqE0yos/S220/jacek-Aug-2008_square2_80.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-7129667839403240925</id><published>2006-09-28T21:07:00.000-06:00</published><updated>2006-09-28T22:05:48.789-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='feature'/><category scheme='http://www.blogger.com/atom/ns#' term='adventures'/><title type='text'>Linux Users Love Tofu Linden!</title><content type='html'>&lt;img style="float: right;" src="http://photos1.blogger.com/blogger2/3378/18279352174330/400/linuxlovetofu.jpg" alt="A cartoon penguin hugging a brick of tofu imprinted with the Second Life logo." /&gt;&lt;br /&gt;Yes, every Linux-using Resident of Second Life is now brimming over with love and affection for Tofu Linden, the Linux client developer for Linden Lab!&lt;br /&gt;&lt;br /&gt;Today &lt;a href="http://forums.secondlife.com/showthread.php?t=140021"&gt;marks the first time&lt;/a&gt; the Linux client has had any sort of file upload/download capacity! Right now it's pretty rough around the edges, as there is still no file browser/picker, but it works! (Just rename the image to &lt;span style="font-style: italic;"&gt;upload.tga&lt;/span&gt; and place it in your &lt;span style="font-style: italic;"&gt;SecondLife/your_name/&lt;/span&gt; folder, then use the upload menu item.) Tofu tells us that the file picker is in the works, which is also very nifty!&lt;br /&gt;&lt;br /&gt;Since the last I posted about the Linux client, much progress has taken place, apparently due to the efforts of our hero, Tofu Linden! Audio playback was &lt;a href="http://forums.secondlife.com/showthread.php?t=133633"&gt;added August 29&lt;/a&gt;, including support for parcel audio streams, and Copy &amp; Paste was &lt;a href="http://forums.secondlife.com/showthread.php?t=137148"&gt;added September 13&lt;/a&gt;—the Linux client is fast approaching the full feature set that the Windows and Mac users currently enjoy (plus, of course, the added "feature" of being able to log in to SL in Linux!).&lt;br /&gt;&lt;br /&gt;I have found my own way to express my appreciation to Tofu: I created the adorable image above, featuring a penguin lovingly embracing a brick of tofu! (The image was created in &lt;a href="http://inkscape.sourceforge.net/"&gt;Inkscape&lt;/a&gt;, by the way—a great piece of software if ever there was one!)&lt;br /&gt;&lt;br /&gt;&lt;img style="float: left; margin-right: 10px;" src="http://photos1.blogger.com/blogger2/3378/18279352174330/400/linuxlovetofu_action.jpg" alt="Action shot of the T-shirt." /&gt;I then successfully uploaded the image, and a T-shirt featuring the image, to Second Life! Then I took a snapshot of me wearing the shirt (and standing in front of a waving flexi flag with the texture on it) and saved the snapshot to disk—you can see the proof here!&lt;br /&gt;&lt;br /&gt;Since everybody should be able to show their love for Tofu Linden, I am &lt;a href="http://slurl.com/secondlife/Hallasan/248/80/50/"&gt;giving out the shirt and textures*&lt;/a&gt; at my home/studio/gallery in Hallasan! (While you are there, say hi to &lt;a href="http://jacek-antonelli.blogspot.com/2006/09/prims-amazing-journey.html"&gt;Primmy&lt;/a&gt;!)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;* A small word of caution, though: my gallery is in a Mature sim, and includes a few artistic nudes. You probably won't even see them if you go straight to those coordinates and don't poke around, but I thought I'd give you fair warning, in case you are logging in to SL while at work. In the Vatican. Where you share an office with his Holiness the Pope.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-7129667839403240925?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/7129667839403240925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=7129667839403240925' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/7129667839403240925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/7129667839403240925'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2006/09/linux-users-love-tofu-linden.html' title='Linux Users Love Tofu Linden!'/><author><name>Jacek</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_RAYeU6b6zmE/SLos9tPhkRI/AAAAAAAAAAY/fHlrFqE0yos/S220/jacek-Aug-2008_square2_80.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-4377564443110842544</id><published>2006-09-22T00:18:00.000-06:00</published><updated>2006-09-21T22:17:33.518-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='feature'/><title type='text'>Section Radius</title><content type='html'>What I'm proposing here is fairly radical, in that it represents a very different method of building in Second Life. But, like everything I propose, it is not only possible, but feasible; I could devise the algorithm for it myself, with a bit of research as needed. This feature would require a more significant change to the data structure for prims than before, but the possibilities are &lt;span style="font-style: italic;"&gt;astounding&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Throw away the Taper attribute for objects. It was great, but it will be made entirely obsolete by the feature I am proposing: &lt;span style="font-style: italic;"&gt;section radii&lt;/span&gt;. Instead of describing the relative size of the beginning and end of the prim, as Taper does, Section Radius would describe the size of the prim at every point along its path.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;NB:&lt;/span&gt; Every prim, with the exception of Sphere, can be represented as a two-dimensional shape such as a square or circle, which is extruded along a path to create a three-dimensional surface. For Box, Cylinder, and Prism, that path is a straight line into the third dimension; for Tube, Torus, and Ring, that path is a circle.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/3378/18279352174330/1600/section_radius.1.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://photos1.blogger.com/blogger2/3378/18279352174330/200/section_radius.0.png" alt="" border="0" /&gt;&lt;/a&gt;Take a look at my fancy diagram (to the right, click for a larger version). In &lt;span style="font-style: italic;"&gt;(1)&lt;/span&gt;, we are describing 5 different sections (solid lines), with another 4 values being interpolated between them (dotted lines). The gray line at the bottom represents the full span of the path from beginning to end.&lt;br /&gt;&lt;br /&gt;In &lt;span style="font-style: italic;"&gt;(2)&lt;/span&gt;, we see a top-view of a cylinder with the sections that were defined in (1). Note that by smoothly interpolating between the defined sections, we can achieve a very smooth result without defining a large number of sections. In &lt;span style="font-style: italic;"&gt;(3)&lt;/span&gt;, we see a top-view of a torus with the same sections (or, at least, a passable representation of one; it's hand-drawn, not mathematically computed, so it may not be very accurate).&lt;br /&gt;&lt;br /&gt;In the example, all the sections were equally spaced, but that need not be the case. Nor need there be a set number of sections. An arbitrary number of sections could be defined, with data storage increasing linearly with the number of sections defined (i.e. if we define twice as many sections, it takes twice as much space to store the data).&lt;br /&gt;&lt;br /&gt;The advantage taper has is that it can be represented as two numbers between -1.0 and +1.0, one number for each axis X and Y. So, it doesn't take much bandwidth to transmit the Taper attribute of a prim. The disadvantage to taper is that its possibilities are decidedly limited: the shape's size can only be changed by a constant value as it is extruded along its path. It cannot, for example, start out small, become large in the middle, then small again at the end (making a surface resembling a &lt;a href="http://upload.wikimedia.org/wikipedia/commons/thumb/f/f0/Lemon_closeup.jpg/800px-Lemon_closeup.jpg"&gt;lemon&lt;/a&gt; or &lt;a href="http://upload.wikimedia.org/wikipedia/en/thumb/2/23/Wilson_American_football.jpg/800px-Wilson_American_football.jpg"&gt;American football&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;With section radius, on the other hand, it would be possible to make such a shape, and a great many other shapes, with a single prim: &lt;a href="http://commons.wikimedia.org/wiki/Image:Agate-vases.jpg"&gt;vases&lt;/a&gt;, &lt;a href="http://upload.wikimedia.org/wikipedia/commons/thumb/4/47/German_7.92x33mm_Kurz.jpg/399px-German_7.92x33mm_Kurz.jpg"&gt;bullets&lt;/a&gt;, &lt;a href="http://www.bigstockphoto.com/thumbs/4/0/5/medium/504596.jpg"&gt;wavy french fries&lt;/a&gt;, &lt;a href="http://www.thefoxden.com/foxes/foxweb-Images/5.jpg"&gt;bushy tails&lt;/a&gt;, &lt;a href="http://www.trans-health.com/images/barbell.gif"&gt;barbells&lt;/a&gt;, and a great many non-PG items (which I will refrain from linking to). I haven't even started to mention all the possibilities with torus and kin!&lt;br /&gt;&lt;br /&gt;There is, of course, a trade-off: section radius takes more information to store and transmit than taper. How much more?&lt;br /&gt;&lt;br /&gt;One axis of taper requires, at most, a single floating point number (i.e. not an integer). If Linden Lab is clever, they don't even need that, because the granularity of each attribute is in the hundredths (I may be wrong, it may be thousandths), meaning there are only 200 (or 2000) possible values for one taper axis. That would take only 8 (or 11) bits to represent, versus a 32 bit float value.&lt;br /&gt;&lt;br /&gt;Section radius, on the other hand, would require at least twice that, for every section defined. The more sections you define (i.e. the greater the detail in the section radius), the more data you have to store. I say "at least twice", because additional storage would be needed for storing the interpolation type (linear, smooth, step, and perhaps others). That might be stored once for the entire curve, or stored for each section. The latter would require more storage, but would be more flexible.&lt;br /&gt;&lt;br /&gt;Section radius can, of course, be used to emulate the current Taper attribute (as well as the poorly-named Hole Size attributes for torus and kin, at no extra cost): one section each defined at the beginning and end, with linear interpolation between them. That's between four and six times as much data, for the same result.&lt;br /&gt;&lt;br /&gt;When it's phrased like that, it seems like a bad idea. The same result, but a higher cost? No thanks!&lt;br /&gt;&lt;br /&gt;But consider this: section radius would enable shapes which were &lt;span style="font-style: italic;"&gt;impossible&lt;/span&gt; before. And if you were to try to approximate such a shape using existing building methods, it would require &lt;span style="font-style: italic;"&gt;(n-1)&lt;/span&gt; separate prims, where &lt;span style="font-style: italic;"&gt;n&lt;/span&gt; is the number of sections. Each prim, of course, has to store a great many redundant attributes (position, rotation, size, texture data, etc.) which would not be necessary for a single complex prim. And besides taking more storage space (not to mention parcel prim limit space), a many-prim solution would require a great deal of time to construct, and the results would be blocky and undesirable.&lt;br /&gt;&lt;br /&gt;To put this in another light: section radius would enable complex and beautiful shapes to be made from a single prim, but would make creating a large number of simple shapes slightly less efficient.&lt;br /&gt;&lt;br /&gt;It represents a shift from low-level, difficult-to-use tools to higher-level, easy-to-use tools. This is a shift that Second Life needs to make, in many areas, if it hopes to attract and retain the Doers and Makers that create the content of Second Life.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-4377564443110842544?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/4377564443110842544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=4377564443110842544' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/4377564443110842544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/4377564443110842544'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2006/09/section-radius.html' title='Section Radius'/><author><name>Jacek</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_RAYeU6b6zmE/SLos9tPhkRI/AAAAAAAAAAY/fHlrFqE0yos/S220/jacek-Aug-2008_square2_80.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-5313329248611398639</id><published>2006-09-16T10:35:00.000-06:00</published><updated>2006-09-16T12:56:15.800-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='adventures'/><title type='text'>Prim's Amazing Journey</title><content type='html'>Today, a joyful reunion marks the end of an amazing &lt;span style="font-weight: bold; font-style: italic;"&gt;true&lt;/span&gt; story of struggle, perseverance, and hope.&lt;br /&gt;&lt;br /&gt;Prim, a purebreed plywood cube and the adored pet of Jacek Antonelli, was returned to his owner today after being missing for nearly two weeks. "I had almost given up hope of ever seeing my dear Primmy again," says Antonelli. "I'm so glad he's back. My life just wasn't the same without him."&lt;br /&gt;&lt;br /&gt;&lt;div style="border-style: dotted; border-width: thin; margin: 0px 0px 10px 10px; padding: 5px; width: 330px;"&gt;&lt;img src="http://photos1.blogger.com/blogger2/3378/18279352174330/320/home_safe.jpg" alt="Jacek Antonelli looks on as Prim stretches out for a much-needed nap outside their home in Hallasan." border="0" /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Jacek Antonelli looks on as Prim stretches out for a much-needed nap outside their home in Hallasan.&lt;/span&gt;&lt;/div&gt;Prim went missing on September 4 after he bounced away from the cottage where he resided in Hallasan (located along the south-east coast of the Most-Southern Continent). "Prim needed some excercise, so I set him on physical and gave him a script to set his llTargetOmega," tells Antonelli. "But I forgot to put on his leash before I closed the edit window, and he bounced up into the air, right over the house! I was so surprised."&lt;br /&gt;&lt;br /&gt;Jacek Antonelli searched for hours to find Prim, but he was nowhere to be found. When Prim hadn't been returned after several days, Antonelli feared the worst: "I thought he must have bounced into the ocean and drowned, or gotten trapped in a sex club and asphyxiated."&lt;br /&gt;&lt;br /&gt;&lt;div style="border-style: dotted; border-width: thin; margin: 10px 10px 10px 0px; padding: 5px; float: left; width: 210px;"&gt;&lt;img src="http://photos1.blogger.com/blogger2/3378/18279352174330/320/prim_journey.png" alt="The route Prim may have taken from Hallasan (south) to Chamisak (north)." border="0" /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;The route Prim may have taken from Hallasan (south) to Chamisak (north).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;(Artist's recreation)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;But today, Antonelli logged on to find some good news: Resident Artlan Doctorow found Prim on his parcel in the Chamisak region, over 5.5 kilometers from Antonelli's cottage. Said Antonelli, "I was so surprised! I have no idea how he got all the way to Chamisak by himself."&lt;br /&gt;&lt;br /&gt;Asked for comment, Doctorow beamed, "I'm just glad to have helped reunite the two. No one shoud have to go through the fear of losing a pet, especially one that cute."&lt;br /&gt;&lt;br /&gt;Now Prim, exhausted but seemingly no worse for wear, purrs contentedly as Antonelli strokes him. "I'm absolutely amazed at how he managed to keep going so long, especially with the grid restarting to frequently. I never imagined he would make it, but I'm so happy that he's back."&lt;br /&gt;&lt;br /&gt;Antonelli has a plan to keep Prim safe and sound from now on: "I'm going to be extra-careful when dealing with physical objects. I'm giving Prim a script so I can track him wherever he goes, too. You know, just in case he gets loose again."&lt;br /&gt;&lt;br /&gt;When asked to comment on his journey, Prim replied: "Hello, Avatar!"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-5313329248611398639?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/5313329248611398639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=5313329248611398639' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/5313329248611398639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/5313329248611398639'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2006/09/prims-amazing-journey.html' title='Prim&apos;s Amazing Journey'/><author><name>Jacek</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_RAYeU6b6zmE/SLos9tPhkRI/AAAAAAAAAAY/fHlrFqE0yos/S220/jacek-Aug-2008_square2_80.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-2043508247624785162</id><published>2006-09-11T16:12:00.000-06:00</published><updated>2006-09-11T17:14:16.284-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='musings'/><title type='text'>Defining ourselves</title><content type='html'>Mera offered a &lt;a href="http://meratalk.com/?p=176"&gt;thought stream&lt;/a&gt; which got me thinking about deriving identity in activity—the idea that you are what you do. If you center yourself around doing &lt;span style="font-style: italic;"&gt;N&lt;/span&gt;, who would you be if you stopped doing &lt;span style="font-style: italic;"&gt;N&lt;/span&gt;?&lt;br /&gt;&lt;br /&gt;(I am reminded here of the crises of people who, after working their entire lives at the same job, reach retirement and are at a loss as to how they should spend their time. The job had become their identity.)&lt;br /&gt;&lt;br /&gt;This struck a chord with me because I &lt;span style="font-style: italic;"&gt;do&lt;/span&gt; tend to derive a lot of my identity from what I do. In both Lives, I keep myself perpetually buried in projects, so that I will always have some activity to define myself in relation to.&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;I create, so I am a creator.&lt;br /&gt;I teach, so I am a teacher.&lt;br /&gt;I do, so I am.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Assuming, of course, that it is undesirable to be left in a state of doubt about one's identity, one should  endeavor to prevent and cure such a state. Defining oneself in relation to only one or two things is risky; interests come and go, and the anchor that holds today may not tomorrow. A less risky option (and the one I am prone to do) is to grab hold of as many activities as possible, so that each matters less. If one fails, the others are there as backup. But there is a danger to this too, that of spreading oneself too thin, so that there is no meaningful benefit in anything.&lt;br /&gt;&lt;br /&gt;No matter how we define ourselves in relation to other things and activities, there is always the very real possibility that we will lose or shift away from them.&lt;br /&gt;&lt;br /&gt;But what if we define ourselves not in relation to something else, but as being ourselves, no matter how we change?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;I am myself.&lt;br /&gt;I look a certain way, act a certain way, and enjoy certain things.&lt;br /&gt;In the future, I will look another way, act another way, and enjoy other things.&lt;br /&gt;I will be myself then, too.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;(We'll see.)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-2043508247624785162?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/2043508247624785162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=2043508247624785162' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/2043508247624785162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/2043508247624785162'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2006/09/defining-ourselves.html' title='Defining ourselves'/><author><name>Jacek</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_RAYeU6b6zmE/SLos9tPhkRI/AAAAAAAAAAY/fHlrFqE0yos/S220/jacek-Aug-2008_square2_80.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-8594092477266718035</id><published>2006-09-10T16:42:00.000-06:00</published><updated>2006-09-10T14:32:31.686-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='feature'/><title type='text'>Build Window: Particles</title><content type='html'>The Build window should have a tab for controlling a prim's particle system.&lt;br /&gt;&lt;br /&gt;That's simple enough, yeah? But I like to hear myself type, so I'll go into more detail.&lt;br /&gt;&lt;br /&gt;Right now, the only way to activate on deactivate particle systems on a prim is through the use of a script which calls the llParticleSystem() function. That function takes a list of many pairs of parameters, each pair describing what is being defined (e.g. &lt;tt&gt;&lt;span style="font-style: italic;"&gt;PSYS_PART_START_COLOR&lt;/span&gt;, i.e. &lt;/tt&gt;particle starting color) and what that thing is being defined as (e.g. &lt;1,0,0&gt;, i.e. pure red). Constructing such a list is a tedious and frustrating task, but fortunately there are plenty of helpful scripts which can make it a bit more convenient. But even these helper scripts must call llParticleSystem() eventually, or there will be no particles.&lt;br /&gt;&lt;br /&gt;You might think, based on the fact that a script is the only way to activate particles, that a prim must necessarily be scripted to have particles. This is not the case: the particle system is stored with the prim itself, not the script. Consider the fact that you can stop or even delete the script which activated the particles, and the particles will continue unabated.&lt;br /&gt;&lt;br /&gt;To summarize, particle systems can exist without scripts, but there is currently no method aside from scripts to turn them on or off. As scripts are a tedious and ultimately unnecessary way of creating, changing, and deleting a particle system, it thus stands to reason that a more convenient method should be provided as a supplement to the scripted method. The Build window's Features tab (which currently houses the settings for flexible paths and light-emission) seems to be the natural place for this. But particles have a lot of settings, and the Features tab is already a bit crowded, so, at risk of over-complicating the user interface, I recommend branching the Features tab into sub-tabs, one of which would be dedicated to particle systems.&lt;br /&gt;&lt;br /&gt;(In fact, particle systems have such a large number of settings that two or more tabs may have to be dedicated to particle systems. An obvious but imperfect division is between &lt;span style="font-style: italic;"&gt;PSYS_PART_*&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;PSYS_SRC_*&lt;/span&gt; flags. A more natural but less clear-cut division is between settings which define the appearance of each particle, and those which define how they are emitted and behave as a system.)&lt;br /&gt;&lt;br /&gt;So what would we see when we look at the Particle tab(s) of the Build window? It turns out that particle system settings are represented by a handful of distinct types of data, and the proper UI widgets to control each type are already used in other places in Second Life's interface, especially in the Build window itself:&lt;br /&gt;&lt;br /&gt;&lt;table style="border-width: 1px; padding: 5px; width: 90%; text-align: left;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;type&lt;/th&gt;&lt;th&gt;widget&lt;/th&gt;&lt;th&gt;example&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;bitfield&lt;/td&gt;&lt;td&gt;checkboxes&lt;/td&gt;&lt;td&gt;General tab: permissions&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;option&lt;/td&gt;&lt;td&gt;radio buttons /&lt;br /&gt;drop-down menu&lt;/td&gt;&lt;td&gt;General tab: for sale options /&lt;br /&gt;General tab: When Left Clicked&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;float&lt;/td&gt;&lt;td&gt;numeric control&lt;/td&gt;&lt;td&gt;Object tab: Revolutions&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;integer&lt;/td&gt;&lt;td&gt;numeric control&lt;/td&gt;&lt;td&gt;Object tab: Hollow&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;vector&lt;/td&gt;&lt;td&gt;multiple numeric controls&lt;/td&gt;&lt;td&gt;Object tab: Position&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;color&lt;/td&gt;&lt;td&gt;color picker&lt;/td&gt;&lt;td&gt;Texture tab: Color&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;texture&lt;/td&gt;&lt;td&gt;texture picker&lt;/td&gt;&lt;td&gt;Texture tab: Texture&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;object/avatar&lt;/td&gt;&lt;td&gt;object picker&lt;/td&gt;&lt;td&gt;Report Abuse window&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Some notes: in the script, colors are actually the vector data type, but it is non-intuitive to select a color the same way you set e.g. size in a graphical widget.  Also, a script has the advantage in selecting a client asset texture by key, whereas the graphical widget can only select from inventory. And, the object picker in the Report Abuse window can only select the root prim of an object, which would be insufficient when targetting a child prim of an object.&lt;br /&gt;&lt;br /&gt;In addition to all the particle system attributes, one more UI element would be needed: a checkbox for whether the particle system is currently active or not. But unchecking that box should &lt;span style="font-style: italic;"&gt;not&lt;/span&gt; make in impossible to change the other settings, as happens with the flexi and light features (in fact, it should not do so in those cases either!). This might require a small change to the way particle systems work, as I am not certain if non-active particle systems are saved with prims. But even if the values for the attributes of a non-active particle system were stored only client side (so that if the client crashed, they would be lost), it would still be a useful feature.&lt;br /&gt;&lt;br /&gt;I feel compelled here to anticipate several possible arguments against this feature:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;"Newbies and griefers will be making ugly and annoying particle systems left and right! At least now, you have to be able to script to abuse particle systems!"&lt;/p&gt;&lt;p&gt;To this I have two responses. Firstly, newbies and griefers &lt;span style="font-style: italic;"&gt;already&lt;/span&gt; make ugly and annoying particle systems left and right, because scripted smoke bombs etc. are already easily available. Secondly, I don't think that imagined fear of abuse is a legitimate reason to prevent progress in ease of legitimate use.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;"This change would put the makers of particle helper scripts out of business!"&lt;/p&gt;&lt;p&gt;Adapt or perish. Should we have stuck with the telehub system, because point-to-point teleporting forced vehicle makers to change their business models? Perhaps we should get rid of the Object tab, and force all changes to a prim's shape be made through scripts, to increase demand in the prim-twisting script market?&lt;/p&gt;&lt;p&gt;The fact is, scripts which control particle systems will still be useful; but they will have to go beyond the basics and have more complex behavior. Some examples include particle systems which gradually rotate through all the colors with time, or particle systems which detect nearby avatars, look up their favorite color in a database, and shoot particles of that color at them.&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;As I see it, there are plenty of reasons to add this feature and few reasons to reject this feature,  little effort required to add it and much benefit from its addition. So get it done.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-8594092477266718035?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/8594092477266718035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=8594092477266718035' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/8594092477266718035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/8594092477266718035'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2006/09/build-window-particles.html' title='Build Window: Particles'/><author><name>Jacek</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_RAYeU6b6zmE/SLos9tPhkRI/AAAAAAAAAAY/fHlrFqE0yos/S220/jacek-Aug-2008_square2_80.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-8128251025113849778</id><published>2006-09-03T20:37:00.000-06:00</published><updated>2006-09-03T20:40:58.822-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='classic'/><category scheme='http://www.blogger.com/atom/ns#' term='feature'/><title type='text'>Procedural Textures</title><content type='html'>&lt;span style="font-style: italic;font-size:85%;" &gt;This post appeared originally on the old blog. The original comments attached to the post are listed at the bottom. -J 09/03/06&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Textures take a long time to download, even on the asset servers' good days. The fact is, they use a lot more storage space and bandwidth than the actual prims they cover. While moderately-sized textures will weight in at several kilobytes, a prim takes perhaps a hundred bytes (the exact figure does not matter at this point, only its relative magnitude). How can a three-dimensional object take less space to store than a two-dimensional image?&lt;br /&gt;&lt;br /&gt;The trick is in how prims are created. Every single prim is &lt;span style="font-style: italic;"&gt;parametric&lt;/span&gt;' or &lt;span style="font-style: italic;"&gt;procedurally generated&lt;/span&gt;. Second Life has functions (i.e., procedures) which take certain parameters (e.g., size, twist, taper) and generate the three-dimensional mesh of, say, a torus based on those parameters. So you don't have to transfer the 3D mesh, just the parameters; the mesh can be constructed by any client locally.&lt;br /&gt;&lt;br /&gt;Textures, on the other hand, store pixel data for the image. Of course, image compression is used, and varying levels of detail are generated (so you only have to transfer the lowest level of detail needed), but it still requires much more data than a prim.&lt;br /&gt;&lt;br /&gt;But, just like it is possible to procedurally generate 3D primitives, it is possible to generate 2D images, i.e. &lt;span style="font-style: italic;"&gt;procedural textures&lt;/span&gt;. Procedural textures are common in 3D computer animation as an &lt;span style="font-weight: bold;"&gt;easy&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;storage-inexpensive&lt;/span&gt; way of creating high-detail textures. Most animation packages come with a number of texture procedures, and although the complexity of the procedures varies, they all have something in common: one procedure can generate a (seemingly) unlimited number of similar (but not identical) textures, based on the procedure's parameters. In addition to the "standard" texture procedures which come with the program, many packages allow knowledgeable users to create their own procedures.&lt;br /&gt;&lt;br /&gt;(To avoid confusion, I will use the terms "texture procedures" or "procedures" to indicate blocks of code which are executed to generate a texture, and "textures" to indicate collection of image data, either from an uploaded image or the saved result of a texture procedure.)&lt;br /&gt;&lt;br /&gt;Consider a "wood-grain" texture procedure . Some of the parameters it might have are: wood color, grain color, ring density, ring uniformity (how similar in thickness each ring is), ring noise (how distorted the ring shape is), and so on. Based on these parameters, the procedure would generate a texture. If you used slightly different parameter settings, the procedure would generate a slightly different texture.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;If I Ruled the Grid&lt;/span&gt;, there would be several standard texture procedures written in a simple 'shading' language (affecting surface color only; control over how light affects the surface would be excessive for Second Life). Eventually, custom procedures could be written by users and distributed through Second Life as objects.&lt;br /&gt;&lt;br /&gt;Some examples of standard texture procedures would be:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;multiple-octave Perlin noise (or similar)&lt;/li&gt;&lt;li&gt;wood grain&lt;/li&gt;&lt;li&gt;stone/marble&lt;/li&gt;&lt;li&gt;text&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Standard texture procedures, which would be distributed with the client software, present a much simpler problem because everyone will already have the procedures on their computer. Custom procedures complicate the system, because they must be distributed across the net to other clients, but the IP rights of the creator must be respected. (Distributing the procedure code, even in compiled form, increases the risk of it being decompiled or reverse engineered.)&lt;br /&gt;&lt;br /&gt;To allow the creators of texture procedures control over the use of their creations (making possible a market for procedures), special permission settings would be required, as detailed below. Unless otherwise noted, each setting can be enabled or disabled separately for creator, owner, group, everyone, etc.:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Modify: user can access and modify the procedure's source code.&lt;/li&gt;&lt;li&gt;Run: user can set parameters and execute the procedure.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Save: user can save the results of the procedure as a texture in his/her inventory.&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Save Permissions:  saved results will be created with these mod/copy/transfer permissions.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Download: user can download the compiled procedure to the client. If this is disabled, only cached server results can be seen.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Copy, Transfer: as with other types of object.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;Obviously, some uses of custom texture procedures do not take advantage of the reduced bandwidth use of procedural textures; instead, they are used as a convenient way for the creator to generate many customized textures, which can then be used separately. The ability of texture procedures to create many textures with minimal human effort is no less useful than its bandwidth conservation.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;span style="font-size:85%;"&gt;Comments from the original post:&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://www.blogger.com/profile/6781085" rel="nofollow"&gt;Akela Talamasca&lt;/a&gt; said...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt; Thank you for explaining the whole 'pocedural' thing... since the advent of Spore, there's been a lot of talk about 'procedurally generated animation' and the like, and I've never understood what it meant, and why it was able to provide suce small file sizes. Now I know. And knowing's half the battle. *GI Joooooeeeeeeee!*&lt;br /&gt;&lt;br /&gt;8/31/2006 9:47 AM&lt;/span&gt;&lt;/blockquote&gt;&lt;hr /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-8128251025113849778?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/8128251025113849778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=8128251025113849778' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/8128251025113849778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/8128251025113849778'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2006/09/procedural-textures.html' title='Procedural Textures'/><author><name>Jacek</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_RAYeU6b6zmE/SLos9tPhkRI/AAAAAAAAAAY/fHlrFqE0yos/S220/jacek-Aug-2008_square2_80.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-2213093850647765324</id><published>2006-08-20T21:26:00.000-06:00</published><updated>2006-09-03T20:27:49.471-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='classic'/><category scheme='http://www.blogger.com/atom/ns#' term='gripe'/><title type='text'>Ambiguous Object Chat</title><content type='html'>&lt;span style="font-style: italic;font-size:85%;" &gt;This post appeared originally on the old blog. The original comments attached to the post are listed at the bottom. -J 09/03/06&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Consider the following LSL script:&lt;br /&gt;&lt;pre&gt;default&lt;br /&gt;{&lt;br /&gt;state_entry()&lt;br /&gt;{&lt;br /&gt;  llSay(0,"Hello, Avatar!");&lt;br /&gt;  llOwnerSay("Hello, Avatar!");&lt;br /&gt;  // edit: fixed erroneous argument in previous line. Thanks MP!&lt;br /&gt;  llInstantMessage(llGetOwner(),"Hello, Avatar!");&lt;br /&gt;}&lt;br /&gt;}&lt;/pre&gt;Drop that script into a prim and run it. Three lines of chat will appear for the owner:&lt;br /&gt;&lt;pre&gt;Object: Hello, Avatar!&lt;br /&gt;Object: Hello, Avatar!&lt;br /&gt;Object: Hello, Avatar!&lt;/pre&gt;Three forms of chat available to scripted objects show up exactly the same! (The other two, shout and whisper, can be distinguished from all others.) But of these three forms of chat, only one can be heard by other people.&lt;br /&gt;&lt;br /&gt;This issue comes up with scripted objects which use chat to report something to the owner. Sometimes these scripts use llSay when they should instead use llOwnerSay. &lt;span style="font-style: italic;"&gt;(If your script does this, it is a naughty script that should be publicly flogged. I'm looking at you, "MultiGadget by Timeless Prototype"! &lt;span style="font-weight: bold;"&gt;For shame!&lt;/span&gt;)&lt;/span&gt; Being the considerate person that I am, I do not want to use an object which will spam everyone around me, but I cannot determine at a glance which method of communication the object is using.&lt;br /&gt;&lt;br /&gt;So, &lt;span style="font-style: italic;"&gt;If I Ruled the Grid&lt;/span&gt;, every form of visible object communication would be easily distinguishable from every other form, at a glance. The results of the script would show up as something like this:&lt;br /&gt;&lt;pre&gt;Object: Hello, Avatar!&lt;br /&gt;[Own] Object: Hello, Avatar!&lt;br /&gt;[IM] Object: Hello, Avatar!&lt;/pre&gt;Not only would each form have different text boilerplate, but they would use different colors (which could be changed in your preferences, of course). The Grid would be a much less ambiguous place to live in, and that's a good thing.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;Since I do not yet rule the Grid, I will point out for the benefit of my readers that you can tell if an object is spamming the general chat channel by using another object which has been scripted to repeat to you everything which is said on channel 0. Here is a script that should do the job (pending actual testing in SL):&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;default&lt;br /&gt;{&lt;br /&gt;state_entry()&lt;br /&gt;{&lt;br /&gt;  llListen(0,"",NULL_KEY,"");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;listen( integer channel, string name, key id, string message )&lt;br /&gt;{&lt;br /&gt;  llOwnerSay( name + " said: " + message );&lt;br /&gt;}&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;To my knowledge, it remains impossible by any means (short of packet sniffing, which may or may not violate the Terms of Service) to tell the difference between llOwnerSay and sending an instant message to the owner.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;span style="font-size:85%;"&gt;Comments from the original post:&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://www.blogger.com/profile/29761782" rel="nofollow" onclick="" class="comment-poster-name"&gt;Timeless Prototype&lt;/a&gt; said...          &lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:85%;"&gt; The Multi Gadget advert can be disabled by its owner by saying 'cmd|advert|off'. That is to say it is the choice of the owner. Everything else is an IM or OwnerSay, except for the "key getter" feature which is deliberately a whisper because you might be getting keys for a friend to use.&lt;br /&gt;&lt;br /&gt;I like your idea of prefixing what is said with [Own] or [IM]. Here's how that can be achieved by your LSL script:&lt;br /&gt;&lt;br /&gt;myOwnerSay(string message)&lt;br /&gt;{&lt;br /&gt;string preserveName = llGetObjectName();&lt;br /&gt;llSetObjectName("[Owner] " + preserveName);&lt;br /&gt;llOwnerSay(message);&lt;br /&gt;llSetObjectName(preserveName);&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt; 8/21/2006 5:28 PM&lt;/span&gt;  &lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;hr style="height: 2px;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;a href="http://www.blogger.com/profile/28180575" rel="nofollow" onclick="" class="comment-poster-name"&gt;Erbo Evans&lt;/a&gt; said...          &lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:85%;"&gt;  I know I'll definitely turn that off on &lt;i&gt;my&lt;/i&gt; copy of the MG...I just wonder if the setting "sticks" when the MG is detached and reattached (which is basically every time I change outfits). Perhaps I'll need to make a gesture that issues that command to the MG that I can use whenever needed. &lt;/span&gt;&lt;/p&gt;  &lt;p class="comment-timestamp"&gt;&lt;span style="font-size:85%;"&gt; 8/24/2006 11:18 AM&lt;/span&gt;&lt;/p&gt;&lt;hr style="height: 2px;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;a href="http://www.blogger.com/profile/29486908" rel="nofollow" onclick="" class="comment-poster-name"&gt;Mera Pixel&lt;/a&gt; said...          &lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:85%;"&gt;  You already know this, but llOwnerSay doesn't take a channel as the first example shows.&lt;br /&gt;&lt;br /&gt;*waves to timeless*  &lt;/span&gt;&lt;/p&gt;  &lt;p class="comment-timestamp"&gt;&lt;span style="font-size:85%;"&gt; 8/25/2006 6:12 PM &lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-2213093850647765324?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/2213093850647765324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=2213093850647765324' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/2213093850647765324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/2213093850647765324'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2006/08/ambiguous-object-chat.html' title='Ambiguous Object Chat'/><author><name>Jacek</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_RAYeU6b6zmE/SLos9tPhkRI/AAAAAAAAAAY/fHlrFqE0yos/S220/jacek-Aug-2008_square2_80.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-7483432660757787894</id><published>2006-08-19T19:42:00.000-06:00</published><updated>2006-09-03T20:16:53.714-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='classic'/><category scheme='http://www.blogger.com/atom/ns#' term='gripe'/><title type='text'>Missing Linux Client Features</title><content type='html'>There is an alpha (testing) version of the Second Life Client on Linux. And I appreciate it. I wouldn't be a part of Second Life if it had not been available. It has let me participate in a thriving community, build beautiful objects, and write useful scripts.&lt;br /&gt;&lt;br /&gt;But it's missing some important features which put a damper on my creative ability:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Image, sound, and animation uploads from file.&lt;/li&gt;&lt;li&gt;Texture downloads.&lt;/li&gt;&lt;li&gt;Snapshot to disk or postcard. (Upload snapshot works fine.)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Text copy &amp; paste.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Audio.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Streaming media playback.&lt;/li&gt;&lt;/ul&gt;The man behind the port is none other than &lt;a href="http://icculus.org/"&gt;Ryan C. Gordon a.k.a. Icculus a.k.a Icculus Linden&lt;/a&gt;, cross-platform porter extraordinaire. &lt;a href="http://icculus.org/cgi-bin/finger/finger.pl?user=icculus&amp;date=2006-07-07&amp;time=15-19-16"&gt;Last I heard of his ongoing SL work&lt;/a&gt;, he was working on switching out the FMod sound engine for OpenAL, which will eventually lead to audio playback for Residents running the Linux client alpha, as well as saving Linden Lab a bit of cash on library licensing fees.&lt;br /&gt;&lt;br /&gt;That's great, but as a builder, designer, graphic artist and scripter, I would flag image uploads/downloads and text copy/paste as highest-priority items. But until we get them, there's always &lt;a href="http://www.winehq.org/"&gt;WINE&lt;/a&gt; to tide us over.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;span style="font-size:85%;"&gt;Comments from the original post:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://www.blogger.com/profile/28180575" rel="nofollow"&gt;Erbo Evans&lt;/a&gt; said...          &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;  I can't even &lt;i&gt;use&lt;/i&gt; the Linux client because my video drivers for X aren't up to snuff...the Radeon accelerated driver seems to lock X &lt;i&gt;hard&lt;/i&gt;, requiring a reset to regain control of the system.  The VESA drivers work, but they're so slow I can &lt;i&gt;see&lt;/i&gt; screen repaints even on a 2D desktop...&lt;br /&gt;&lt;br /&gt;Oh well, that's what dual-boot is for. :-)&lt;br /&gt;&lt;br /&gt;8/24/2006 11:20 AM&lt;/span&gt;&lt;/blockquote&gt;&lt;hr /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-7483432660757787894?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://forums.secondlife.com/forumdisplay.http://www.blogger.com/img/gl.link.gifphp?f=263' title='Missing Linux Client Features'/><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/7483432660757787894/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=7483432660757787894' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/7483432660757787894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/7483432660757787894'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2006/08/missing-linux-client-features.html' title='Missing Linux Client Features'/><author><name>Jacek</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_RAYeU6b6zmE/SLos9tPhkRI/AAAAAAAAAAY/fHlrFqE0yos/S220/jacek-Aug-2008_square2_80.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-5664879258073481930</id><published>2006-08-18T16:52:00.000-06:00</published><updated>2006-09-03T20:10:31.997-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='classic'/><category scheme='http://www.blogger.com/atom/ns#' term='feature'/><title type='text'>Object Clones</title><content type='html'>&lt;span style="font-style: italic;font-size:85%;" &gt;This post appeared originally on the old blog. The original comments attached to the post are listed at the bottom. -J 09/03/06&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Suppose for a moment that you are a builder of detailed houses within Second Life. In a typical house, you might have ten window fixtures, eight decorative columns, four doors, and two statues in the garden. Each of these items is identical to the others of its type, and is constructed of, perhaps, ten prims each, with the exception of the statues which are 100 prims each.&lt;br /&gt;&lt;br /&gt;You've just spent 420 prims of your parcel budget to make twenty-four objects, and we haven't even added furniture! That's 420 prims which must be saved to the sim, and 420 prims which must be sent to every Second Life client which wants to view your magnificent houses.&lt;br /&gt;&lt;br /&gt;What a waste, when each item is exactly the same as the others of its type, with only a different position, rotation, and possibly scale!&lt;br /&gt;&lt;br /&gt;With &lt;span style="font-style: italic;"&gt;object clones&lt;/span&gt;, which I am herein proposing, you could build the exact same house, but the above-mentioned 420-prim figure would be &lt;span style="font-style: italic; font-weight: bold;"&gt;reduced to a mere 130 prims.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;At this point, some of you will think I have gone insane, but the clever among you will have deduced how this could be possible and are now bubbling over with glee at the prospect. For the benefit of those who don't yet see it, I will explain.&lt;br /&gt;&lt;br /&gt;An "object clone" would be a special object which has no prims of its own; instead, it inherits prims from the original object. This means that instead of storing the details of ten window fixtures, you store the details of &lt;span style="font-style: italic;"&gt;one&lt;/span&gt; window fixture, and then create nine clones, saying, "These nine objects are constructed exactly like the first one."&lt;br /&gt;&lt;br /&gt;From a technical perspective, object clones are a simple form of lossless data compression. Rather than storing &lt;span style="font-style: italic;"&gt;n&lt;/span&gt; identical sets of data, we store one set and &lt;span style="font-style: italic;"&gt;n-1&lt;/span&gt; additional references to that set. The compression rate becomes more dramatic as the number of duplicates increases. (I think object clones would constitute a type of &lt;a href="http://en.wikipedia.org/wiki/Dictionary_coder"&gt;dictionary coding&lt;/a&gt;, but I may be wrong on that.)&lt;br /&gt;&lt;br /&gt;Because a clone only has to store a reference (the UUID of the original) and a transformation matrix (position, rotation, and scale), it takes considerably less data storage space than even a single prim (which must also store such things as texture information and prim parameters).&lt;br /&gt;&lt;br /&gt;But, even if Linden Lab counted each reference as equivalent to one prim for the purposes of parcel limits, we could still reduce our example of 420 prims to 130 prims + 20 clones = 150 'prims'.&lt;br /&gt;&lt;br /&gt;Clearly, this feature would be of incredible importance to builders of all types! Frankly, it is such a simple concept with such extraordinarily far-reaching benefit that I find it hard to believe that Linden Lab hasn't already thought to implement it.&lt;br /&gt;&lt;br /&gt;I have in mind several extensions to this concept which would further revolutionize the way we build in Second Life, but this post is already lengthy, so I will save them for another day.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;span style="font-size:85%;"&gt;Comments from the original post:&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://www.blogger.com/profile/29948591" rel="nofollow"&gt;Alexander Lapointe&lt;/a&gt; said...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;  Mindgasmic!&lt;br /&gt;&lt;br /&gt;Wow, what a wonderful idea! I'm not a regular builder at the moment, but even with the making of Trav Doll/Trav Hat this would have been useful and would have cut down the prims to 8 from 11, which isn't that big of a difference, but still....&lt;br /&gt;&lt;br /&gt;Plus, it would be nice for owners of small parcels with low prim limits, *cough* *cough*, by allowing for the little extras that make home-owning wonderful. Or the possiblity of having a house and a skybox that one could use.&lt;br /&gt;&lt;br /&gt;8/24/2006 8:48 PM&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;hr /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-5664879258073481930?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/5664879258073481930/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=5664879258073481930' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/5664879258073481930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/5664879258073481930'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2006/09/object-clones.html' title='Object Clones'/><author><name>Jacek</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_RAYeU6b6zmE/SLos9tPhkRI/AAAAAAAAAAY/fHlrFqE0yos/S220/jacek-Aug-2008_square2_80.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-8844186363705036748</id><published>2006-08-17T02:28:00.000-06:00</published><updated>2006-09-03T20:04:58.424-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='classic'/><category scheme='http://www.blogger.com/atom/ns#' term='feature'/><title type='text'>Flexible prim scale adjustment</title><content type='html'>&lt;span style="font-style: italic;font-size:85%;" &gt;This post appeared originally on the old blog. The original comments attached to the post are listed at the bottom. -J 09/03/06&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When it comes to flexible prims, size does matter. A small prim just won't bend as much as a larger prim with the same flex settings. So if you want your lop-eared pet rabbit's ears to lop just the right way, you may have to scale him up to 5 meters on a side!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;If I ruled the Grid&lt;/span&gt;, flex would be independent of size. Depending on how Linden Lab has implemented flexible paths, this would likely involve subdividing the path into the same number of parts when it is big as when it is small—that is, a number of subdivisions per path, not per meter of the path's length.&lt;br /&gt;&lt;br /&gt;Since flexible prims have already been implemented, and that change would "break" a huge number of existing objects (not to mention cause plenty of embarrassment for flexi-skirt users who go without the luxury of "glitch pants"), Linden Lab could instead add a new attribute to control the scale used for subdividing the path. The default setting would be equivalent to the current scale, so that existing flexible prims would not behave differently.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Comments from the original post:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://www.blogger.com/profile/26698642" rel="nofollow"&gt;Reina Quine&lt;/a&gt; said...          &lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:85%;"&gt;  Go ahead and break 'em! Serves those hussies right for not wearing glitch pants!&lt;br /&gt;&lt;br /&gt;8/17/2006 7:34 AM&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-8844186363705036748?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/8844186363705036748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=8844186363705036748' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/8844186363705036748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/8844186363705036748'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2006/08/flexible-prim-scale-adjustment.html' title='Flexible prim scale adjustment'/><author><name>Jacek</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_RAYeU6b6zmE/SLos9tPhkRI/AAAAAAAAAAY/fHlrFqE0yos/S220/jacek-Aug-2008_square2_80.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-149744453012114738.post-5103082297969869710</id><published>2006-08-15T23:38:00.000-06:00</published><updated>2006-09-03T19:51:48.596-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='classic'/><category scheme='http://www.blogger.com/atom/ns#' term='gripe'/><title type='text'>Instructors Group Chatter</title><content type='html'>&lt;span style="font-style: italic;font-size:85%;" &gt;This post appeared  originally on the old blog. The original comments attached to the post are listed at the bottom.  -J 09/03/06&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Yesterday evening before logging off, I was invited to the Instructors group. Today, I encountered my first example of chatter in the Instructor group IM channel. Someone couldn't figure out a scripting-related issue for his own project, and so decided to ask in the Instructors channel.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Do not do this. This is wrong.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The Instructors channel is for Instructors to discuss issues related to teaching in Second Life. It is not a scripting helpline, nor a basic building workshop, nor a gossip hub. There are other groups for all those things. Use them.&lt;br /&gt;&lt;br /&gt;When I applied for the Instructors program, I was fully aware that there would be stupid chatter. I had heard my Instructor friends complaining about it, and seen forum threads like the one linked above. I knew exactly what I was getting into.&lt;br /&gt;&lt;br /&gt;And I am going to fight it.&lt;br /&gt;&lt;br /&gt;Our script-nescient friend got a few replies from other instructors. If it had ended there, or perhaps moved to a private IM session with someone who was willing to help him, I would have let it go. After a minute or so of back-and-forth petty chatter between two instructors, I (politely) suggested that they continue the conversation in private IM or another, more on-topic channel. They responded that I could just close the IM window if I didn't want to hear it. One even drew me a helpful ASCII diagram with an arrow pointing towards the Close button.&lt;br /&gt;&lt;br /&gt;Charming, but they missed the point.&lt;br /&gt;&lt;br /&gt;If you were to come to a Real-Life meeting of baked goods enthusiasts and start blathering about how much you love kittens, you would be asked to leave. Even if some of the people at the meeting also liked kittens, it is not the &lt;span style="font-style: italic;"&gt;proper channel&lt;/span&gt; for discussion of the merits of our furry friends. The people there came to talk about baked goods. If they wanted to talk about kittens, they would have gone to a meeting of kittens enthusiasts. You would be &lt;span style="font-style: italic;"&gt;wasting everybody's time&lt;/span&gt;, and hindering their ability to do what they came there to do.&lt;br /&gt;&lt;br /&gt;There are a lot of helpful and knowledgeable people in the Instructors group. Indeed, Instructors, by their nature, tend to be helpful and knowledgeable people. If you have a question, chances are one of the many Instructors will be able and willing to answer it. But if you ask the Instructors group a question that is unrelated to the topic of teaching in Second Life, you are spitting on the proper purpose of the channel, and wasting the time of everyone who upholds that proper purpose.&lt;br /&gt;&lt;br /&gt;But this site isn't called &lt;span style="font-style: italic;"&gt;I Like to Whine Without Offering Solutions&lt;/span&gt;, it's called &lt;span style="font-style: italic;"&gt;If I Ruled The Grid&lt;/span&gt;! Time for some proposed action.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Linden Lab&lt;del style="color: rgb(153, 153, 153);"&gt;s&lt;/del&gt; should decouple the Instructors group from the Instructor benefits. Some people want to teach without being constantly exposed to useless chatter.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Linden Lab&lt;del style="color: rgb(153, 153, 153);"&gt;s&lt;/del&gt; should clearly state the purpose of the Instructors group in the group charter, and deal with abuses of the group channel. Chatter is a serious drain of resources, and should result in a warning on the first offense, and removal from the group on the second offense.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Instructors should refuse to answer off-topic questions asked in the group.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;If you do feel compelled to answer it, answer it in private IM with the invidual, then tell him not to ask in the group again. For the purposes of signalling to other Instructors that you are handling the question, it is acceptable to make a brief reply to the group first.&lt;/li&gt;&lt;/ol&gt;I can't say I expect either #1 or #2 to happen. Linden Lab&lt;del style="color: rgb(153, 153, 153);"&gt;s&lt;/del&gt; has demonstrated that it is not concerned whether it alienates the dedicated individuals who shape the Grid and make our Second Lives enjoyable.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;[Edit: Just as there is no "I" in team, there is no "S" in Linden Lab. Many thanks to Mera for pointing this out. -J 08/17/06]&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;hr /&gt;&lt;span style="font-size:85%;"&gt;Comments from the original post:&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://www.blogger.com/profile/29486908" rel="nofollow"&gt;Mera Pixel&lt;/a&gt; said...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Wow. Come out of the corner swinging, why don't you. :) Instructors used to be, are at times are, the most quiet of the volunteer groups. It's been getting gradually worse lately.&lt;br /&gt;&lt;br /&gt;And to be nit-picky, it's Linden Lab.  :)&lt;br /&gt;&lt;br /&gt;Congrats on the site...and thanks for the linkage, however incestual it may be.&lt;br /&gt;&lt;br /&gt;8/16/2006 5:49 PM&lt;/span&gt;&lt;/blockquote&gt;&lt;hr /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/149744453012114738-5103082297969869710?l=jacek-antonelli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://forums.secondlife.com/showthread.php?t=118191' title='Instructors Group Chatter'/><link rel='replies' type='application/atom+xml' href='http://jacek-antonelli.blogspot.com/feeds/5103082297969869710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=149744453012114738&amp;postID=5103082297969869710' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/5103082297969869710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/149744453012114738/posts/default/5103082297969869710'/><link rel='alternate' type='text/html' href='http://jacek-antonelli.blogspot.com/2006/08/instructors-group-chatter.html' title='Instructors Group Chatter'/><author><name>Jacek</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_RAYeU6b6zmE/SLos9tPhkRI/AAAAAAAAAAY/fHlrFqE0yos/S220/jacek-Aug-2008_square2_80.png'/></author><thr:total>0</thr:total></entry></feed>
