Skip to content

Recent Articles

Cancelling GameFly

My Dealer

I’ve had an “on again off again” relationship with Gamefly ever since I first started using them back in college where money was scarce and time more plentiful.  I had been playing video games since I was a child and often visited rental shops to get some semblance of variety on a schoolchild income.  It was a rare and joyous occasion when I was able to get the same rental copy of Final Fantasy II (IV now that I know better) and could continue where I left off.  So the idea of a rental store that delivered video games to my mailbox like Netflix (back when you could get three discs for $10/mo) was very appealing.  I was instantly a fan and signed up for the two games a month plan and split the cost with a roommate.

However, after college I got my first job and departed to Florida.  At the time, Gamefly had only one warehouse all the way on the west coast.  This led to an average of turnaround time of a week and a half.  So I was paying nearly $8 just to get a new game.  This was compounded by the fact that Netflix turnaround time was only a few days.  So generally I was able to send back a watched DVD (these are pre-BluRay days) and get a new one before Gamefly even got my game.  So with a heavy heart, I cancelled my subscription and got my game fix by getting games off Amazon and with my EA employee discount.

Back for a Fix

After moving to Chicago and Gamefly having opened a warehouse in Pittsburgh, I decided to try it again.  By this time I had a Wii and more importantly, a 360 with its achievement system.  While I wouldn’t classify myself as an achievement whore, I did take some satisfaction in having a higher score than my friends.  Having a Gamefly account again enabled me to get a wide selection of games easily and fairly cheaply too.  Plus I have always considered myself a bit of a video game connoisseur, always wanting to check out stuff that was different and novel that interested me, so renting is a convenient way to do that as well.

Overall, I would say that I was happy.  But as time wore on and free time became more scarce with the addition of two children to my household,  I noticed my game playing habits were starting to change.  Sure, there was the obvious fact that I had less time to play games, leading me to cut out many that I was hoping to play as I noticed that the age of games that I was playing was steadily getting older.  The more subtle one was that I tended to play my rental games primarily, and only really play the games I had actually purchased while I was waiting for the mail delivery to get me the next game.  A big part of this is due to the fact that Gamefly charges monthly.  So I am paying for the game if I am playing it or not.  Being the frugal gamer I am, this causes me to primarily play the rental games and to do it as quickly as possible, leaving games I liked enough to actually purchase primarily sit around gathering dust.

Another change that has occurred in video games is the emergence of downloadable games producing great game experiences.  With XBLA and PSN putting out increasingly better and more original games, I would like to play some more of these.  Since these aren’t exactly available to rent, they tend to fall in the same category as purchased games, meaning that I generally don’t play them.  As I am hearing about some true gems coming out from smaller developers, though, I would like to support their efforts and this new area of gaming.  But I realize that with a subscription always in the back of my mind, that isn’t likely going to happen.

Rehabilitation

Most recently, I had an issue where a game took over two weeks on its turnaround time.  I figured that it was lost in the mail and reported the shipping issue and Gamefly sent me another game (this time a more desired one as well, availability has been another sticking point).  Not too surprisingly, the original game finally arrived after a few days.  Since I was supposed to send it back as soon as I received it, I attempted to play through it as quickly as possibleMy reasoning being that it took so long for the game to arrive I had already paid for the rental time so it was okay if I had two games for a little bit.  However, upon tearing through and then returning it, I came to the realization that I wasn’t really enjoying games like I wanted to.  I would like to just be able to take things at my own pace, and with Gamefly routinely deducting from my bank account each month, I wouldn’t be able to set my own pace and be comfortable with it.

So I decided that I will cancel my account at the end of this billing period.  I decided to purchase the game that I was renting since it was fun (and I had a $5 off coupon) and remove all the games from my queue except two shorter ones (which I am still waiting on to ship to me).  I figure I can get games used through Glyde, which I have primarily used to sell off my old collection, or Amazon generally has decent prices if I want to get something new.  When I am done with a game, I can always sell it again.  I figure this will end up costing me about the same in money that I had with Gamefly overall with the added benefit of taking things at my own pace.  Plus it might even help soften the blow of the ever increasing prices at Netflix...

Game Reviews: Fable 3

I Need to Stop Playing Fable

Peter Moleneaux is great at drumming up hype about how world-changing his games are going to be.  The first such one that was trumpeted up was Fable.  I am generally pretty thorough before spending time with a game, and considering that I didn’t play Fable until I had an Xbox360 (when Fable was for the original XBox which I never owned), I had a pretty good idea about what parts of his boasts were true and which fell short.  Nevertheless, I got myself a used copy and played through it.

It was charming and fun in a simplistic way, but nothing that changed the world like he said (and I didn’t expect it to honestly).  But I don’t have any regrets about playing it and it was different enough to be interesting and, in a way, compelling.

Fable II came out for the Xbox360 a little bit after I was done playing the original game and it was promised that this one would add in the features that were ultimately cut from the first one.  Again, I listened to reviews and they said the game once again came up short from what was promised.  However, there was one design decision that completely broke the economy.  When you purchased property, you would gain income from it in real time.  This happened whether you played the game or not.  So if you went a week without playing, you would start with a bunch of money (assuming you owned sufficient property, of course).

This led to a game that almost encouraged you to not play, and in not playing, made itself easier.  So I would go a few weeks between playthroughs and then forget what I was doing but had plenty of money to throw around.  This diminished the experience and made the fairly easy game even easier.  There were also a few disconnects, such as when your character is imprisoned for ten years, and then you return and nothing really has changed and people act as if you were just gone for an hour.  It led to a situation where the game resembles the uncanny valley, in that it tries to mimic reality but there are enough small differences that the whole thing comes across as a bit unsettling.

 

Fable III

So, after two less than stellar game experiences, why would I want to go and play a third game?  This one promised to change things up a bit.  Where you had the obvious overthrow the corrupt king and place yourself on the throne plot, this game went one step further and had you actually rule and make decisions that would affect the entire kingdom.  It was a concept intriguing enough to put it on my rental queue and give it a go.

Unfortunately, like the first game, this one too had enough broken design concepts as to take away from the overall enjoyment of the game.  The main issue came up after you become king/queen and get to make decisions about how to run the kingdom.  The downside is that all these decisions boil down to money in your treasury.  The idea behind the second half of the game is that you need money to finance an army to defeat the darkness that will swarm the land in a year.  It comes down to one gold piece for each citizen.  If you end up choosing the evil decisions when given the option, then you will get more money but will be seen as the tyrant your brother was but will end up saving more people.  It is an interesting concept and I was hoping to actually have to struggle a little bit when making the decisions, but since it only ends up dealing with money there is a very obvious way around it.

As with the previous games, you can also gain money by buying and renting out property.  This goes into your personal treasury which you can then donate to the kingdom’s.  This also has no effect on how people view you morally.  So the easy workaround is to be good and give the people everything they want while taxing the lifeblood out of them on their rent and shop prices.  By doing this I was able to save everyone and we all lived happily ever after without having to really give the kingdom’s decisions any thought.

Of course, the game tries to reason away why you can’t just tell your kingdom about the incoming darkness and explain to them (and show them examples and testimony of people who have already been ravaged by this danger) that it will be a difficult year of hardship and sacrifice, but after it they will be able to keep their lives, by telling you that the citizens wouldn’t understand.  I think that is ironic since the game also tries to treat you in the same way.

If you want to see a more entertaining reviews, check out Zero Punctuation for Fable 2 and Fable 3.

Refactoring an Asset Pipeline (Part 2)

Part 2

In the last post, we covered where the state of things currently were with the asset pipeline.  Parts of it were slow and inefficient and were a bottleneck in our asset generation process.  This was hurting the iteration time of the artists and leading to build times that were unacceptable.  So we drew up a plan to give it a major overhaul.  Below is the overview for what we were hoping to accomplish.

First Steps

We had used distributed building systems to speed up our code building process for quite some time, so we wanted to take advantage of distributing our asset building as well.  We had this going in a small fashion already, where each platform could be built independently.  That only helped a little, however, as there were many parts of the process that were identical between platforms.  So we would want to make it so that the identical parts only happened once and the results could then be shared by the platforms.  With such a massive restructuring, we needed to be able to properly test to make sure that we were getting the same results as when we started so that we could verify everything was still working.  But before we could start breaking our build up we had to make it so that our assets came out the same every time.

You see, in order to satisfy the requirements of the various platforms, it expected data to be organized a certain way.  Sometimes this led to areas containing data that was there only as padding.  If this data was not properly initialized, then it could be random (containing whatever was in memory at the time it was written).  So different runs with the same data could produce different results.  With this being the case, it would be impossible to know if it was our changes that were causing things to be different or if it was just the random data.  So the first step was the ensure binary repeatability, or simply that the output was always the same given the same inputs.  Once that was done then we could have a baseline with which to compare our results and make sure everything was coming out how we expected it.

Similar to how we split out the materials from the model/scene information before, it was also planned to break up the model and scene information and handle them separately.  That way when the designers moved the layout of the scene, they wouldn’t have to go through a full model build.

Distributed for the Win!

Since the goal was to distribute the build as much as possible we had to move any inter-asset dependencies to as late in the process as we could.  That would allow the majority of the building to occur in parallel since an asset wouldn’t have to wait on something else to finish before it could proceed.  In our system, shaders and textures weren’t dependent on anything, but materials depended on both of them.  In turn meshes depended on the materials, models upon meshes, and the scene layout depended on the models.  However, the only time those dependencies came into play were some optimization steps that we did.  One example was that we stripped the model of information from its vertices that wasn’t used by any of the assigned materials.  Say if a model didn’t make use of normal mapping at all, then there was no need for it to have tangent or binormal/bitangent information.

So we decided that we would split the asset building into two separate and distinct steps.  We were influenced by the design of modern compilers and our current code building, where the compiling step happened distributed and the linking step was local.  Using this as a guide, we designed compilers and linkers for our assets that had the same behavior.  So the compiling step would have no external dependencies other than the source data, meaning it could be done completely in parallel.  Then once all of those were done, it would then be linked, where optimization and other platform specific processing could occur.  The final step would be to pack the various assets together in a load-efficient manner.

Don’t Repeat Yourself

As mentioned earlier, a lot of the processing was the same for the various platforms we were developing for.  Since the compiling step could have no dependencies and would output all the info needed for the asset linking (which would then do the platform specific stuff), that meant that the compiling only had to be done once, regardless of the destination platform.  Similar to code compilers outputting an object file, our asset compilers would output intermediate, platform agnostic data that could be used to build for any platform.

One thought that I had while designing this system was given that the compilers were outputting to an intermediate file, it didn’t really matter what the source was as long as the result was the same.  Because of this, we could tailor each compiler to the input file type instead of having a one-for-one relationship with the asset type!  That would allow us to support multiple input types easily to boot.  This was fortuitous since we were considering replacing COLLADA with FBX, which had a little more support in our 3rd party tools.  Once this pipeline refactoring was complete, then we could build a compiler that would read in FBX files and handle both at once.  Then we could make the transition much smoother and less likely to interrupt the art and design schedules.

So our final design had a compiler for each input type and a linker for each platform and asset type with intermediate files going between them.  We could also add additional compilers for other intermediate steps in our pipeline.  One example is that we used Valve’s distance texture algorithm for certain effects, where the input was a texture and the output was a different texture (which contained the distance values).

Packing Files

One of the decisions I made with the original design was to store our assets in two files, one was the header and one was the data.  This was due to the fact that I was told that one of the problems that people had seen before that we wanted to avoid was reading in data to one area just to copy it to its final destination.  So I thought that splitting the files up so that we could avoid that situation was a good idea, and it worked in most cases.  The main point where it failed, however, was when the header and data files became out of sync with each other.  This was a rare case, but happened enough that it was something else that I wanted to fix.  So the final results instead would be output to a single file that contained a basic table of contents followed by the header and data information.

Alongside this file would be dependency information which could be used in a final packing step so that we could group multiple asset types together.  This was very useful as a load time optimization so we could read in a scene quickly in one read and then deserialize it in memory.  However, we would still have loose file support for the times when you just wanted to change one asset and wanted to avoid the final packing step.  This support could easily be removed in shipping builds as well.

Laying This to Rest

So this was a basic overview of the plans that I and several others drew up to optimize our asset pipelines.  I was really looking forward to implementing this and watching our artists and designers be more productive and have an easier time getting the game to look and behave how they wanted.  I think our first designs and implementations were good for what we could do at the time, but I believe this final product would have been truly stellar.  Since I won’t get the chance to actually implement it, writing about what we hoped to accomplish helps fulfill that itch that I’ve had since the realization that none of this would actually come about.  Hopefully this might even spark a few ideas in other people on ways that they can help optimize their workflow and reduce the iteration time.  Thanks for taking the time to read this!

Refactoring an Asset Pipeline (Part 1)

Lost Project

I want to talk about a project that I planned a lot for but never got the chance to implement: Refactoring an Asset Pipeline.  Granted, this isn’t particularly exciting stuff for most people, but it was going to drastically cut down on our asset creation times which would do nothing but good for our company and the iteration speed of designers and artists.  However, it ended up not happening since the company changed its focus and we ended up parting ways.  So, I have decided that I wanted to post instead about what were planning on doing, since I think it was a good design and in this way I sort of get to do the work by proxy.  And maybe someone will even learn a thing or two about it and the world will be a better place somehow.  Even if it is just a little.

The Old Way

On the project we wrote our own engine and the tools to support it.  We had very short development cycles so stuff had to be done quickly.  I was responsible for designing and writing a few of the asset pipelines, starting with the texture and shader pipelines, while the model/scene pipeline was handled by the senior programmer.  This was my first time ever writing pipelines of this sort from scratch, but I think I did a decent job overall trying to make things flexible and quick.  Granted, I would do it a bit differently knowing what I know now, but that is part of the reason for writing about this in the first place!

We were developing for multiple platforms, and it was decided to create a separate pipeline for each platform so that you only had to build the assets for the platform you are working on.  This was accomplished by having a central executable which was responsible for loading and executing the corresponding DLL for that asset and platform.  All the common code for the various asset pipelines was shared and the platform specific code put in separate files to keep the code maintenance to a minimum.  We standardized on a few asset input types so that we didn’t have to write code to support everything under the sun.  For example with textures we were only going to accept DDS (Direct Draw Surface) files since they were very flexible, easy to read, and there were plugins for Photoshop that would read and export them.  Granted, this didn’t stop the artists from later wanting support for more image types, but then it was a simple matter of just running some tools to convert the JPEG, PNG, Targa, or whatever else to DDS before running it through the pipeline and into the game.  For model data we chose to go with Collada and shaders were simply handled by FX (plain text) files split into separate vertex and pixel shaders.

Asset Dependencies

For the first project it was decided that scene information (instances and transformations of them) would be combined with the model information.  Additionally, materials (shader selection and parameter settings) would also be unique to each mesh (which belong to a single model).  This means that we effectively only had three major assets from the rendering pipeline point of view: models, textures, and shaders.  While this decision reduced our flexibility somewhat, it allowed us to get the game started faster and artists and designers to see their stuff in game in a shorter period of time.  Eventually this would lead to some pretty heavy bottlenecks considering that changing a texture or shader parameter would require the entire scene be rebuilt.  However, some real-time communication with the game was set up so that changes could be seen immediately for tweaking purposes to try to improve the workflow.

After the first game shipped, it was petitioned by the artists to get the materials split out from the meshes so that they could be shared.  In addition, our (now much bigger) tools team created a material editor since the one that I made that ran in XSI had some shortcomings (mainly due to weird artifacts of using XSI’s realtime shader API) plus it never really achieved the artists desire of having XSI as a decent previewer for their assets (which it never would be able to since it wasn’t running with our lighting, shadowing, or other visual effect systems).  So more effort was also put into beefing up our in-game viewer instead which could be controlled by the material editor tool

Next Time

This is an overview of what we started with when we set about completely redesigning how assets would be built.  It could take several hours if a new build had to be made of our game, which led to many very late nights for our build engineers and those getting the build out.  Not to mention the wasted time of the artists and designers due to the inefficiencies present in the system anyway.  Next post will focus on how we were planning on tackling the various issues listed here.

Also will try to get a few visual aids to help show how things used to work, so check back for those and if you have any suggestions on (free) tools that I can use besides Paint.NET, I’d love to hear it.

Why I Enjoy Running

Why Would You Do That Voluntarily?

My wife has said that the only reason why anyone would run willingly is if they were running away from a tiger or a shark.  Logical fallacies of that statement aside (she is great at simultaneously entertaining and keeping me on my toes), it is a fair statement which views running from the outside and questions the reasoning behind the action.  I hope to explain a little bit of the reasoning behind why I enjoy running so much.  As I reflect on what I have been doing for over half my life, I definitely see several points that I really enjoy outside of the obvious benefits of getting some good cardiovascular exercise.

All on Your Own

Running is a great way to get away from it all.  It is also a solo sport, so you only have you to worry about (and can’t rely on anyone else to carry you).  I freely admit that I am a bit of a loner and a introvert, so there are definite draws to this.  While having other people can motivate you to keep on going and to stick to a schedule, I also find it empowering when I alone am able to push myself and feel accomplished because of it.  When it is just you and the road (and occasional sidewalk), it is comforting to me to know that I am only responsible for myself and that any shortcomings is on me alone.  That means that if I want to do better, then I don’t have to rely on anyone else in order to do it.  It is all on me.

Clearing the Mind

It is a great way to clear your mind by slowing things down and exhausting yourself to the point where your ideas can’t just run wild.  I find that I often tire myself out over time with my thoughts and anxieties.  Running is a way for me to focus my attention purely on the here and now, so that I don’t worry so much about what I need to do or anything outside of my feet on the pavement.

Getting outside and away from it all is also refreshing and a great way to mix things up.  I find that it breaks up my routine enough that it is almost always new and different (course this might also point to me not running enough to really improve).  Being stationary on a treadmill drives me crazy.  There is something about being outside and moving under my own power that excites and motivates me.  There are many times when I just want to keep running for hours on end, though my commitments and attachment to reality prevent me from doing so.

Keep on Moving

I hope to keep running for a long time, eventually doing a marathon. I have run half-marathons the past two years and am signed up for it again this year (and it is only a little over three months away, eep!).  Doing so helps keep me motivated as I want to do it in less than two hours (missed that mark by 36 seconds my first time, sadly quite a bit more my second and I am not expecting to do it this go around).  It is hard to keep up a schedule with helping out around the house and with the kids.  Hopefully once things settle into more of a routine (and the weather isn’t so blasted cold all the time) in the future I will have a better shot at achieving this.  And shoot for that marathon (hoping to beat 4:30 there) some time in the next few years.

Personally, I find the best time to run is in the morning as it is coldest and still has good visibility.  That way I can also wake up for the day and easily take a shower afterward and get ready.  Occasionally when my son wakes up before I go I will take him along in our jogging stroller.  Someday I might even have him tag along running with me and possibly even have him beating his old dad after awhile.  Maybe getting ahead of myself there, but I do look forward to keep on running for a long time.

Too Many Games

On Games

One thing that I am sure that I share in common with many people is that I am finding it harder and harder to play all the video games that I want. I realize this is part of growing up and having a family, along with wanting to grow myself technically and professionally, plus do other things like this website and blog, but it is still something that is on my mind a lot.  I think another part of it is that the industry has grown to such a degree that the amount of games that are of high quality are so numerous that it is near impossible to even try to keep up with the latest ones.  This is including the fact that I don’t have a smart phone (I recently upgraded to a phone with a keyboard, which shows you how on top of the times I am).  I also don’t play MMOs and try to avoid online games as well.  I stick primarily to consoles with the occasional PC and I have a DSi that I will get a game for from time to time.  It’s rare that I play the downloadable games for the consoles too.  I only recently got a PS3 as well, but even before that I found it difficult to stay on top of things.

 

Why Games?

I think part of my issue is that I find games very interesting and always want to see what new things that developers are trying.  I find them very interesting since the possibilities of what you can do with video games almost seems endless, though it can be easy to find limitations when you compare them to other forms of traditional media.  But the new things that they allow for just makes my imagination go crazy with possibilities.  Though whenever I sit down to think about a game I would like to make, 90% of time it is just a remake of an existing one that I enjoyed when I was a kid.  But I suppose that is why I am a programmer and not a designer 🙂

 

Quantity vs Quality

So, basically, it has come to a point where I have to be very choosy about my games.  While it is a bit sad, I need to reduce the amount of games that I play since I know I just won’t have the time to play all that I want and still keep up learning new things and other hobbies.  On the other hand, there are so many great games out there that it means I really won’t have a bad experience if I pay attention to the reviews.  And I hope that I will be able to devote more time to the good ones and actually enjoy myself a bit more while doing it.  Since isn’t the point of playing games supposed to be fun?  Now I hope to be able to slow down my pace a little more instead of just rushing to the end, since I am one of those who has a hard time stopping midway with a game (though some like Dragon Age: Origins I might play continuously off and on for over a year).  And maybe this will mean that I might actually get to games that have been released recently, instead of my usual 6-8 month delay.

The Future

So one of the first things that I have done it really cleaned out my GameFly queue.  Granted, it still probably needs another pass (or two) to reduce it to a more realistic level, already I feel a bit better.  When the backlog is over 20 games (even if at least 5 of those haven’t been released yet) it really starts to get depressing looking at it, which is the opposite of what it should be.  The same goes for Netflix, but I’m trying to stay on topic here.  I’ve pretty much wiped out all future RPGs due to the time commitment involved (playing Fallout: New Vegas and Valkyria Chronicles will likely be more than sufficient for awhile).  This means more action games and other shorter genres primarily for the time being, but I think it will be a good change of pace.  It probably will be awhile before I really get some appreciation out of doing this, but I think it is a step in the right direction.

The Urge to Create

In the Beginning

I have always been a creator of sorts. Earliest memories of doing so would have to be when I was a little kid playing with Legos. Since I was an only child, I actually had an entire room devoted to just my toys, primarily of which were those little plastic building blocks.  I would spend hours creating worlds and using my imagination with them.  I later moved on to K’Nex (partially due to kittens using the box of Legos as a litter box), but the intent was the same. Other things I did were drawing, designing video game ideas, poetry, and teaching myself to program.  There has always been a desire to create something, and I guess this blog and website are part of that.

Virtual Worlds

One of the things that I have always enjoyed about video games has always been the fact that I enjoy creating.  While playing video games, you are creating your own experience and stories.  While making them you create worlds and places for people to enjoy.  As a graphics engineer I created tools and processes that would help bring artists’ visions to realization.  So while my work was rarely seen directly, I was instrumental in bringing those games to life.  And while I would love to be able to actually be the one who is creating the stuff that people will see (though I did have several programmatic effects like shadows and post effects that were mine, in a sense), I enjoy the challenge that is inherent in creating elegant tools.  In fact, in my own projects, I think I will likely be approaching them with the idea of putting lots of time and effort into creating easy-to-use tools and playing around with those to create the game as opposed to just diving in and trying to pump out a game as quickly as possible.  In fact, I am starting to believe that it is through great tools that great games are really made.  But it will likely be quite some time before I can really put that theory to test.

This is probably a slightly verbose and roundabout way of saying that I enjoy creating things.  In fact, I feel that I have an urge to create that is an essential part of my being.  When I go a long time without creating stuff (even if it is my own head or just the experiences I get from playing in video games) I start to get into a funk and head towards depression.  After being laid off from Robomodo, I put most of my time into finding a new job and didn’t put a lot of effort into working on things outside of that (other than studying up on techniques for interviews and the like).  Even after landing a new position, I don’t think that it is quite fulfilling my need as much as being a games programmer does.  Possibly because it is more of a research and exploration role than the pure development that I am used to.  Which is one of the reasons why I started to give blogging another shot.

Creating in View

Because I am noticing that more and more web stuff is really starting to take off and it seems like most of the new technologies are web-centric, I decided to revive my old website (well, buy the domain again anyway).  This gives me a chance to explore and create things using new technologies.  I am also pushing myself to be more open and get over fears of criticism so that I don’t hold back so often.  I’m not expecting anything ground-breaking, just a place where I can experiment a little and do some side projects.  I don’t get a whole lot of  time to work on anything and I tend to bounce around a lot between projects, so things will likely be updated in a semi-random manner.  But it keeps me interested and helps me learn and refine my skills.

So I have come to realize that I am happiest when I am able to spend time creating things and this has always been a part of me.  And I want to share the things that I have created with people and hopefully get feedback that will help me improve.  Because maybe at some point I will figure out something that I really want to put the effort into or I’ll stumble upon an idea that I want to develop more.  I have an urge to create that I feel I don’t want to neglect, and it would be my dream to make something that will make the world a slightly better place.

Starting this Blog

Why start this blog when I cannot really seem to be able to keep any of the various other blogs I have tried in the past updated?  I’m not sure really.  Perhaps it is because I am finally the owner instead of being on another site.  Maybe I enjoy the thought of this being my place where I can post my thoughts and ideas.

Why put it up here instead of just keeping a journal to myself?  Because I want to connect with people.  I want to be able to pass along some of my ideas and thoughts and experiences to others.  I also think being on the web gives it a little bit more of a permanence to it, even though it is just electrons and magnetic states in certain configurations.  Plus I think it would be useful to be able to look back on it over time, and see where I have come from and how far along it has been.

I also want to use it to improve my writing and hopefully my speaking and presentation skills.  I am somewhat shy and can be very quiet.  In conversations with lots of people I tend to keep to myself.  I can talk and discuss things at length if need be, but I prefer to watch and listen to the other people.  I’ll speak up if I have something relevant to say, of course.  So I think that this space can also be where I can speak my part.

This is just my tiny piece of the web.  I can post stuff of my own creation and maybe some people will find it useful and informative (or at least entertaining).  I view it as a playground for my imagination when I get the time to let it run around.  Just a peek into my mind and what it is doing and maybe even how it operates.  This is my little place to place my thoughts for those curious enough to read them.