AngularJS after Years of Java

In December, I rolled off a project after nine years*. I had been working at Boeing on a mechanical engineering application that is used for general-purpose stress analysis. It’s used in military and commercial aircraft, helicopters and spacecraft. It was a really good project for a long time, and I even took a couple of mechanical engineering undergraduate classes to understand the material better, but it was eventually time to roll off.

The technology on that project was standard desktop Java. I liked to joke that it was perhaps the biggest resume-buzzword-non-compliant project in the St. Louis region. It wasn’t multi-tier. It didn’t use Hibernate (or even use a database). It didn’t use Spring. It didn’t use functional programming. Despite that, it was a good and interesting project for nine years.

But now I’m learning something new: web development with AngularJS.

This is a completely different mindset from what I had gotten used to over those nine years: we have multiple layers with RESTful interfaces; browser compatibility issues matter; we have a database and web services; I’m reviving JavaScript skills that I hadn’t touched since the Clinton administration. I had played with and read about some of these technologies while on the Boeing project, but they weren’t my focus, so I never learned any of them deeply.

The first few days on the project were daunting – there were times that I felt that I was on the bottom of a huge mountain of skills and ideas. But over the last two months, I’ve been able to learn enough and use enough that I’m now comfortable.

So, I’m excited to share some of what I’ve been doing. For the last month, I’ve been working on the project with a co-worker, and we realized that some of the features we had implemented had general purpose, and we got permission to share them on GitHub:

oci.treeview
oci.treeview is an AngularJS tree directive supporting client-supplied markup for tree nodes. It supports custom look and behavior for the nodes, such as on-demand loading, etc. Here are some samples of this directive in action:Basic Demo

Custom Callback Function

Node Selected Event

We had initially used another treeview implementation, but it embedded the node markup in the tree markup, meaning that we had to modify their source directly when we wanted the nodes of our tree to have separate behavior (not just to show a label, but also to show forms that varied based on type, etc.). In comparison, our implementation uses transclusion to make the node be completely definable outside of our tree behavior. By separating the concerns of the node and the tree, we made a much more flexible treeview.

FixedHeader
Fixed Header is a small AngularJS directive that uses CSS to create scrollable tables with fixed headers. This implementation doesn’t use any jQuery.

These aren’t world-changing directives, but we think that they fill niches that weren’t otherwise being filled.

It’s been an interesting transition from proprietary desktop Java to releasing open-source AngularJS modules in a couple of months, but I’m really glad I’ve had this opportunity.

*minus six months of living in Germany and a month of Struts work while in transition when I returned.

Advertisements

About Lance Finney

Father of two boys, Java developer, Ethical Humanist, and world traveler (when I can sneak it in). Contributor to Grounded Parents.
This entry was posted in Programming and tagged , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s