Best Programming Language to Learn First

This is a question I see over and over again that seems to spark a debate amongst veteran Developers. It is a valid question in my opinion. When I started Programming in the early 90’s there wasn’t a lot of options available to you. I started with Visual BASIC because it was the only book at my local library targeted at teaching Programming to kids in an interesting way.

The first programs that I wrote were barely programs at all. They had no graphics and you could only use them in the Command Prompt. The reason why I took an interest in Programming was because I wanted to learn to make games. Although I wouldn’t get into programming anything graphical until much later, my games ranged from “Guess My Number” to a Battleship-ripoff to my “Magnum Opus” which was a text-based Adventure game.

The reason I rambled on about my early experiences with learning how to program was to illustrate a point. I didn’t set out to specifically become a C Programmer or even a Visual BASIC Programmer. I had a problem to solve: I wanted to make my own Computer Games. The reason why I picked Visual BASIC was mostly out of necessity, but also because it helped to achieve my goal faster and in a more direct way.

If I had picked up a book on C++ or Assembly language, I would have spent an inordinate amount of time learning and figuring out the minute details of how Computers work and use memory. More importantly, my 9 year-old brain probably wouldn’t be able to stay interested long enough to finish a game since I would be spending time debugging and fixing memory leaks.

To come to my answer to the question of which is the best programming language to learn first after a long-winded discussion I would say that it’s the wrong question to ask. Even if you know you want to be a Developer, learning a Programming Language is and end in of itself. The better question to ask is what problem do I want to solve?

If you want to make games, then I would suggest using something like Unity or GameSalad. Yes, they have a lot of drag-and-drop features. However, once your games become more complex, tools like Unity have a Scripting system where you can write code in JavaScript or C#. If you are interested in Machine Learning, then Python has a huge toolset devoted to Machine Learning Algorithms that other languages don’t have. If you decide to learn how to create your own Websites or Web Apps (God help you) then you have to become a Polyglot. This means that you are going to have to learn several languages really well like HTML5, CSS, JavaScript and PHP and Ruby for the Back-end.

To close this off, regardless of whether or not you want to become a Professional Computer Programmer or you are wanting to work on a Side-Project, start with the end in mind. The best Programming Language to learn first is the one that solves the problem that you have in the most efficient way possible. If you really just want a language to learn first and you are ignoring all of my fluffy words, then I would say JavaScript…it’s everywhere now 😉

zlib is missing necessary for building libxml2 ubuntu

Hey!

I’ve been working on some Rails stuff on a fresh Ubuntu install and came across this issue when trying to install Rails. I get the message “zlib is missing necessary for building libxml2”. Here’s how to fix it:

In the terminal run the following command:

“sudo apt-get install zlib1g-dev”

After that it installed properly and I was able to continue on my merry way!

Sensor Tower Review

I’ve been working on a Mobile App that I am hoping to release to the App stores shortly. One of the things I really wanted to get right from the beginning was Marketing. By training, I am a developer but I have picked up some Marketing skills along the way. One of the biggest mistakes people make with Mobile Apps, or any product for that matter, is not thinking about marketing from the beginning.

One of the most important things you can do for your Mobile App is to perform App Store Optimization. Like Search Engine Optimization (SEO), App Store Optimization (ASO) relies a lot on picking the right keywords to rank for. Unlike SEO where you have access to a lot of public data, the App Stores are really secretive and don’t release any data on search volume or similar data.

There are formulas you can use to estimate search and download volume. Fortunately, there are some folks who have done all of the work for you. I researched some different ASO tools and the one I will review in this post is one called Sensor Tower.

My purpose for using Sensor Tower was twofold, the first was to see if there was enough searches to make developing my app worth the cost. The second was to see which low competition, high traffic keywords I could rank for. A nice side-effect was that I could see other relevant keywords that I didn’t think of.

Keyword Research Sensor Tower ReviewThe first thing I will note about Sensor Tower is that I thought the User Interface was really clean and well organized. I didn’t really get stuck anywhere nor did I have to look up any tutorials or videos. I was able to jump right in and start using it. One thing I liked, which is a nitpick, was that when you click on an App that appears in the list of Apps that are ranking for a keyword, it opens in a new window. This is nice since I found that I had six or seven on the go and didn’t have to click the back button all of the time.

Keyword Ranking Sensor Tower ReviewBecause this is pre-launch for my app, the most useful tools for me were the Keyword Research, Keyword Rankings, and Keyword Suggestion tools. My strategy was to think of as many keywords as possible, and add them to the Keyword Rankings screen. Then I would drill a bit deeper and look at the Keyword Research tool to see what other related keywords existed. Last, I would follow that up with the Keyword Spy tool which looks at what keywords your competitors are using and what they are ranking for.

My one caveat with Sensor Tower was related to their Android rankings for keywords. The competition for any keyword was very high. I might have missed it, but I was unclear as to what their sources were, meaning do they just use Google Play or do they also include the Amazon App Store and the others that exist for Android?Keyword Ranking Sensor Tower Review

My one critique didn’t make the tool any less useful and I still gained a lot of insight using Sensor Tower for the ASO process. The biggest thing I learned is that, aside from keywords being huge in your marketing success, there are lots of low-competition and high-traffic keywords that I can rank for. The process overall gave me a deeper appreciation for marketing and promotion.

Symbols in ECMAScript 6

I learned today that ECMAScript 6 will support a new primitive type called a symbol. This is inspired by symbols from Ruby which I wrote about in this post.

For those of you who may not know or didn’t read the aforementioned link, a symbol is really just a way of uniquely identifying a property, etc. For example, let’s say we wanted to represent the cardinal directions. Now, you could just have an object with properties like so:

javascript

  1. var directions = {
  2.    north: "NORTH",
  3.    south: "SOUTH",
  4.    east: "EAST",
  5.    west: "WEST"
  6. };

Obviously a trite and somewhat inaccurate example, but bare with me. So the problem with this is that we don’t really care what the value of any direction would be. We just need a way to represent the directions in a unique way. This is where using symbols for the directions would be handy.

Here’s what that would look like:

javascript

  1. var NORTH = Symbol(),
  2.     SOUTH = Symbol(),
  3.     EAST = Symbol(),
  4.     WEST = Symbol();

Now we could just do something like:

javascript

  1. switch(direction) {
  2.     case: NORTH
  3.         updatePlayerX();
  4.     break;
  5. }

Symbols are a better way of handling situations like this since strings may not be unique and generally speaking, doing any kind of check on a string’s value is an antipattern and not recommended.

Broken Apple App Store Discovery

So this is something I’ve been ranting about for a while and I’m glad a lot of other people are too.

Many times I have been looking for an App that I heard about from a friend or saw online. I would go to the App Store and search for the app I wanted to download only to not see it in the search results. Let me restate that:

I COULDN’T FIND AN APP EVEN THOUGH I TYPED THE EXACT NAME OF THE APP!!!

This is incredibly frustrating as an App Developer to have your work virtually unsearchable in the store!

In this article, it looks like the author had similar problems:

How Broken is Discovery on the App Store? This Broken.

I really hope Apple cleans this up as this just further stacks the odds against us developers!