Usability Testing Software Development

The idea has been forming in my mind for a while now and I’m unsure if a project exists yet or at least one that is free. The idea is that there are laser usability testing and plain video testing. What about web cam usability testing? I know the precision will be less than laser, but if you want the El Cheapo brand usability testing, then it is better than nothing right?

All you would need are:

  1. Buying a Web Cam or two. Kind of a requirement if I’m going to be doing testing and development. I can’t blindly code this.
  2. Facial Recognition

    You do need to know the placement of the eyes. Also if the head moves as it is prone to do, then you need to be able to tell.

  3. Calibration

    I’m guessing is a lot less tricky when dealing with math and precision to simply tell the viewer to stare at a location on the screen for a moment and get the five or more points on the screen. This will give you a sense of where the edges are and the center given the position of the head. May have to “Lock” the head in place. The only problem is that it is easier to tell if the head moved directional but harder (I think) when dealing with depth. I’m thinking that depth could be calculated based on the width of the face, the other problem is telling if the head is turned.

  4. Trigonometry

    The key is transforming the 2D space into a 3D space and back to a 2D space. The camera to the eyes and back to the screen. This creates a triangle which should correlate to a position on the screen. It should be possible to calculate the position by having the person look at the screen. If you know where the person is looking at, it should be possible to calculate the distance of the camera to the screen. Even if it isn’t possible, then it doesn’t really matter. By getting the points of the screen, you can get the position of the screen based on where the eye might be looking. By sampling the head, the ears (if visible), the nose, the chin, mouth and eyes to get the position of the head given the screen.

    Sure, it is probably cheating, but if it is accurate enough and fast enough, then I don’t think any one is going to complain. I’m definitely not going to pester the person to get a ruler or tape measure to measure the web cam to the center point. However, it might be an option if precision is a factor.

  5. Accessing the Web Cam

    I’ve learned that you do this by DirectShow. This might limit the amount of programming languages and Operating Systems. I’m definitely not going to support Linux, but I may look into Mac OS X support. It will be interesting to find out how to program for that.

  6. Accessing the Screen Content

    The key is to let the person running the usability testing to know where the person was looking and running the test back with what the person looked at and when. My goal also is to let the person know where the mouse went as well.

  7. Play Back

    Well, it isn’t useful if it isn’t recorded. What I might attempt to do is record the screen along with the user and do post-processing with what the user might have been looking at. This would allow for improving the algorithms for facial recognition and precision of where the user might be looking at.

  8. Research and Development

    It would be fun I think to work on the AI algorithms and math. I’ll be brushing up on my trig skills and hope to hone my math ability during this project. I’m hoping the precision isn’t terrible and that this can actually be used for what I’m wanting. If not, then I might fall back to taking pictures on an interval and screenshot too. Not going to be as precise as a video running 30 frames per second, but I think it might be much easier to track real time if it was only a single frame a second. Also, the resolution of most web cameras are higher than the video resolution which should hopefully allow for even higher resolution.

Why I Probably Won’t Do This

The damn complexity of it all.

The facial recognition will be hard enough and I will work on that first and work on the math for the depth and what not. I’m hoping that it won’t be as difficult as I’m fearing. If I can work out the head position when it moves in relation to the camera and, or screen then I’ll be at least part way there. It’ll be fun I think depending on how long it takes to implement the facial recognition.

I’m also hoping to remove a lot of the tricky Trig and simply have guess the position based on the calibration I’ll have the user do beforehand. I’ll probably develop a overlay for testing the software to display where I think the user is looking at. This will also help with testing the precision. If the precision is enough that I can tell apart the word, ‘it’ from the ‘i’ and the ‘t’ then I think it will be good enough for production. If I can half ass the Trig and still get the precision within the requirements then it will be a win-win. I will still have to spend some time learning Trig and other math subjects to prepare.

Patents. I know they must exist, but I’m not sure what they are. I’m merely guessing that since Photoshop and every camera maker out there can intelligently locate the face that at least that part is patented. I’m also guessing that this idea isn’t new and companies have developed technology implementing this idea. Trending on that money maker probably is going to get me sued. Regardless, I’ll still attempt to the best of my ability to create this and research existing patents as I develop. Perhaps if I’m super nice, I’ll be able to use the patents without incurring a bankrupting huge cost.

I’m super lazy and I have another 3 or 4 projects I want to implement. Depending on my motivation, I’ll probably work on them first.

Why I Want To Do This

Well, Selenium is great for browser testing. However, while that is great. I think it will be equally great if someone would create an easy to use User Usability Testing software like they use in labs, but far cheaper. If the goal is to do usability testing often, then what better way than using cheap equipment and a whole lot of people. If you could use anyone with a web cam, then you could even do so remotely.

I did have plans to somehow have the developer see the user as the person is doing the usability testing. I think that going through Skype or uploading the finished product should be sufficient for the amount of effort and time I’m planning on putting into this project.

Of course it will be open source and of course I’ll probably be violating a crazy amount of patents to implement this. The later part does kind of suck, since I will lack the funds to license any patents I’ll be infringing on and also that there are damn patents in the first place! Ah well, I’m hoping that the former will at least allow a better programmer to come along and use a method that isn’t patented.

Possibly Related Posts:


Motivations for Programming

My motivation for programming the Minecraft Proxy will probably come when 1.9 comes out and I blow away my world. As long as I spent on that world, I’m not going to have a lot of motivation unless I have some intelligent helpers. I’ll probably be spending some couple of months working on the project. I keep itching to do the networking code and seeing how well that is handled.

Motivation for programming Python is also high. I have a project I wanted to have completed by the end of this weekend and I haven’t even started. I still think I can complete it, but the code will be sloppy, most likely needing rewrites and well, it will need to be rewritten anyway. I’m thinking about taking the Projile project in stages. I’m also thinking of developing my own framework starting with the controller, but leaving the models and views to third-party libraries. The controller will probably take a week or two, depending on how well the initial code is developed and what existing framework I want to closely match.

My goals for the Python Controller Framework is similar to the Minecraft Proxy. I’m not going to focus on programming either project the “correct” way given the idioms of the programming languages. The code most likely will be developed similar to the patterns I’ve learned from PHP and Java. Which probably won’t be all that bad. I’m going to take “Mythical Man-Month” approach and toss the first implementation as not really a prototype, but an solution that will hopefully lead to a better working solution. Similar to the Projile project itself.

The goal for the Framework is to create a configuration-less Controller framework that handles installation, upgrading, plugins and authentication. The authentication I want to support many different OpenID services and probably will write a Facebook Python framework, unless one doesn’t already exists and is on par to what I’m looking for. I’ll probably write one anyway, since I want to learn the inner workings of Facebook Open Graph or whatever the public API is called.

From my readings of Pragmatic Programmer and “Your Brain at Work”, it seems that the best way to be motivated for a project is to take it in steps. To focus on an achievable goal and work towards it. In the case of Pragmatic Programmer, if you find that the goal is not exactly what you’ve been looking for, then maybe the entire solution wasn’t great in the first place and not much is lost.

The other part of this is to develop components that are separate. I’m not sure how I’m going to do that with the Minecraft Proxy in D. The Java code is… not exactly decoupled and I doubt the D code will be either. I’m thinking the Python framework code will be decoupled enough to start work and should be able to be refactored to its separate components.

Of course, while thinking about doing this, I should just be doing it. The problem is that the more I think about the project and why I’m not doing the projects the better the solutions. Another demotivating part is sucking at design and usability. Even with the books I’ve been reading, it is still extremely difficult. Of course, I haven’t actually read any basic design books. That will be my next stop. I think I’ve had enough of the basics of usability and need to focus on design. Once this roadblock is dealt with, I’ll hopefully be more willing to focus on this project.

It is holding up long term projects, which is further motivating me to want to start working on it. I keep thinking more and more about the farmer sim browser game and how fun it would be to finally be able to play it. The kinds of stuff I want to do! Regardless, I’m kind of hoping Projile will be the foundation for developing the games and learning better programming and usability.

Possibly Related Posts:


Dealing With People

The past 3 weeks has been busy with listening to books. I’ve listened to “Coping with Difficult People” by Robert Bramson, “21 Ways to Defuse Anger and Calm People Down” by Michael Staver, “The Believing Brain” by Michael Shermer, “The Five Dysfunctions of a Team: A Leadership Fable” by Patrick Lencioni, “Your Brain at Work” by David Rock, “Verbal Art of Self Defense” by Suzette Haden Elgin and “How to Win Friends and Influence People” by Dale Carnegie.

I’ve noticed some similarities with some of the subjects with the books. The book, “Your Brain at Work” discusses at one point the anger people have and “21 Ways to Defuse Anger” actually discusses and deals with that subject a bit more. “Your Brain at Work” also discusses some of the ideas further emphasized in “The Five Dysfunctions of a Team” and quite possibly “How to Win Friends”.

It is interesting to me how there is some overlap with the books, where one book does not explain the brain fundamentals in “21 Ways” and “Five Dysfunctions”, it is explained in “Your Brain at Work”. It is helpful to fill in the gaps and relate the topics together. Interesting “Brain Bugs” does also help with the inner workings as well explaining how the brain works or doesn’t work.

What is interesting is that with all of these books with dealing with people, the common thread is that you don’t deal with people by being mean or being a jerk. This causes the opposite affect as the brain rejects the idea as it is triggering its threat response. The best way to deal with someone is by getting their dopamine levels raised. You can train someone better with treats and praise without them even realizing what you are doing.

Not quite manipulation, since from some of the books, people can tell when someone is faking. Much like when people realize someone isn’t truly smiling. The brain knows what people can’t quite put in words triggering a response that isn’t normally favorable to the one attempting to do the manipulation. Of course, this does work, but generally triggers the threat response without the person realizing why.

My normal response has been, “Tough Love” and I’m realizing now the reason it has never worked. I simply thought, incorrectly, that if they knew how right I was and competent and logical my solution was that the person would understand and follow through with my plan. However, it is the way you say things that drive people against or for you. The problem, I suppose, is that it takes a lot of practice and while I’m putting some of the ideas into how I deal with people, I still tend to revert back to my asshole self.

People are motivated by many things and I think the “Verbal Art of Self Defense” says it best, “Assume that the person says is true for them.” To often we don’t do that and it leads to misunderstandings.

It is frustrating when you are talking to someone and they (you think) assume that you are an idiot and reject what you are saying as wrong based on the premise of missing information. Instead of questioning their train of thought and asking for further clarification, the thought patterns leads down one of trolling. You end up thinking the person is unfair, since the person never let you explain your idea and kept insulting it and they simply continue thinking you don’t know what you are talking about.

Spin this around and applying the Verbal art of Self Defense, we can probably apply some of the rules from 21 Ways to Defuse Anger and approach this conversation a different way that leads the person to understanding your train of thought and accepting your idea. It is difficult. “Your Brain at Work” does discuss many techniques for how to remain calm and continue thinking with a cool head, but it takes practice. It takes never being angry, because anger prevents the thought flow. More than that it takes working through your anger so that it doesn’t simply remain in the background waiting to boil over. It is very difficult.

To often I remember becoming so angry that I couldn’t think straight. Of course, both “Your Brain at Work” and “21 Ways to Defuse Anger” explain why, more so in “Your Brain at Work” and alluded to in “21 Ways”.

It is interesting that by listening to these books after each other that it makes more sense. The Verbal Art of Self Defense and 21 Ways to Defuse Anger talks about practical ways to handle situations, however understanding the underlying reasons why your brain acts the way it does helps too.

I find this topic interesting and it is nice that these books are short and are, I think, made to be listened to over and over again. Which I think is how the ideas really start to stick. Applying maybe one or two techniques from each book will probably be better since you will be better off as a person and in relationships. I also think that the full wealth of the books will be researching them as you would a bible until the techniques and information in the books or audio listens become second nature.

It is difficult to change one’s behavior. I know this intimately well. Taking baby steps seems to be working well for me and I look forward to hopefully being in enough situations where I can learn and apply more of what I learned from these books. It is a good thing I think to never be in a situation to need Verbal Art of Self Defense or 21 Ways to Defuse Anger, but also bad since you’ll never have the apply the techniques in order to drill them into your mind with practice.

Possibly Related Posts:


Minecraft Proxy in D

The Minecraft Proxy in D will probably be started within the hour. I’m going to do some minor research and then jump into some test code and then some network code. My goal is to have a connection to a Minecraft 1.8 server running and have a miner running around mining blocks and laying track.

Oh yeah, I also want to implement contract programming and unit tests. It will slow down the development, but I think it will hopefully limit the amount of debugging and problems I’ll have during development.

  1. Compile First D Program: Hello World

    Have to start somewhere. I figure if I have this done today or within an hour, that I’ll have motivation to continue.

  2. Minecraft Protocol Module

    There probably is an existing implementation in D, but I think it will be helpful to write my own module. I need to write the code to be thread safe, but I don’t plan on implementing the network code using threads yet. I won’t have the benefit of a proxy through Minecraft software, so I’m instead going to have to implement the server authentication scheme. That is getting the authentication string and passing it to the server. This will take some time and testing.

  3. Network Code

    I’ll use the completed Minecraft Protocol module and attempt to implement the network code. I hope I don’t have to implement threading, but remembering the Java experience, I’ll probably do it anyway.

  4. Minecraft Chunk Module

    I’m kind of hoping that I won’t have to require a database and I want to see how much space is taken by the D implementation. Should be fun and interesting. I’ll probably use a multidimensional array for chunks and coordinates. Should be simple, but probably won’t be efficient. I’m going for simple and quick. I’ll refactor the code later to be more efficient, but meh, it might turn out to be efficient enough that I won’t need to use something else. Of course, if I can’t implement the array in this way, then I’ll have to come up with another design.

  5. Minecraft Entity Module

    The problem and what I’ll need to implement to create some sort of intelligence is to track entities. This is something, I don’t currently handle and for what I’m planning I’m going to need to do it. The problem so far is that I don’t know where monsters, mobs and other players are. I need to be able to track this information to ensure that my code correctly handles each mob or player.

  6. A* and Dijkstra Pathfinding Module

    I had forgotten that this was a requirement. Oh well, I think I understand the A* and Dijkstra pathfinding algorithms enough now that this shouldn’t be that difficult. Or I’ll simply brute force it. I’ll probably require this be a separate thread, crap now I need to solve many different thread and dead locking with the Chunk Module. It is possible that I could have this part of the Chunk Module and simply spawn a new thread and when it completes pass it back to the caller. It depends on where the pathfinding will be.

  7. Intelligence Module(?)

    I’m debating this. Creating a Fuzzy Logic module could take anywhere from half a day to 2 weeks. I’m not sure what benefit I’ll get from it either. I want to do it, but I’m kind of hoping that I can kludge my way through some sort of algorithm that sort of doing something similar.

    I don’t know, it will be worth looking into implementing it, since a lot of the code I’ll be writing will mimic fuzzy logic. Quite possibly I’ll be saving some time instead of testing and developing it the boolean way. I don’t know. I think I’ll head down the path of not implementing true Fuzzy Logic module and instead focus on different actions.

    The main loop will check different conditions. Is there a mob within 20 meters? What type of mob is it? Does the mob have a direct line of sight? What is the players health? Is there a weapon available? Meh, it will probably be worth investing the time implementing fuzzy logic just so that I’m not writing a ton of code that will be damn near impossible to debug.

  8. Behavior Module

    My goal ultimately is to separate tasks into behaviors and then into sub actions using the intelligence module. In this way, I’ll be switching between behaviors and focusing on completing the task.

  9. Chat Module

    I’m not going to be handling this intelligently. I’m simply going to pass commands to the player using chat commands. Therefore, the code needs to be able to parse the chat and pick up on the commands. At some point in the future, I may extend the code to intelligently talk to others using the chat dialogue. Since majority of the players will be on my own personal server, I don’t really see a need to spend a lot of time on this.

Behaviors

  • Mining

    Majority of the time will hopefully be spent on this behavior. Mining will focus on precious resources and then collecting other resources depending on different needs. Like for building a chest might switch from one resource to collecting wood instead.

    The Mining action requires that the player know about lava, how to avoid lava, how to mine around lava and how to move lava. I think that since the player has a lot of time, that I’ll instead have the player move the lava to an area where there is an infinite water pool for pouring the lava and turning into obsidian. When the water pool is filled, then the player will mine the obsidian and put it away.

    My plan is basically to have the player mine the bottom 40 block layers everywhere. But not the ravines or new places. At some point, I’ll think of a plan for what to do with the soon to be large underground lair. I think it would also be funny to join a server and after a week or so, be like, “WTF?” I don’t know. I could go many different ways with this.

  • Crafting

    Need to set the player code to do this whenever it is needed. Mostly what will be crafted are chests, furnaces, rail, powered rail, mine carts, chest mine carts, workbench, tools and weapons.

  • Farming

    Food is important, so at certain points, the player’s character will go out and spend an hour or so collecting food by farming. Some actions might be to collect seeds, mushrooms, plant mushrooms and use bonemeal (if available).

  • Building

    At some point I want to develop the player to build rail stations or maintain current rail stations. I also want the player to build different architecture for the rail ways and maybe light houses and walls. This will also include farming land in such a way to enable efficient and maybe pretty solutions.

At this point, I’ll probably simply implement just enough of the Crafting and Mining in order to find resources and not run out of food, tools and weapons. I’ll tell the player where to go and what to do using signs, which should help the player not do something that I’ll regret.

Future

The application won’t just be AI player. I’ll eventually implement OpenGL display from the Java version to the D version using a library. I also want to implement a GUI using another library.

I think that if after this weekend I have the network code and minecraft protocol code working. I’ll be good. Probably spend a few weeks or months away from the code depending on motivation and finish up the other plans later. If I do get to the pathfinding parts, I think that will be fun and if I can implement some primitive mining code, that will be even better. I’m optimistic I can do the protocol and network code this weekend. Not so much all of the other stuff. I’ll really only have a day and a half work on this project, so not a whole lot of time. I’ll spend a day and a half working on the Python Web Spider project and end the weekend.

Possibly Related Posts:


New Plans for HTTP Request Library in PHP

I think I’m going to revisit the library this weekend and finally refactor it, greatly simplifying the code, the documentation and tests. The problem is dealing with the decoupling and I think I finally have that solved. I’m instead going to couple the library in the correct way instead of decoupling it in the wrong way.

Three Components

  1. Request

    I don’t know, I kind of wanted to move a lot of the code out of the Requests, but I think instead I’m going to make the request class pretty massive. However, it will contain really only what it needs in order to bootstrap the request. During development, I might do something similar to Features for Settings, but I do think that by putting all of the methods for the request in one class that it will be easier to use and perhaps better testing. I’ll probably inherit the class for the different request types. So there will be HTTP\Get, HTTP\Post, HTTP\Head, etc. There will be a generic HTTP\Request class that allows for setting the request type for those that are not supported.

    Most of the base code will be implemented in an abstract class and the main Request classes will simply handle the differences between the different requests. I’ll probably refactor a lot of the existing code into the base class and then work from there. A lot of it will probably go away and a lot of it will simply be scrapped until a later version.

  2. Transports

    The transports will handle compiling the request and sending the request and handling errors and lack of implementation in Features. This should hopefully limit the code of the Transports and allow testing the code sooner and finding issues. The issue right now is that given the state of the library, it appears only cURL works and only barely. Tests are not complete and I have no idea why. I need to develop the Transports to test them separately and the transports need to only implement enough to create the connection, send the request and return the result. Features will take care of the rest.

  3. Features

    Right now, the library implements Headers and Body and attempts to create a plugin for each. The problem with this model is that a lot of the features needs access to both the body and header. Instead of separating them, I decided it is better to simply combine both as well as the actual implementation for the transports.

    To recap, the Features will handle both access to the Header, Body, and Transport. They will be passed all three and have modify access. The features will require implementing for each transport or pass that it is “not implemented.”

    It is my hope that unit testing and development will be smoother and faster since the abstractions will be contained. The Transports will not require knowledge of the Features and everything will be relatively separate from each other. All the Request component will know is an interface that each Feature will implement. Same with the Transports. The Features will have to know about Transports, but not the Requests. The goal really is to have the Features as Transport agnostic as possible, restricting transport implementations to their own class.

I don’t know when I’ll get to this project. I’ve reach the point where I’m ready to work on it again. However, I’m wanting to work on the Minecraft Proxy and Web Spidering this weekend. I don’t think I’ll have time to work on this project.

Possibly Related Posts:


Books I’m Going To Read Next

  1. Rocket Surgery Made Easy by Steve Krug

    Started reading this, expect to finish within the next 3 or 4 days. Could be sooner depending on how much time I devote to reading the book.

  2. 13 Things That Don’t Make Sense: The Most Baffling Scientific Mysteries Of Our Time by Micheal Brooks

    Starting reading the book and didn’t put it down until I was far too invested in the book to put it down. The book starts off well enough, but devolves into the weird. Very simple book that doens’t get into the hard science and explanations you would find in a classroom, but it takes a risk and makes it fairly entertaining and grounds itself enough to be believable and not too far into the conspiracy or fringe science. I’m almost done with the book, so I might as well finish it. The insights are fairly interesting and could be useful in thinking outside the box.

  3. A Project Guide To UX Design by Russ Unger and Carolyn Chandler

    I picked the book up, because it looked interesting after I purchased “Don’t Make Me Think” and “Rocket Surgery Made Easy” by Steve Krug. It appears to have what I’m interested in learning, so I picked it up in the hopes that it will at least start my education on further usability testing. I’m not sure how long the book is, but it looks interesting enough that I think I’ll spend the time reading the book regardless.

  4. The Pragmatic Programmer by Andrew Hunt and David Thomas

    I need to finish this book. I’m about a third of the way through and I don’t think it will take much longer to complete the book. It not that the is boring, it simply reaffirms everything that I’ve been discussing and learned elsewhere. I’m sure that as I get further in the book that I’ll actually pick up something new. At the very least I understand more of the reasoning behind why others and myself recommend some of the suggestions found in the book. They put common sense in a way that is easy to explain to others. The problem I think is that you have to be in the trenches before you really appreciate the books value.

  5. The Mythical Man-Month by Frederick P. Brooks

    I hate essay books, since they are rarely coherent and detailed enough to be useful. I don’t think the same problem applies to this book, but it is still a little demotivating. It will be one of the last books I read since I think I’ll learn a lot from the book and the information will be useful. I have started the book and it is interesting enough with the first chapter. I’ll just rather read Clean Code instead.

  6. Clean Code: A Handbook of Agile Software Craftsmanship by Robert C Martin (with others)

    Another set of concepts I’ve been attempting to get across at work for the longest time. Writing clean code the first time is important to not require rewriting code a second time or implementing something clean enough to not require rewriting to enhance or add new features. Definitively already a lot of great concepts and I’m interested in learning more about to express myself. What I’ve learned while in the trenches doesn’t come close to the gold mine of information in this book, so I look forward to improving upon what I already know. I’m also interested in code smells, so that I can articulate why code should not be implemented a particular way.

  7. About Face 3 – The Essentials of Interaction Design
  8. GUI Bloopers and Web Bloopers

    These are two books, but I’ve already started them and haven’t finished them. I hope to do so before moving on.

I’m sure I’m not going to follow these list completely and will probably look at other books that look interesting. The problem is that I so many books to look at and I have limited time. I’m not longer in a hurry to learn Python. I’ll probably go back to my web programming roots and sharpen what I know about HTML and CSS, while attempting to learn something or two about web design.

There are also software engineering concepts I could look at. I never went to school and these books will fill the gaps in my lack of education. It might be useful in speaking to professionals. Then again, I’ll probably read the two or three books I have on refactoring after I read these.

I’ll probably go through my catalog of books and give each a brief review and see how well they stack up. The books will be graded on how long the book is, how well the concepts are written, how old the book is, how well the book is known and my interest in continuing or starting that subject. I’m more interested in learning how to be a better programmer at the moment than learning how to program.

At some point my interest is going to jump to HTML and CSS combined with web design. I think at that point I’d have read all of the books I have on usability. I’ll have to include JavaScript in the mix and focus on probably creating my own JS library. Well, I’m interested in JavaScript unit tests, so I might instead jump on an existing JavaScript library or two and see what could be done to tweak these libraries. The reason I’ll probably create my own library is for throwaway code to learn the underlying concepts. If you know how something is built then taking it apart is not as difficult to put it back together again. I don’t like working with code I don’t understand the underlying mechanisms of how it works. If something breaks, then I’m unlikely to know enough to fix it or how to work around the issue.

Also, I’d like to work with the new JavaScript objects that the next generation browsers are releasing. I think I’ll probably experiment when I start the Projile project sometime in the Winter. I’ll probably remove the code before releasing, unless it is useful and works in enough browsers.

Possibly Related Posts:


What is the Obituary Story

I suppose my previous post might be a little confusing. During high school I had an idea for a story about suicide. At the time, I didn’t understand the topic and thought it was foolish. I wanted to satirize it, but really it turned into a PSA attempt against suicide. In the end, my love for the Books of Magic character “Death” sort of led me to include that iconic character into my story. Not that it went far, the character and story felt too preachy.

The new drafts and notes instead focused on death without the fantasy elements. Grounded as much as possible in the real world, except for the allegory side stories thrown in for giggles. I liked the allegory parts of the story and wrote several scenes with the characters I envisioned. The problem was that I had plans for many themes and wanted to use the characters to talk about those themes. It has been one of the main reasons the story has taken so long. I simply didn’t know enough to write a story focusing on the themes I wanted to write about and had to do a lot of research before I attempted it.

The main character does die and the reason for the title was to provide the story as the obituary for the main characters life. I had plans to provide an obituary as one might appear in the newspaper in the story, but it might come off as too cheesy and if so, won’t be included. There were other internal debates with the story and problems with the pace and plot of the story.

I’ve changed the name of the main character a few times, because I felt that I can’t use a character name of someone I knew in case they mistaken me as imagining them as the character. I suppose I should choose a name that is rare from the names site and include a notice that any names matching real persons is purely coincidental.

The story is quite dark. It was written during a time where I was moving from happier war action stories to more darker, adult themed concepts. Quest for Magic is equally as dark, but probably not as dark as Game of Thrones. I think Game of Thrones and that genre of fantasy will motivate my writings to even darker regions, but I have my limits and this story isn’t about shock value.

One final note, this book was envisioned as a single standalone volume. I can’t imagine the book longer than 300 pages. If it does end up longer than that length then I think I will cut some parts of the story out. I can’t really imagine having the motivation to write that many pages. I’ll have to see once I start writing the new outline.

Possibly Related Posts:


Hashing Out Obituary Book Details

I think the problem, I’ve always had with the story is hashing out how all of the subplots flow in the story. There are several subplots that are essential, leading up to the ending. The problem is how do I give each the proper amount of space and time to flow them all into a coherent story. I’m not happy about removing details from the story.

I think the tangents in the story probably need to be removed. I like them, because they are fun to write, but I think that a better idea would be to have them more integrated into the story. Their purpose was to allow me to discuss different themes and I’m guessing that is a really terrible execution. It would be better to simply pick one or two main themes: love and death.

In a sense, the tangents could be used if the characters in the tangents became part of the bigger story. In a sense kind of like the TV series where the female and homeless male are linked by their Id and their connection to the fantastical place actually exists for both of them. Not to rip the idea completely from the TV show, but something similar, a place the characters share could be created that has nothing to do with the Id.

I always wanted to explore reality as a theme and this would allow me to touch upon it without creating side paths in the story. As a whole, the characters are experiencing that reality, but what is contained depends on what the characters agree on. A difficult premise to write and might require quite a bit of explanation. Ultimately, the story does lead to death and that must be the point of the story. A benefit would be that this idea might allow for a happy ending. Perhaps the character lives on in the alternate reality, but only if the ending is ambiguous or enough supporting evidence that the character might live on in this alternate reality.

The subplot with the gangster character is still something of its own complexity. I need to plan the events of the story exactly in order to motivate the main character to take the actions at the end and move the gangster subplot in with the main plot in enough points that it is still one story. I think going the route of “The Painted Man” is not quite the way I want to go. I want to weave the gangster character in with the main character as much as possible, but this is difficult in book form. I would only be able to hint at the locations and wouldn’t have the benefit of filming one of the characters in the background. Perhaps really it doesn’t matter. In the end, the characters don’t know each other.

I could solve this problem by using a common place that both the characters could meet at. It would seem like cheating by placing times in the story. Not that it hasn’t been done before, I just don’t like it.

I know the ending and I have a few beginnings. The problem is choosing one. I suppose the best one is to start at the end, a bullet, the sound of a gun firing and the main character running. Concluding at the end with the same scene, but finishing the result. If I wrote the story well, knowing the ending won’t matter and the reader won’t skip to the end just to know what happens.

I think also what counts are the scenes. If I write each chapter like it is an act and consists of scenes, then I can count of only writing beats in the scenes. If a beat doesn’t fit in the scene, then it either needs to be removed or moved to another scene. This hopefully prevents any tangents or extra content. Also, my outline will hopefully be a lot easier to write.

The final problem that I don’t have an solution for is how to work the school into the story. There is a love story that I’ve always had difficultly moving into the main story. I think I should just go old school and copy what works. Part of what story and motivation is finding the girl and then having the girl dump the character leading the main character to take the ultimate action at the end of the story. A little overused, but it works and has worked for quite a while. Bangkok Dangerous wasn’t the first to do it and my story is different enough.

What is not solved with the school subplot are the conflicts. I never outlined what takes place during the school portions of the story and the ideas I had never seemed all that interesting. There is the typical bully character, but I was never happy including him as an antagonist. I think with the love story that there might be enough conflicts that can be generated to provide enough content for the middle section. I still think that more conflict is needed to improve the motivation for the character. I simply don’t want to end up creating a PSA and want the motivation to be more natural.

I simply hope that I’m not including too many settings and arcs that it will become difficult following along. One solution could be to repeat settings. The school is one, the coffee shop is another. The junk yard being another critical setting that needs to be established by both characters.

I’ll need to redo the characters as well. I like the symbolism of the three characters and I enjoy writing the alternate reality. I suppose the conversations will be easier to write, since instead of 20 different themes, I’ll only have to write about three. I need to think about the motivation of the characters. Why do they take the actions they do and what leads the main character at the end.

The main character, I think could end up being 3-dimensional, the gangster character, if done right, two-dimensional. My problem is that majority of the other characters are one dimensional. I wonder if I can tweak the other characters to increase their depth. I really need to decide if it is worth the extra work. The three characters do not change and there isn’t any motivation for them to change. They are who they are and has been and will be who they are. That is not to say that it should be that way, simply that I can’t currently think of any reason to make them more than zero or one dimensional characters.

The other debate is whether I should include the parents. I’m thinking it would make sense since they are one of the major motivations at the end and during the story. I simply haven’t decided if the motivation is their lack of involvement and their apathy towards their son or if it includes discussions and mishandling as well. If abuse is a factor than it certainly would be a huge motivator, but I’ll rather not go down that path. The main character’s actions are not justified by the parents alone and I never envisioned them as terrible. I envisioned them as simply being too busy to notice or understand the situation of their son. If abuse was a factor then I think I would want the character to prevail over the adversity and counter the conflict to triumph.

I could have abuse as part of the female love interest, but it really is a messy topic and well, it could be a huge motivator for the conflict between the main character and the love interest. The question really is what kind of abuse and the events leading up to the major conflict. I’m thinking of quite a few conflicts and I’m thinking I’ll have enough material that it’ll be interesting outline. It will not be sexual abuse, I know that for sure.

Possibly Related Posts:


Android Phone and Apps

My last set of plans were thrown out the window. Surprisingly, the event that pulled me away from Minecraft was books and reading! That and work. My priorities are to continue focusing on reading about programming. Certainly that by the time I start programming, I’m going to forget a lot of what I’ve read. I know that I’ll be rereading some of the books.

I misjudged the amount of time it would take to read one book. I’m unsure what I thought I would be able to tackle, but covering 10 to 20 books in one or two months was a little crazy. I think a better estimate would be one book a week or around 5 books a month, if that is all I did after work and on the weekends. I’m going to focus on finishing 5 books a month until November, so 3 months or around 15 to 20 books. I’ve been switching around with the books I’m currently reading, so I’ve started around 6 or 7 books and a couple are a third of the way completed.

There are a few problems I’m going to have during this period. I will most likely get into Android development and designing a mobile app for managing my tasks and time. It will most likely interface with my current account with toggl and with a custom solution. My goal is to create something that is more agile and sort of allows me to plan for extreme programming. I think creating some of those tools for the mobile app will allow me to eventually translate them to the web site that I want to create.

What I’m interested in is creating user stories, tracking estimates vs actual time on a graph and pull down charts or whatever the name is for assigning a list of tasks to a list and then eventually completing them after a certain time period (usually 2 weeks) from the big list. Certainly, I do hope to duplicate a lot of the functionality current for Trac for the mobile app except crazy simplified in the reporting and more complex in other areas for adding agile concepts.

I think this will be my Java project from now on. To keep me fresh with Java development and eventually hopefully port the Android app to computer GUI Java program or writing a plugin for Windows, like Toggl has and perhaps a plugin for Netbeans and Eclipse. I simply think I’ll be more motivated to work on an Android app at this time than to dive into Python. Of course, I’m going to have to create a Python script for the backend.

I know from what I’m currently learning that I’ll be better at usability and design (hopefully, if even slightly better) and about project management. I’ll be more confident which should translate to better motivation to complete the next projects. I’m going to geared the Trac clone written in Python for 6 months or December to May and use my mobile app to help manage the development until the web site could take over instead.

What I estimate is that it will be a lot easier and a better motivator to be using a mobile phone to manage a lot of the tasks and see what is needed than to use the web site. If it is in front of you, then you’ll be more likely to use it for your own personal projects. That is what I predict, I’ll just have to see what time says about the topic, for at least myself.

I’ll still read at least 1 book a month and attempt two books a month starting in December. Really, I guess it will depend. For the agile development, I’ll probably read a lot of Agile books in December and during the next 3 months to get started for research. When I start doing game development, I’ll probably spend a month or so reading a lot of game development books for design, planning, and AI.

If it comes to it and in December, I’m still not up for programming, I’ll simply have to continue reading more until I gain the motivation.

Possibly Related Posts:


China King – Best Chinese Place in Springfield, MO for 2011

I no longer think the place I wrote previously is the best Chinese restaurant. I should note that when I’m writing about mid-level pricing or places that charge between $5 and $9 for a dish. If you are looking for something a bit more expensive, and possibility a little better, 5 Spice is great place as well. There is another high class Chinese place, but I don’t remember the name.

Most places the Crab Rangoon is similar to the wontons, in that the shape is relatively the same and the only difference is what it is filled with. At China King, the crab rangoon has four “legs” and a base filled with cream cheese and pieces of crab (unknown if intimation or real, probably the former). Very good and includes a side of sweet sour sauce.

The egg rolls are a bit higher in quality too. Most places have what appears to be similar to the frozen egg rolls you buy at the store or what I term school food. In that the egg rolls at China King are slightly bigger, don’t have celery and has slightly bigger chunks of meat. The other egg rolls looks like they ground up everything and stuffed it in the wrapper. Of course, these can be good if cooked right and served to order.

As for the dishes, I haven’t tried everything, so there may be dishes that aren’t great, but from what I have tried, I can assume that every dish will be equally delicious. You can see the cooks making your food, which some places don’t. The food is also cooked when you order the food, so it always hot and of better quality than other places. If you call ahead, you can also save a bit of time and have the food ready when you show up.

As an aside, Springfield News-Leader has an opinion survey for best Chinese restaurant (low and high) and Lucy’s almost always wins. So really, it simply proves that it is a popularity contest as opposed to what is actually the best Chinese restaurant place. I kind of wish Lucy’s would sue me, just so I can prove how bad their food is.

I am an actual customer of China King, they did not pay me for this article. I write this simply so that someone will find them and give them their business. I would rather this place stay in business.

TODO: I need to take some pictures.

Possibly Related Posts: