i’m doing a great job

January 30, 2008

I am expecting to hear back, today or tomorrow, about the availability of a server that has been ordered to facilitate a running process. 

The objective here is to mitigate another key advantage that other landbot owners have over this project: fast, consistent connection to Second Life and it’s resources.

As if THAT wasn’t cool enough, I am negotiating on a SECOND server which will facilitate a backup and alternate system for the purpose of running the landbot project.

For those of you who merely want to annoy me and say I am ‘only in it for the money’, you should know that the cost of these servers will exceed, on a monthly basis, the amount of money which was initially compensated to begin this project. You should also know that if you want to annoy me, you suck and should die horribly.

oh, wait, before i could click publish, i found out that the server is in place.


comment of the year nomination

January 30, 2008

“would it be faster and cheaper to have about 20 ante up $20 or so and
buy merlin’s bot and reverse engineer it and refine it then keep
proceeding this way?”

No. Merlin’s bot is copyrighted material protected under the Digital Millenium Copyright Act.

It would be both
potentially illegal
and morally wrong
to pursue this
in the fashion
you suggest.

Empowering Merlin to sue this group for copyright violation does not lend itself to a successful project.

As a software developer I also find it offensive that some people believe that this is an acceptable course of action.

And it’s not necessary. The software to perform this task was completed a year ago, it was simply not updated because for a variety of reasons, a retest and accomplishing the items on the task list will put it into an operational state, and the main reason it wasn’t made operational earlier is primarily the fact that I didn’t want to run a landbot. I STILL DON’T WANT TO RUN A LANDBOT, BUT I’M DOING IT ANYWAY FOR SPITE NOW.

The way to get this project completed faster and cheaper is to get the tasks aligned, determine what can be delegated, who can help, find the proper in-world resources, test program routines, make a few decisions on how to manage the ongoing process and deal with finances and information that needs to be distributed.

Another way to expedite this process is for people to stop wasting my time with gossip and bullshit. Of course, asking for that to happen is like expecting puppies to start doing calculus overnight. If you want to blog about me and how much I suck, go right ahead, if I find out about it, fuck you, I’m doing a great job.


upcoming agenda for this process

January 30, 2008

After a long day of RL, SL crashes and an unnerving time of not being able to log in, I neglected to publish this article before I fell asleep. Apologies if anyone felt mislead. Here’s the post promised in the group.

A few days ago I met with Land Shepherd to discuss priorities for the project. We identified the key tasks necessary to get the project off the ground. I expect to have another meeting with him soon to discuss progress and identify further targets.

The following is a list of tasks beyond mere programming which we identified, that are likely to be required, in order to ensure success in this endeavor. Some items are optional and merely presented here for the sake of completeness. The items are not in a specific order and some rearranging will occur later.

  1. set up alt with premium + tier fees
  2. accumulate landmarks for ocean sims
  3. test buy code
  4. purchase 512m land for testing
  5. divide parcel to 16m
  6. test / refine search code
  7. notify sellers when land was purchased (hi, i am a bot and bought your land, IM so and so if your sale was a mistake)
  8. create group for purchases
  9. coordinate with server company
  10. test deed to group functions
  11. test buy for group functions
  12. decision making on community interests
  13. optimized libsl + testing
  14. new base app to test new libsl
  15. monitor the system for program crashes
  16. recover from failed teleports
  17. verify code to check price and size limits
  18. reconnect on disconnect
  19. start program at server startup
  20. bot attachment – always flying
  21. larger logo for land ads
  22. documentation and notes for public consumption
  23. promotional offerings
  24. public support campaign
  25. visible bot identification (t-shirt or outfit for alts used)
  26. bot announcer for group posts land search results which are extremely low.

This is obviously a fairly substantial list and now we have targets for those who have offered generously to volunteer time and effort to the project. How we will manage and reward those who make an effort in this process is also something to be determined.


oh… neat

January 21, 2008

researching this process just took a turn for the better, as we now know two of the major tricks used to make landbots perform better:

http://foo.secondlifeherald.com/slh/2008/01/phantom-bots-sk.html#more

I knew some modification to libsecondlife was going to be required to make this possible, this just takes the mystery out of it.

I hate Google Code, btw. I tried setting up a sourceforge svn, we’ll see if that repo is happy.

Keep your fork.


i am… notacrook! (you won’t have dick nixon to kick around anymore!)

January 5, 2008

Once again the naysayers who either despise this process, contribute nothing, or foolishly think I care about their opinion of me, decided it was time for the ALMIGHTY UPRISING OF ACCUSATIONS in the Public Landbot Project group.

Myself, ever the theatrical agent, I was more than happy to oblige with the CAPSLOCK KEY OF DAMNATION AND PROLIFIC USE OF THE FWORD, because we all know that I can’t write a landbot, and I’m on my way to Mexico with the vast fortune I pried from Land Shepherds cold dead hands after I shot him cruelly in the back and did unspeakable things to his… body…. mmm….

NEVER MIND CHRISTMAS, WE DEMAND LANDBOT NOW! DO IT OR EVERYBODY, EVERYWHERE, WILL SAY CLINT EASTWOOD IS THE BIGGEST YELLER BELLY IN THE WEST!

Sorry, folks. No matter how much you pay me, I still don’t have to put up with your crap. I’m not running for president, I’m doing a job. Don’t care if you like how it gets done. It’s gonna get done. Think otherwise and I’ll be able to mock you. AND MOCK YOU I SHALL.

Oh, btw, I sent Land Shepherd an email with old code for the old landbot I wrote. That code is dated, I am considering publishing it in a reference branch of the SVN, as soon as I can stop LISTENING TO GOSSIPERS and instead TOUCH THE SKY AND BASK IN THE GLORY. Gee… sorry I don’t have 24 hours a day to listen to you complain, I’ve got work to do.

New one will be ready WHENEVER IT PLEASES ME TO DO IT, or tomorrow.


this project is cancelled… not

December 31, 2007

We received a comment from someone wondering if this project had been bought out by the current landbot runners because it’s a threat to their business…

No, the project is not cancelled and has not been bought out.

I have received some odd IMs offering to buy the results, but do not plan to  — unless we are talking about millions of USD

When an offer for millions of USD comes in, I’m sure Land Shepherd will forgive me for saying yes… as soon as the mortgage is paid for on the Land Shepherd Museum Of Forgiveness.

No one as yet has offered millions of dollars. Please, if you have it lying around, in a sock drawer somewhere, do send millions of dollars. Call your billionaire friends, tell them it’s a good buy. With millions of dollars and a landbot project, you can ensure that people can hate me the way they hate you.

Humans!

/me laughs.

On a more serious note, I realize this has taken a while and appreciate everyone’s patience. If you’ve been in Second Life, or Real Life, you can probably understand how hectic the holiday season can be.

Expect to see more as soon as I can squeeze minutes.

Just an update: 

  •  A logo contribution for the program was made by a dear friend, I will be reviewing it.
  • I just finished two development projects which were taking time away from this.
  • I have been able to do a little editing on the search program and plan to test it this evening, and hopefully to publish.
  •  The best is yet to come.

later

December 20, 2007

I wanted to provide the group with some code that demonstrates how to perform a land search.

This code in and of itself is not necessarily useful, but it could likely be added to any libsecondlife based bot to add land search capabilities.

after I get some rest and possibly some egg nog, I’ll be putting this code into an application that we can try, and I’ll also begin working with the google code repository to publish source.

right now, it’s 5:40 AM and I really should sleep, but there are other things I have to accomplish before that.


performing a land search

December 20, 2007

This code is still tied to a form, I will be removing the form checks, or maybe not. This code performs an actual land search with the previous specifications.

        void PerformSearch()        {

            // todo: at least some checkboxes must be there

// select a preset

if (chkRotatePreset.Checked)

            {

                CurrentPreset++;

                if (CurrentPreset > cboPreset.Items.Count)

                {

                    CurrentPreset = 0;

                }

cboPreset.SelectedIndex = CurrentPreset;

}

ResetLandSearch();

            lstSearch.Items.Clear();

            lstBuy.Items.Clear();

int.TryParse(cboBuyArea.Text, out LS.qualifyarea);

            int.TryParse(cboBuyPrice.Text, out LS.qualifyprice);

            double.TryParse(cboBuyRate.Text, out LS.qualifyrate);

int.TryParse(cboArea.Text, out LS.maxarea);

            int.TryParse(cboPrice.Text, out LS.maxprice);

if (chkArea.Checked) { LS.limitarea = true; }

            if (chkPrice.Checked) { LS.limitprice = true; }

//

switch (cboType.SelectedIndex)

            {

                case 0: // All Types

                    LS.mainland = true;

                    LS.auction = true;

                    LS.estate = true;

                    LS.newbie = true;

                    break;

case 1:  // Auction

                    LS.mainland = false;

                    LS.auction = true;

                    LS.estate = false;

                    LS.newbie = false;

                    break;

case 2:  // For Sale - Mainland

                    LS.mainland = true;

                    LS.auction = false;

                    LS.estate = false;

                    LS.newbie = false;

                    break;

case 3: // For Sale - Estate

                    LS.mainland = false;

                    LS.auction = false;

                    LS.estate = true;

                    LS.newbie = false;

                    break;

case 4: // First Land

                    LS.mainland = false;

                    LS.auction = false;

                    LS.estate = false;

                    LS.newbie = true;

break;

default: // All Types

                    LS.mainland = true;

                    LS.auction = true;

                    LS.estate = true;

                    LS.newbie = true;

                    break;

            }

//

switch (cboRating.SelectedIndex)

            {

                case 0: // PG & Mature

                    LS.matureonly = false;

                    LS.pgonly = false;

                    break;

case 1: // PG only

                    LS.matureonly = false;

                    LS.pgonly = true;

                    break;

case 2: // Mature only

                    LS.matureonly = true;

                    LS.pgonly = false;

                    break;

default: // PG & Mature

                    LS.matureonly = false;

                    LS.pgonly = false;

                    break;

            }

if (LS.estate) { LS.dstf = LS.dstf | DirectoryManager.SearchTypeFlags.Estate; }

            if (LS.mainland) { LS.dstf = LS.dstf | DirectoryManager.SearchTypeFlags.Mainland; }

            if (LS.newbie) { LS.dstf = LS.dstf | DirectoryManager.SearchTypeFlags.Newbie; }

            if (LS.auction) { LS.dstf = LS.dstf | DirectoryManager.SearchTypeFlags.Auction; }

// todo: cleanly handle dirfindflags or break out into multiple search voids

// sort type is not working correctly

// dwell sort does not return results

// sorting

            LS.sorttype = cboSort.SelectedIndex;

switch (LS.sorttype)

            {

                case 0: LS.dff = LS.dff | DirectoryManager.DirFindFlags.AreaSort; break;

                case 1: LS.dff = LS.dff | DirectoryManager.DirFindFlags.DwellSort; break;

                case 2: LS.dff = LS.dff | DirectoryManager.DirFindFlags.NameSort; break;

                case 3: LS.dff = LS.dff | DirectoryManager.DirFindFlags.PerMeterSort; break;

                case 4: LS.dff = LS.dff | DirectoryManager.DirFindFlags.PricesSort; break;

                default: break;

            }

LS.sortdescending = chkSort.Checked;

if (LS.sortdescending == false) { LS.dff = LS.dff | DirectoryManager.DirFindFlags.SortAsc; }

// query specifications

if (LS.limitarea) { LS.dff = LS.dff | DirectoryManager.DirFindFlags.LimitByArea; }

            if (LS.limitprice) { LS.dff = LS.dff | DirectoryManager.DirFindFlags.LimitByPrice; }

if (LS.matureonly) { LS.dff = LS.dff | DirectoryManager.DirFindFlags.MatureSimsOnly; }

            if (LS.pgonly) { LS.dff = LS.dff | DirectoryManager.DirFindFlags.PgSimsOnly; }

//

LS.queryID = Client.Directory.StartLandSearch(LS.dff, LS.dstf, LS.maxprice, LS.maxarea, LS.queryPointer);

//  StartLandSearchEx(LS.maxarea, LS.maxprice, LS.sorttype, LS.estate, LS.newbie, LS.mainland, LS.limitarea, LS.limitprice, LS.matureonly, LS.pgonly, 0);

            //  StartLandSearchEx(32, 200, 4, true, false, true, true, true, false, false);

            //StartLandSearchEx(32, 1000, 4, true, false, true, true, true, false, false);

//

}

resetting the land search specifications

December 20, 2007
        void ResetLandSearch()
        {
            LS.dff = DirectoryManager.DirFindFlags.ForSale;
            LS.dstf = DirectoryManager.SearchTypeFlags.None;

            LS.sorttype = 3;
            LS.sortdescending = false;

            LS.queryID = LLUUID.Zero;

            LS.maxprice = 0;
            LS.maxarea = 0;

            LS.limitprice = false;
            LS.limitarea = false;

            LS.estate = false;
            LS.mainland = false;
            LS.newbie = false;
            LS.auction = false;

            LS.matureonly = false;
            LS.pgonly = false;

            LS.queryPointer = 0;
            LS.resultCount = 0;
        }

landsearchspecifications class revealed

December 20, 2007

This class encapsulates all of the variables for a land search.

        private class LandSearchSpecifications
        {
            // public int currentpage;

            public int maxprice;
            public int maxarea;

            public bool limitprice = false;
            public bool limitarea = false;

            public bool auction = false;
            public bool estate = false;
            public bool mainland = false;
            public bool newbie = false;

            public bool matureonly = false;
            public bool pgonly = false;

            public bool sortdescending = false;

            public int queryPointer = 0;
            public int resultCount = 0;

            public int sorttype = 3;

            public LLUUID queryID;

            public DirectoryManager.DirFindFlags dff = DirectoryManager.DirFindFlags.ForSale;
            public DirectoryManager.SearchTypeFlags dstf = DirectoryManager.SearchTypeFlags.None;

            // todo: specifications for matching

            public double qualifyrate;
            public int qualifyarea;
            public int qualifyprice;

        }