Archive

Archive for March, 2009

My predictions

March 21st, 2009

Professional interests I have are not only due to technical curiosity, but also due to many advantages and a lot of potential I see in those areas. Here I do my predictions for some of them.

1. Erlang

Erlang will be becoming a more popular programming language and not only among individual enthusiasts, but also in software companies of different sizes. Its adoption rate will go up during next few years.

After working about a decade in telco on different products using traditional imperative programming languages I started appreciating capabilities of Erlang/OTP for building highly reliable, fault-tolerant, distributed systems. This is so essential and necessary for most of the telecom systems. And of course it all is applicable in many other domains. It is really a pity that I didn’t find Erlang much earlier. It could have been a great choice for us. We spent so much effort in trying to achieve required “-ilities” using C++ and Java.

Erlang has a long history and it already has enough technical merits but we need more killer applications. There are good well known examples but we need more, more, more! Frankly I don’t think we need to prove anything to engineers, but mainly to managers and C-level executives.

2. Scala

Similarly to Erlang, Scala will be getting more attention; companies will start showing bigger interest to it, adoption will grow and probably even faster than for Erlang (although personally I find Erlang unbeatable in certain areas). Scala is object-oriented language, it runs on JVM and existing Java ecosystem can be fully reused, these factors will make the transition of an army of Java developers much much easier. But only in combination with its functional aspects and extensibility feature (this is a killer!) Scala will really become a favorite language for many professionals and that mix will fasten an adoption in the software community.

I also expect that small to medium-sized software houses and consulting firms will adopt both languages pretty soon (if not yet already) and start hiring programmers with Erlang and Scala skills to be on the edge of the latest developments.

For any programmer I advice to have a serious look at both languages.

3. The Web

The Web will become a prevalent platform for machine to machine interactions. Note that here I am talking about true Web based integrations which involve building applications and services according to RESTful principles.

No matter how WS-* related standards, solutions, tools will grow in quantity, the Web will find its way to companies and enterprises. It will certainly take some time, because many engineers still have to gain a proper understanding of REST/Web/HTTP.

4. Semantic Web

In this list this is the area that will require more time than others to get a broader adoption and understanding among individuals and companies. But I still believe in the ideas and goals Semantic Web is trying to achieve and there are already examples how it has been successfully applied in real life. Many web sites, applications and services in different areas will enrich their datasets with semantic data.

I am still to see the adoption of SemWeb technologies in, say, telco domain. In general I am looking forward to Semantic Web-based integrations.

Even if you are not using it today, still keep your eyes open on Semantic Web technologies and related standards.

Uncategorized , , , ,

What is clean code?

March 3rd, 2009

In the beginning of his book “Clean Code” Robert C. Martin asks this question from six very well known people in the software world (Bjarne Stroustrup, Grady Booch, Dave Thomas, Michael Feathers, Ron Jeffries and Ward Cunningham). Some have short answer, others more lengthy comments. Most of the people provided a list of different properties of a code which would qualify it as a clean code (and that is perfectly fine definition), but I really like the most and consider it the best definition a comment given by Michael Feathers, that is “clean code always looks like it was written by someone who cares“. It feels so damn right!

Uncategorized ,

Web Hooks

March 1st, 2009

Just came across Web Hooks. Looks like a new emerging concept (although the term was coined in 2006). But technically there is nothing new. Web hooks are just user-defined callbacks over HTTP. To support web hooks a web application should let the user to specify URL, to which that application will POST data when events of the user’s interest will occur. It is kind of a push mechanism from a server to a client, which is opposite to polling that is used an example for updating feeds.

What I like about it? First, that it is on the Web, over HTTP. Thus we can avoid, say, XMPP for some scenarios (though it might be wrong to compare them directly because XMPP is a protocol and web hooks are a pattern). Then web hooks nicely can be used in machine to machine (or server to server if you like) interactions. And another important point is that it’s all about integration! Not just providing notifications (you could use email) / pushing, but being able to integrate web applications and extend their functionality.

Though I have a couple of remarks on this topic. I don’t really like a word “callback” in this context. To me it sounds too RPCish. So that with a web hook we are trying to invoke some method of another application. I still hope it is not the case and rather we should deal with resources and their representations. Basically I mean we should use web hooks RESTfully. Secondly, why it is only about POSTing to the user’s URL? Of course, we need it for sending a notification, but why not to extend the concept to utilize other HTTP verbs in order to be able to build richer applications. There might be interesting cases for using GET and also DELETE. We could therefore extend existing functionality into new dimensions and create nice orchestrations of such web applications.

Uncategorized ,