Showing posts with label work. Show all posts
Showing posts with label work. Show all posts

Friday, April 22, 2022

Coding in TTS (3)

 And to round things out for this time, this next bit is part of a painfully long function which (as far as I can tell at the moment) is required to be painfully long because it is the global object dropped code, so in it must go every decision related to any time any object is dropped anywhere on the board for any reason. Which is a lot of decisions as it turns out.

I don't like this piece. Not because I think I did it wrong (though it is possible there's a more efficient set of logic to accomplish the same result). I don't like it because I don't like any piece of code that is decision nested inside decision nested inside decision nested inside decision, etc, etc. Once I get a certain amount of layers my head starts to hurt and I begin to become overwhelmed with all of the things I must remember about the prior decision but not code at the moment because I must finish with this next decision and its nested counterparts first. Headaches ensue. 

Also, this is nowhere near the most deeply nested set of if/then statements I've ever written. We don't need to talk about how far this can go.

if obj.tag == 'Card' and obj.hasTag("Battalion") then

    --find battalion card type

    local cardType = Global.call("findBattalionType", {obj.guid})

    --check if the battalion card dropped is in the discard zone

    local discardIndex = {sdiscard, kdiscard}

    local lzIndex = {slaneIndex, klaneIndex}

    local footmanBlockIndex = {sfootmanIndex, kfootmanIndex}

    local breacherBlockIndex = {sbreacherIndex, kbreacherIndex}

    local berserkerBlockIndex = {sberserkerIndex, kberserkerIndex}

    local actionZoneIndex = {sactionZone, kactionZone}

    local typeCount = 0

    local typeAction = 0

    for a = 1, 2 do

      local discardObjects = getObjectFromGUID(discardIndex[a]).getObjects()

      for _, card in ipairs(discardObjects) do

        --if the battalion card is in the discard zone, check if the game is in the skirmish phase

        if card.guid == obj.guid then

          --[battalion, discard, skirmish] find the active lane

          laneZoneIndex = lzIndex[a]

          for d = 1, 5 do

            laneObjects = getObjectFromGUID(laneZoneIndex[d]).getObjects()

            for _, tile in ipairs(laneObjects) do

              if tile.hasTag("lane") then

                if tile.getStateId() == 2 then

                  --[battalion, discard, skirmish, active lane] count battalion cards in the lane and count card type in lane

                  for _, stuffs in ipairs(laneObjects) do

                    if stuffs.tag == 'Card' and stuffs.hasTag("Battalion") and stuffs.hasTag(cardType) then

                      typeCount = typeCount + 1

                    end

                  end

                  --[battalion, discard, skirmish, active lane] set counter block to new value

                  if cardType == "Footman" then

                    blockIdIndex = footmanBlockIndex[a]

                  else

                    if cardType == "Breacher" then

                      blockIdIndex = breacherBlockIndex[a]

                    else

                      if cardType == "Berserker" then

                        blockIdIndex = berserkerBlockIndex[a]

                      else

                        blockIdIndex = nil

                      end

                    end

                  end

                  if blockIdIndex != nil then

                    counterBlock = getObjectFromGUID(blockIdIndex[d])

                    counterBlock.setName(typeCount)

                  end

                  --[battalion, discard, skirmish, active lane] count action dice matching card type in action zone

                  actionZoneObjects = getObjectFromGUID(actionZoneIndex[a]).getObjects()

                  for _, actionDie in ipairs(actionZoneObjects) do

                    if actionDie.getName() == cardType then

                      typeAction = typeAction + 1

                      --secure action die in case one needs to be removed

                      anActionDie = getObjectFromGUID(actionDie.guid)

                    end

                  end

                  --[battalion, discard, skirmish, active lane] remove action dice more than card type count

                  if typeAction > typeCount then

                    anActionDie.destruct()

                  end

                end

              end

            end

          end

        end

      end

    end

  end

Coding in TTS (2)

 The routine for rebuilding the holding zone is similarly simple:

function rebuildHold(nfo)

  --the holding zone GUID is in nfo[1]

  zoneObjects = getObjectFromGUID(nfo[1]).getObjects()

  --the default starting position is in nfo[2]

  sPos = nfo[2]

  --the separation increment is in nfo[3]

  incVal = nfo[3]

  --the action zone is in nfo[4]

  actionObjects = getObjectFromGUID(nfo[4]).getObjects()

  --set up the count variable

  dieCount = 0

  --count the number of vanguard action dice currently in the action zone

  for _, die in ipairs(actionObjects) do

    if die.hasTag("action") then

      if die.getName() != "Footman" and die.getName() != "Breacher" and die.getName() != "Berserker" then

        dieCount = dieCount + 1

      end

    end

  end

  --find new starting position based on the number of dice being returned to the holding zone

  sPos = sPos + (incVal * dieCount)

  --move all objects currently in the holding zone arbitrarily

  for _, obj in ipairs(zoneObjects) do

    vPos = obj.getPosition()

    nPos = {sPos, vPos[2], vPos[3]}

    obj.setPosition(nPos)

    sPos = sPos + incVal

  end

end

This is the first routine I wrote which I passed multiple values through. I never doubted it was possible, I just didn't want to mess with it while trying to test out whether or not things were possible in TTS (so that I wasn't confused about where the errors might be coming from should there be any)

Same as before, there are two scripting zones at play (actionZone and holdingZone).

First, loop through the action zone and simply count any die which is an action die but is not a Battalion die. Since I've named the dice when they are generated, this is being done using the name. You probably can see this plainly, but just a "programming" note is the fact that writing die.getName() is completely arbitrary. If I had written for _, apples in ipairs(actionObjects) do then it would be written apples.getName(). Like I said, I am sure that's patently obvious, but sometimes when I read other people's code I'm like "is he writing die because that's a thing this program understands or just because he decided it would be called die and defined that elsewhere?"

Second, calculate how many die "positions" are going to be used by the number of Champion dice currently in the action zone (using the incVal which is holding the current increment value for die positioning). 

Third, move any dice currently in the holding zone down to make room for the dice which are about to be moved in. I use the vector vPos just becuase it is convenient to grab the current vector of whatever object already exists and simply move the X value to the new starting position without trying to remember or calculate the Y or Z values. Again, this is likely very, very standard practice. But I think very absolutely. I am most comfortable telling the script to put something at exactly these coordinates right here. So, I get really proud of myself any time I remember to program something in a relative way.

Coding in Tabletop Simulator (TTS)

 Sometimes, I feel like my code is really elegant. I have the bits I need and there isn't a ton of logic to flesh out, so something that felt complicated when I was thinking about adding it turns out to be pretty simple when I actually write the bits:


--Build loop index

  holdIndex = {sactionHold, kactionHold}

  actionIndex = {sactionZone, kactionZone}

  startingPosition = {8.5, -9.2}

  incrementValues = {1, -1}

  --loop through both sides to clear action dice

  for i = 1, 2 do

    startPlace = startingPosition[i]

    advanceVal = incrementValues[i]

    actionHold = getObjectFromGUID(holdIndex[i])

    actionObjects = getObjectFromGUID(actionIndex[i]).getObjects()

    --rebuild holding zone

    Global.call("rebuildHold", {holdIndex[i], startPlace, advanceVal, actionIndex[i]})

    for _, die in ipairs(actionObjects) do

      if die.hasTag("action") then

        if die.getName() == "Footman" or die.getName() == "Breacher" or die.getName() == "Berserker" then

          --just remove the action die from the game by destroying it.

          --Battalion cannot change lanes, so when a lane becomes inactive, the Battalion's actions become meaningless until next round

          die.destruct()

        else

          dPos = {startPlace, 1.16, 27}

          die.setPosition(dPos)

          die.setLock(true)

          startPlace = startPlace + advanceVal

        end

      end

    end

  end


This bit uses two scripting zones I placed on the table (four actually, because everything is divided into the two sides). As I've mentioned before, I tend to just focus on getting parts working more than on writing clean or simple or efficient code. In fact, in the past, I've mostly only cleaned up inefficient code when it was actually affecting performance (like calling 10 queries on a database in order to keep the data set small instead of calling 1 query and using a very large data set to resolve everything. I spent a year cleaning this type of methodology up at work)

The first, obvious thing you'll notice if you're opening up my code is that most of the foundational bits I've written are divided into two parts - one for one side of the table and the second for the other side. It still works this way, of course, but now I am (duh) using a loop and a couple indexes to divide up the unique identities for each side. 

actionHold is the part on the side of the table where the action dice are initially set up for the round. 

actionZone is the actual tile between the lane Guardians where players can interact with their action dice. 

All this routine is doing is taking all of the action dice off of the action tile and placing them back into the holding area. This is to support the concept that a Champion which still possesses an action may be moved to an active lane and still use their action. So, I figured the logic for this was to 1) establish a die at a set point in the game which either exists or doesn't exist, 2) move that die into the action zone any time the Champion is moved into an active lane, 3) preserve the die whenever a lane goes inactive without the Champion using their action, 4) remove all remaining dice at the end of the round prior to setting up the next round. That's why I figured a holding zone and an active zone would be ideal.

As far as the holding zone being visible to the players, I am not sure what direction would be best on that. I definitely considered keeping the holding zone hidden, so that the only time the players see the action dice is when they are placed on the action tile. This could streamline player recognition of what the dice are and what to use them for. On the other hand, there is benefit to having them visible to both players throughout the round. It gives an overall view of what the round will look like. 

We talked about the die removal (which is not the above function). I am still torn about just assuming that any battalion being removed from the board is going to take an action with them. This is actually based more on the times when a player might choose which of their own Battalion to remove than on when their opponent will defeat one. There are circumstances, like using a Paragon reaction or just dealing with untargeted damage, that a player will decide which battalion to remove. For these circumstances, it is best to let the player manage the removal of the dice. 

This, of course, means that there is potential confusion. If a player does not remove a die when they are supposed to do so, then they might mistakenly (or purposely) gain extra actions that they should not have just because the dice exist for the sake of clarity (clarity causing obfuscation). This is really a result of the fact that is is INCREDIBLY inconvenient to tie action dice to any specific card in the game. There is an expansion concept which would give all battalion individual names and portraits. In this version, sure, it would be easy to tie the dice to the cards. But, right now, not so much. It's definitely something that could be handled very cleanly outside of TTS.

Anyway, the basics here are:

Find where the first die should be placed  when moved to the holding zone: startingPosition

Find out how many units to separate the dice when subsequent dice are moved: incrementValues

Call a different routine which counts how many dice are going to be moved and moves everything already in the holding zone enough distance away from the starting position to make room for the dice being moved in: rebuildHold

Loop through all dice in the action zone and destroy any battalion dice while moving any Champion dice to the holding zone.

When a die is moved, advance the startingPosition value so the next die which gets moved will not get moved to the exact same position (not really a problem other than the visual confusion it causes and the fact that it sort of defeats the whole purpose of having the dice in the holding zone visible to the players in the first place.) If I were hiding the dice being held, then this whole thing would be a bit simpler.

Monday, April 6, 2020

Updateme On The State Of Rift

Alright, we are deep in the coronavirus quarantine and overloaded with time because everyone is staying at home all day long. So, is the second playtest module ready to be mailed out? Sadly, no.

I have run out of poster board. So, unfortunately, I won't even be able to work on the second module until I am able to head out to the store to purchase a few more sheets of poster board. I made my module out of black backing. So, Shon, if you'd like a different color backing for your lanes, let me know and I will see what I can do when the shelter in place order is lifted and the stores re-open. No guarantees, of course. I know for a fact that they have black poster board for a good price which is the ideal weight and thickness for the project, but I cannot say whether there is any in a different color. I can certainly check, though.

This is a bit of a bummer, to be honest, because I honestly do have plenty of time to knock this project out. Yet, I have not been able to do so. I wish I had the foresight to grab the poster board when this was all starting, but I lacked that (and the money to be honest).

Building the lanes is a bit time-intensive. I looked into some alternatives, but based on my research, the cost goes up steeply and I just can't justify it at this point. If I were manufacturing this game for sale I think the other alternatives might begin to make sense - manufacturing things in bulk through automated services instead of hand-crafting them at home. I am not at that point.

The thing with Rift is that it is a lane limited concept. The lanes are integral to the identity of the game. Manufacture would be cheaper and easier without the lanes involved, but the game just doesn't make sense in that context. So, my apologies for the further extended deadline for this project. I guess Thanksgiving of last year was extremely optimistic as was Christmas (though to be fair I had all the cards finished by Christmas).

Am I still sending a copy to Shon? ABSOLUTELY. I wish I had the ability to have sent it out already. I don't, so it is going to have to wait awhile longer. I do feel terrible about that.

Tuesday, March 19, 2019

Why a Google Pixel Slate?

...or, isn't the Chromebook C302 enough for you?

It is. The Chromebook C302 is and has been awesome. In the years I've owned the device it hasn't lost a single step in terms of speed or usability. Also, as I've grown accustomed to Chrome as an OS, it has become more and more useful. I've learned many of the boundaries of what I can handle as cloud-based and what I need to be local. The benefits of "working in the cloud" are nice, to be sure. 

So... why do I feel like I need an upgrade? What does the Pixel Slate offer?
Well, to be honest, it doesn't offer very much. That's the reason why I haven't really pushed to get one. The processor of the m3 model is not a very large step up in performance (even theoretical performance) over the m3 processor in my current Chromebook. Plus, performance issues have not plagued my Chrome experience - quite the opposite actually. But it does offer one specific thing that I have been wanting to make use of recently and that's the ability to draw.

The Chromebook C302 is a magnificent device that has served all of my needs in unexpected ways and convinced me of the soundness to the theory of moving away from a Windows-centric computing experience. It does more for me than any Windows-based laptop I've ever owned or worked with and has completely convinced me to stick with ChromeOS as my go-to mobile operating system. Even so, you cannot draw on the C302. It wasn't designed for it and it doesn't have the hardware for it. 

So why not simply buy the hardware for the Asus C302?
Well, that seems a decent solution, but a lengthy round of Google searches will reveal that drawing tablet support on Chromebooks is a bit spotty. Google won't acknowledge it, which is disappointing. Even more concerning, though, is the fact that compatible apps are hard to determine and seem to be dependent on which input device you've purchased. Furthermore, decent input devices are still quite pricey (though not $800). These concerns lead me to a place where I would feel much safer and wiser in simply purchasing a device that is designed to work for drawing from the ground up.

Why not get the HP X2 or the Pixelbook?
I would. The Pixelbook especially. If the $999 version of the Pixelbook ever went back on sale for $699, I think that's easily the best option of the bunch. It seems like that this is the event to look out for. The detractors here are 1) the Pixelbook is supposedly discontinued and 2) the sale events are unpredictable. 
The HP X2 is another amazing option and I only have two small concerns about it: 1) it is heavy. 2) it is ugly. Neither one of these concerns are deal-breakers by any means.

However, even with the two potentially better options stated above, there is something that the Google Pixel slate has which neither of these does: style for a similar price. And I am vain. I would love to have that sweet, understated Google style to slip into my bag in a light and convenient package built for drawing and chromebooking. 

But the ability to draw is not yet worth $800 either way.

Thursday, January 23, 2014

Pestered

My ... who I am is pestering me once again to pursue writing. I've moved one of my computers out of the basement, believing this might facilitate such a practice. We shall see what lies ahead.

Tuesday, March 6, 2012

A resounding success...

Is SAD a resounding success? Not currently, no. After two forays I drifted off into my typical busy-ness. No excuses, though, I don't want to bury this project just because of pervasive failure. No matter how much I continue to fall short, I want this to continue. My goal is to reach a point where practicing this discipline comes as naturally as eating on a daily basis and that is a long uphill climb.

I have mostly extricated myself from the morass of emotion that overwhelmed me upon reading The Hunger Games. Mostly, I try not to think about the story, which was so interesting I felt a need to follow it while also so sad, brutal and frustrating I feared the inevitable conclusion even before the relatively happy resolution of the first book. The second and third book are frequently described as lesser works, but this isn't really fair. They are just as well executed as the first book, but the plot line the author followed was not a pleasant one to journey.

I really don't regret reading them in any way, I just have to get over my anger that these are not real people and my emotional investment is arbitrary and unnecessary. If nothing else, the experience has softened my own perspective about the work I have undertaken. I used to be ruthlessly committed to murdering every character I envisioned. It was spiteful. I have a much stronger desire to write happy stories now. I want satisfyingly enjoyable endings from here out.

In line with that thinking, I am no longer ashamed to admit that no less than five characters in the Prophecy Archives have had their death sentences commuted. They will live to see happiness at the resolution of book three because it felt entirely too heartless to kill them for no good reason. I don't want to give any spoilers though, so my thoughts resolve there.

Now, on to SADness.

Friday, February 24, 2012

SAD

So far so good on my story-a-day efforts. I missed yesterday and am likely to miss today and tomorrow for a multitude of reasons, but rest assured I will get back to it with all seriousness as soon as possible. I know I have a penchant for the dramatic, so when I am low on time (always) that is the way my writing veers. I do want to try to differentiate my efforts and explore some other styles, but I am not sure how much capacity for that I really possess. Either way, I am eagerly awaiting the impact this exercise ought to have on me. Right now, it remains very difficult to simply sit down and generate something I deem interesting to read.

Also, "SAD" is being used as abbreviation for "Story A Day" not to describe my emotional state. I am comfortable leaving this as confusing as it might be right now.

Tuesday, February 21, 2012

A story a day?

As most are aware, the past few months - or really the past few years - have been challenging to me as a provider and as a writer. I think somewhere - in the jumble of disappointments I seem determined to hold onto more tightly than the blessings and triumphs - there is a pattern of good lessons, though. The changes in our life have set me on a path of learning and one of the main things I am trying to learn is balance.

Being an overly dramatic person doesn't really help my case either. I have rolled from the depths of declaring I don't care about writing any more (in very crass terms to my long-suffering wife) to the heights of realizing the marriage of writing and regular work is a time-honored tradition among most of the best writers at the inception of their careers. The truth presiding over all of this is the fact that I know what I have to do to be obedient to God, so I can't really sit back and rest on my laurels.

Writing is a difficult exercise whether undertaken with copious amounts of spare time or with hardly any time at all. Successful writers often speak of the importance of treating the craft as a daily discipline. Either writing solid, book-worthy prose or just writing train-of-thought drivel, it doesn't really matter. In order to write well, it seems necessary to write very, very often.

This is a difficult proposition, but it strikes at the very heart of my dilemma. If I still have time to write, it is a very little amount of time. If I only have a little amount of time I want to be able to make efficient use of it. If I want to be able to make efficient use of the little time I have, I need to be a very good writer. In order to be a very good writer, I need to write as often as possible.

This line of thinking might seem intended toward self-defeat. It is not. What I am trying to drive at is that I have been so discouraged about how little time I have available for writing lately, I have all but given up on it altogether. The concept of producing another book under these constraints seems too difficult. The reasoning above, however, is to indicate I believe I could actually accomplish this goal with the proper amount of discipline. Were I to write with frequency, fully taking advantage of every kernel of opportunity I can spare, then perhaps I would hone the skill needed to produce a coherent, novel-length work under the limitations I now accept as the norm for my life. Honestly, this is the lesson I have been desiring to learn. How to write while working a full-time job without sacrificing my time with my wife or son.

I believe this is a lesson I can, and will learn. I also believe, as with everything else in my life, I will learn it very quickly.

This past Christmas I was fortunate to be able to acquire something I have wanted for a long time - namely a tablet computer. It has been an amazing addition to my life and it has absolutely allowed me to accomplish things I would not otherwise be able to accomplish. Today, I was finally able to purchase a companion accessory for the tablet (a keyboard dock) which essentially transforms it into a netbook. In celebration of these wonderful blessings (which I do not deserve, but desire to use to their fullest potential) I want to delve into a challenge I was issued a few months ago. I want to try to write a story every day.

I have trouble conceptualizing the mechanics of this effort and vacillate between actually writing a different story every day and just writing a different vignette which is part of the same story. Really, I don't think there is any reason to decide. As long as I am writing, the effort is worthwhile. I don't really have any rules either. I am not going to make a word threshold or anything like that. The main goal is to write something interesting every day, something that could be described as a story. I am even open to suggestions. I'd be more than happy to write about your idea instead of trying to generate one of my own.

I won't be doing it here, though. I'll be pursuing my daily writing effort over on my Functioning Chumesa weblog.

Wednesday, August 17, 2011

Transitions

Awhile ago I decided I needed to move away from using Microsoft Word (which I had purchased) as my primary writing tool. My motivation for starting with Word (a program I've never really liked) was to maximize compatibility. It seemed to me at the time that nearly everyone has Word and if I wanted to share my writing in any way aside from published works I should stick with the most widely used editor available. This is how I justified purchasing the program and how I justified using it to write my entire first book.
My experience with Word broke down, however, when I started formatting my work to be published. I found that Word was not especially adept at the functions I appeared to need. I became frustrated with the program and lost faith in it as the best possible writing tool.
I also had a philosophical problem with using a pay-for program. I was espousing the ideals of open copyright and free ideas, yet my own content was locked up in a format not readily accessibly to anyone unwilling to pay for Word. Was it a major problem? No. But it did provide that little extra motivation I needed to search for something else.
I found what I was looking for in Open Office. Robust, capable and free, Open Office provided everything I needed philosophically and practically. Also, I found it easier to format my work for publishing with the writing program present in the suite. I abandoned Word straightaway and moved over to Open Office as my primary writing tool. I wrote my entire second book using Open Office Writer.
In the end, though, I ran into all of the problems I suspected I might when I initially chose Word all those years ago. The Open Office format is not as compatible as I would like. Although other people could download the software for free and use it, most were unwilling to do so. I personally found it difficult to use any platform other than Windows because of my dependence upon Open Office (despite having a portable installed on a USB drive).
My frustrations with Open Office were exacerbated by exterior circumstances (much like my frustrations with Word previously were). Because of work situations I found it difficult to ensure I always had the most current version of the document I wanted to work on with me. I began to find it exceedingly difficult to find any time to write in my day due to the logistical limitations of setting up a Windows machine (laptop or otherwise) on the fly. I started to become tempted by other, more nimble mobile platforms which seemed to offer more of the features I needed to make writing a feasible part of my fragmented life.
So, I started again looking for an alternative. I thought I found it in Google Wave, but then the service didn't achieve the success Google wanted for it and it was phased out. Afterward, I landed on Google Documents as the most accessible writing tool I could find to serve my needs.
Indeed, Google Documents is great. Perhaps its greatest feature is its platform independence. Though it lacks the publishing features I struggled over in the past, I've found that access trumps feature sets for everyday use. I can export my raw text from any editor and format it for publishing at my convenience. I can't always find time to write at my convenience.
So, I've migrated to Google Documents entirely and am preparing to write my third book using it. I can't help but wonder what factors will come into play next and send me looking for a new panacea writing tool to replace it once I am done.
So far, the only real deal breaker with Google Documents is the frustration of being unable to work when I go offline. How this might be mitigated is still being researched. Perhaps this will be the reason I eventually stop using it.
Alternatively, perhaps Google Documents really is the fix I was looking for. Perhaps this is where I will hang my hat and write as many more books as I can find opportunity to write. It will be interesting to see what happens next.

Monday, April 4, 2011

Tightenville

To be blatant, I have always believed that working on my "story" on a full-time basis would be my "career." I've always striven to be willing to accept work and jobs in the interim between conceptualization and monetization of the IP I have generated and I have always hoped this work would provide for my family (since that is an absolute responsibility and not a negotiable one). Lately, our financial instability has made me question this unwavering belief. That's a summary, probably anyone who is reading this is well aware of my position and what has transpired.

I recently experienced an unexpected result of this upheaval though, and that's what I am now writing to mention. Due almost entirely to the sense of uncertainty in our life right now, I felt it necessary to trust someone - something I am not accustomed to doing. I trusted them by sharing the overview of my story as a whole - something I have not done with anyone other than Esther. This was difficult for me in two ways: 1) it was challenging to attempt to encapsulate all of the ideas I have been trying to tie together for the past twenty years into one cohesive, short and easy-to-understand storyline (for the most part, I failed miserably at this task) and 2) it was nerve-wracking to submit my ideas to a third party for judgement, especially considering the investment I've made with my life into trying to turn this endeavor into a career.

Trusting someone is hard enough, but adding to that the process of giving my story an honest evaluation in light of the fact that I may well be abandoning the past twenty years of work was a whole new level of difficulty. Happily, I think the story survived the test. Mostly.

I realized that there are many aspects of what I am trying to do which could use some improvement. The story as a whole could use some fairly major revisions to "tighten" the mechanics of the overall narrative. I realized that I generated a bunch of ideas and became so enamored with them that I never even considered altering or tinkering with the inner workings of the story for fear of somehow breaking it. In the interim I have been polishing the exterior and adding adornment to the story as an entity while refusing to open the plot to scrutiny and improvement. I now believe there is room for improvement and that improvement needs to happen.

I don't think the story is bad or incapable of standing on its own. Not at all actually. What I do think is that the story could be better. Obviously, there is a danger of turning this into my Mona Lisa, but I don't think I've really gotten to that stage yet. There are portions of the story which are being released and worked on even now. I am not reserving it until perfection is attained. I am just looking down the road to the later sections of the narrative and thinking they could better compliment the thought and effort I've put into building a setting if I took some time to seriously consider their composition and make some adjustments.

Meaning this: I am, for the first time, actively attempting to make major changes to the composition of my story in an effort to improve the flow and self-awareness of the plot, the enjoyability for the reader and the portrayal of significance attached to certain portions of the story.

I hope this doesn't take long.

Friday, April 1, 2011

The New Economy

I am trying to not to complain, but I do find it odd that minimum wage jobs in Spokane are requiring a three stage interview process with multiple call-backs. I guess jobs really are that rare? I wish there were a movie to work on...

Friday, March 11, 2011

I Wonder.

I am feeling like, the more time passes with no word of a movie or television series taking root in Spokane, I am becoming more serious about the prospect of abandoning NxNW altogether. All things being equal, I would hang onto my job with them and continue to write in my free time. However, there are only theoretical indications that I can support my family with work from them. As I said, if I knew our bills were being paid I would keep the job for certain. I like the job. It fits my life perfectly. It is in the field I want to be in. I do it well.

I am just wondering if I will be able to keep the job or not.

Also, the Fileserver parts arrived this morning, so I am going to delve into that project now. Pray for me... er... for the Fileserver. Pray that these parts will fix the problem and we won't have to keep searching for a solution.

Thursday, February 24, 2011

I Promised Myself

I just feel too tired to post today. So, naturally, it is time to push ahead.

No post yesterday because I was driving all the live-long day. I took a 12 passenger van of movie folks out to Olympia [~6 hour drive turned to 7 because of snow] to speak to our Senators and Representatives in support of renewing/increasing the Washington film incentive. It's a make it or break it situation for our industry here in Spokane. If this bill does not get passed, there will be no more movies in Washington. Heck, we already lose most of our business to Canada and Oregon, both of which have much better incentive packages than Washington.

The drive out was not too bad. We had to chain up to get through the pass as it was plenty snowy and icy up on the mountaintop. Actually, for the morning drive, I think I could have made it all the way through without chaining, but I wasn't the only driver in the caravan and really, better safe than sorry when all is said and done. The chaining process along with the coffee/bathroom breaks (we left at 5am) turned the trip into a seven hour affair, meaning we barely arrived on time (12pm).

The "day" consisted of making our presence known in the Senate Ways and Means Committee, to show that there are many many people in this state who are deeply affected by this bill. This was followed by a round of meetings with Senators and Representatives. Our Representatives were out that day and our Senator does not participate in this particular committee, so we simply left some informational packets at the Representatives' offices. Then we went back to do short video interviews about what the incentive means to us.

Essentially everybody said the same thing as me:
"The incentive means that I have a job and can support my family"

The road back was worse. The pass was actually about the same, although it was dark. My van's chains broke about 3/4 of the way through, so we ended up having to fix them on the side of a narrow mountain road. It was... dangerous. Then onward we went. By the time we passed Sprague, WA we were right in the middle of last night's blizzard. So, we spent the last hour of driving in complete white-out snow. No, I am not exaggerating. The other vehicles disappeared and I couldn't see more than 15 feet in front of me. I drove the rest of the way at 40mph which is waaaaay too fast for the conditions, but everyone was more than anxious to get home.

God got us there safely.

Man was I happy to see my wife, son and bed last night.

Friday, February 11, 2011

Not Passed

Very sick again, had to ask Esther to stay home from work which created a stressful situation for her. All in all a pretty miserable day, but Esther made sure I had plenty of opportunity to rest and recover.

Malachi hasn't vomited yet today, but he seems to have taken a turn for the worse in other areas. He has become extremely clingy to Esther and just cries and cries and cries when she is not holding him. I wish I knew how to make the little guy feel all better.

On other fronts... man there's no jobs for me. I must not be looking in the right places. Or, alternatively, there just aren't many jobs for completely unqualified applicants. (By unqualified I mean, of course, a person with no official documentation proclaiming their supposed qualification. I do, obviously, have all kinds of real world experience that employers aren't terribly interested in without the aforementioned documentation.)

Thursday, February 10, 2011

.

Since Malachi has been sick and vomiting off and on for close to a week now, we are being responsible parents and keeping him home. Which means he is with me all day long. Which also means I don't get anything done because I have my hands full. No objections, please, mothers of the universe who might read this. I am well aware of your superhuman ability to accomplish a wide variety of tasks while managing younglings. I am not a mother. Malachi clearly suffers from total meltdown when I am not devoting all of my attention to him, so I find it impossible to get anything done.

And my final word on the subject is: I love my son and have no problem spending all day with him.

Wednesday, February 2, 2011

Onward

Onward with the projects. Apparently, at least according to James, I got the factory job. Therefore, I will be very busy starting next Monday (likely) and have far less time for projects. So, I am plugging away at the more time consuming and pressing needs that I can think of.

> Just finished the one laptop I can fix. The other one is given up for dead.
> Working on the YUM project as it has already been promised to the YUM constituents.
> Letting the entertainment cabinet fall by the wayside for now as it is far too cold to paint.
> I think I can safely say that 2 weeks/no response means I failed at the research project.
> 5 Act plot revision and Book 3 plot on hold.
> Fileserver motherboard replacement still waiting on spare funds (likely not until after final debt is paid in full)
> Oh man, I know there's more and I can't think of it.

So busy. Too busy. But, I press onward regardless.

Monday, January 31, 2011

Some Quick Math

I am not going to preface this with any sort of explanation because I don't want to potentially seem ungrateful or unwilling to work. I am just going to put some facts on the table.

I work for NxNW for $15/hr. as a van driver. My average day is 14 hours long. So, I will simplify the math on that and say that I never earn double or triple time (which is not true) meaning my average day is worth $255. Last year I worked four movies for an average of 25 days per movie (actually more overall, but I am lowballing to make a point). So that's 100 days. So, in 100 days (4 months) I earned about $25,500 before taxes last year (actually I earned more, but you get the idea). So, to rephrase, I worked 4 months out of the year and took 8 months off (to write), earning $25,500 for the whole year.

Now, let's take a random job, earning $8.92/hr. If I work that job for 40 hours a week (standard job hours) and work all 52 weeks out of the year, I would earn $18,553.60 before taxes. So, that's $7,000 LESS for the year for working THE ENTIRE YEAR with no breaks, vacations or time off.

So, you can see how this is a hard sell for me. I can't really justify it. Sure, I am working all the time and that looks impressive on paper. Look at Aaron, he's always working. But, I am also a retard because I could be earning more money working 1/3 of the time.

I didn't point this out to be mean or to say I would not work a $9/hr. job. I pointed it out to say that prioritizing my job with NxNW above pretty much anything else available is not stupid or irresponsible. It's smart (and Esther agrees with me).

Friday, January 28, 2011

LAN Party

Well, I have to admit I was completely unproductive today. Last night I managed to brick the two working laptops I needed to give away today. I spent a lot of time trying to get them to work again, one is being completely unresponsive at this point. The install process is really long and involved for the other one, so it isn't quite up and running again yet, but I am confident I will be able to get at least one of the laptops working again. The other one is still really questionable.

All of that doesn't matter much at this point, since I am no longer at home. I am at a LAN party. Which is a lot more fun than attending to responsibilities. I'll be honest about that.

Thursday, January 27, 2011

More Distractions

Well, the entertainment cabinet has been set aside once again. It is waiting in the garage like the book cover is waiting in the basement, like my research project is waiting on my computer, like the Jarvis project is waiting on my desk, like book three is waiting on my writing desk, like I am waiting on a job.

At the end of the last movie, a friend and co-worker asked me to fix his two laptops and, in a gesture of good faith, paid me up-front to do so. Paid me. Note, I didn't ask for payment because 99.999% of the people looking for my computer expertise (such as it is) are hoping to get it for free - so much so that I long ago stopped imagining I might actually get any sort of payment for granting help. But, he paid me anyway. I told him that I didn't know what I would be able to do with the laptops and I couldn't guarantee anything. He told me not to worry about it, he trusted I would do my best and he was happy to pay me for my work regardless.

Amazing. Hey, everybody: you can learn from this fine gentleman's example.

Anyway, I did a lot of work up-front on the project and got one of the laptops up and running again, but the other laptop has proven to be more... difficult. It ended up becoming a project that was waiting (in the nerdery) for an indefinite amount of other projects to be completed. Well, kind sir called yesterday to ask if he could come pick up the laptops. No pressure. No deadline. He hasn't even bothered me once since the middle of December. I told him he could come by tomorrow to get them. How could I say no?

So... here I am, working on the other computer. Trying to get it up and running again before he comes for a visit tomorrow. And everything else will just have to wait.