Some of the Programs Ken Has Written

The images on this page can also be browsed in the Screen Shots Gallery. The programs with an EPICS icon are EPICS Extensions.

Fable Fable

Fable is a framework for automating beam line experiments for materials science. It consists of physics codes written in C and Python and a GUI based on Eclipse. The Python and C codes were (and continue to be) developed at the Risø National Laboratory and the Technical University of Denmark in Denmark and at the ESRF in France. The Eclipse GUI was developed at the ESRF and the APS. Ken made contributions to both parts but primarily was one of three principal developers of the GUI. The Subversion repository for Fable is located on Sourceforge and consists of more than 1.5 million lines of code according to Ohloh.


The acronym XRAYS stands for X-Ray Analysis Software or X-Ray Software. XRAYS was at one time expected to grow into a large suite of analysis and visualization applications for x-ray and neutron scattering that were to include:

The development was hindered by a lack of funding and resources. It currently consists mostly of exploration and prototype applications. These applications, mostly written by Ken, were formerly available from the APS XOR Subversion Server, but are no longer there.


MEDM is the GUI interface to EPICS and is distributed as an EPICS extension. MEDM is used to both design and run control screens. Ken did not originally write MEDM but made it into the very robust and stable application it is today. It is in extensive use at the APS and at many institutions around the world as the primary interface to their control system. It is relied on and very rarely crashes nor has problems. At the APS alone there are over 7,000 MEDM accelerator control screens in use. These screens are designed in MEDM in Design mode and run by it in Execute mode. MEDM is also used in the same way to control experiments on the beam lines. This is an example of an MEDM control screen for the APS. Here is a picture of the APS control room where MEDM control screens are typically running on most of the workstations.

EPICS Gateway

The Gateway is both a Channel Access server and Channel Access client that provides a means for many clients to access a process variable while making only one connection to the server that owns the process variable. It also provides additional access security beyond that on the server. It thus protects critical servers while providing possibly restricted access to needed process variables. The Gateway typically runs on a machine with multiple network cards, and the clients and the server may be on different subnets. It is in extensive use 24/7 at many sites around the world, most of these sites maintaining several Gateways.

EPICS StripTool

Strip Tool is a Motif application which acquires data from either Channel Access or CDEV and plots it in real time as a strip chart. It is useful for debugging controls applications and for monitoring data trends.


Xorbit is an interactive accelerator physics modeling and simulation code. Its interface looks like this and this. It was perhaps the first, extensive GUI orbit code and was written in a combination of C (for the GUI) and FORTRAN (for the physics).


ADT is a Motif program used to display arrays of process variables from the Advanced Photon Source control system. It evolved from Orbitscreen, the original program of this type for the APS, which Ken also wrote. Its interface looks like this. ADT is distributed as an EPICS extension.


SGA is a Motif program that allows you to make and edit animated GIF files. It is not a drawing program, but is a means of animating and, to some extent, editing already-existing GIF images. Its interface looks like this and this. Its primary purpose is to make animated GIF's for MEDM. SGA is distributed as an EPICS extension.

EPICS HistTool

HistTool is a Motif program that allows you to make a histogram of the values of a process variable. You can drag process variables from MEDM into it.  Its interface looks like this.  HistTool is distributed as an EPICS extension.

EPICS Namecapture

Namecapture is a Motif program that provides a means of getting process variables using drag and drop from MEDM control screens and other EPICS GUI interfaces, making them the current X selection, as well as providing means to accumulate them in files. Its interface looks like this. Namecapture is distributed as an EPICS extension.


Pocket EPICS is a version of EPICS that runs on the Microsoft Pocket PC platform.  It provides EPICS Channel Access for Pocket PC applications.  With such applications (see below) you can access a control system from a handheld Personal Digital Assistant (PDA).  See recent publications for an article on this capability.

ProbeCE ProbeCE

ProbeCE is a Pocket PC application that allows you to read and write process variables from a Pocket PC.  Its interface looks like this.

Beam Display Beam Display

BeamDisplay is a Pocket PC application that shows the current status of the APS.  Its interface looks like this.

PocketPing PocketPing

PocketPing is an application that provides a ping capability for the Pocket PC.  It was written when there was no such program available, in order to diagnose network problems.  It continues to provide a comprehensive ping interface and also has an IpConfig interface for the Pocket PC.  It remember the IP addresses you have previously used.  Its interface looks like this and this.

ApptList ApptList

ApptList is a Pocket PC application that shows your upcoming appointments for a week, month, quarter, or year.  It overcomes the limitation of the Today screen, which only shows the current day's appointments, and erases the one you may have missed.  It was written to study CE databases.  Its interface looks like this.


GPSLink is an extensive Pocket PC application that allows you to communicate with a Garmin eTrex and display and save your waypoints, routes, and tracks in various ways.  It has the capability of using any scanned image for a map.  The map can be calibrated by associating  waypoints with points on the map.  It does a least-squares best fit to the specified waypoints using Singular Value Decomposition (SVD), in fact, the same algorithm that is used for orbit correction in the APS and other accelerators.  There is also a Win32 version for Windows 95/98/ME/NT/2000/XP.  Its interface looks like this, this, this, and this.

EvansApp Corbit

Corbit is a C++, command-line program used to do orbit correction.


Self Describing Data Sets (SDDS) are a file protocol and suite of programs developed primarily by Michael Borland with some help from others. These programs provide a very powerful set of tools for data processing and analysis.  Ken did most of the Motif interface for Sddsplot, the primary GUI for viewing SDDS data.  Here is Sddsplot with a plot of the PAR timing.  More examples of SDDS plots can be seen in this set of continually-updated plots for the APS Storage Ring.  Ken also wrote Sdds2math, which converts SDDS data to a file that can be read into Mathematica, and Sdds2spreadsheet, which converts SDDS data to a file that can be read into most spreadsheets.  ADT, Namecapture, and Corbit, mentioned above, make use of SDDS files.

EvansApp Colorinfo

Colorinfo is a Motif program that lets you explore what is happening with your colormap(s) on 8-bit (256 color) workstations. Its interface looks like this.

EvansApp Chaos

Chaos is a Motif program that generates the usual Mandelbrot diagrams and a few others. Its output looks like this, this, and this. (These are probably the most impressive images on this page.)


Ken has used Mathematica and programmed in it extensively.  One of the larger projects involved calculations to determine under what conditions photons from the insertion devices or from radiation in the bending magnets would hit the APS vacuum chamber walls.  This is especially important for insertion device radiation, since it is intense enough to burn holes in the chamber wall.  The geometry of the chamber is complicated, and the Mathematica calculations essentially implemented a 3D CAD program.  Here are some of the limiting surfaces in the chamber as seen by a photon.  The color of the surface represents the distance from the source in meters, and the white rectangle is the expected size of the beam based on the predicted emittance.  The pictures correspond to looking from the middle of an insertion device, from the end of the bending magnet before the insertion device, and from a point before the second bending magnet when the beam is off center.  The chamber was modified by making the slot where the photon beam leaves the chamber larger as a result of these calculations.  

Application Programs

Ken has written many physics application programs for the APS. These include C programs, shell scripts, and Tcl/Tk programs. Some of these programs are described under Operations Analysis Group Software Documentation. He was instrumental in writing and defining the APS Tcl/Tk Library and Interpreter Extensions (although he is not given credit in that document).  Tcl/Tk is useful for application programs because it is an easy way to provide a GUI interface, compared to writing X and Motif, for example.  It is very effective when performance is not a problem.  Here are some of the interfaces to Ken's Tcl/Tk programs: Booster Orbit Correction, Storage Ring Orbit Correction, Storage Ring Correction Configuration, Feedback DSP Scope, Synchrotron Motion, and Help for the APS Tcl/Tk Library.