About Adam Young

Once upon a time I was an Army Officer, but that was long ago. Now I work as a Software Engineer. I climb rocks, play saxophone, and spend way too much time in front of a computer.

Automount and home directory creation

NFS is the NAS equivalent of Democracy: the worst implementation except for all the others. If you want a remote home directory for your users, chances are you’ve contemplated Automount as the solution for it.  I’ve been working on Automount support for the web UI in FreeIPA.  Here’s the concept.  When you add a user, you want to delay creation of the users home directory on some subset of Network Devices.  This is a tricky problem to solve.  Here’s why.
Continue reading

Summit IPA FAQ

Here are the most frequently asked (technical) questions by people about Red Hat Enterprise Identity (IPA) from this past week at the Red Hat summit.

Question:  What is it?

Answer:  IPA is a domain controller for Linux/Unix environments. For the Linux/Unix world it does what Active Directory  does in the Windows world, but following open standards and by the means of open source software.  It is an identity management solution that integrates MIT Kerberos, LDAP via Red Hat Directory Server, DNS via Bind with an LDAP back end, and a Certificate Signing Authority (Dog Tag).  Its administration framework is a Python based server that runs inside Apache HTTPD.

Continue reading

Snapshot VMs

This past week at the  Red Hat summit I got the chance to demonstrate Enterprise IPA, the Red Hat version of FreeIPA, at the Red Hat booth.  One of the aspects of IPA we want to showcase is registering client systems.  That means that I wanted to be able to get a client system in the pre-installed state pretty very quickly.  My approach was to use Qemu/KVM virtual machines.  I had one VM image that I did not touch, and all the rest of the virtual machines will be snapshots that overlay that image.

Continue reading

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