Emerald Reassessment

This post is one I have needed to make a long time ago. This is totally in my eyes, my personal perception, as very few things were ever written down.

Emerald is no longer what It was for me, I have been dedicating a ridiculous amount of my time to this project for near two years now, and It’s been difficult to see it go the way it has.

It started off as a joint effort to bring talented people together to make something that people could really appreciate it, something that I could work on and give as a gift to my friends. All sorts of people have worked on it over the time, some people whom I trusted and respected, and some that I took things as they came. The similar thing was that it appeared that we were all working to be productive and helpful, to make an amazing viewer. Trust was never a critical point in the project, as everything that was done was transparent to everyone. Every code change was easily viewable by everyone, including the public, so there was really no issue with worrying about someone adding something nasty. Back when there were questions of the viewers integrity, I personally put my support behind it, promising that I would double and triple check code commits as much as I could to ensure that everyone was secure.

Unfortunately, I do not feel confident enough to support it any more, for a number of reasons. I did not realize at the time that emkdu was added, that it could be used to add in code I was not able to see. These things were done behind my back, it was found out by others that code was placed in that braodcasted your viewers title bar and executable path in a obfuscated manner. This was addressed, promised to be fixed, and (luckily) people broke through the now encrypted layer to find out that it was not.  Of-course, it has been promised to be fixed a third time, but now with an encryption level too high to be broken.  Although replacing or deleting emkdu would resolve this issue, I also have to consider that this was hidden in the code for months without anyone knowing..

Regardless of the intentions of those who placed this code there, It has made one thing inescapably clear. I am not able to double check everything any more. I tried to find a solution to resolve this matter, but it appears that most people do not care about this to the level that I do. I made sure the other emerald devs were aware of what is going on via this.   As mentioned there, closed source, hidden designs and single developer licenses have no place in emerald.  People can make mistakes, but it is important that others can double check without having to break through encryption.  Nothing has changed however. This issue of being able to transparently check up on everyone is only to get worse in my opinion, as all new builds are planned to be done from a central build server, where access is cut off from the other developers.  I consider trust issues with any binary of the highest importance, as even small library like this can have access to every file or memory on the computer, the same care must be taken with them as everything else.

Furthermore, there has been a issue with money, donations, advertisement profit, that has not been resolved how I felt that it should. Instead of the money being treated as a group project, and used appropriately (transparently to the other devs), it has been handled privately instead.

Additionally there has been some playful talk by a few developers to add services to emerald that would be used to profit certain developers. I have always felt that emerald should be a free project, both speech and beer, and that adding ways to make money off others free work was wrong in some way. Though, this is my personal opinion, and it is most defiantly not part of the GPL.

There have also been issues with public appearance and ignorant association. Although most intelligent people understand that the people who work on emerald do so separately, and that for the most part it is the only thing they work on together, this is not always clear, and there have been numerous times when I have had to fight to make it clear who participates in what, even on our own website. Before hand I could point out that what other devs have/are/will do is unrelated to me, but now even emerald now is moving in the direction they want it, to the extent that I feel it is important to distinguish myself from it.

I have had a few people ask me why I did not do something about this, something sooner, and the reason is that this is not my project more than it is all of the other developers, in my opinion. I have done my part to make sure that they are aware of this, but their decisions are their own.  I would have said something sooner, but I was trying my hardest to get this resolved internally.

This seems to have mostly been a misunderstanding on my part. I had assumed emerald was what I wanted it to be, when now it is very clear that it is not on a number of issues. Therefore I feel that it is my responsibility to make a few points clear from now on.

  • Emerald is beyond my ability to verify the integrity of the code involved.  For people concerned about spy-ware, adware, backdoors, etc, I strongly encore you to do your own research, as you should with every program you install, and make this decision yourself.  I am aware of two instances of what I consider bad code in emkdu, and have given instructions on how to remove this part from emerald, however in the future even that will not be enough.  A decent solution is to compile the viewer yourself, and only include components that you trust.
  • The money made by emerald has not, and will not ever go to me.  It has always been important to me that my work has been completely for free on this project.
  • The actions behind emerald, and other developers other projects, and any implied moral implications have nothing to do with me.  I personally disagree with the points in emerald that I have mentioned here, and for projects that I am unrelated in (like onyx, cds) I don’t have anything to do with them!

Furthermore, as you can probably guess, my involvement in emerald will be much less in the future, unless something is done to address these issues.  I would still love to help people as I always have with emerald support, and I will still be adding any features I think would help people out to emerald (though i think a good patch for other viewers will also be provided), but as far as the direction emerald is going, I am out of it.

It is very distressful to have to sever some ties to a project I have put so much dedication and time behind.. it has postponed this decision for a long while, but there is a time for everything, and I think I can find new ways to be productive better than working on emerald.

To the people who have took my word on emerald’s credibility, I apologize deeply for my claims.

It’s been fun, I have learned allot from people who code better than I probably ever will be able to, and there are times when it has been great, thank you very much to all the other developers, and supporters. I hope you understand.

(edit: no, i really don’t feel like forking or doing my own builds or taking anyone’s money to do so, im quite sick of emerald right now, if one were to do so, the code you can see in the svn is clean last i checked, the rest, i don’t know)

(edit: for the people who believe that I am doing this to cause drama, or that I am trying to destroy emerald, please reconsider.  This post was made to clear my conscience and bring the truth as best as I saw it to people who were relying on me.   I wish no harm on anyone, I am sorry that things came to this, but it was all stuff I could have fixed long ago, I do not hate anyone.  Please beware of people misquoting me or adding on to what I have said here, I have made this long an thorough for a reason, I do not need drama people corrupting it)

(edit: to be extremely clear, most devs in emerald do not have anything to do with emkdu.  The code was for a single developer, and it was passed around to no more than 3 devs that I am aware of, the rest of them are all in a similar boat as me afaik)

(edit: so apparently someone got my access removed from the svn and a few other things for posting this, sorry to the people who have pointed out the few last minute things I should have fixed, looks like they will have to wait)

(edit: to the other developers who feel like I have betrayed you and was foolish by making this public, I am very affected and would please ask you to consider my position.  I have tried every way I know of to get this resolved before hand, but I have been left in a position where I have people relying on my public words on this, keeping this to myself or trying to whisper it to all of them would have been betraying the rest of these people, and there wasn’t any other way to correct this)



I was brainstorming for a while on the way home from class, concerning the paths that humans naturally decide to take to get from point a to point b. I have consciously considered this way back sense middle school, and have tried to make my walking path as efficacy as possible, basically, a straight line.
However after careful analysis I have unfortunately found that as much as a try, the moment I take my mind off of this plan.. my feet start to wander, and ( I assume ) revert back to a natural style of path finding. I move in a slight curve one way or the other.. depending on… lots of parameters perhaps.
Humans, when you get down to it, are more than intelligent enough to be frustratingly random and unpredictable, but the beauty of randomness is that with a bit of statistics, you can actually predict general trends.
I think that when it comes to choosing a path to travel, the standard deviation is much less, because it is considered a simple natural thing to do, almost like… we were born knowing how to choose a path. And when you consider the more basic human trends.. we tend to act more and more similar.. the less we think about something. If you consider that this lower mental state, is one that can be found in most animals, then this tends to agree with my theory as well, as careful study of their paths shows that they all act extremely similar, and most are very predictable.
So here are some basic ideas… I believe that finding out the path that humans will take can be done mathematically and programmatically. We all know that humans don’t naturally make sharp turns, our bodies are not build to move like this, when you come to a hallway, you don’t just stop and make a 90 degree turn, even though it would be more efficient, you instead naturally keep your momentum and move in a arc. However, I do not want to focus on the paths that people take… when there is already a path laid down before them, people tend to follow what others have done before, and this removes the effect that I am interested in.
So consider and instance where humans break away from what is paved down before them, and see how they act. I believe based on the direction they have started facing, and the direction of the location they want to go, they choose a arc based on their velocity and a natural constant to face that direction. Though.. this is not precise. From a long distance away from your target, you only turn enough to get within a certain constant range that makes you feel like you are sufficiently heading towards your target, and this gets more and more refined as you get closer to your target. This effect is based upon our vision and perception.
Furthermore.. variations in the slope of the surface you are traveling across also naturally (subconsciously) affect your path. Humans tend to follow the easier path in a downward slope as much as they can take advantage of it, similar to how race car tracks are tilted at the curves to allow sharper turns.
Now of-course, if you are considering a path that is obstructed, there is also some math that goes into how you naturally avoid running into a tree, without even thinking about it. I believe allot of this is based upon your natural vision horizon, how much you hold your head up and look ahead, and what you believe to be way points in your path.
This is a field that I believe more effort and study should be devoted to understanding. We are in a age where technology and industry are dramatically shaping our lives. Most every path you take is laid down before you, paved sidewalks, straight hallways, roads, etc. For people new to cities, this.. natural effect takes a toll on how comfortable they are, and even more so the longer they remain, they need a way “out”. This natural path being constrained is why i believe people prefer a wide open country to a city. Based on whatever more hard research provides, the level of comfort of humans can be improved by placing objects that feel like way points, or obstructions, or changes in elevation, to help bring together the paths humans feel natural, to the ones they need to take. This also has military advantages as well. If an enemy is moving from one point to another, sure you can take their velocity into consideration and bomb along that trajectory, but if you had a precise way to know the exact curve they would take, you could improve accuracy , reducing the area of effect needed, and thus the cost of weapons used. In guerrilla warfare this would be especially handy, where strategically placing obstructions would naturally allow you to precisely choose the arcs troops take.
More precise math behind natural effects would also greatly improve cinema, making fly overs feel more natural and less dizzy or uncomfortable, or any camera path for that matter. Not to mention the improvements and the feel of reality when programming artificial intelligence.

So yeah… that was my brain this morning.. takes a hell of allot longer to squeeze it out onto a keyboard than I hoped it would.

Par v 61

I updated my old par plugin pack for people who want to use 2.0, but still want to be able to double click tp.


I also submitted it to the 3rd party viewer registry a day ago, I had to change my real life contact information once I realized that my address was going to be public to everyone.  (Now its a p.o. box)

Musical Keys

Now.. I know that there are various programs that let you use your keyboard as a sort of piano, but normally its only if you have the window focused, or press the right keys.

Sakura wanted the entire keyboard (every key) to be a piano. Left = low, right = high.

After some research.. i made it o.o

Windows only, but enjoy

Open Source at Google Code
Direct Download Link
Browse Source

Follow Camera

So, while walking around in SL, you can use your mouse wheel to change the follow distance of the camera easily.

However, there was no way to change the follow height (well, there is a debug setting you can set, but you have to relog for it to apply).

So Sakura (commonly in a short avatar) asked me to let control+mousewheel be able to adjust the 3rd person camera height.

Although all of this could be done with a lsl script, being able to change that smoothly on the fly is pretty handy.

Will be in the next emerald release.