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.
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 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
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.
- 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.