Friday, March 22, 2013

Time Keeps On

Wow, over a month since my last post.  It almost doesn't seem possible.

In that time I spent almost all my time working on a tool I didn't even know I needed.  It continued to grow and expand as a project, and took up almost all of my coding time.  Beating the RAGE Scorchers DLC and playing some Organ Trail took up the rest.  I spent zero time on OOP, and only did a little more work on the framework of The Leaf Game.

I also experienced something odd, that I never expected I would at my level of programming.  When I was pretty much done (nothing is ever truely done, I am learning) with ATASV, I actually felt a small but noticeable pang of regret that it was over.  I only worked on it for a few weeks!

I can not even begin to imagine what it is like to work on a title for years and then suddenly be done with it.  That seems a little frightening.

Right now I am torn between several states of emotion/mind.  On the one hand, The Leaf Game is definitely good practice for me, and I need to make it happen.  On the other hand, I have come to realize that the particular type of gameplay isn't something I am passionate about.  I feel like I have a certain level of competence to achieve before I can chase my passions with any real chance of living up to them, though.

It just felt really good to be so focused on a project, and to make steady progress at it.  Ticking off features as they are completed is very satisfying!

Right now I am thinking I will complete The Leaf Game.  I need the knowledge, I will find ways to make it more engaging to myself, and then I will move on to a project that has me a bit more excited.

Monday, February 18, 2013

Layers of Priorities

One of the challenges that I have encountered while trying to "get serious" about learning programming is prioritizing tasks.

Currently, I am planning on implementing frame independent motion and re-sizable windows for Obnoxious Pong.  This particular decision isn't so difficult, as these two features largely won't effect each others implementation.  I just need to pick one, get it done, and then do the other one.

It gets tougher when I consider other features that I may or may not want to add to Pong.  For instance, the ability to adjust the winning conditions for each player independently, on the title screen, would allow players to set their own handicap much like certain fighting games.

I am torn, however, between wanting to 'finish' Pong before moving on to the next project and very much wanting to dive into the nitty gritty of The Leaf Game.  Currently I have already set up a multiple source file framework and implemented the basic functions that I am using to load files and draw to the screen, so TLG is ready to go on the fun, actual creation stuff. 

I also have to consider how hard I am pushing myself, since I am still in the early stages of learning.  Frame independent motion and re-sizable windows are things that will push my understanding further (even though I will be largely following Lazy Foo's tutorial for these two features).  I'm not sure that adding a winning condition adjust feature will push me nearly as much, as say, designing and implementing the logic for The Leaf Game.

Then, on top of this, I also have my personal and day to day life priorities, some of which I already discussed previously.  Lastly, I have to be careful that I am not spending too much time thinking about prioritizing instead of actually doing tasks!

Thursday, February 7, 2013

Balancing Act

I am writing this entry with about 20 minutes before I have to leave for work.  Coming up are two 10 hour days, with the remainder of my 40 per week divided up over Saturday through Monday.  It's not a terrible schedule, in fact I am even lucky enough that it is one of my choosing, but it just doesn't ever seem like I have enough time.

When I very first conceived of writing this blog, I thought I should put something here every day!  I immediately realized the fallacy of such an ambitious schedule, so I scaled it back to three times per week.  Then once per week.  This post, the second, is coming in a solid 2+ weeks after the first.

For me, this makes the dedication of certain people like Jeph from Questionable Content, who updates 5 times a week, even more striking.  Of course, the fact that Jeph has insomnia may have something to do with his level of productivity, though I don't envy that condition.  I very much like sleep!

I have to try and perform a balancing act, while at the same time maximizing productivity on all fronts.  I have to work full time, develop a new skill set, and somewhere in there still have enough rest and relaxation that the pattern is sustainable.

I'm not expecting to be writing my magnum opus this summer.  That would be cool!  However much I may want that though, it is extremely unlikely.  Developing the skills, and then actually developing a solid piece of software is going to take quite a lot of time.

I don't particularly hate my job, but I certainly don't like it either.  The heart of the issue is I feel what I do for 40 hours a week is incredibly unimportant.  Frankly, that is a soul crushing feeling.

(10 hours later)

 Yup, soul crushing.  Lots of mental constructs and emotional compensation mechanisms are needed to tolerate it.  I am assuming this is true for most people, even if they haven't labeled these things as such.

During the day, when I am on auto-pilot (I have worked this job for many years now, it takes almost no conscious thought), I spend a good deal of time day dreaming.  When I come home though, it can be incredibly difficult to focus and especially to be creative and logical.  This is very frustrating when I have spent all day dreaming about coding and creating, and then come home and feel too worn out to put in the effort.

But I must!  It is the situation that I am in.  I must develop my future now, while maintaining my present as well.

One thing I have noticed in life is that you often hear the following phrase, quoted ad nauseum:

"It's never too late to start."

But I feel that is missing half of the message, which is this:

", it's also never too early."

The point is, right now is the time to get shit done.  No bemoaning yesterday, no viewing tomorrow hopefully, get something done right here and right now.  Then do it again, and again, and etc.

That's the best answer I have come to regarding balancing all these priorities.  It's not perfect, it fails sometimes, but that's what I have to work with.


Monday, January 21, 2013

What is a programmer?

Definition of a Programmer:

pro·gram·mer [proh-gram-er] noun
1. a person who writes computer programs; a person who programs a device, especially a computer.

I was thinking on this topic as I was creating my google blog, and trying to come up with a title.  Rambling I think will become obvious as I continue to post here, but Programmer was something I was less sure of.

At first I felt it was a bit conceited to call myself a programmer.  What excellent software had I produced?  The answer is currently none.  I am still a noob, and have a very long way to go.  I am learning, at what I feel is a quick pace, but I am still far from producing the good stuff, polished pieces of software that behave well and deliver a desired experience.

I considered what dabbling I have done in creative writing, and some of the personal epiphanies that resulted from those lines of thought.

One of those is the consideration that there are essentially three stages of fiction creation.  There is dreaming, writing, and publishing.  Almost every one on earth dreams.  What wonders of entertainment would exist if the writing stage could be skipped, if the fantastical day dreams could be directly communicated effortlessly at will to our fellow human?

Then there is writing, and that is the hardest part.  Well, at least in the age of digital distribution and the internet.  Publishing is essentially as easy as setting up a webpage and providing a download link, assuming you don't require a large audience or monetary compensation.  Regressing from the digress however,  is that the act of creation can be surprisingly difficult.

It's not a single iteration either!  Oh no, particularly regarding writing and programming, it takes many passes to produce a work that is pleasing to a consumer.  Amongst those with master skills, this is still an inevitable truth (or so I am told).  It is just not possible to get it right the first time, and that can be incredibly frustrating.

The point I am trying to get to however, is that the ratio of dreamers to writers is quite high.  I suppose thats why stories are valued so much, as the impetus to actually get the writing done is present in only a fraction of the people who have dreamed up interesting stories to tell.

But then there is also publishing, and I think it would be fair to say that someone who publishes written works should be considered an author in addition to being a writer and a dreamer.  An author is then, essentially, someone who finishes what they start, someone who goes through all the stages of polishing and refining the product of their imagination into something others can enjoy.

What I derived from all this, was that a programmer is not necessarily someone who creates finished products.  In this, they are kin to the definition of writer that I implied above.  They have moved beyond the imagining to the doing.

In this sense, I feel comfortable calling myself a programmer.  I am doing what I am capable of, even if for now my skills are not great.

I wonder if there is a kin to the definition of author I used above?  I am thinking that there is not, because for the most part the creation of interactive software is the result of many different people, all playing a role.  I suppose the closest word that I can think of is studio.  A studio tends to produce final, polished (to varying degrees) works intended for release and enjoyment by the audience.

That kind of leaves the lone programmer in a strange situation though.  There are several examples of excellent games created mostly by a single individual.  I guess one-man-studio covers that?

The other takeaway that I received from all this is that the two most important attributes for moving from being a programmer/writer to an author/studio, is patience and determination.

Sure, lots of other attributes are useful, but without those two I'm not convinced it could be done at all.

So while I am a programmer, learning and growing with a deliberate conscious effort, my aspiration is ultimately to be a studio (at least the one-man version).  This is a goal I try to keep in my mind's eye at all times.