Platoon Domain Model

From April 1994 to May 1995 I was a Light Infantry Rifle Platoon Leader in the United States Army.  As a new Lieutenant, I was often overwhelmed with the amount of information I needed to track.  Since then, I’ve made a career of building systems to track information.  The tool I use to model software before I write it is called the Unified Modeling Language, or UML. I’ve long though about the structure of the information from my time in the Army.  Here’s a start at modeling the information a new Platoon Leader needs to track.

Continue reading

WebUI diagrams

I gave a presentation to some of the other teams at Red Hat about our approach on the WebUI.  Here are a couple of the graphics from the presentation.

This is the  “class” diagram for our UI toolkit.  It doesn’t show everything.  Instead it is intended to orient you to the most important aspects of the toolkit.

WebUI core-classes

WebUI core-classes

Click to see the whole diagram.  The top “swimlane” is the abstractions we provide.  The middle is the classes you’ll want to use when actually designing an application.  The bottom shows the command objects:  there are many instances of these, but with all pretty much the same behavior.  Calling this a class diagram is a stretch, as there are not really classes per-se in Javascript, but out programming approach pretty well mimics what Java or C++ does in overloading virtual functions.  Hence, thinking of them as classes is not a bad idea.


The second is an old-school flow chart.  The Angled boxes indicate IO, the square boxes are browser side operations.

The load of the initial Javascript files is not strictly serial.  It is possible that they overlap, and thus that section is shown happening in parallel.

The bottom of the diagram is pretty much an endless loop.   The yellow box represents the waiting state of the application:  from there you can see the four types of events that change the state of the application.

Javascript Refactoring: Extract Function

Refactoring is the process of changing the internal structure of a program without changing its functionality.  Java programmers have come to depend on automated refactoring support in the IDE.  Other languages are not so well represented.  Untyped languages do not lend themselves to automated refactorings so easily.  Javascript is one such language.  However, Javascript’s variable scoping rules make at least one refactoring pretty easy:  extract function.

Continue reading

Corresponding Spirit

My friend and Classmate Mike Figliouo (so proud I managed to spell that correctly without looking it up)  writes a blog on leadership. When ever he asked for a suggestion on what to write on, I always suggest the same thing: Schofield’s Definition of Discipline:  He got tired of me suggesting it, and decided the best way to shut me up was to finally write it.   Go read it.  It is more important than what I have to write here.

Continue reading