Two months ago I was asked for an interview for the popular Italian programming magazine
Io Programmo. Haxe made the front page with a 6 pages review plus the interview. Since it was in Italian, I got the permission to publish the (original) english version here, in case it might interest some of you ;)
Who is Nicolas Cannasse: studies, interests, job(s).
I'll try to make it short :)
I'm almost 30, I've been programming since I'm kid (first in Basic, then Pascal, then C/C++/ASM...) and did some additional CS studies in Bordeaux.
My main interests are programming languages and virtual machines (design and implementations), but also video games (both technologies and game design).
I've been working a bit in Japan, but came back to France where I co-founded Motion-Twin. This is a small company (11 people right now) and we're doing web-based games in Flash.
I have also a lot of interests in open source, japan pop culture and geopolitics but that's another story ;)
Haxe is walking on a new path of developing; while java used the "write once run everywhere" and .net preferred a "write using the language you prefer , but run only on our platform", Haxe is taking a different approach, like a "write once, compile/deploy/run as you like", it looks like an octopus: when, and why did this idea flash in your mind?
Also, every language usually comes with its own platform, and is then lock-in its users from doing something else. If you're learning Java, you'll have to use the JVM, if you're learning ActionScript3, you'll have to do Flash.
OTOH Haxe is letting the user free from choosing the best platform to perform a given task. Since you're using the same language everywhere, it's much more easy to try something new. The goal of Haxe is then to target all mainstream platforms, and keep updating the list as new platforms will emerge, so users can always have the choice.
What programming language do you use daily, and which one you like much?
I'm writing a lot of Haxe, and some OCaml. I also often use C. I like of course to write things in Haxe, because I could design it the way I was feeling comfortable with.
In your old blog you told that you don't like macOS for some reasons, using it to develop i had the same feeling: do you believe that Mac OS is much for "fashion" users than for professional developers?
The story is still on the new blog ;)
It's true that MacOS has been fashionable, because it's made by Apple which have a strong image. It's also a good system since it's based on a BSD core so Linux users will find it a lot more friendly than Windows.
However, it has IMHO several big issues : the documentation for the OS is very poor, and it's very hard to develop for it in C++ for example.
There's a lot of closed things : you can't run OSX on virtualization software, a lot of useful software is not open source, a lot of proprietary file formats.
From an external point of view, it seems that OSX is much more proprietary then Windows. Of course, Microsoft is not as fashion as Apple, so that makes a big difference. Please note that I'm not a Windows enthusiast either !
What is your favorite IDE, and your favorite Operative System?
Right now I'm mainly using FlashDevelop on Windows for my daily work. I'm not that much religious about OS and IDE : I think that people should use what they think suit them the best.
For instance, the completion is handled directly by the Haxe compiler, so it's made very easy to integrate completion into any IDE.
You merged features from different languages, can you tell what are? which one is the real "father"?
There's features from Java, ActionScript, OCaml, and other languages I either used or studied. The idea is to make a language with a strong type system, yet have the flexibility of dynamically typed languages.
But the real father of Haxe is "Motion-Types". It's a language we've been developing at Motion-Twin in 2004-2006. At first, it was a replacement for ActionScript2, and we later used it on the server side
We used Motion-Types quite a lot in our company for different projects so at some point when we thought about changing things and doing a "clean-rewrite", that's what became Haxe.
The initial compiler was developed in Objective Caml, why did you choose this language?
A compiler is often viewed as black magic, but it's actually real programming. What a compiler does is to manipulate symbolic data structures, and functional languages such as OCaml are a perfect match for doing that.
It's also one of the most fast languages around since it produces highly optimized binaries.
Now the compiler is written in NekoML, why you decide to create and port all the compiler code to this new language?
The Haxe compiler is still written in OCaml.
However one the platforms that Haxe targets, the NekoVM, use a OCaml-style language named NekoML for his compiler.
How many developer are working on the main project?
I've been developing most of the Haxe compiler, with some help for people at Motion-Twin for many standard libraries.
Franco Ponticelli has been doing the whole Haxe/PHP target and right now Hugh Sanderson has a working Haxe/C++ target which is not yet part of the official compiler.
What was the first target platform you did develop? and why?
It was Flash 6-8 at first. Mainly because a lot of people were waiting for what will come after MTASC, so I wanted them to be able to play with it.
But Haxe 1.0 already had JS, Flash 6-8 and Neko. Flash9+ and PHP were added after that.
JS, Actionscript, PHP, C++ , what other languages we will see in the future?
I guess Java is a good candidate ;) It's mainstream and offer several additional interesting possibilities such as developing for Android.
Why a programmer should choose the NekoVM instead of targeting the C++ or Actionscript languages?
NekoVM can be used for several kind of applications :
- web service : with database and filesystem access, you can run NekoVM into Apache web server in order to generate dynamic web pages. Same as PHP, but around 30x faster
- realtime servers : to write your custom game or chat server for instance.
- desktop applications : since NekoVM can be extended with any C code, some people already developed UI frameworks binding such as GTK or OpenGL support for it. So if you use Haxe/Neko, you can write OpenGL desktop applications as well !
As you can see, Haxe is not about offering support for competing platforms, but more about opening more possibilities for different kind of applications, all written in the same language.
You are a founder of a game company, Motion Twin, are you using Haxe in your projects?
Yes, all of them. Everything we do on client side (Flash/JS) and server side (Web/Realtime) is written in Haxe. Most of our commandline development tools as well.
Did you ever think to develop games for the Iphone/IPod? and if no, why?
We are very happy with the web right now. We don't see much games that could be made for the IPhone and that can't be made on the web right now. And there's (still) much more web users than Iphone users right now ;)
You developed also the first compiler not Adobe for AS 2.0, MTASC, this project will continue?
It's still continuing. The issue is that AS2 was stopped by Adobe in favor of AS3. So MTASC is a working compiler, with no known bugs, so no need for new versions.
People sometimes thinks that MTASC is dead, but it's just completed. Since we're not selling it, we don't need to comeup with new version every year by adding more-or-less buggy features ;)
What do you believe is/are the current limit/s of Haxe? are you planning to fix/remove them?
I think that current main Haxe issue is not in the language itself or in the technology, but in the documentation. Now that things have been much more stable, we will focus on that in order to make it much more easy for people to get started with Haxe.
What will you believe will became in the future Haxe and the nekoVM?
I think more people will start using Haxe : we've seen growing interest in the past year, and people that start using Haxe often love it and find it hard to go back to Java or PHP or ActionScript, whatever they have been doing before.
As far you know there are already companies using it to develop medium/large projects?
Yes. Apart from Motion-Twin, there's already some of them. For example one early adopter of Haxe is Comapping.com : most of their work is using Haxe. [Note : TouchMyPixel has also made some great Haxe games]
Do you believe that Haxe, if used with cleverness, may be one of the answers to exit from the current economic crisis for many IT companies, allowing them to save time, money and resources thanx to the possibility to deploy to multiple platforms writing only once?
I don't think that Haxe can do a lot to help with crisis. But what I think is that in times of crisis and unemployment, it's good to get yourself ready for when things will be better. Learning Haxe might then be a very good investment since it opens a lot of doors.
In the Italian Universities, in the IT faculties, they teach a bit of C, and something of JAVA: what language/s will you suggest to students/programmers to learn beyond these two languages to be much agile to have many chance-s?
Haxe of course :)
But also at least a functional language, either Lisp, OCaml or Haskell. Haxe also has some functional capabilities, and combining ObjectOriented and Functional approaches have been tremendously improving the productivity of our team in the past years.
At last, but not the least: do you believe that the open source is the future of the IT? and what major benefits do you believe it brings?
Open source (and free software) enables innovation. Internet and the Web are good examples for that : because the protocols are open, people were able to use them in many creative ways. It's also a good way to prevent monopoles and lock-in, which are both enemies of innovation and limit the freedom of the end-users.