Published in December 19th, 2011
Last year, I wrote a post entitled 9 Programming Languages To Watch In 2011. Now that 2011 is basically over, let’s see what happened to these languages over the course of the year. As a reminder, these languages were selected because I expected to see larger than average movement, either up or down. So, there is no Java, Ruby, Python or Objective-C. There are no other typically mainstream languages in this list.
First, here are the comments I had on each language:
- Lua – The language is seeing some good activity on GitHub and StackOverflow. It has a solid Tiobe ranking, but more importantly, jobs for Lua are becoming available. The relative trend for Lua is a great indicator that it is ready to go mainstream.
- R – With data analysis and big data becoming a part of every web startup, languages catering to the data crowd will become popular. The job trend data will be the most interesting part to watch here.
- Clojure – While not popular within the Tiobe index, it is popular in some programming circles. In particular, its job trend growth is showing that it could be posed for a big year of adoption.
- Go – Only Tiobe really shows this as a popular language. It is not ranked well in the Dataist Tier, and job trends are not very reliable yet. However, with a parent of Google it may not need purely organic growth.
- Erlang – This has been around for a few years and has decent trends all around. With the continued growth of real-time technologies like XMPP (eJabberd specifically), PubSubHubbub and others, 2011 could be a year where it becomes the next Python.
- Scala – This is one of the interesting trends. Scala has a very good showing in the Dataist Tier, but is not really ranked in the Tiobe index. With the solid job growth trends and popular adopters (i.e. Twitter), Scala could gain a serious amount of acceptance.
- Groovy – More than anything, I believe Groovy missed its window of opportunity. It is a solid scripting language with decent job growth trends, but how can it differentiate itself from Ruby, Python, Erlang and Scala?
- Scheme – For whatever reason, this language refuses to go away and has even picked up some interest. Without decent job growth, we could be another year away from Scheme breaking out again, at least 30 years after it broke out the first time.
- ActionScript – ActionScript is included in this list because of its high ranking on Tiobe and the Dataist Tier. However, the job trends do not point to good things for the language. It could be a temporary slump, so you should keep an eye on it next year.
So, what happened in 2011? The job trends give us some level of corporate demand. One minor note is that the job data is somewhat noisy and difficult to grab for some languages. Go and R are not in the list because of the difficulty of getting any reasonably sane job demand. Scheme is still included, but it is still fairly noisy data. The following chart shows the
raw demand for the remaining languages:
As you can see, ActionScript continues its decline, and it has started to decline more rapidly. Scheme, even with the noisy data, is fairly flat. Groovy is showing solid growth over the past few years, and Scala demand seems to be increasing quickly. Lua is only showing slight growth, outpacing Erlang and Clojure.
This is where things get interesting. As you can see, both Lua and Clojure seem to be exploding, but that does not yet translate into large job demand. Also growing rapidly, and at almost the same rate, are Scala, Erlang and Groovy. Scheme and ActionScript have no relative growth compared to the others, as is expected.
The
TIOBE Index for December 2011 was recently updated, so it also provides a good comparison. In addition, I compared the activity from GitHub and StackOverflow in order to get a broader picture of activity.
- Go (Tiobe: 34 , Change: -13): The TIOBE rank crashed, going down 13 places. The relative activty on StackOverflow and GitHub decreased as well. Even though Google is the source of the language, it does not seem to be grabbing a lot of more mainstream attention.
- R (Tiobe: 24, Change: +2): The TIOBE rank increased a few places. The StackOverflow and GitHub activity decrease a slight amount, but nothing significant. Given that R is not really considered a general purpose language, its popularity is still somewhat surprising.
- Lua (Tiobe: 21, Change: +6): The TIOBE rank increased solidly, though not as quickly as others. The GitHub and StackOverflow activity decreased a bit, contradicting the TIOBE index. However, the job trends above are very good, so we should continue to watch Lua in the coming year.
- Scheme (Tiobe: 30, Change: -1): Not surprisingly, the TIOBE rank did not change much. The StackOverflow and GitHub activity did not change much either. With the growth of some of these other languages, the need for Scheme is not really obvious anymore. In addition, the job trends are not positive for Scheme either.
- ActionScript (Tiobe: 50-100, Change: ->13): As can be expected, the TIOBE rank for ActionScript declined a lot as it dropped out of the top 50 and into the 50-100 bracket. The job demand shows a similar downward trend. StackOverflow and GitHub activity did not change too much however. I would guess that 2012 will not be a good year for ActionScript.
- Erlang (Tiobe: 29, Change: +20): Showing possibly the biggest gains of the year, the TIOBE rank increased a ton moving up 20 places. The StackOverflow and GitHub activity did not match this growth. The job trend information is definitely showing positive signs, so Erlang is a language to keep an eye on.
- Groovy (Tiobe: 45, Change: +>5): The TIOBE rank increase is somewhat unknown as Groovy makes an appearance in the top 50. StackOverflow and GitHub activity increased as well. The big difference is shown in the job demand, where Groovy has shown really solid growth trends.
- Scala (Tiobe: 50-100, Change: 0): Given that Scala did not break out of the 50-100 tier on the TIOBE index, we cannot estimate growth there. Overall, the relative activity on GitHub and StackOverflow did not change much either. The job trends show a different picture as job demand definitely grows at a solid rate.
- Clojure (Tiobe: 50-100, Change: +?): Clojure moved from the 100+ tier on TIOBE to the 50-100 tier, so there is some solid but unknown growth there. Oddly, the activity did not grow much on StackOverflow or GitHub. The raw job trend information is not great, but the relative growth trends are fantastic. Closure could have a big year in 2012.
So, what’s in store for 2012? Well, I am planning to review more programming language data to get a better idea on trends and mainstream adoption. If you have an idea for other data sources besides TIOBE, Indeed, GitHub and StackOverflow, please let me know in the comments.

Published in December 12th, 2011
I had no idea when I started this blog that it would last past a few months. Now, four years later, I am still blogging albeit a little slower lately. This year saw a typical blogging funk late in the year, mostly due to a lack of time, but also due to fewer big announcements and more smaller product iterations.
So, the top 11 posts written this year were:
- 9 Programming Languages To Watch In 2011
- Traditional Programming Language Job Trends – February 2011
- Web & Scripting Programming Language Job Trends – February 2011
- 5 jQuery Scripts To Create a Great First Impression
- Twitter Stops Whitelisting Applications
- Google Plus Looks Good But Needs An Application Platform
- Traditional Programming Language Job Trends – August 2011
- 13 Free GTD Online Tools For Mac Windows OR Linux
- As A Software Engineer, Do You Really Like Your Job?
- Google Sites Becomes A Real SharePoint Competitor
- 36 Resources To Help You Teach Kids Programming
Why 11 posts? Well, the top post was written one day before the anniversary last year and most of the traffic occurred after the anniversary. The job trends posts continue to have a strong showing regardless of when they were written. The social posts still tend to appear but they are more programming related as well. This continues a trend from last year.
Other posts that were very popular from previous years:
My total statistics at the end of year three show that I was already writing long posts:
- Months Blogging: 36
- Posts Per Month: 11 (400 posts total)
- Words Per Post: 851
- Total Words In Posts: 339528
I continue to go against common wisdom and write posts that are even longer:
- Months Blogging: 48
- Posts Per Month: 12.3 (180 posts this year, and 580 posts total)
- Words Per Post: 887
- Total Words In Posts: 514328 (174,800 words this year)
This year saw the introduction of my list posts (93 so far) in the Geek Reading category, and the subsequent demise of those posts with the changes in Google Reader. I do hope to restart those posts when I can determine the best way to implement them. Ignoring the Geek Reading posts, my blogging was technically slower than last year, with 87 posts or just over 7 posts per month. I continued the trend of writing far too many words per post, but people keep reading.
The other side of the blog statistic picture is the external statistics. This past year, the blog had solid traffic growth and good subscriber numbers. Technorati continues to change how their rankings work where my ranking in Technology and InfoTech seems to range from 500 to 5000 and 100 to 2000 respectively. Google changed how their search engine worked again, and that seems to positively impacted traffic to the blog. Feedburner finally dropped FriendFeed from the subscriber numbers, and it recently peaked at 3010 subscribers.
The social landscape continues to change as much of the social sharing has been wildly different than previous years. I no longer see traffic from Digg or Google Buzz, but I now see traffic from DZone, LinkedIn and Google+. Facebook and Twitter look to be mainstays in social for any blog.
As always, thank you for your continued reading and social sharing. Hopefully, this blog will continue to be useful to you.
Published in December 10th, 2011
This past week, both Google and Facebook made more announcements regarding their ecosystems. Google is slowly integrating Google+ into everything, this time adding features into GMail and Contacts. For GMail, you can now share photos directly from within a message. Contacts are now showing your Google+ circles as additional groups. Facebook launched a new subscribe button for websites. This new button is similar to the Like button:
The Subscribe button for websites works just like the button on Facebook; once clicked the user will begin seeing the public posts of the person they have subscribed to in his or her News Feed. The subscribe action is also shared — allowing others to subscribe directly via the News Feed stories, and further increasing viral distribution.
So, the subscribe button is Like 2.0, where they added “frictionless sharing” to the original Like button. By themselves, these two announcements seem like basic iterations of various product features. However, you need to look at these posts within the larger scheme of things.
Google is integrating Google+ with all of its products. Some people did not think adding a “social layer” on top of the applications would be a good thing, but we are being proven otherwise. The idea is very similar to the frictionless sharing that Facebook has been talking about. Being able to quickly +1 and share from other Google sites, like YouTube, and within GMail means that more activity can be generated easily.
Facebook is learning that the simple Like is not quite good enough. Sharing is the main way content goes viral. So changing the way Likes work, and making things move towards a full share helps with “viral distribution”. Obviously, making sharing easier would be a huge win for Facebook if users can control what content is shared with what people.
However, there are problems with both systems. Facebook has a huge user population. But the user sharing control is not entirely seamless. Groups and selective sharing are not really core to the functionality, but add-ons. Facebook users are also not used to sharing with groups as much as just sharing with people that are friends. Google does not have as many users, and has had its own share of privacy issues. However, their selective sharing circles have been baked into everything. So, once you started using Google+ you were always using Circles. But Google+ is not without problems. Business pages are still evolving after a very shaky start.
Both systems are providing frictionless sharing, while giving users some control over who sees what content. So, which system should you choose as a user and as a business, blog or website? Obviously, the answer is both, but whether either system wins comes down to how the integration points really work. The integration points are things like the plugins for websites and blogs, developer APIs to help build an ecosystem of third party applications, and the mobile platforms.
Website and blog plugins exist for both systems and only provide minimal integration. Third party applications and mobile platforms are where the systems can really try to differentiate themselves. Facebook’s API platform has existed for a longer time, and social gaming has really grown rapidly. Google+ is still developing their API, which has some glaring holes, but they started their platform push with social gaming in an effort to jumpstart development activity.
The difference may be found in the mobile platforms. Facebook has a solid API and some mobile applications. On the other side, Google has Android and its tight integration with all things Google. This could be a huge advantage for Google as the mobile industry, as well as Android adoption, is exploding. Google+ even has a very nice mobile application.
The APIs may be a large part of luring developers, but even developers want to get paid. Monetization will be a huge question when choosing between the platforms. Google has a history of trying to be more developer friendly than their competition, or at least not as controlling as their competitors. Facebook has already shown that developers can monetize the Facebook platform, with Zynga being the poster boy for Facebook monetization.
Will developers choose the winner, or will a huge existing user population choose the winner? Will ease of monetization point to a winner or will mobile integration be the key? Do we really need a winner or will these two behemoths decide to provide integration across the platforms?
Published in December 4th, 2011
Lately, more services have appeared with the hope of showing who has experience with various technologies. The idea is meant to solve two problems. First, influence is a hot topic right now, with people focusing more on general influence and sites like Klout or PeerIndex. How do you find people that know about things like HTML5 or JavaScript and JQuery? Outside of the people that wrote a book or wrote the framework, how do you find those people that are truly knowledgable? The second problem is the recruitment and hiring process. In the technical industry, recruitment and hiring is big business. Given the amount of turnover in the industry, those recruiting fees can really add up. In many cases, companies need to pay as much as 10% of the starting salary for the new employee to the recruitment firm. If the average placement makes $100,000, that means the recruitment firm takes $10,000 per position.
Due to these issues, more sites are appearing with the hopes of “fixing” these problems. Some sites use text recommendations or endorsements, like LinkedIn, while others use slightly different approaches. The question is whether any of these new sites really improve upon the current recruitment situation. So, let’s take a look at some of these ideas.
First, we have the recent announcement from Mozilla regarding a competition:
A system proposed earlier this year by the Mozilla Foundation will be the basis of a global competition. As much as $2 million in grants from Mozilla and the MacArthur Foundation will be awarded to interested parties, in amounts ranging up to $200,000 apiece, who can propose a technical infrastructure and/or physical appearance for what Mozilla describes as a standard system of verified icons for representing individuals’ Web developmental skills.
Mozilla is trying to generate interest in a “standard system of verified icons for representing Web development skills”. There is part of this that is good, the fact that they are focusing on only web development means that there is a chance this type of initiative could work. This could be similar to the badges that the HTML5 technologies have created. The obvious problem is how do these skills get “verified” or more directly, how does a person put one of these icons on their site and how can other people be sure that this badge means something?
What about the sites that focus on this type of thing, those sites that are creating communities around skills? Here are some of the sites that I found and what they say about themselves:
- Path.to – “We love meaningful endorsements based on skills, rather than generic endorsements. We’ve engineered an endorsement algorithm to identify the most skilled people across industries.”
- Geekli.st – “Geekli.st is an achievement-based social portfolio builder where all bad-ass code monkeys around the globe can communicate, brag, build their street cred and get found. We founded Geekli.st because it was time for a united front, exclusively for developers, to build tangible credibility in the workplace.”
- Zerply – “Zerply is a professional network built around people who love what they do. We believe that professional networking can be done differently.”
- Endorse.me – “With Endorse.me, You will get your own page to create categories to place people from your social networks that you endorse in. Then you share your page for others to see. The idea came to us, because people constantly ask us for Designers, Developers, Angel Investors, or lots of other things.”
- Skillshare – “Skillshare is a community marketplace to learn anything from anyone. We believe that everyone has valuable skills and knowledge to teach and the curiosity to keep learning new things… Our platform helps make the exchange of knowledge easy, enriching, and fun.”
You will notice that I did not include any of the “business card” sites like About.me or Flavors.me as their focus is much smaller than these community skills sites. Another minor note is that Skillshare just recently added badges, similar to the Mozilla concept, and is more of a tutorial site, but I included it due to its popularity. In each of these sites, you have a way to endorse other people or even brag about your own work. The community building aspect is not entirely focused upon, as the sites all seem focused on who are the talented people with a specific technology. Can badges and endorsements fix the developer recruitment problem?
Each of these sites has there own problems. First, there is the issue of critical mass. All of these sites need much more user adoption in order to become really useful. Second, the idea of endorsements that are just “thumbs up” can easily be gamed, and even text endorsements cannot be completely believed. Third, endorsements (or plus-ones) tend to cluster around more popular people and not the people that are in the trenches, but not web-celebrities. As an example of what I mean, Joe Stump and John Resig do not need endorsements as many people know about their skills. However, there are many developers that do not get that kind of popularity because they did not create jQuery or they do not blog.
Are any of these sites better or more appropriate than LinkedIn? LinkedIn does give you the ability to search the connections for people that have actually worked with you. Ignoring that information means that you really need to build everything from the ground up. It does not make sense to try to build the network given the various networks that already exist. The endorsements are only marginally better than LinkedIn endorsements, because these sites are more developer focused.
The problem with much of the recruitment issue is that development experience really needs to be seen. Geekli.st has an interesting feature where you can “brag” about the work that you have done. I am not sure if this is what we need, but moving closer to a portfolio of work may be more useful. However, how does a server-side Java developer show their portfolio? You may be able to show an API that was created, but that does not show what your work was really like. Eventually, this problem degrades back to describing your work.
So, the real challenge is how we can use networks like LinkedIn, along with some endorsements, to understand how good a developer really is. Some of this is in a developer portfolio, but how do we “see” the infrastructure of an application? You can talk to any developer, and we all know that this needs to be fixed, but how can we fix this?
Published in November 24th, 2011
Like many software developers, I have toyed with many languages over the years. Some languages have grown in popularity and others have waned. Today, I would like to give thanks to those esoteric, arcane, rare and industry changing languages in a nice A-Z listing. Some are old, some are new, some are popular, some are not and some are just plain odd. However, without people trying to create these languages, we would never see any innovation. So, let’s give thanks to all these languages.
- A is for Algol 60, which can be considered the father of structured programming languages.
- B is for BCPL, which we can blame for the travesty that is C.
- C is for Clipper, and we hope you never used it.
- D is for Dylan, which is like LISP without parentheses.
- E is for Eiffel, which has some cool features that still are not in Java.
- F is for Factor and Forth, because everyone loves stacks.
- G is for Go, as proof of what happens when Rob Pike and Ken Thompson get bored.
- H is for Haskell, one of a host of functional languages.
- I is for Inform, giving life to interactive fiction.
- J is for Java, because so few languages start with J.
- K is for KRL, a frame-based knowledge representation language.
- L is for LISP, because we love our silly parentheses.
- M is for Modula-2, mainly because you probably didn’t know there was a Modula or a successor named Modula-3.
- N is for NATURAL, which I have never actually seen used, just discussed.
- O is for Oberon, because Objective-C gets too much publicity already.
- P is for Prolog, progamming logic never seemed so fun.
- Q is for Qt, although it is more of an application framework.
- R is for REXX, an interpreted glue language inflicted upon us by IBM.
- S is for SNOBOL, one of the first string processing and manipulation languages.
- T is for Tcl, which eventually grew a Tk appendage.
- U is for UNITY, because parallelism is cool and flow control is for the weak.
- V is for Verilog, a hardware description language.
- W is for WebGL, bringing OpenGL to JavaScript.
- X is for XQuery, because even XML needs a programming language.
- Y is for Yorick, and all those graphs and simulations.
- Z is for Zsh, one of the many Unix shells.
Lastly, many thanks to Wikipedia for the “History of Programming Languages”, “List of Programming Languages”, “Timeline of Programming Languages” and much information about the languages themselves.