Yeah, I’ve completed my PhD and I’m now working for the Haxe Foundation!
My 4-year-long PhD has come to an end
I started my PhD in the School of Creative Media (SCM), City University of Hong Kong right after I’ve completed my Bachelor degree there. I entered the field of mobile interface design and computer graphics with the help of my supervisor, Dr. Hongbo Fu. Two of my major research projects are BezelCursor and EZ-Sketching. The former is a screen cursor that helps people to use only one hand to operate a large mobile device, in which part of the touchscreen may not be covered by the limited thumb reach area. The latter is a image tracing system that automatic refines drawing strokes based on the features of the underlying image. You may take a look at my thesis if you’re interested.
Doing a PhD was very challenging to me. Yes, I had already learned some regular computer science stuffs during my Bachelor degree study, but I was not really ready to read research papers, to write equations with weird symbols, and to properly analyze experiment results with statistical procedures. With my PhD completed now, I can say that mastering those research skills is super useful and rewarding. There are a lot of interesting research papers being presented in conferences which I don’t think I would ever pay attention to if I were not a researcher.
However, although doing research is cool, it is still a bit different to what I enjoy most - coding. Computer science researchers do not really spend all their time on coding, not even on doing “real” research works. They have to spend a large portion of their time on publishing papers. Although the papers are of course valuable to the public, the whole academic publishing process is somewhat frustrating to me. The top academic conferences, like SIGGRAPH, often have very low acceptance rates (~20%). Papers have to be really “exciting” and “ground-breaking” in order to be published there. But you know, most research may not be such interesting or such a breakthrough, yet can still be valuable in many ways. For example, publishing a paper on a new algorithm that can solve complex problems may be cool, but providing and maintaining a solid open source implementation is equally (if not more) important. I’ve seen a lot of researchers keep working on new stuffs (in order to keep publishing papers), but spend little effort in maintaining their software/code, reducing the chance of people using their research outputs.
Working for the Haxe Foundation
As mentioned above, I value maintaining open source software very much, so it is very cool for me to work on Haxe in full-time. :)
I have been using Haxe for 5 years. I have published a few libraries, like jQueryExtern and hxSerial. At some point I’ve also published hxOpenFrameworks and used it to create generative graphics. At that time Haxe wasn’t very stable and the C++ target was still young. I decided to contribute directly to the Haxe repository since it is definitely the most important part of the Haxe ecosystem. The Haxe compiler (and its standard library) has to be robust and stable such that third party libraries and frameworks, like hxOpenFrameworks and OpenFL, can be built on top of it. In my free time during my PhD study, I introduced continuous integration (CI) to the Haxe repositories. It is satisfying to see the Haxe unit tests are now being run for all the 9 targets on both Mac/Linux, Windows, as well as browsers.
Since I had defended my PhD thesis, I was available to attend WWX 2015, in which I presented CI to the Haxe community (my presentation slides). Using TravisCI and AppVeyor is so easy that I really want to see every Haxe projects on Github to use them. During the conference I talked with Nicolas about working for the Haxe Foundation, and he was happy about it! So, yes. I am now financially supported by the Haxe Foundation to maintain and develop for Haxe in full-time!
The very first task that I’ve just started to work on is to upgrade jQuery support in the Haxe standard library. The build-in support was added back in 2011. It has never been a complete extern. A lot of APIs are missing, including parseXML, some overloaded versions of bind/unbind, on etc. Also, it has been staying at jQuery 1.6.4 for a long time (latest version as of writing is 1.11.3). My jQueryExtern library has been complete and up-to-date, which is even being mentioned in the haxe.org website. I’m now modifying jQueryExtern’s generation script to generate a new set of externs for the standard library, maximizing compatibility between old and new version of the externs. jQueryExtern itself will be maintained as a drop-in replacement of the new standard library extern, to provide addition functionalities. Initial implementation will be completed soon and I will ask for your feedback once it is ready.
For every month, I will work on a specific task, like the jQuery support upgrade. I will also work on other haxe-related things concurrently, e.g. updating the Haxe Chocolatey package, fixing CI issues, writing docs, and try to wrap my head around OCaml and start fixing compiler bugs. I will also speak at local and nearby conferences and meet-ups, to introduce Haxe to other developers. For instance, I am going to speak at the Hong Kong Open Source Conference 2015 this week. I will keep posting a blog post weekly, to publicly report the progress. So stay turned if you’re interested in what I’m working for Haxe.