Categories
Personal Development

Having Goals and Obstacles

While perusing my now even longer list of RSS feeds in Firefox, I found an article about Acrobatic Rabbits. It was a shareware blog, so I was curious. It basically describes how the blogger’s rabbits don’t have the will to even attempt to escape simple wire meshes. Simple obstacles are all that is needed to prevent the rabbits from going where the owner doesn’t want them to go.

The last paragraph was insightful:

Just like a technically inadequate fence keeps rabbits inside, many people are kept inside their comfort zone by all sorts of barriers that are often mostly in their heads. How many part-time shareware authors keep dreaming of quitting the day job, but never do for all sorts of reasons? Reasons that, upon closer inspection, that are merely obstacles that could be scaled without too much trouble.

I have goals. Some aren’t nearly as fleshed out as I would like them to be, but they exist. But why is it that, for example, last month I was able to determine that I don’t practice programming nearly enough in order to gain experience and skill, and today I find that it is still the case? I could blame it on the fact that I haven’t been able to do so since I have work and school, both full-time, but that would just be placing blame somewhere else. If I want to do it, then I should just do it. I should be able to schedule time to exclusively work on coding, and then keep the commitment. I think the main obstacle isn’t necessarily some outside force so much as my own perception of how much of a force it is.

Thinking about the programming issue, I know that it is definitely possible to schedule time for it outside of class, homework, and work. I just haven’t done it because I let other things slip into my schedule without consciously saying that I am giving up something else. In Getting Things Done, David Allen talks about how we need to be able to not only say what we are doing, but also be ok with what we aren’t doing. Other time management and productivity authors have talked about the importance of saying no to opportunities that may not necessarily be opportunities.

This weekend, I wanted to try to do a Game in a Day. Unfortunately I spent Friday night playing a video game for way too long and didn’t get to sleep at a decent time. So I woke up later, which caused my entire day to start later. I was hoping to get the Game in a Day out of the way within 5 hours, giving myself the rest of the day to work on game reviews for Game Tunnel and my homework for class.

It is now early Sunday morning. I ended up sleeping in the afternoon so my sleep schedule is off. And so far I only got one game review done. No code written for the Game in a Day. No code written for my homework. It isn’t like the review was too ambitious, and it didn’t really take me all that long to write. I unfortunately spent a minute here and a minute there doing Other Things, like checking my email or talking to people online.

On that note, I am glad that I have this blog. It helps me realize that even though I never lied about what I’ve done, I wasn’t being honest with myself. Until I wrote all that down, I was feeling overworked and was subconsciously blaming it on all the things I needed to do or other people or time committments. Writing it down helps me by placing it in front of me to consciously analyze it so I can see what it is I can actually DO about it.

As Lao Tse says, “Your actions are your only assets.”

Categories
General

Quote From Professor, Programming

One of my professors said this in class this past week regarding writing robust software:

You can make programs fool-proof. You can make programs idiot-proof. Unfortunately, fools and idiots rarely will use your software.

He then went on to say that usually software users are instead afraid or have no clue. He was talking about writing your code defensively, as if at any point a cat may walk across the keyboard and your software should be able to handle it.

Even though it was a low-level technical argument, I think it goes hand-in-hand with what Steve Pavlina said in If No Independent Developers Are 100 Times Smarter Than You, Then Why Do Some Get 100 Times the Results?:

If you hold a core belief that your customers are idiots, then this will be reflected in your product design, marketing, web site, etc. You will then attract idiots as customers because that’s the type of person you had in mind throughout your design process. If, however, you start from a core belief that your customers are brilliant, friendly, honest people who want you to succeed, you will make different decisions in product design, marketing, etc, and you will attract those types of customers.

So on the one hand you want to make sure your code is robust to handle the random and uncontrollable. On the other hand, you don’t want to do so while also making the customer feel like you hate him/her. I think user interface design plays a big role in that, at least for the software. I don’t have much experience creating UIs, so I may need to purchase a book or two.

Then again, I should probably just read the books I have now. I need to walk before I can run, and my object-oriented programming is weak. To help, I bought the huge tome Object-Oriented Programming in C++. The first couple of chapters are basic overviews of C++ and OOP, which I was tempted to skim, but then I thought I might as well keep reading through it. I learned one new thing that I didn’t know before, and that made all the difference.

Categories
General

Game in a Day

Recently I discovered Game in a Day, an event where individuals and teams try to make a game within 24 hours. Naturally you aren’t expected to make a full professional Quake clone, but it is possible to come up with something that is playable, no matter how crude. What’s really cool is that after your development frenzy, you have something you could clean up and polish over the next few weeks or months.

I’m definitely interested in doing a Game in a Day for myself. Right now in order to work on a project, I need to know what I am doing so I can set aside time for it between work and class. I know beforehand that nothing will get finished in a session because I can’t possibly do anything for longer than a few hours. It’s hard to build up experience when I don’t know when the next session will be. If, on the other hand, I know that my constraint is that I need to have something playable at the end of a session or two, that it isn’t meant to be anything more than a fun project, then I can work without worrying about the progression of the project so much. A nice bonus is having a somewhat completed project by the end.

Previous participants of the Game in a Day have posted .plans about their progress. You could see how they went from scratch to a game within 24 hours. Some people managed to make incredibly fun games in even less time! I am hoping to join their ranks.

Categories
Games Geek / Technical General

1UP.com presents The Essential 50

The Essential 50 is 1UP.com’s compilation of the 50 most influential games in video game history. I feel bad because some of the games I’ve only read about, such as Battlezone or Prince of Persia. Others bring back good memories, such as Super Mario Bros and Pac-man. I am making a point to go back and play the games I own that I haven’t gotten a chance to play yet, such as Final Fantasy 7. I was a Nintendo fanboy when it came out so I refused to touch it, but sometime last year I saw a PC version of it for under $20. I still haven’t played it.

It’s sad when you look back on the highlights of gaming and realize that you weren’t there for even half of it. Still, I have some good memories of some good gaming, and there is no reason for me to miss out on what’s to come. B-)

Categories
Personal Development

Getting Things Done: Next Actions

I am currently reading David Allen’s book Getting Things Done: The Art of Stress Free Productivity. I am not even half way through it, and yet I am already increasing my productivity by applying what I am learning.

The beginning of the book gives a general overview of the Getting Things Done (GTD) system. I managed to pick up a few ideas, like the idea that everything that takes more than a few two minute actions should be considered a Project, or the idea of the Next Actions list. Up until recently, I simply made todo lists. I found that it helped me to remember important tasks. I was always forgetting things, and todo lists were a great tool to overcome that problem.

Of course, it didn’t take me too long to add a due date to some tasks. A game review needed for Game Tunnel? It wasn’t enough to say that I had to do it. I had to also say that it was due in two weeks. Homework #3 needs to get done? I need to know when, or else it might get put off.

This past week I started listing the next action needed on the different tasks. At work I keep a todo list of projects, but I started listing a Next Action next to each one. If a project involves building a server for someone, it might be held up because I need to learn more details about the build needed. The next action for that project is to call the person and ask about it. If I am waiting for more information about hard drives from a colleague, my next action is “Wait for colleague to get back to me.”

Before supplementing my todo lists with Next Actions, I had a vague sense of what I needed to do. Make a command line Tic-Tac-Toe game. Do the homework for my Tuesday night class. Items like this were somewhat high level, which is still good to know, but left me feeling stuck when I wanted to actually start any one of these projects.

Now, for each project I have on my list, I know exactly what I need to do in order to make some progress. And some progress is better than none. As Steve Pavlina said in his article Overcoming Procrastination “If you simply start a task enough times, you will eventually finish it.”

My current system isn’t very efficient, but it is definitely better than only a year ago when I was drifting through life. While I don’t want to get caught saying that it is “good enough” I don’t want to put off doing anything just because it isn’t perfect.

Categories
General

Sharpening the Saw Too Much

Stephen Covey’s The Seven Habits of Highly Effective People discusses sharpening the saw. The classic story is of a lumberjack working hard cutting some wood, and the foreman comes up and asks him why he doesn’t sharpen the saw he’s using to help speed up his work. The answer: “I’m too busy cutting wood to do so!”

The moral is clear: you can’t be effective at a task continuosly if you don’t sharpen your saw, usually by improving your skills or knowledge in some area. You should always supplement what you know with more knowledge. You should always be willing to learn new things.

Unfortunately I realized that my problem is that I spend way too much time sharpening the saw and not enough time practicing how to use it. I can learn all I want about test driven development or game design, but if I don’t apply what I am learning, if I don’t practice, then I just become a very knowledgable amateur. Being knowledgable means I have potential, but potential isn’t something I can directly leverage into be productive.

I’m going to set more concrete goals regarding the time I put in practicing what I learn. I don’t code nearly enough, so I can’t make any useful programs. I don’t flesh out game ideas often enough, so I can’t create useful game concepts.

At the same time, I don’t want to forget to sharpen the saw completely. I just need to start using it more.

Categories
Game Development Linux Game Development

C++ Unit Testing and Game APIs

This past week I decided to look into CxxTest. I was attracted to it since what I’ve read was that it was easy to use and highly portable. Unfortunately I found that there was no documentation on how to set it up on your system. It took me way too long to find out that this “Production/Stable” project doesn’t have installation instructions or packages to do so. Also, the Source Forge project page is very quiet. The developer apparently isn’t very active. This is disconcerting, but I think I have figured out how to setup CxxTest on my Debian system. I haven’t actually been able to use it yet, but I hope to rectify that within the next week. Hopefully it is going to be useful.

I also decided to take a closer look at two C++ Game APIs: GameBlade and Kyra. GameBlade seems to be suffering an even worse fate that CxxTest: it’s project page hasn’t been updated since January of last year, and it’s considered in Beta state! I might look at it later, but I didn’t see much in the way of documentation.

The Sprite Engine Kyra, on the other hand, looks great. It works on Win32 and GNU/Linux platforms, and the demo showed off some cool capabilities. It’s possible to have multiple views of the same scenes, with some views at different zoom levels! Scaling, color transformations, and alpha blending at per-image or per-pixel levels are just some of the other features. I’m really excited about using this engine, although I am thrown off by the sprite editor requiring hot spots and alignment since I would think these are things that I need to control within the program.

I may look into more cross-platform Game APIs, but Kyra looks to be a lot of fun and is very mature. It looks like I’ll need to put in some time to learn how to use it effectively, time that is tough to find these days, but it should be worth it if it will allow me to create games that much easier.

Categories
Geek / Technical Marketing/Business

Marketing for DLC Results

The DePaul Linux Community had the technical presentation last week on Thursday. Before I reveal how well marketing did, I’ll note some general data regarding our previous presentations:

  • there are usually only a few people who show up (between two and six non-members is normal)
  • we usually only post fliers and tell people in our own classes

The difference in marketing this time around: I sent out an email to over 20 professors.

The difference in attendence this time around: we had over 15 non-members.

Only one of them could be directly linked to an email I sent to a professor. The rest said they found out about the event through the website (a marketing tool which I will need to make sure is working to its full potential) and through other friends. I don’t know how many of those friends knew about it from my letter to a professor. Still, this is very encouraging.

Also, we found a lot of people were very happy with the event, titled “Developing for the Modern Web”. Larry Garfield did a great job talking about the wonders of CSS. Many, myself included, were surprised at the number of things that you could do with it. My favorite comment on the feedback forms we had: “Excellent presentation. Thanks for sharing this ‘untaught’ knowledge!”

Categories
Geek / Technical Marketing/Business

Marketing for DLC

I’m a member of the DePaul Linux Community. We usually hold events each quarter, and this quarter is no different.

Last year we determined that we need to do more marketing. All we’ve ever done is post fliers up around campus, and the results have been decent. Unfortunately no one wanted to be the main person responsible for marketing. Since that time, I have learned quite a bit about running a business, and I know that marketing is definitely something I’ll need to get better at if I want to do well. I volunteered this quarter, partly to help the group and partly to practice my marketing skills.

I recently finished Jay Abraham‘s Getting Everything You Can Out of All You’ve Got. At one point he describes direct mail. When I thought of direct mail before, I thought of junk mail, or snail mail spam. It still is for the most part, but I also see that it can be a valid marketing too. It’s still unsolicited, but the marketing message is in its entirety, allowing the reader to get the full message. It’s supposed to have a higher response rate, and it makes sense that it should, especially over fliers.

Today I wrote an email and sent it to a number of faculty members in the CTI school of DePaul. It basically provided the information about the different events, a link to the website, and a blurb about the mailing list we have. It suggested actions to take, explicitly asking for them to post a section of the email on the announcements page of their class websites and making in-class announcements as well.

Unfortunately our first event is only a few days away, but hopefully the turnout will still be improved by this email alone. And it also sets the stage for the next few events.

Categories
Geek / Technical

Confusion about the GPL’s Purpose

While googling for open source game development to see what was out there, I came across Jeff Dillon’s blog. In his entry on June 18th, 2004, he argues that the GPL needs to be updated because software is not being run on the localhost anymore. The example he mentions is Google. It uses Gnu/Linux but they don’t have to provide any of the changes they might make to the end user. He thinks this goes against the purpose of the GPL:

The GPL Needs Updating

This means that any online services company can use all the Open Source work they want without ever giving anything back. This was not the original intent of the GPL. The original intent was to bring progress to software by sharing innovations. Google or any other online service company can now use all open source code without ever showing anyone what they have done.

Copyright law is frequently misunderstood, and the GPL is no exception. The purpose of the GPL is not to spread innovation. The purpose was to secure freedom for the user. Google is able to do what it does because the GPL says they can. The moment they release the modifications to some other party, that’s when they will have to distribute the source (or promise to provide it upon request) as well. Does Google get to exercise the freedoms provided by the GPL? Yes. Does the end user of Google’s services lose any freedoms? No. They have the same freedoms that Google has to use the same software. If Google doesn’t release the changes they made, the end user doesn’t get to use those changes and so hasn’t lost any freedom.

If the GPL needs to be updated, it isn’t because of a need to foster innovation.