Past few months, I've been working with Angular 2. I didn't pick it, rather been forced to. In a good sense. We use it as UI tech for Red Hat Migration Toolkit, AKA project Windup - for it's web UI. I was pushing my (still) favorite Apache Wicket, which, by the way, is picking up Java 8 goodies to make UI coding even greater pleasure. I even created a PoC UI for managing the apps, with JPA 2 and all. But someone else, much more senior than me, was pushing Angular 2, which at that time was .alpha1 or so. It was very clear to me that learning this ball of craziness glued together by a dozen of libraries, frameworks, hacks and tools, will take loooong time. And it does. But I told to myself - f it, let's see how crazy things can get. And let's add that to my skill set. If I will learn this, then I will learn anything.  And I gave up pushing Wicket, with which I believe we would be a bit further in web UI features (but that's highly speculative).

 

Now what. I am still learning it all, as it has many, many dark corners. I came from Java world, and I was shocked by the chaos in JavaScript world. Nothing is for sure, there's lack of documentation, integration often breaks, micro versions break compatibility, there's little you can rely on - typically, only the top few libraries are well tested, documented, and maintain backward compatibility. On the bright side, the development pace is impressive. But to what end? To me, it seems that the whole ecosystem recipitantly, wildly, yet slowly, is getting closer to what mature development platforms have for years or decades. That's true for all aspects: Dependencies management, centralized repository, syntax, OOP, reflection, debugging, logging, UI templates, expression language, exception handling, ... but this doesn't happen following a plan. There are no specifications, no drafts. The common ground is basically only EcmaScript, or better said, what the browsers that majority of people have, implement.

 

Fun fact: My bachelor's thesis back in 2004 was about contemporary JavaScript, showing how cool language that actually is, how it can emulate classes, and how it can be used for complex applications. To prove that, I programmed a cover of Harrel W. Stilles' Miner VGA game for DOS, a basic Turing machine emulator, and an implementation of a neural network with backpropagation, simulated annealing and that AI stuff. In short, JavaScript was my beloved toy language. I'm not saying it's not now, just what has grown around it now, most of all, reminds me this:

 

 

Anyway - this series (if it becomes a series, that is) won't be about complaints, rather the landmines I've stepped on with a spectacular few-hours flight through the air of console.log()-based debugging and deciphering the Angular stacktraces (which are useless most of the time as they only contain references to Zone.js).

 

I don't want to complain all the time to my team how Angular2 or other JS thing hurt me today, so I'll drop my daily frustration here. Maybe someone will find it interesting, funny or even usable - in which case, good for you