Tuesday, August 19, 2014

Just let me code!

The other day I ran into this article on Dr. Dobbs. The headline is "just let me code!", and the author laments the lack of "coding" in his daily work routine. This is nothing new (although the author seems to want to imply that this is a recent change. I remember a figure mentioned during a lecture back in '93 or so, where the average programmer spent around 10% percent of his time actually writing code. The rest were spent in meetings, administrative tasks, building, testing, etc.)

The articles goes on and blames the "complexity of the tools" for preventing the programmer from doing what he likes most: writing code. Tasks such as managing the SCM system, IDE, build system, deployment, testing on a variety of client systems and hardware platforms. This takes time from the pure, creative task of programming.

I have a rather different take on it.

Programming today is complicated because the systems we build are complicated. They are no longer simple executables which take some input and produce some response. They handle huge data sets using databases. They handle a wide variety of client platforms by leveraging a Javascript-enabled web browser. They handle automatic updates using continuous delivery platforms. And so on.

Demanding that you, as a professional programmer, who makes a living creating complex software products, should be able to "just code", is like a carpenter wanting to just have to do woodwork, and not have to bother about boring things like "following local building regulations". It works if you are only doing it as a hobby, but not if you intend to make a living on it.

Source code control, build systems and test frameworks are just as much part of the noble art of programming as writing nice, elegant, pure functions in Haskell. Writing makefiles, tests, and deployment scripts is also "coding", and should not be treated as anything less.

Monday, March 24, 2014

EclipseCon 2014

EclipseCon 2014

EclipseCon has been a yearly event for my part the last 5 years. It is a great opportunity to get a feeling of how things are in the Eclipse ecosystem, meet other Eclipse developers, and to visit (hopefully) new places. This year EclipseCon was back to the same location as it was in 2005, Hyatt Regency in Burlingame, CA.
I tried to priotize my time as good as I could. The CDT summit was a good place to talk to other CDT people, and see some of the new work that has been done: standalone CDT debugger, multicore debugging, new jobs API, new launch UI, various UX improvements from Momentics, and many more things. There were also a number of interesting CDT talks on the schedule. One of these were about multicore debugging with the Parallella board, a computer the size of a Raspberry Pi but with 16 cores on it.
Internet of Things (or IoT) was one of the major themes this year. Even if IoT is the buzzword of the day, it is really not new. IoT at Eclipse is also to a large extent about open source; with the increase of open hardware platforms such as Arduino, Beagle Bones, and Raspberry Pi, there is lots of possibilities for innovation in this space. Catarina Motas keynote "From Bits and Atoms and Back" was about "open materials" showed many examples of open source hardware growing from obscure hobbies to a large movement. The image of the young child who played catch with his 3D-printed prosthetic hand will stay with me for a long time. Some of the material shown during the keynote can be found here.

The Java 8 official release was timed to be on the same day as the Java 8 theme day, and there were several talks about new features. My main disappointment was that Java 8 does not support compiling Java 8-specific features to run on a Java 7 VM, something I was hoping for.

Since I like geocaching, I couldn't resist going to the talk about Designing Applications Handle Space and Time, which was about projects in the new LocationTech working group. These are Eclipse projects which somehow deal with geospatial data (maps, coordinates, etc). One particularly interesting project was GeoGit, a git-like tool for versioning and editing of spatial data.

Another theme this year was Cloud, particularly how to apply cloud concepts to current desktop IDE environment. How can we bring the benefits of cloud applications into the domains of desktop IDEs and compiled languages. One cool project is Project Flux, which is describes as "Dropbox for your IDE". In short it connects your Eclipse projects to a cloud service so that you can access it from any browser with full support for code-completion, syntax highlighting, and other IDE features.

One of the slides during the Project Flux talk was this one, which was massively retweeted around the world:
Many of the comments where the usual ranty replies about how slow Eclipse is, but I think the answer to the question is really very simple. Google spends billions of dollars in manpower and hardware to keep search fast (this is probably their most important business goal). If Eclipse were to get even a fraction of that to improve performance, Eclipse would be blazingly fast in every respect.

What was my lasting impression, then? Well, EclipseCon was a little smaller (counted by the number of attendees) than previous years, but the community and ecosystem is growing and Eclipse is today so much more than just an IDE.