Archive for the ‘Programming’ Category

Researching Patterns and Practices

Tuesday, May 2nd, 2006

Since Friday, I’ve been researching a bit here and there about Object-Relational Mapping (ORM) and Model-View-Controller (MVC) at work and at home. These are technologies that help with manageable programming.

ORM is used to help store objects within a relational database. A database stores data differently then an object. This technique is used to map data between objects and databases. A popular and open-source tool to assist in this mapping for programming in .Net is nHibernate. nHibernate is a port of Hibernate written in JAVA. I have figured out the basics of saving and retrieving objects to a relational database. Though I’m starting to have difficulty with polymorphism in inheritance. I’ll keep up the R&D until I get it rite. So far, the technologies involved are showing a lot of promise. On top of that, I have found many websites offering supporting documentation and techniques that apply to both platforms on JAVA and .Net.

Model-View-Controller (MVC) can work with or without ORM. ORM would only be used with the Model portion of MVC. MVC breaks your application (desktop or web applications) into three parts. Model represents your business elements, or data schemata. “View” represents the final web page, also known as your “presentation layer”. Last we have “Controller” wich is the business logic between your presentation and your data. Business logic can manipulate data, authorize that you do in fact have permission to access that data, and just about everything else. It can be thought of as the API undernieth the presentation itself. Some people claim that it is the glue between the data and the presentation.

I’ve worked with MVC often, but not to its full effect. The rules with MVC pretty much go something like this. If any one part of MVC changes (The model, view, or controller), then the other two parts should not break. That is the part where I am not successful. I usually develop 3 projects initially in my applications. The web or desktop application, a project for business logic, and another project for the data tier.

I believe most of my problems arrise from the stability of the model. As long as the model doesn’t change, the control and view should be able to change more easily without any impact. I’ve originally kept a virtual model in place and manually mapped it to an older model that was practically inherited from another project. This worked great in the first phase as there were very simple requirements and tight deadline.

In this second phase, requirements change every day and are still being gathered. After much research into ORM and MVC, I am wanting to just get a definition of the domain that I can rearchitect the model after. Currently, I am having to rearchitect the older model many times due to its current incompatabilities with the requirements. This still raises a problem though for future architecture. How can a database be architected properly to be able to grow not in data scalability, but in schemata scalability? I understand normalization as such, but the current model already has normalization and needs to be reworked often when changes to requirements occur.

Shipping Confirmation in SL

Tuesday, March 28th, 2006

I’ve been making a few objects here and there in SecondLife. Most of them have scripts in them. Over time, I have updated my items with bug fixes and feature additions. I could just drop items on everyones profile, but as more people start buying, this becomes a hassel.

I purchased an auto-upgrade machine that my customers could approach with a license key. If the license key was validated, and a more recent version of the product was available, they would be given the newest version. This is nice, but it requires my customers to guess when a new update is available.

I started looking around and found an item called SL Courier. It allows me to compose a list of peoples names and identification keys along with a list of products to send them. Once I release a new version, I just put the product in the couriers inventory and tell it to deliver to the list of past customers.

This solution seems to be the best for keeping my customers up to date with the latest products. The problem is that I don’t have everyones identification keys. Through my in-world object sales and selling through the web on sites such as SL Exchange, SL Boutique, and SecondServer, I am only able to get a list of names of the people who purchased my products.

At first, I created a customer registration product that the customers could manually rez and say “register”. After about 40 seconds, it would confirm there registration after sending me there name and identification key. It was a little more convienient, but I was finding that a lot of people were not going through the process and that it just took too long.

I decided to make a different attempt. I changed the actual package that my products are delivered in. A customer normally has to rez the package and open it to remove there products. I’ve started working on a little project where I can make that box talk to an in-world server and send me the name of the customer, there identification key, and the name of the package that they are opening.

I went to the internet and found a website that could generate bar codes online. There were a ton to choose from. I liked the look of MaxiCode by UPS, but I found a better resolution of it at another website. I also looked at different types of shipping lables such as those for the most often used UPS, and USPS. I put everything together to make my own version of a shipping label.

PackageMaxiCode

When the box is rezzed in the world for the first time, the label gathers the necessary information and encodes a message. The label turns yellow when it sends the registration information out. I spent a good deal of time working within the limitations of LSL script (MD5, XOR, Base64) to make it semi-secure. I also setup the scripts to warn me if I didn’t set the permissions correctly for the next owner. If I give the package to someone, I want to prevent them from looking at the password and the servers id in the scripts. This way, I have a visual cue (the shipping label turns red) and some messages telling me what is wrong and what I have to do.

There is a lot of work into the communications with the in-world server. The label makes a few attempts to contact the server. Each time that it fails to receive a response, it turns cyan and waits a little longer before trying again. This is just in case the sim that the server is on goes down, or its email que is full. If the server can’t be contacted after about an hour, I stop all registration attempts and notify the customer that they should notify the seller of the problem. I also make the label turn purple as a visual cue as to a response problem.

If everything goes well, registration usually takes only a few seconds and the label turns white once it has completed. All the scripts in the label are deleted to prevent duplicate registrations.

The server itself is a beast. I am usually limited to 16kb of memory per script. When I worked on my sim land owner scanner in the past, I learned how to expand that memory and communicate with other scripts within the same prim. I’ve used that experience here and made a few scripts whose main purpose was to store and retrieve data - just like a disk drive. In fact, I called each script “Disk 1″, “Disk 2″, etc.

When a message comes in and is decoded and validated, it is sent to a disk that has the most free space available. Then every 24 hours, a log of all data is sent to my email account. Email messages are limited to about 4 kb that are sent out from SecondLife. It isn’t much, so as I compose the email, I constantly check how large the message is, and how much data I’m about to add to it. If it is too big, then I send out an email and start composing a new one.

Email was a big issue in the past mainly due to the script delay penalty enforced on it. When I used this mehtod in the past, my script would suffer a 20 second delay. A friend of mine in-world had pointed me in the rite direction to make another script to send the email for me. I send a message to that script and then let my original script continue on with its own workload. Instead of a confirmation after a minimum of 40 seconds, I get them in about 5 only because I set my timers to check emails every 5 seconds on both the server and the package.

I am almost on the edge of actually puting my system into production. I have a few tweaks to do before it is ready. Drive management needs the most attention rite now.

It is crazy with how much work you can put into a game. I hope to start profiting later on from it. The materials (prims, scripts, notecards) are unlimited in supply. Your mind of skills and creativity are all that limit you. I can build just about anything from scratch and people actually buy them. So far, I’ve made about $14 this month. I pay less then that in monthly account fees in order to be able to own land (otherwise accounts are free).

Since I own more then 512 square meters of land, I pay an additional monthly fee. My accounts land fees has me paying at $75 per month, and my wifes is as $40/month. Yes, you read rite. So hopefully that $14 starts gradually becomming a bigger number. If we both sold off all our land, except for the last 512 sq. m. each, we would be making a profit every month with just my product line.

Why is land important? Land gives you the ability to have prims. The more land you own, the more prims you can have. Many people who don’t have land, and those that do, go to sandboxes to make there own stuff without a strict prim limit. I consider these places to be laggy. I’ve gotten into problems with one place where I couldn’t get out of it. Half the time you meet up with people that are there to ruin everyones day, and you also run into the occasional experiments that have gone wrong. On top of that, I’m just as much of a hermit in SL (Second Life) as I am in RL (Real Life).

You can also rent land or buildings from other players. You can rez your objects or build new ones there, but there is usually a high priced monthly fee to help the owner pay for there own accounts land costs.

The other reason to own land is to have your own freedom of expression. A perminant place of residence. Someday I’ll write about what I’m doing there. Most of what I do is make new products to sell or assist in selling to other players. For now … I leave you with just the shipping confirmation project. I only need 2 prims for the project and could do that on just 16 sq. m. of land and still have room for one more prim.

Second Life

Xor Security

Friday, March 17th, 2006

Xor has got to be one of the weakest methods of encrypting data. Without the password, it isn’t too hard to find it. The Xor method is more of an encoding algorithm. You have your text, and you have your password. As you loop through each letter in your text, each character in the password is matched up and an XOR operation is performed on the two. When the password runs out of characters, you start at the beginning again.

Xor is weak for a simple reason. If you know a small portion of the unencoded message, you can perform an Xor operation on just the position those characters in the encoded message to get the password. So if you know that your message ends with a period, you can Xor the last character of the encoded message against a period character. People can take it a step further and look for patterns that could translate to words. Others would use statistics such as the space character would appear most, then the letter “E”, and so on.

Well, all this boils down to SecondLife. I’m starting to script my objects to talk to each other for a game that I’m creating within that world. I’m still a bit confused with what approach I should take. I just don’t want people building there own objects to listen in on my objects communications. I’m tempted to look into RSA and RC4 encryption, but the strength is limited to only 16 bits in the game due to the nature of how integers are setup in LSL script. I’ve done something similar in VB Script that had similar limitations.

3D Color Picker

Saturday, January 28th, 2006

Particle Lab Color PickerI got a lot of work done today on my particle lab in SecondLife. I’m working on a portion of it that allows me to change the color of each particle. To make things more visual, I created some objects to allow the end-user to adjust the color with HSB. (Hue, Saturation, Brightness). I personally feel that this is an easier way for non-technical people to choose a color, because they don’t have to remember how light is mixed to get colors by adjusting RGB (Red, Green, Blue) values.

I have a ring representing 360 degrees of hue that will rotate when you press arrows in the direction to move. The Saturation and Brightness are represented as a gradient in the center. When the hue is changed, the gradient changes to reflect that hue. Saturation is changed by pressing the left or right arrows to the side of the gradient. Brightness is changed by pressing the arrows above and below the gradient. I have a small ring to let the end-user see what the end color will look like.

Second Life only understands RGB values. This would have taken a long time for me to do the conversion between HSB and RGB values, but I had done something similar in the the past in JavaScript. I Simply changed the code from JavaScript to LSL (Linden Scripting Language).
The colors appear to be accurate so far. I need to add some more functionality as it is still a work in progress. There are transparency effects that I need to put in. I also need to get it synchronized with the particle emitter that my Particle Lab communicates with.

log4net

Wednesday, January 25th, 2006

There are many useful tools on the internet, free for anyone to use. I got very familiar with one called log4net. This tool allows application programmers on the .Net framework to log every little detail in just about any data medium that you can think of.

In the past, I’ve always used the Console to write out information, the Debugger to write out debugging information, and the event log, email, and databases to store error messages. These varied from different applications.

With log4net, you don’t specify the data storage location within the applications compiled code, but rather a configuration file. In the code, you only specify if the message and/or exception to store is debugging information, an information message, a warning message, an error, or a fatal error.

The configuration file is where all the power comes in. You can choose what level of messages should be sent to each storage medium. For console applications, I specify information messages. Warnings, Errors and Fatal messages are logged to the console as well since they are at higher levels then information. I also configured it to send warnings or higher to an administrator through email. There are also methods to save to different types of databases (in my case, I tell it to log everything while in development). The list goes on for all the different places you can save to.

Yesterday I was clueless, today I’m ready to debug the world.

Ready to Launch

Wednesday, January 11th, 2006

I got up bright an early today. I got up a few times, but I eventually left at 7:30. It took about 3 hours to get to the city, get lost, get lost more, hunt for a parking lot, and arrive at the Washington Convention Center. I totally missed the keynote speaker.

I got a bag of goodies and started going around and meeting with different vendors of software. I had a lot of interesting conversations and was able to broaden my knowledge of what was out there exactly. I also got toys.

Ready to launch toys

I met up with a co-worker and after the morning session, we took a cab over to her place for lunch and to figure out how to configure her laptop. After getting back to the convention center, we split up and attended different tracks. I was going for databases and the like, and she was going into development.

I was simply amazed that T-SQL now has try/catch blocks. Can you believe it? I used to write a lot of code to handle transactions and checking to see if a number of SQL statements had failed. There was much more in the stability of the databases and the ability to read tables when a transaction had not yet been committed. They went into the CLR integration too. It seems that you only use that if you are doing some heavy logic that SQL wasn’t really meant for, such as using arrays.

I looked at the last two events on the schedule and wasn’t all that amused about the database track. I switched over to the development and joined my coworker. We sat through a web application development. I had already known about most of the stuff coming down the road. I found that other things you could now do, were already being used in a similar fashion in past projects I worked on. It’s nice to see that I was headed toward the rite direction.

I stopped by the place where I registered and dropped off my survey. In return they punched a badge that had my managers name on it (since I took his place), and handed me a shirt and a copy of Visual Studio 2005, SQL Server 2005, and the MSDN Library.

Ready to launch 2005 t-shirt front Ready to launch 2005 t-shirt back

On the way home, traffic was slow. I looked over to see if I could change lanes and I ended up rear-ending the car in front of me. No one was hurt and the woman saw that there was no damage. I wrote down my information anyway and handed it to her with my Insurance carrier, license plate, name and phone number.

Continuing home, my engine kept feeling like it was going to stall any minute. The engine light was solid on most of the way, but would sometimes blink. It felt like it had most problems when I was stopped at lights, or accelerating - especially up hills. I’ll have to get that looked into soon.

I got all my toys out and offered a few to my wife. She liked the flashing HP necklace. I tried on one of the shirts. Another shirt that I got came wrapped up as a brick. When I unfolded it, it was a mess of wrinkles.

Lewie with ready to launch t-shirt symantec plus - pure system power brick t-shirt symantec plus - wrinkly unwrapped t-shirt

VS.Net 2005 Launch

Thursday, January 5th, 2006

A few months back, I noticed that the team lead had signed up for a conference (Event Code: 1032281417). It was a conference concerning the launch of SQL Server 2005, Visual Studio 2005 & BizTalk Server 2006. I had tried to go ahead and sign up for it myself since it was free. The last software launch that I had been to was about eight years ago. I found the website and saw that every city that was being visited was sold out.

Today the team lead came to me and asked me if I was interested in taking my managers place next week since he was going to be out of town. Can you believe it? Just my luck! Yes, yes, yes, oh-yes mam. I do believe that I would really like to go thank you.

I looked over the ticket again and again reading all the little details. There weren’t many of course. It was just a printed web page with a bar code on it and the title of the conference. It was hard to contain my excitement. It was an all day event scheduled for next Wednesday at the Washington Convention Center.

I went to my managers office to thank him for the opportunity to go. He was glad that I could make use of it. He was also wishing that he could go, because he wanted to walk away with complimentary versions of Visual Studio 2005 and SQL Server 2005 given out to all participants. That just raised my excitement further.

Ever since my MSDN subscription expired, I couldn’t get into the website to get my software registration keys for VS.Net 2003. This has deterred me from reinstalling my system to clean up all the junk that has accumulated on it over the years.

The agenda itself looks very interesting.

Join Microsoft CEO Steve Ballmer* and key Microsoft Executives for the launch of Microsoft® Visual Studio® 2005, SQL Server™ 2005, and BizTalk® Server 2006! This all-day event offers an opportunity to learn how the Microsoft application platform offerings enable organizations to gain better business insight and deliver faster results by easily connecting people, processes, and information.

Launch provides technical education for developers and database administrators in an environment designed for personal interaction with industry experts. In addition, this event showcases the technical evidence, customer success stories, and partner offerings that demonstrate the business value of these tools.

Highlights of this event include:

  • In-depth technical education sessions, hands-on labs, and direct contact with development and database experts
  • Attend structured training or hang out in the community area to get your specific questions answered
  • Meet the Microsoft Visual Studio and SQL Server development teams for informal Q&A
  • Network with like-minded professional developers and database administrators
  • Hear about innovative products, solutions, and services from key Microsoft partners
  • Walk away with complimentary versions of Visual Studio 2005 and SQL Server 2005
  • Celebrate after the event at a party featuring special musical guests*
Time Event
7:30–9:00 A.M. REGISTRATION
Continental Breakfast available
COMMUNITY
  • Partner Pavilion
  • Ask the Experts Lounges: Theater and 1:1 Area
  • Microsoft Learning: Technical Self-Assessments
  • Microsoft Dynamics (formerly Microsoft Business Solutions)
  • Microsoft Mobile and Embedded (TBD)
  • Microsoft Windows Server
  • Coding4Fun (TBD)
  • Peer Networking
  • User Groups
9:00–10:30 A.M. KEYNOTE SESSION
Microsoft CEO Steve Ballmer* and Key Microsoft Executives
DATA PLATFORM TRACK DEVELOPER TRACK COMMUNITY
  • Partner Pavilion
  • Ask the Experts Lounges: Theater and 1:1 Area
  • Microsoft Learning: Technical Self-Assessments
  • Microsoft Dynamics (formerly Microsoft Business Solutions)
  • Microsoft Mobile and Embedded (TBD)
  • Microsoft Windows Server
  • Coding4Fun (TBD)
  • Peer Networking
  • User Groups
10:45–12:00 P.M. Building Highly Available Systems with SQL Server 2005 Visual Studio Team System: Managing the Software Lifecycle with Visual Studio 2005 Team System
12:00–1:30 P.M. BOX LUNCH
1:30–2:45 P.M. Architecting Scalable, Flexible and Secure Database Systems with SQL Server 2005 Design and Development Tools for Building Mission-Critical Applications
3:00–4:15 P.M. Delivering Business Insight with SQL Server 2005 Web Development
4:30–5:45 P.M. Managing and Monitoring with SQL Server 2005 Smart Client Application Development & Deployment

*Nov. 7, San Francisco kick-off event only.

DATA PLATFORM TRACK
The Data Platform Track provides an in-depth look at the many new features of SQL Server 2005 that make it the most available, scalable, and secure database on which to build your mission-critical enterprise systems. In addition you will see how this latest release of SQL Server 2005 integrates with Visual Studio 2005, Visual Studio Team System, and BizTalk 2006 to further increase your ability to meet the most demanding needs of your business. Throughout the day you will learn how to design, deploy, and manage these systems with SQL Server 2005 while also learning how to extract extra value by using the Business Intelligence features in SQL Server 2005 and the integration between SQL Server 2005, Visual Studio 2005, and BizTalk 2006.
Back to top

Building Highly Available Systems with SQL Server 2005
With SQL Server 2005 you have several new technologies you can use to reduce both planned and unplanned downtime, provide solutions for disaster recovery, and provide greater system availability to your end users. This session will show you how you can use:

  • Peer-to-Peer Replication to improve availability and scalability;
  • Partitioned file groups to enable partial database availability during recovery;
  • Online index operations to reduce planned downtime; and
  • Snapshot Isolation Levels to facilitate improved concurrent access.

We will also give you a preview of how you can use the upcoming Database Mirroring technology to provide fast automatic database failover simply and cost-effectively.
Back to top

Architecting Scalable, Flexible and Secure Database Systems with SQL Server 2005
SQL Server 2005 is set to change the way database systems are built. With SQL Server 2005 you can architect solutions that are more secure, more scalable and more flexible. In this session, you will see, how you can use:

  • SQL Server 2005 security enhancements to be more secure;
  • SQL Service Broker, and Native Web Services to achieve greater scale; and
  • Query notifications and cache coherency to improve both scale and performance.

You will also see how you can exploit new choices in data representation (relational or XML) and language support (T-SQL, CLR, XQuery) to build, and deploy more robust and flexible database systems.
Back to top

Delivering Business Insight with SQL Server 2005
Business Intelligence is the process of extracting new information from your existing data. This information is used by decision makers at all levels of your organization to make better informed choices. SQL Server 2005 offers powerful functionality that will enable you to better leverage the value of the data stored in your organization. This session will provide you with a glimpse of what you can achieve. Attend to see how you can:

  • Quickly and easily integrate data from just about any data source;
  • Deliver a rich and manageable analysis platform for OLAP and data mining; and
  • Offer powerful structured and ad hoc reporting capabilities to your end users.

Watch as SQL Server 2005 “Integrates, Analyzes and Reports.”
Back to top

Managing and Monitoring with SQL Server 2005
You work hard keeping today’s complex data systems running reliably. It takes proactive design, and consistent maintenance and monitoring of the system to maintain optimal performance. With SQL Server 2005 and Visual Studio Team System 2005 you have a powerful new set of tools to help you detect and resolve problems faster and sooner. This session will provide you with practical examples of how you can:

  • Use code analysis to identify potential SQL injection errors;
  • Validate an application’s production readiness using customizable business rules;
  • Establish a proactive monitoring and response system using SQL Agent;
  • Proactively monitor resource usage and quickly troubleshoot performance using Profiler and Dynamic Management Views; and
  • Manage a large population of database servers using Microsoft Operations Manager.

You can apply these tools today to better manage and optimize the performance of your data systems.
Back to top

DEVELOPER TRACK
The Developer Track provides a comprehensive look at the new Visual Studio 2005 product line—including those features found in Visual Studio Team System. Throughout the day new features are introduced and explored using real-world scenarios. The majority of the content will be presented in the product with limited use of PowerPoint. While these sessions are linked by a common theme they are designed to be stand-alone, allowing you to freely “mix and match” community area activities.
Back to top

Visual Studio Team System: Managing the Software Lifecycle with Visual Studio 2005 Team System
Visual Studio 2005 Team System is an extensible life-cycle tools platform that significantly expands the Visual Studio product line and helps software teams collaborate to deliver modern service-oriented solutions. This session spotlights key features of Visual Studio 2005 Team System and demonstrates how integrating this product into the development process reduces the complexity of delivering high-quality, fully tested applications.

Introduced in this session is the Whidbey Rocks demo application that will be used throughout the developer track. The software developers at Whidbey Rocks use Visual Studio 2005 Team System to orchestrate the construction of their concert ticketing and promotion system, which includes Web applications, smart client applications, SQL Server 2005 databases, and BizTalk Server 2006 integration. The presentation incorporates five roles: project management, infrastructure architect, application architect, developer, and tester. While most of the actual development will be performed in the subsequent sessions, this kick-off session will allow us to explain the goals of the software, set up the team project, select a methodology, identify the team, design the architecture, and send out tasks to each of the team members to construct individual components of the application.
Back to top

Design and Development Tools for Building Mission-Critical Applications
SQL Server 2005, BizTalk Server 2006, and the .NET Framework 2.0 offer a compelling platform for building mission-critical service-oriented applications. This session introduces the features of Visual Studio 2005 that enable developers and development teams to build high-performance, secure, and reliable solutions using innovative designers, advanced code profiling and analysis tools, and an enterprise-ready platform. Among the highlights: how to use Visual Studio 2005 to incorporate SQL Server 2005, BizTalk Server 2006, and other operations infrastructure early in the design process.
Back to top

Web Development
Visual Studio 2005 and ASP.NET 2.0 combine to form a rich platform for building, testing, and deploying state-of-the-art Web applications. ASP.NET 2.0 is replete with new features, from data source controls and master pages to membership and role management services—features that reduce the amount of code required to create a typical Web site by up to 70%. Visual Studio 2005 features an all-new Web development interface that speeds the development process while offering a rich design-time experience and seamless integration with Visual Studio 2005 Team System.

The primary goal of this presentation is to introduce developers to ASP.NET 2.0’s most compelling new features and to the Visual Studio 2005 features that support them. A secondary goal is to demonstrate some of the ways in which Visual Studio 2005 Team System can benefit Web developers, and to drive home the message that ASP.NET 2.0, Visual Studio 2005, and Visual Studio 2005 Team System offer a compelling upgrade to Visual Studio 2003 and ASP.NET 1.1. An important take-away is that these products are second to none when it comes to building scalable, high-performance, Web applications.
Back to top

Smart Client Application Development & Deployment
Microsoft Visual Studio 2005 greatly simplifies the development and deployment of smart client applications targeting both the Windows and Microsoft Office platforms. The smart client application is characterized by simple deployment, access to the application in network connected and disconnected states, and a rich end-user experience at minimal developer cost. This session demonstrates how to create smart client applications using Visual Studio 2005, ClickOnce, and Windows Forms 2.0. ClickOnce is Microsoft’s new deployment technology which combines the power of Windows-based development with the flexibility of Web-based deployment.

The central message of this presentation is that end-users and developers alike prefer software that provides a rich user experience with easy to access features and updates—software that enriches and simplifies the user’s experience in the most natural way for the task at hand. Supporting themes are rapid application development as well as a natural maintenance cycle, including maintenance and updating of tool-generated code such as typed-datasets. In addition to the development lifecycle, another theme of this session is the deployment lifecycle with easy updates for subsequent versions of your applications to the clients’ machines.
Back to top

Second Life Projects

Monday, January 2nd, 2006

My vacation has just about come to an end. With that, things are going to progress a bit slower with my projects in Second Life. My primary project is working on the Particle Lab. Zeno had originally made a giant table with which people could interact with different “stations”. I began taking it a step further, practically starting from scratch. My biggest concern was that the old lab wasn’t too user friendly. The other problem was that the particle emitter couldn’t be attached to the table, because Zeno and I wanted to have it moving to demonstrate some of the effects.

The new particle lab has three parts to it. The first is a rotating particle emitter. It does what you tell it to do. The real brains behind the project is in the main controller and its substations. The main controller will change the current control set on top of it to the next set. Each set interacts with the particle emitter, sending it messages to toggle and adjust different features of particles. The main station also has the ability to output LSL script to create your own particle emitter. I also set up an object to be created so that someone may save there work and take it with them.

Some other projects that I worked on in between that was the Easel with Canvas, and the Comment Box. Lynour had made the Easel and canvas for her art gallery. I made a suggestion that I could set it up so that she could show multiple pieces of art on the same canvas. I got the script setup to also display text over top of each picture to let people know the name of the art, and who made it. As an added bonus, I added a feature so that you get a note card about the specific piece of art if one is available.

In the end, I tried to make a small box that you could drop note cards into as comments for the artist. I had problems when it was attached to the canvas itself. I ended up creating an entire new object to let people drop note cards. You can use the arrows on each side to iterate through each note cards name, and the creator of the note card.

There are still a ton of other little projects that I had done such as fish, an aquarium, particles of grass, dandelions and fire flies. I also made a special particle box for my wife. When she runs and flies, it leaves a trail of sparkles behind her. It also makes a trail pointing at someone if she gives a command to look for someone near by.

Wagging the Fish’s Tale

Thursday, December 29th, 2005

I’ve gotten pretty good at scripting in Second Life. I’ve gotten through the basics for lists, primitives, moving objects and the such. Now I got an odd problem. I’m trying to wag a fish tail. I thought I had figured out how to do it. It looked like it was wagging just fine. The problem came when the fish rotated along its Z axis. As soon as that happened, the X axis changed and the tail rotated 90 degrees and wagged up and down.

Sooner or later, this fish will need to be able to rotate on all three axis (X, Y, Z) and still have its tail wag normally. I will just have to go back to the drawing board and work this one out. This Euler and radian stuff really has me confused with determining how to interact with the local and global axis. All I want to do is wag 20 degrees left and right. Is that so hard to do? Even a gold fish can do it.

A Community Directory

Saturday, December 24th, 2005

Yes, it is another day in Second Life. I have been working on my little project with detecting land owners. My detection has become stable enough that I’ve started to work on a neat little utility for it. This “hub” is a directory of all land owners. here is a list of features I would like it to have:

  • Navigate forward/backward through list of land owners
  • Display percent of land owned
  • Display owner ratings (behavior, appearance, building)
  • Status if owner is online.
  • Teleport to owners parcel.
  • Send IM to owner
  • Allow land owners to submit image to represent there avatar and land.
  • See when owner was first detected.
  • See how long owner has had an account with SL.

A few of these probably will not make it into the game. I’ve resorted to using pie charts for the ratings and land ownership in my mock-up. Hover-text is helpful, but I do not want to use it everywhere. I may end up having a button to just say the additional information if the end-user wants to hear it.

If it becomes popular, perhaps many Sims will have there own community directories.

Earlier in the day I was having problems making a concave cylinder. I’ve seen other objects in the world where the sides bend in the middle as a curve. Lynuor Richelieu came to the rescue and taught me how to make them. It turns out that you actually start out with a Torus. This is pretty much a shape that looks like a donut. You hollow it out and then cut the outside of it off. This way, you are left with just the center. These concave cylinders make for nice stands.