Programming Language Popularity

programming-skills-chart

Its good to be back this week! This week as we head into the 1 year anniversary of this blog, I would love to talk about the popularity of the various programming languages used to develop industry strength applications.

The chart above already shows the popularity of the various programming languages. This article shows the 15 most conveted programming skills.

The text that follows is a personal summary of my experiences with the various programming languages.

PHP

I first heard about PHP in 2007. Then I was on industrial training. The idea of a language where you could declare variables on the fly was appalling to the programmers in the company I was an intern in. Appalling because this were seasoned programmers who had over 10 years of real world programming under their belts.

Java

Java is one of those languages everyone knows yet few code. I was supposed to meet Java in the lecture halls of the university I attended, but our meeting was averted. Looking back, I say thank God! I swore off Java last year. Sometimes I wonder if I was wrong.

Objective C

Objective C is one programming language that I have never touched! I have never owned an Apple device so I cannot have programmed in it.

SQL

SQL was first learnt in 2007 at the company I interned at. In the first 3 months, I had gotten the basic syntax under my belt. In the next 3 months at that firm, I would be programming the Oracle database.

Android

I first heard about Android at when I was preparing for the  Samsung Applications Developer Challenge in 2010. The process of setting it up was especially painful. I have never built an application for this platform.

Ruby

Ruby is a programming language that has been around for a long time. It was never in my circle until this year when I learnt Ruby on Rails at the Coders4Africa training this year.

JavaScript

JavaScript is a scripting language. It has been around for a long time. Personally, it was with the advent of jquery that I fell in love with the language

C#

C# is Microsoft’s answer to Java. C# packs a punch!

C++

C++ is the programming language that would define the computing industry. I studied this programming language in university. However, this language is not for the faint-hearted.

Action Script

Action Script is a programming language close in syntax to JavaScript. It was part of the package when it came to developing Adobe Flash applications. I have never developed an Adobe Flash application.

Python

The Python programming language is personally one of the programming languages I would recommend for beginners. It is where Java used to be in terms of its community.

C

The C programming language is the precursor to the C++ programming language. Never done any work here.

ASP.NET

I last used ASP.NET for any project in 2010. I personally prefer PHP.

Overall, I have done some work with the languages listed here. My review later in this year would be if to go back to the Java programming language. I have not done any work with Java this year. That said the data seems to favour the language. At the end of the day, its not the programming languages but what we do with them.

Advertisements

Cavalry and Infantry

Infantry and Calvary

Cavalry may win a battle, but infantry are needed to win a war! The fate of the gaming space hangs in the balance and in the end, there will be winners and losers. I had a talk with Emeka Okoye about the future of gaming in West Africa and he passionately spoke about how the war would be decided on the mobile phone.

As you all know I love developing games for the web. For me the integration of content, development and tools on a single platform is particularly exciting. However, by the end of this year, I would have a decision to make on if I will be starting a game studio.

Don’t get me wrong! Technically I have what it takes to build a world-class game studio. The problem is the environment the industry finds itself in need of a repeatable and scalable business model. Commiting oneself to the onslaught of the coming years with no startup capital and without a guarantee of victory is either an act of faith or a form of insanity. However being a creative person, I believe it must come from within. So for the rest of the year, I will be searching my soul for if I want to build a game studio.

From my conversation with Emeka Okoye I sort of realized that by commiting to the web, I had effectively wiped out the mainstream which typically use mobile phones. In Africa, today, the two most popular phone brands are Nokia and Samsung both supporting the J2ME and Android platforms respectively.

Last year, I got frustrated with the Java programming language and swore off it! I took a lot of courage to close a door on 3 years of development in a programming language. At that time the mother company of the Java programming language Oracle had a lawsuit with Google which was against the spirit with which Java was built. That said the trends in the industry shows that Oracle has acknowledged the threat to it.

Now in the gaming space, web game development offers the freedom to toy around with game ideas in a platform that offers stability. However, the downside of web gaming in Africa is latency. Our internet connectivity is horrible! By developing games for the web only, I commit myself to a single point of failure which from an engineering perspective is a recipe for disaster.

So developing for the web means taking care of the cavalry. However occupation of territory happens due to the infantry. A small history lesson the city of Ibadan in Nigeria developed because of the occupation of the infantry stationed there by the leader of the Oyo Empire. Though the Oyo Empire  had a great calvary force, occupation was done by its infantry.

Same thing will happen with the games we develop. We can get noise (sorry I mean engagement) by developing for the web, but at the end of the day occupation will be with infantry. In tech speak: Flash and HTML5 will be how we get attention to what we do but at the end of the day if we make the decision to be relevant on our own continent, the Java programming language  will be where the occupation forces will have to be concentrated.

Tool Selection

Tools

Hello Everyone! I am happy to be back this week. Last week was really crazy so I missed a post. However, today is my 34th post on this blog and I am glad to be here! Next week will be Game Developer’s Conference and the West African gaming elder Eyram Tawia will be making a presentation. Now let no man ask him if they can enter his traveling bag because that place is already booked by me.

This week I will be looking at the tool selection criteria that I use when deciding on a tool. As a product developer, good tools should enable you get the job done and not overwhelm you. Before choosing a tool, I am honest with myself. The first question I ask myself is my level of skill. If a tool is higher than my level of skill, I will not use it. An example of this is CakePHP. While I feel is it a great PHP framework, I also feel that it is not for an intermediate developer working without a mentor to guide the learning process. So, at the end of my search for a PHP framework, I chose CodeIgniter. Now in 2 years time, my level of skill will improve. Will I then switch to CakePHP, only time will tell. So without much ado, here is my tool selection criteria.

Popularity and Community
How much buy-in a tool has from people is important. No matter how good a tool is, it does not have a future if no one hears about it. Ask Lotus Note what happened! In its day it was a vastly superior tool to Microsoft Excel. Compare that to Java in its glory days. I learnt Java because of its popularity. Back in the day, there was almost a super-cool status to being a Java programmer. In fact the hype around it made it seem like the cure for everything from world peace to HIV/AIDS and Cancer. Now did it live up to the hype? You be the judge but even to this day when I tell people that I am a programmer, the first language they mention is Java. It also had a vibrant community around it. I say had because nowadays I am no longer sure. There is a law in the corporate realm that whenever a technology giant touches an open source project, the community tends to be slaughtered at the altar of profits. When Oracle took over Sun Microsystems, this law came into effect. But it isn’t all doom and gloom. The Netbeans IDE now has support for HTML5 and for all my hatred for Oracle and what they did with the Java language, Netbeans 7.3 is a great IDE for HTML5 and PHP. What is really cool about it even if you have sworn off Java (Like I did last year) is that you can download just the modules that will enable you work with HTML5 and PHP.

Documentation and Examples
No matter how great a tool is, if the documentation reads like greek, no developer will touch it. Good tools have great documentation! A classic example of this is XCode by Apple. Now I had to do research on developing for iDevices once upon a life time and I was suprised at the level of details of the documentation. Examples also matter! I was trying to create a chart for a particular project. Using Raphael was becoming cubersome so I decided to go in search of another JavaScript Library. In the course of searching, I found Highcharts. Not only did it meet the documentation criteria, the examples on pie chart creation are in my opinion the best among all the charting libraries I researched.

Licensing and Pricing
Yes legal and accounting issues do matter. I personally love FOSS (Free and Open Source Software) but even when deciding to use a product, you must read the license! Highcharts for example is free for non-profit purposes. Now a typical developer will say this is Africa and I will agree. But scaling has a way of catching up with a developer. Once a team gets big enough, it could have a lawsuit on its hands! You can ask Samsung about what Apple did to them. For years the issues where always there but Apple did nothing. Only when they where sure that Samsung was a big enough target did they go after them. Even Microsoft is not exempt from this. In the early days of tech adoption in Nigeria, banks got their software from Computer Village (A place where you can get everything tech in Nigeria). Now this was fake software but there was no stopping the binge that had started! One day when Microsoft was sure that they had found a home on most of the banks servers, they struck! Until that time, most banks did not know that Nigeria had an anti-piracy law. In the end, a lot of money was coughed out and Microsoft‘s dominion was assured in the banking halls of Nigeria.

Easy to Setup
No matter how great a tool is if it isn’t easy to setup, I am not interested! For years, this was my argument with Android. It was always a pain to setup. Now being a spoiled Windows user did not help matters! To illustrate how much of a problem it was, when the Android team finally decided to package Android into a single setup, guess which OS users got the package?

Easy to Use
Here all discussions end! If a tool is not easy to use based on the subjective experience of the user, then nothing else I have written in this post matters. Microsoft is the definitive standard for user accessibility in Africa! I wonder if I would be a programmer by now if I had to learn to from command prompt at the start. Even among all my programming friends this trend emerges. It seems like the guys who learnt Visual Basic (A drag and drop programming environment) first are still programming while those who where introduced into programming with C++ (A command line programming environment) are no longer programmers. Don’t get me wrong, in order to really push the limits of a machine, you must use the command line. The only problem is when you are being introduced to this at the beginning when you are trying to find your feet. In truth all tools have prerequisites for usage and jumping head first into using a tool without knowing its prerequisites is sometimes a recipe for failure. That noted, good programmers also know that the fastest way to learn is via experimentation. If we are too afraid to learn how to use a tool because we are afraid that we might break something, we might as well become project managers.

That’s my piece on tool selection. If you have anything to add do drop a comment in the comments section below. With this post, I hope you also understand why I use WordPress.

Why I use HTML5 for Game Development

Game Distribution Channels

Hello Everyone! Welcome to a new month! I will be talking about why I use HTML5 for game development this week. Don’t get me wrong I know all the trends say do Mobile but I love having a Web First approach for the following reasons

Freedom

For years XNA was used by developers in creating games for Microsoft. Then one day, support was discontinued. You can read the post here. Wisdom suggests that you do not plan a trip using another person’s car. HTML5 gives you the freedom to create without worrying about whether tools will be affected by the state of a company.

Expressiveness

The web is a truly expressive platform. Check out Tweepmap by Rob Hawkes. This is a live collation of tweets from all over the world. The tools used to build it are out there all for free! I build games using HTML5 because they allow me hack out my ideas and then get down to seeking for feedback from users. The users don’t have to physically meet me. All they have to do is find the blog and post their comments.

Distribution

The starting image represents the various platforms on which we play games. Now the image shows 5 platforms. Imagine having to write at least 5 versions of the same program to deliver for the platforms. So lets look at how we would do it.

  1. Consoles :- This is where games found a home first. Today, in order to build games, you would need to know C++.
  2. Desktop :- Here the range of choices is wide! If you were to try to design for a Mac, then you would need to know Objective C, for PCs, you would choose between C++, Java and C# at the minimum. While for Linux, Java would be your language of choice
  3. Web :- Here the choice would be Flash. Apart from being propeitary software, you would effectively lose the Mobile Market
  4. Mobile :- Here the choices are… Too many to mention. Everyone who is anyone in the Mobile space is building a walled garden.
  5. Facebook :- Like them or hate them, they are a plaform for the distribution of game content

Now imagine a tool that can get you into 4 out of the 5 platforms with minimum code alteration. That tool is HTML5. With it I can reach every distribution platform apart from the console.

So there you have it. My reasons for using HTML5. This post would not be complete without a linking to this article featuring the results of a survey on the global spread of HTML5.

With this post, I say welcome to a new month!

Developing Your First Game

Freedom of choice

Happy new month everyone! Since I started game development I have gotten asked by people on how to build games. Normally my response would be “Do it and get it wrong!” however, in recent times, I have gotten a hang of the process of game development. I am still evolving as I continue to learn but I can confidently give advice on how aspiring game developers can break past barriers and finish their first game. For me it would be great if someone out there used the tips from this post and developed a game before Christmas! Enough talk on with the reading…

Begin With An Idea

inspiration

We all know what they are. Those gems that come to us and must be put down. Art above all is honesty! Ideas are the start of the process of creation. That said people seem to think that they are all that matter. Seeing an idea come to life is a gift few will ever possess.

People generally have a problem with commitment. And commitment is what it takes to bring ideas to life. So when the idea for the game hits, the best thing anyone can do is write it down! Writing it down gives meaning to an idea. From then on, the idea can be refined to make it better. Without this first step there is no breakthrough!

It is important to accept the fact that very few individuals can get truly original ideas. Ideas seem to build on top of each other. So it is important to copy ideas if you feel that would help.

Keep It Simple

This is critical! Every once in a while someone gets a good idea only to discard it because the idea is too complex. That is the reason for this advice. Simplify the idea to only one critical point! Execute on that one point and move on from there! Focus or fail!

Decide If You Should Use A Game Framework

In this post  I discuss the value of using a game framework in development. However, for beginner game developers, I do recommend learning Blender  because it is FOSS. I recommend this because I sort of stumbled into game development. Starting from scratch, I would not take the programmer route. I would learn how to create models and then when I was ready, I would learn how to program using Python which powers Blender. I say this because the programming method reveals only one side of the picture. Games are never about programming! To be exact anywhere there is an imagination, a game can be found!

Mechanics Before Aesthetics

Vision

Getting a basic picture of the game you intend to develop is more important than beautification. Game mechanics refers to the element of gameplay; how the user interacts with the game and the experience the game creates. Once the user enjoys the game irrespective of aesthetics, then it is easy to integrate aesthetics into the game. Aesthetics attracts users to a game but it takes sound mechanics to keep them interested in playing the game!

Done Is Better Than Perfect

At the end of everything, it is more important to execute than to discuss! I have met programmers who write better code that myself without a game to there name. I have also met people who cannot write code as well as myself that are doing great stuff. The key is to shine where you are and do your best everyday. It is better to be an honest fool than a lying scholar!

Conclusion

The quality that defines a successful game developer is not the number of ideas they have. A game developer develops games! It is important to remember that repetition is important when learning a skill. So be patient with yourself! Play, learn and have fun!

Using Game Frameworks in Game Development

So here we are again! 10 post left and the year will be over! I have used the IT Value Chain before, but for today’s topic, I think I need to bring it back! In my post on Bringing Ideas to Life I said that there are two options in building games. You could write code from scratch or use a game framework. This post will look at the latter option.

The first place to start when thinking of a game framework is here. This list is by no means exhaustive but it gives a good starting point for anyone interested in game development.

Choosing a Game Framework

The first consideration in choosing a game framework is the team behind it. Frameworks like XNA and Unity3D have a team behind them. Using such a framework means that you are sure of documentation and support. JGame is a very impressive J2ME game framework but since it is the work of one individual, it has not been well documented. I must state that the main problem with open source is adherence to standards. Because the code is given away, there is rarely a way to enforce standard coding practices. As a result of this, in order to use a game framework, the game developer might have to rewrite some portions of the code.

The second consideration in choosing a game framework is the platform you will be developing for. Currently, the platforms for the gaming industry looks like this

Business model

So let me list the platforms: Desktop, Console, Web, Mobile and Facebook. Contrary to media noise, the desktop is still a platform people develop for. Consoles include Nintendo Wii and XBox I remember with nostalgia how the Nintendo Wii made its entry into the market in late 2008. It sold itself! It also helped this book sell! That was the year that Nintendo as a company got back into the game market as a contender.

The mobile space is perhaps where the most noise is made. With Nokia, BlackBerry, Android, iOS and Windows Phone on the scene, the stage is set to see one of the biggest face-off in the years to come.

The Web is steadily making a case with HTML5. Years from now will we wonder how we got by without it! Facebook was where Zynga made fame and fortune for themselves. Sadly the companies fortunes have continued to decline in recent times.

Learning How to Use a Game Framework

There are only three things to consider

  1. Research :- Perform detailed research into the game framework you decide to use. Then make a selection. Once a selection is made, look for documentation and tutorials that will help you get started with the game framework.
  2. Experimentation :- Make “Hello World” examples using the new framework. Create a basic game.
  3. Development :- Take the knowledge you have gained and create your own game. Get a prototype working using programmer art and be satisfied with your game mechanics.

The above form an acronym: RED and this is how any game framework can be used.

Conclusion

So I brought in the IT Value chain for this topic whats the deal? The truth is that finishing a game makes you a Content Producer. To distribute your game, you need to an Aggregator / Host. This can be an app store or a website where people download your game. The developers of the game framework you choose to use are the Access Providers. Advertisers and Users? Well you know who they are.

Programmer Art is important when developing a game. MBA means Mechanics Before Aesthetics. And for me that is the second reason for the IT Value chain. Even though its Aesthetics is poor, it gets the job done!

That’s it on this week’s post. I have given out most of my tricks. But remember this when game frameworks fail, hard coding lives on! If you have experience with any game framework and would like to share, please take out the time to leave a comment.

Bringing Ideas to Life

Whao! Today everything conspired to keep me from blogging. Start with a project deadline that is due next week add a tiring trip home and cap it up with my preferred cybercafe being closed and you have an idea of what my day was like. Today is the 10th post on this blog! Today, I make this solemn promise “As long as you continue coming, I will continue blogging”.

10 posts! It has been a long road well traveled. Starting was difficult, now that I am getting the hang of it, I find it enjoyable to be able to share my thoughts with others. Thanks to everyone for feedback and comments. This blog would not be where it is without your help. 15 posts left and that’s it for this year! It will be exciting getting in the 13th post on this blog on the last Saturday of this month.

Next week will be Software Freedom Day all over the world. It is basically a celebration of Free and Open Source Software (FOSS). In the past years, this movement has served as a counter balance to the monopoly of software behemoths like …(No need to revisit the past) 🙂 In providing alternatives to proprietary solutions, the FOSS movement allowed people use tools that would normally be out of reach to them. As an African, my favorite business model for technology is freemium. The goal of freemium is to look at what you can get for free and the start payments for extra value. But that is not the topic this week!  So enough of Software Freedom Day and on to bringing ideas to life!

In my years of studying the process of creation, the closest model I can find is that of Robin Hobb in her classic novel Assassin’s Quest. Assassin’s Quest basically represents book 3 of the Farseer Trilogy.

The basic gist is this. A king’s domain is being attacked by pirates. Every means of mounting a successful defense fails. In this world, there exists two kind of magic: The Wit and The Skill. The Wit enable communication and bonding with animals while the Skill is for human beings. The Skill holds a final secret: The secret of transmutation of how a dragon can be carved out of stone!

In this world those with the Wit are killed when they are caught. The narrator of this story is Fitz Chivalry the bastard son of the former crown Prince Chivalry who had to give up his throne once it became known that he was father to a bastard. The narrator is unlucky in that he is blessed with both the Wit and the Skill. Because of the power of the Skill, instruction in its usage is meant only for royalty. Think of the Skill like the force in Star Wars.

In the course of the story, the new king tries to build a coterie to help him. A coterie is a team of Skill-users who are at the service of a Skillmaster. All to no avail! Finding some scrolls, the new king Verity who is the brother of Prince Chivalry uncovers details of a garden where one of his ancestors went to for help when the kingdom faced the same pirate problem. In the garden are sleeping dragons and stones to carve new dragons.

The preferred option is to awake a dragon because for a dragon to be carved, a human being must lose his life. Unable to awaken the dragons, Verity has to carve his own dragon. In order to do so, Verity transfers all his memories, passion, pain and frustration for his dragon to take be able to flight. In the end, he transfers his life force into the dragon and dies. Fitz Chivalry however finds out that to awaken a dragon requires the Skill and the Wit used blood. So he and his bond animal a wolf succeed in waking up the remaining dragons in the garden.

So how does this book relate to bringing ideas to life? In a lot of ways. The characters in this book had to act despite not knowing all the details. When Verity left home to carve his dragon, he had no idea how to go about it. With no teacher or mentor, a lot of mistakes where made. To try and save his life, Verity even asked Fitz Chivalry to try to awaken the dragon and even he did not know! Only after an accident when an assailant died on a dragon did he realize how to awaken a dragon. By that time, Verity had died!

In making his dragon, Verity had died. By accident, a dragon had been awakened! The truth is there is no “right” way to do anything in a new and emerging field. There will be plenty of “accidents” along the way. But by committing to the mission and acting despite doubt, the odds of success increase. That for me is how ideas are brought to life. In closing this post, I will end with a quote from Johann Wolfgang Von Goethe. I call it the Magic of Commitment. With this magic, ideas can be brought to life!

“Until one is committed, there is hesitancy, the chance to draw back, always ineffectiveness. Concerning all acts of initiative (and creation), there is one elementary truth the ignorance of which kills countless ideas and splendid plans. The moment one definitely commits oneself, then providence moves too. All sorts of things occur to help one that would never otherwise have occurred. A whole stream of events issues from the decision, raising in one’s favor all manner of unforeseen incidents and meetings and material assistance, which no man could have dreamed would have come his way. Whatever you can do, or dream you can, begin it. Boldness has genius, power and magic in it. Begin it now.”