Monday, October 29, 2012

Will HTML5 be the most important technology of this decade?

I am a technology "junky" and I suspect that most people who read my blog regularly or read an occasional blog post from a web search are the same. It is not easy to predict which currently used technologies will end up having a huge impact on human society, but it is fun to make educated guesses.

As much as I have been enjoying programming in Scala and Clojure (and some Ruby and Java) I doubt that improvements in programming languages and development tools will profoundly impact society, the economy, and quality of life in general.

I also don't think that new "gadget technology" will profoundly effect society, with a possible exception being very low cost smart phones in developing countries.

As you can tell by the title of this article, my bet is that the semantic features of HTML5 will have a profound effect on society. I have several reasons for this bet:

  • Semantic tags in HTML5 are minimal but sufficient for web analysis software to detect different types of content, make it easier to separate out HTML for navigation vs. content, etc.
  • Motivation: web sites with legitimate content (i.e., not link farm sites, etc.) that properly use HTML5 semantic tags will have better search engine optimization. This motivation will probably be a "secret sauce" for HTML5 adoption.
  • It has been a long time since Tim Berners-Lee and others introduced the concepts for the semantic web (I have had embedded RDF on some of my web sites for 10+ years) and despite a lot of skepticism, interest and utilization of linked data and semantic web technologies are gaining momentum.
Data specific tags for dates, locations, etc. will reduce the error of interpreting data embedded on web pages. Structural tags that allow, for example, a single web page to contain several article sections will make it easier for analysis software to split out different content for separate processing. This will increase the precision and recall of automated text analytics applications.

Of less importance than support for the semantic web, is the support for rich client applications that are reasonably portable. I believe that wide spread use of HTML5 will reduce the costs of publishing rich content.

Sunday, October 21, 2012

Clojure vs. Scala smackdown

Just kidding with the title of this post :-)

I believe in using the best tools for any given task, but this is not always possible when working with teams where most developers already know one programming language and/or framework. Also, as a consultant I usually favor using which ever tools are already used in the customer's organization.

All that said, I find that alternative JVM languages like Clojure, Scala, and JRuby are so much more effective for the projects that I work on that I have a strong preference to not use Java.

I find the decision when to use JRuby to generally be easy, using it on projects requiring fast development, web services, and as glue code for existing Java software. Increasingly though, I am viewing Scala and Clojure to be almost as agile as JRuby, with much better runtime performance.

For me, the tough decision is between Scala and Clojure. Taking Martin Odersky's Functional Programming with Scala class definitely affects my decision because I feel like I am learning best practices for Scala development and I am enthusiastic about using it for new projects. To balance that out I have bought and read four books on Clojure and I have used Clojure a lot in my work in the last several years and Clojure is a pleasure to use.

Although I have conflicted and undecided views on when to use Scala or Clojure, I do believe without a doubt that Rich Hickey and Martin Odersky have designed, implemented, and maintain two languages which blow "plain Java" away in developer productivity. For our industry, this is a problem because there are so many Java developers who are already trained using Java and Java frameworks, and there is a lot of inertia for not learning new languages, especially like Scala which has a steep learning curve.

Tuesday, October 16, 2012

A revolution in education

I am just finishing up today my course work for Andrew Ng's excellent Coursera course in Machine Learning. I am also taking two other classes that I will complete in about a month: Martin Odersky's Functional Programming with Scala class and Geoffrey Hinton's Neural Networks for Machine Learning. Previously this year I also took Natural Language Processing and Software Engineering for SaaS. I have taken the first two or three weeks of several other classes just to get a general feel for their subjects.

This morning in one of the last lectures in Andrew Ng's class he showed a precise algorithm for a problem that a customer (a media company in China) and I tried to solve about 7 years ago. We were successful enough to meet my customer's requirements but the next time I see a problem like that (involving collaborative filtering) I will nail the implementation. Every class that I have taken this year has provided many new insights, often on subjects that I thought that I was already a familiar with because of work experience.

I like to look past the enormous benefit for myself from very high quality free online classes, and consider the enormous benefits to the world in general. Just taking Andrew's class as an example, ten years ago there were perhaps a few thousands of people in the world who understood how to do machine learning and understood the craft of using the right methods for specific problems. In five years there might be close to a million people who have taken Andrew's class. This will affect productivity, world wide, and this example is just one class in one online university. Scale this to dozens of online universities with many thousands of classes in technology, health care, etc.

I don't think that it is an exaggeration to say that high quality online education will revolutionize the lives of knowledge workers and potentially help bring about revolutionary changes in the world economy.