Success Is Found By Not Limiting Sources Of Inspiration

A lesson that I learned again recently – inspiration can come from anywhere. I have been working on several projects lately and also taking some time to learn new skills and also refresh some old knowledge. During those attempt to refresh old knowledge I fell into a rabbit hole of going through old games that I used to play. When I say old, I mean old. Most of these I had had played on my old Apple II back in the 1980s. Needless to say, many old memories came flooding back. But, also, I was able to see things that were done with games back then that kept my attention and kept me playing. These games were made decades before micro-transactions, and years before the internet would start to shape our lives. They had to focus on the gameplay itself to keep our interest and there is a lot to be learned from that.

In my case, I was reminded how much humor and curiosity for what would come next drew me in. Spare Change on an Apple II emulator was the game that prompted this post.

A screenshot from the Apple II version of the game Spare Change

The goal of Spare Change was simple – collect coins while trying to keep the robots from stealing them. The robots themselves were quite funny. They would perform various silly moves as they stole the coins, including passing between each other, running into each other or kicking the coin into their piggy bank. If they collected too many coins the game would end. Also, of interest were short cut scenes involving these robots and their silly antics. But a feature that kept me wanting to play the most were the various items on the game board that could be used to distract the robots. They loved watching Popcorn popping, or dancing to the music on the jukebox. On some levels you have get them to talk to each other using the pay phones. Now, these distractions would cost a coin, so you had to be careful to not waste too many coins. This became more of an issue as the levels went on. But, it all led to the player wanting to keep playing in order to see what other silliness could happen along the way.

So, what does a 40 year old game have to do with my current efforts? It caused me to rethink my own game that I am currently working on. I have since made an effort to add cutscenes along with items for the player to collect. I should back up and explain the game a little bit – it was essentially a demolition derby game using various geometric shapes to battle.

The images above show a little view of what the game looks like. It also shows a shot from one of the cut scenes that can be found in the game. I am proud of how the game is turning out. The sides on the shapes turn red as they get damaged until the player dies if the damage becomes too great. Once an enemy shield is destroyed, you have the chance to steal their fruit. It is the fruit that is necessary in order to advance to the next level – by making an epic fruit salad to impress your alien overseers.

You can clearly see how playing a close to 40 year old game inspired a new game. If I hadn’t taken the time to play Spare Change, my game would still be the original Geometry Derby game in which you would simply crash into shapes until you finally died. It was somewhat fun even if it did get a little boring over time. The new version is one that can easily hold interest for a far longer time.

So, to bring things back around – don’t be afraid to look for inspiration everywhere. You never know what might contain an idea for a future project.

Learning To Code – Learn, Try, Fail, Repeat Until You Succeed.

I have been programming for longer than many readers of the blog have been alive. Learning new things has always and will always be a large part of what programming actually is. It is one thing to get comfortable with a language, it’s another to fully understand why things are working they way they work and how you can use that to better your code.

I started in the mid 1980 working on an Apple IIe using BASIC. It didn’t take long to learn that BASIC wasn’t considered a great language by any stretch. It had a tendency to create bad programming habits. But, it did solidify many central programming ideas. I fully understood loops, conditional statements, variable, and boolean logic among other topics. I could come up with an idea and build it in code within a short time. It’s great to have “perfect” code, but it’s even better to see your ideas working.

A basic template to succeed in learning: find a project, learn, read, try, fail, learn more, try again, repeat until done.

That’s why for this post I’m really pushing the idea that you find a project that interests you. It can be anything – ideally, not too complicated, but still a challenge. I don’t recommend trying to build a Facebook clone for your first project, but make sure it’s more involved than “Hello World.”

Once you have a project, then start to look into how to implement it. This is where you’ll have to pick devices and languages you plan to use. Sometimes, your initial goal will point you in a certain direction. If so, then follow that lead. If not, that’s okay. Look into your options and find out what will be the best suited for your project and also your future hopes. To rephrase that, don’t learn PASCAL if you hope to write mobile apps. It might be possible in some roundabout way, but it isn’t worth the extra hassle.

Once you have a basic idea for the project and how you plan to implement it, continue to read up on the language and how to use it. Once it begins to make a bit of sense, then start to write some code. Start small. To begin, focus on some aspect of your project that you can make work quickly and without much hassle. For me, this usually becomes obvious as I start to learn a new language or device. I will often learn some aspect of a language or device that will fit with my planned project. I can then use that information in order to make a part of it work. Sometimes, it’s just a part of the interface, other times it is a mathematical or logic part. But, the key is to make it something that you can play with and see the results quickly.

That is an important aspect of learning – seeing the results of your labors as soon as possible. It helps in a couple of ways, you solidify what you are learning, but more importantly you get to see the results of your lessons. Those two things make it easier to go onto the next steps in learning – failure. It is a given that your first attempts will have problems. They might run and kind of do what you want, but it is rare that they work fully right, or give you what you are hoping to have in the end. That’s okay. Failure is the best teacher.

The next key is to take your failure and turn it into a success. You do this by continuing to try. This will involve continuing to education yourself more on the language and the devices you plan to use. It will also involve you learning new things in order to improve your first attempts. You might not written the best program or made the best app, but you will have made something. And as long as you have something, you can improve it.

Just keep learning! Just keep failing. Just keep trying again and again. You can do this.

A quote that I found years ago:

“Make sure that your next project is beyond your skill and requires tools you don’t have. You won’t regret it.”

Programming Suggestion of the Day: Test Test Test!

Assuming things work just because you can run a program and not have it crash is a sure path to failure.

If you are using automating testing, that will catch a lot of issues before they become a problem – provided that you did a good job with your test coverage. But, either way run your program many times. Make sure to test every option, or combination of options. Try things that don’t make sense – put words in a number field. Try to break your program, and when you are done with that get it in front of other people and let them attempt to break it also.

Only then can you begin to feel confident that your program will do what you expect it to do and users won’t run into issues.

Well, I should back off that last statement – errors will still manage to show up and people will find them like magic. It is amazing how many things manage to get missed even after thorough testing.

So, just keep testing. Even if you think you’ve tried everything, try a few more things.