Categories
Personal Development

Hearing Pavlina is Weird

I remember when Steve Pavlina started his personal development website, stevepavlina.com, and his picture at the top was kind of jarring. It’s like any online personality, I guess. When you read the words of someone online for any length of time, you might have some vague image in your head of what they look like, but when you see a picture of the person its…well, it’s kind of weird sometimes. I remember people on the indie gamer forums poking fun at how much of a nerd Pavlina is, and some noticed he looked a lot like the famous Jeopardy! champion Ken Jennings. Others just treated it like any of us would. “Cool, so that’s what you look like!”

It’s what I thought when hearing Steve Pavlina’s voice in his first podcast. “So that’s what he actually sounds like!” It’s not the voice I had in my head when I read his blog posts and articles!

Now, I’ll say that this is the first podcast I’ve heard. Ever. I don’t have a portable digital audio player so I would have to be in front of my computer to listen to them. I’ve also heard that most aren’t of good quality anyway. I thought it was kind of jarring how he paused mid-sentence a number of times at the beginning. Perhaps he was reading from a script? Idolizing Captain Kirk? Anyway, I am very pleased with it otherwise. I may have to start looking for more personal development podcasts.

It is an introduction to personal development, and he starts it by talking about how he was in jail for three days when he decided that he could grow to “lift the weight in front of him”. He talks about all the things he “went to work” on, such as his physical energy and his skills. In a matter of years he was able to completely rework his life. And he notes that there was no quick fix. It required thousands of hours of effort. And everything he is today is owed to the main in the jail cell years ago who made a decision to grow.

Finishing this blog post, I just heard it a second time. There is something infectious about a person who is enthusiastic and positive. Even if it is weird to hear their voice for the first time. B-)

Categories
General Personal Development

Goals for September

I had made up a plan for the next year or so that gets more vague and indefinite as the year goes on. It makes sense to me to do it this way since I have no idea what things will be like in a year, but I can have some very specific goals for the end of a year, such as having at least one game published and selling on my website. I had some very specific goals in August, but they didn’t all pan out. I will have to update my plans, but I’m not dejected. On the contrary, I am very pleased with my progress, even if it was slower than I wanted. I overestimated the amount of time I would have to dedicate to certain tasks, and now I have more experience when it comes to making plans.

One thing I wanted to do was make an actual website for GBGames. Currently, the main page is very sparse. I don’t actually have any games to put up yet, but I figure it would be nice to have something better than a text file with hyperlinks. I’d just prefer for it not to look so unprofessional and amateur.

Another thing I want to do is finish Oracle’s Eye, but judging from my progress over last month, I wonder if it would be too optimistic to think I can have it completed in a second month. I have to schedule certain days as development days and not deviate from it. Certain days of the week are already taken up by meetings, and some meetups are already scheduled for this month, such as the Chicago Indie Game Developer Club Meeting being held on Tuesday, September 27th, at 7PM at Dave & Buster’s. I’m also attending the Grand Rapids Schmooze on the 15th, 16th, and 17th, and since I don’t have a laptop, those days are definitely not programming days. I can, however, doodle, write up designs, and otherwise do things that require only pen and paper.

I’d also like to incorporate by the end of the month, which I don’t think is too ambitious at all. I’ve been looking into it, and at a recent seminar an entrepreneur I met suggested that I should meet with the SBA to ask for all the information I need since they give it out freely. My university has an entrepreneurship center that can help point me in the right direction for the resources I need. There are even places to go to get free legal advice.

There are other things I would like to do for the month, but the point is that I need to get a plan on paper so that I am not wasting cycles trying to figure out what to do next or what has to be pushed off to next month. By the end of the first week of September I hope to have the month’s goals specified and fleshed out. Set some goals, make a plan to achieve those goals, and then execute the plan.

Categories
Personal Development

The Ocean Is My Limit So It Must Be Yours, Too

After Blog Day introduced me to some new blogs. I started reading through The Master Smiled and found Crossing the Ocean.

In this one, the Master points out that those who sailed the oceans first had to ignore the warnings of those who told them they couldn’t do so. He then wonders what it is that the naysayers actually were really saying.

The Master thought for a while, than he continued: They were saying: The ocean is my limit, and so it has to be yours too.

How many times has a person been told, “No, you can’t do it. No one has every done it before” and then listened? How many people wanted to become artists or poets but were convinced that they should take business courses? How many people wanted to start their own businesses but were warned away by how “insecure” and “hard” it would be?

Fewer responded to “You can’t do that!” with “The hell I can’t!”

Categories
General Marketing/Business

A Business Practice I’m Not Liking

I was on a student health insurance plan up until July. Since I am no longer in school, I can’t take advantage of it anymore. I started to look for a new insurance plan earlier that month, and I figured I would cancel my plan once I knew I had a replacement. Unfortunately the search and application process took a bit longer than I expected and so I was forced to cancel it before I had anything.

No big deal. I just sent an email to eHealthInsurance.com, my “agent”, and asked them to cancel my Fortis Health Insurance plan. Simple.

I did end up sending it a bit later than the expiration date, but I made an assumption that I had a grace period. You know, because good companies don’t terminate your plans without saying, “Hey, we haven’t received your payment, so we’re letting you know that your plan is danger of being terminated.” In fact, they did send me such letters.

So I was surprised to find a letter yesterday telling me that they cancelled my plan on July 27th, 2005. Um, it’s frickin’ September, and you are telling me this fact NOW?!? A whole month later you decide to inform me of this decision? The letter’s purpose was to inform me that they cancelled it because of non-payment. Huh?! I CANCELLED it, and obviously they should have received the cancellation since they didn’t send this letter until a couple of days ago. I cancelled weeks ago.

The best part? The letter informs me that this reason can be used when I finally do apply for new insurance from any company.

Why not inform me that the plan was cancelled, oh, I don’t know, when you cancelled it?

Recently I had a similar problem with my cell phone bills not getting paid. I received a bill that didn’t mention that my last month’s payment was received, but I assumed this bill might have been sent a bit earlier. After all, my payments were handled by the phone company since I had a payment plan that allowed them to take what I owed them out of my account every month. Up until the situation I describe below, I was very happy with their customer service.

I forgot that I received a new debit card from my bank and didn’t think to update the expiration date on record with the company. When I noticed that my bank statement didn’t match what I thought I should have paid out, I called them and found out about this situation.

You know what would have been frickin’ useful? Getting notice in some form saying, “We tried to collect payment, but your expiration date on your card is not correct.” Or if they don’t have that information, how about just, “There was a problem trying to get payment. Please call us.”

But no. I had to find out myself. I didn’t get charged a late fee, but I was wondering if I would have been if I had waited longer to call them.

Both of these situations are my fault in the end. I made bad assumptions. I forgot to update my information. I admit that these were my problems.

But what kind of a business forgets that its customers might be human and make mistakes? These two companies aren’t the only ones either. In the past few months, I’ve been getting the feeling that companies don’t WANT to do business with me. Seriously, why do I have be the one who finds out what the situation is? Why can’t the business be proactive and inform me about what I need to do if I need to do anything?

Imagine if I would have been sent a letter the day that they cancelled the plan. I would have been better prepared to do something about it, especially if it potentially has such a huge effect on my application to other insurance providers. Imagine if T-Mobile would have told me that they had a problem collecting payment THE DAY THEY TRIED TO DO SO. The problem would have been resolved then and there. Instead a month went by before I knew about it.

I’m 24 and haven’t been working with services and businesses for too long. Up until a number of years ago, I wasn’t in charge of my finances. I’m disgusted with the level of service I receive at some places. Has this been the status quo, or is it a new trend with businesses? Why do businesses think that they are better for upsetting me about completely preventable things? After all, wouldn’t they get paid sooner? Wouldn’t they keep business from going to their competitors?

Categories
Marketing/Business

Steps to Online Business Success

10 Steps to a Hugely Successful Web 2.0 Company has some of the same points I’ve read in many different places distilled into a single list. It touches on topics that have been covered in greater detail on blogs like Creating Passionate Users, such as the idea that people like to tell friends about cool things to show that they are in the know.

Categories
Game Development

Oracle’s Eye Development: Frame Rate Independence

Last time I mentioned that I had made a stick figure to move around. I implemented four degrees of movement for it, but I still don’t have a timer to make it move at a sane rate. Since this project is late anyway, I figured I might as well learn about implementing frame rate independent movement.

I actually looked at my GiD entry and found that it was handling the timer code badly. Basically, the game would update every time an SDL Event occurred. Normally the event would just be the timer callback and would run fairly regularly. But if you pressed a key or released a key, an extra update and draw would occur. Now, I programmed it to allow you to hold the key down to move so it only speeds up when changing directions and may not be as noticeable; however, if you press keys multiple times, it becomes very obvious. For my first GiD, I suppose it isn’t that big of a deal.

For Oracle’s Eye, I decided to create frame rate independence. It basically means that the rendering happens independent of the game world updates. The game can go from 30 frames per second to 100 frames per second to 15 frames per second, but the game world will still update once every 10 milliseconds or whatever I want to set it to. It should result in smoother animation and movement.

When I started this project I didn’t think that I would be working on such an “advanced” topic. It sounded a bit complex and beyond my abilities. Well, screw that thinking. It can’t be THAT far beyond what I can currently do. In fact, when I think about it, making games in general is still a challenge I haven’t decisively overcome yet, so I’m charging forth. Screw you, Pessimism!

Luckily someone just posted about this topic on the SDL mailing list and so now I have a link: Game Physics: Fix Your Timestep!. Reading it gave me some idea about what needs to be done, but variable names like t and dt and functons that come out of nowhere make it hard to follow. I was able to find another article on gamedev.net called Achieiving Frame Rate Independent Game Movement. It is a bit shorter, more to the point, and easier to follow.

Problem # 1: It is a good thing that I haven’t gotten too far with my game project because implementing this feature is going to require a redesign. I originally envisioned moving my characters about by telling them to move so many pixels directly. For example,

player->moveX( moveSpeed );

should move the player sprite to the right by moveSpeed distance. If moveSpeed is 5, then the sprite will move to the right five pixels.

It would have been fine, but with FRI movement, I would need to do something different. As I understand it, I would have to know where the sprite started and where it will end up. Then I have to calculate at any given moment where it is along that path. Whereas before I would have moved the player sprite an arbitrary number of pixels, now I will need to determine how many pixels it moves each second then calculate how far to move it per frame. If a player should move 60 pixels per second, then the total movement of the sprite in all frames in that second should add up to 60 pixels. The trick is figuring out the movement each frame.

Problem #2: FRI movement works much better in 3D than in 2D. In 3D, the actual 3D model is just math. You can interpolate the animation of the model, and it will look smooth no matter how slow or fast you run it. I’m using sprites, and sprites have only as many frames of animation as I created. Let’s say I have three frames of animation for a walking sprite. Normally, I would just update every so often and make the animation step forward each time, but with FRI movement, how do I handle the partial movements AND animate at a normal pace? I can’t update each movement because then it looks like the player sprite is running way too fast. Do I have to figure out how far it should move before each frame gets updated? Does it even make sense to have FRI movement in a 2D game?

Starting this, I felt a bit overwhelmed. That’s a lot of things to take in, and all I wanted to do with Oracle’s Eye is make a simple game. Still, I forged ahead. I figured it is better to learn about it sooner rather than later.

I found a few more articles: Main Loop with Fixed Time Steps on Flipcode and Frame Rate Independent Movement on Gamedev.net. I also found a few threads on gamedev.net that discuss “time based movement”.

It actually doesn’t seem so bad now, at least for Problem #1. In fact, I don’t have to change my existing code all that much. I changed the moveX() and moveY() functions to take floats as arguments instead of ints. I added some timer variables: one for the delta, one for the current time, and one for the last time.

In my PlayState::update() function:

gTemp_currentTime = SDL_GetTicks();
gTemp_deltaTime = (gTemp_currentTime - gTemp_lastTime) / 50.0f;
gTemp_lastTime = gTemp_currentTime;

Then for each of the directions, I just change the code from:

gTemp_player->moveX( -gTemp_speed );

to

gTemp_player->moveX( -gTemp_speed * gTemp_deltaTime );

The 50.0f is fairly arbitrary. The code I got it from used 1000.0f to convert from milliseconds to seconds, but I found that the delta almost never became anything greater than 0, which meant that nothing moved. Using 50.0f seems to be fairly fast and smooth on my system. Of course, it depended on gTemp_speed which is in pixels per second. If I set it to 50, it ran quickly. Setting it to 25 slowed it down quite a bit, but it was also jerky, and setting it to 100 made it too fast.

It also didn’t take me too long to implement it, so I got suspicious that I did something wrong. After all, it shouldn’t matter how fast the sprite is moving. I will likely have sprites moving at different speeds, so what gives?

I found yet another tutorial, and this one actually made use of SDL. It turns out that I don’t do much differently. I ended up having to add SDL_Delay( 10) to the draw() function to get it to slow down enough, but I think that is a bad kludge. I believe that the reason it won’t move the sprites between each frame is because there isn’t enough to do between frames. The time between frames looks like 0.0 and so nothing happens. The delay allows changes to happen, but there is still the ugly jerkiness every once in awhile.

The next day, I tried again. I changed it so that it will constantly loop until deltaTime is something other than 0. It worked and looked great, but I found out that I forgot to remove the SDL_Delay() line. When I removed it, it ran incredibly slowly again.

So I changed the loop. I basically checked to see if the start and end times were 1/30th of a second apart since I wanted the game to update game logic at 30 frames a second. If the difference was less than that time, I delayed. It seems to work out well. 1/60th of a second looks even nicer, but I’ll have to do more testing to verify.

Unfortunately the use of floats/doubles means that when movement gets converted to ints for Kyra’s sprite movement the precision gets lopped off. I think this loss of precision is the reason why some of the movement might look a bit jerky. Of course, Problem #2 might be a tougher issue, but I’ll have to tackle both of them another time.

I am fairly pleased with what I have done in a few hours over the course of a couple of days. To think that I originally believed that I wasn’t up to the task and would have skipped it. I win.

Categories
Marketing/Business

Software Piracy Is Not Theft

In The Escapist’s Casual Friday came the article So What’s It Worth To You. I agree with the main point. Voting with your dollars is important. When you pirate a good game, you basically send the message that the game wasn’t worth paying for and so more good games won’t get made. I appreciate Blancato pointing out that major piracy that involves companies trying to make a quick buck are the major problem, not necessarily Joe Schmoe Gamer who got a copy from his friend. I also like how Blancato mentioned that draconian anti-piracy measures will turn off paying customers. After all, if you pay for something and have to jump through hoops to play it, but the person who pirates a copy gets to just play it sans hoops, isn’t there something wrong?

All well and good, but I am still getting pretty upset that people will equate software piracy with theft. The two are not the same. Even the courts say that they are not the same. The only ones who claim they are the same are the companies who gain an advantage in making you think that copyright infringement is the same as theft. Oh, and the people who hear this kind of thinking and start to think that way as well.

One problem is that people like to make analogies with things that just aren’t like software. People compare software to cars. If I take a car, that’s theft, so why isn’t it theft when I “take software”?

It’s because you aren’t preventing someone else from “taking” software. When I take a car, there is one less car for the car dealership to sell. That’s actually stealing something. When I “take” a game, it’s theft if I literally steal the box from the retail shelf. If I instead make a copy of a CD from a friend, I didn’t steal anything, and no court will ever allow the prosecution to claim it was an actual theft. When someone makes a copy of a game or music CD, it’s illegal because of a violation of copyright. It’s an infringement on the copyright holder’s rights. Of course, if the ESA, MPAA, and RIAA all complained about the “rise in copyright infringement” it wouldn’t invoke as much feeling as “they are stealing from us!”

Software piracy isn’t as cut and dry as some would have you believe. The way some people argue it, when someone pirates a copy of a game or movie or music, it directly equates to lost revenue. It would be true if every pirated copy would be paid for by the infringer, but in reality, come on! Let’s ignore the real criminals who make many copies for the purpose of selling them since they are clearly a separate case. Let’s focus on the casual pirate. He/she might make copies of every game simply because he/she likes the idea of collecting all these games. Take away the possibility of pirating those games, and I really don’t think this pirate will have the ability to pay for it all. This pirate will just not collect as much. Pirated copies of games like Catwoman wouldn’t magically turn into revenue, I’m sure.

I’ve yet to see a real study on this issue, but I wonder just how many of these non-professional pirates would be forced to buy a game that he/she couldn’t pirate. I think that most people would just not play the game, but that’s just my hunch.

Still, you can’t say “theft” and mean “software piracy”. Yes, software piracy is serious. Yes, it can mean that a developer might make less revenue. I do not deny that it can have very real effects. But let’s call it what it is and stop trying to manipulate people. We’re grown ups now. We can handle the truth. Software piracy is copyright infringement, but it is not theft.

Categories
Personal Development

Principles of Success

Anthony Salter writes about success.

He basically found what I found: that most productivity and success gurus all know the same things. Clearly there are some basic principles to success.

Essentially success can only come to those who have a specific goal. After all, how can you succeed when you don’t know what success looks like? The next step is to make a definite plan for achieving that goal. Definitely planned work saves a lot of time and effort. Finally, take action on that plan. It really is that simple, and yet most people aren’t taught this procedure.

Salter notes that self-discipline is necessary and rare for success, but he finds that the same authors and speakers that talk about success don’t seem to say much about motivation except to have faith in God. That’s fine, but what if you don’t believe in God? Obviously atheists have had success, so what gives?

I haven’t read the same authors that he has. For motivation, Steve Chandler’s “100 Ways to Motivate Yourself” audiobook is the only productivity audiobook I have currently. Listening to it always makes me feel motivated. It even helps me feel motivated if all I do is have it on while I am driving and not paying attention to it. I think the reason is that I am feeding my mind positive thoughts. Anyway, one of the coolest things Chandler mentions is “knowing that you are enough”. No one is coming. It may sound lonely, but it is really quite empowering to realize that you are all you need. I believe in God, but I am a firm believer in Benjamin Franklin’s assertion that “God helps those who help themselves.” Rather than abdicate responsibility for your life, you should embrace it.

Will power gets you started. Self-discipline keeps you going. Motivation reminds you why you’re doing it in the first place. And all of these things will be most effective when you define success, make a plan to achieve success, and have something to start in the first place.

Categories
Geek / Technical

Good Programmers Are Lazy And Dumb?

I think Why Good Programmers Are Lazy and Dumb will find its opponents the same way that Seth Godin’s “All Marketers Are Liars” book did. The article doesn’t actually mean “lazy” and “dumb” in a derogatory way. Lazy means efficient. Make good tools to help you develop even if it means that your programming skill won’t be required anymore. Dumb means smart. Don’t accept assumptions when you troubleshoot a bug.

I personally don’t think it is correct to use the derogatory terms, however. It’s not like “failure means success for body builders”. Calling myself dumb and lazy, even if I know the real meanings behind them, isn’t very motivating. Still, it is good to identify assumptions you may erroneously have. It is also good to find the most efficient way to handle a task.

Categories
General

It’s, Uh, Blog Day

According to Gaping Void, it’s Blog Day today.
From the apparently official site:

BlogDay was created with the belief that bloggers should have one day dedicated to getting to know other bloggers from other countries and areas of interest. On that day Bloggers will recommend other blogs to their blog visitors.

With the goal in mind, on this day every blogger will post a recommendation of 5 new blogs. In this way, all Blog web surfers will find themselves leaping around and discovering new, previously unknown blogs.

Ok, cool. I’ll give it a go. I’ll head on over to Technorati, click on Blogday since apparently everyone is talking about it, and see what blogs I find there.

1. Lironbot is a graphic artist from Israel and, as it turns out, runs Linux.
2. Life Beyond Code is Rajesh Setty’s blog. He is an entrepreneur and published author.

Ok, I know the point was to find different cultures and areas of interest. So I’ll try a different tag. Um…poetry. I don’t read a lot of it, so that has to be different enough.

3. sweeti’s space had an interesting poem comparing friends to computers.
4. ….

Ok, I couldn’t find too many for Poetry that I liked. WAY too much teen angst. How about philosophy?

4. The Master Smiled is sort of like Gaping Void except instead of business card drawings there are cartoons to accompany each post. Reminds me of the stories of Master Foo from Rootless Root.
5. …

Ok, philosophy gets pretty heavy. Politics? I’m still burned out from 2004. Sports? Meh. Sex? Too risky to check while I am at work.

5. Paperback Writer is actually pretty cool. The blogger is a published author and writes about writing. Pretty cool.

Interestingly, this conscious search for new blogs alerted me to some problems. Way too many blogs are subtitled along the lines of “Joe’s Interesting Thoughts” or “Sue’s Views on Things”. Wow, is that vague or what? Mine at least mentions that I am an indie game developer. Of course, if you don’t have a focus for your blog, that’s fine, but there should be something, right? Another issue is that some blog layouts are really, really hard to read. People have told me that my blog needs to update it’s look, and I agree, but I think it is at least functional. Some blog layouts get in the way.

Also, there is way too much teen angst poetry.