Java - Portfolio - Resumes - C/C++/C# - Links - Photos - Misc
This page includes a few screenshots of prior and current
work that might be interesting. I own all of the source code and rights to
all examples. (The raw Digital Elevation Model data used to create the
relief images were obtained from USGS and NASA public websites. The raw mapping
data were acquired from the U.S. Department of Census and the EROS Data Center.)
Video Demonstration Page (WMV) New!
NOTE: Most of the UI work on this page was done using Java/Swing. Exceptions are the 3D terrain rendering, the RDF ontology graph visualization, and the 4 bottom-most DOS imaging screenshots.
Still Image Screenshot Examples
Here is my first, and thus far, only mobile (Android/phone/tablet) app
- an analog clock that lets children drag the clock hands to understand how a clock works:
A full-resolution screenshot of Cool Clock from the Android tablet emulator:
(Note that what appears to be 3D shading on the clock hands is actually 2D Linear Gradient paint
drawn perpendicular to the clock hands' long axis.)
Note: This app (and many additional practice screens) was originally coded in Java/Swing in 2010 and then ported to Android.
Here is a 25 MP non-antialiased GIS-features graphic of San Diego county I created
about 10 years ago using random
colors for various GIS features/layers:
Here is a screenshot for a Java/Swing
Binary Search Tree visualization tool. More details and screenshots of larger graphs can be seen here
is an application-specific numeric entry control I recently wrote at
home in Java 2D/Swing. (It uses a semi-transparent variant of the gel
button component directly below this example.)
|Here is a gel button component I recently wrote at home in Java/Swing 2D:
|Recently, I started learning Open GL. Below, is my first "Hello World!"
Open GL program (written in C++ and Qt). It is a 3D rendering of the
vicinity around Mt. Shasta using Space Shuttle elevation data (SRTM)
with an elevation sample spacing of 3 arc seconds (300 feet). This
image was generated from 2,875,202 triangles. It turns out that to get a smoothly
shaded image in Open GL, the normal associated with each vertex of each
triangle needs to be set to the average normal vector of its
Below, is a closer view of Mt. Shasta,
this time using a 1 arc second data set (100 feet between elevation
samples). This image was generated from 6,465,608 triangles.
The diagram below explains some of the
details regarding how smooth shading for Digital Elevation Models (DEMs)
can be achieved in Open GL.
Below, is a drag-and-drop least-squares
curve fitting "calculator" component I developed at home in Java 2D and
Swing in about a day or so. It allows users to fit 1st - 9th order
polynomials to their data. All you do is drag your data into the
window and the axes are automatically scaled and your data points are
drawn. Right click and select Fit Polynomial, then select degree and
you're done. Another graphing widget I created allows you to drag
titles and axis labels as well. (In other words, creating a nice chart takes about 15 seconds.) Note: there are some
enhancements, such as smarter axes tick labeling and spacing, which have
not yet been added. (I just wrote this for fun a couple of years ago.) Here is a WMV video clip which briefly demonstrates this component.
|Next, are some Autogeny era examples - all Core Java (I designed and implemented most of, the GUI, middleware, and server layers). Note that several key components of the Autogeny platform were not completed.
The Autogeny cloud-like platform's container,
middleware fabric, multicast RPC, metadata, and GUI architectures
enabled rich ad hoc GUI applications like these to be
dragged-and-dropped in minutes by non-technical users and
(automatically) shared along with automatic tracking and update
publishing. Another thing that differentiated this platform from others
is that fully-integrated lightweight GIS/mapping, imaging, charting,
logical diagramming and other advanced components were included
out-of-the-box. These example application mock-ups demonstrate the breadth of
applications that were targeted to be included with the Autogeny IDE and platform. Here is a brief WMV video clip demonstrating this tool for a simple spreadsheet/barchart example. Here is another WMV showing how an airport/airbase management dashboard application mock-up could be created with this tool..
This drag-and-drop IDE and all its components were entirely coded in Core Java and Swing.
Here is a Java/Swing tracking mock-up example I
created for fun which uses a basic mapping component I wrote which reads
U.S. Census Tiger Line data files:
|Here is a Java/Swing QueryEditor component
allows non-technical personnel to easily create distributed/cloud object-oriented
queries (decision trees). In this simple example, a users specifies
they want to select all alerted aircraft currently over Sacramento County or
that are approaching Sacramento county and within 10
km from the county boundary. Here is a brief WMV video clip demonstrating how this query was created. On the right is a mock-up of how this component could be adapted to be a process editor and used in conjunction with Autogeny's planned BPM system. The mock-up example depicts a hypothetical process that models
and tracks visitors at a secure facility:
Java Swing + 2D + 3D Graphics library unit tests:
Here is a unit test of a Java/Swing 2D line drawing class:
| Here is a simple Java Swing app that uses multi-point Radial Gradient Paint to draw "the planet":
Here is a hierarchical multi-layer Java Swing custom control I developed
loaded with "hypothetical" data. The sliders control alpha compositing and operate hierarchically.
Here is a Java Swing Joystick GUI widget I created for a mobile PC
robot controller application mock-up. It uses a "CircumferentialPaint"
class I developed. Here is a brief WMV video clip demonstrating this component.
[ Note: All of the relief images below were computed circa 2002 to 2003 from scratch (they were not computed with Open GL
or any other 3D library). ]
Below is an example shaded relief image of Folsom Lake using a rendering algorithm I developed for rendering
raw Digital Elevation Model (DEM) data as a unit test. This particular algorithm is surface normal based. Coded in Java/Swing.
Below is a shaded relief rendering of Mt. Shasta from very early space shuttle DEM data (a few missing data points were inserted).
Coded in Java/Swing.
NOTE: The image below may at times be unavailable from the web hosting provider. If you have problems viewing the image, please try again later.
Below is a shaded relief image of a
portion of Mars using a different relief algorithm I developed, applied
to Mars DEM
data. This algorithm is based on image subtraction. Basically, the
image is shifted and subtracted with respect to itself, the differences
are then scaled (amplified), a median-grayscale constant is added, and the result is clamped to the [ 0 - 255 ] range. Coded in Java/Swing.
NOTE: The image below may at times be
unavailable from the web hosting provider. If you have problems viewing
the image, please try again later.
Below, the same (un-optimized) algorithm has been applied to the
entire Mars globe (66 million pixels).
WARNING: this points to a 6 MB file and may take a long time to
download. (All of the older grayscale DEM rendering examples were
generated in 2002, including the full-globe image of Mars below.)
Coded in Java/Swing.
Below, the above relief algorithm has been applied to the Earth (58
million pixels). WARNING: this
file is about 2 MB and may take awhile to download. On all of these
images, grayscale was selected so that color graphics/information could
be overlaid/composited over the base image without the underlying
terrain colors masking colored overlay data.
Coded in Java/Swing.
Here is a basic Java/Swing mapping
component I developed from
scratch that reads data from US Census Tiger Line data files which drew
state and county boundaries along with icons for airport locations of
various size classes:
Here is a basic Java/Swing multi-layer street-level
mapping component I
developed for viewing U.S. Census Tiger Line data. The water boundaries
were not filled because the application context this component was to
be used in needed to be able to overlay colored icons and other graphics
at any point in the map, and so, filling the water with the color blue
would have made it difficult to draw, for example, icons representing
water vehicles and their health/operational status (when the status
color was blue).
Below are several screenshots from three prototype deployment tools I wrote, primarily intended for in-house use only.
The first tool, called DbToJava, is a
tool which flexibly
code-generates Java object classes/models by scanning DBMS schemas. In
the diagram below, the buttons represent Java classes which corresond to
DBMS tables. The arrows represent foreign key linkages which resulted
in object references being placed in the Java classes. A spring
algorithm was used to auto-layout the graph. Pressing the buttons
transforms them into UML-like class widgets (see next screenshot). Here is a brief WMV video demonstrating this tool.
All screens coded in Java/Swing.
This DbToJava view shows the expanded view when the above buttons are pressed:
This DbToJava tab
allows the user to alter the automatic Java name generation from the
database table/column names. Note that the Java classes have been
hand-edited to be singular even though their corresponding tables have
Coded in Java/Swing.
This table shows the DbToJava tab depicting some of the foreign key relationships derived from scanning the database. Coded in Java/Swing
|A different tool below, called DbDesigner allows
the user to create/design a new database, or scan an existing database
and convert it to another vendor. This view shows one of the table tabs
derived by scanning an existing database, including foreign keys and
key parts/indexes. Here is a brief WMV video clip demonstrating this tool.
Coded in Java/Swing.
This DbDesigner view shows part of the MySQL SQL creation script automatically generated by scanning a Microsoft database schema:
Coded in Java/Swing.
A third tool was a Java class designer/code generator tool. It
automated several coding steps such as clicking on implementing
interfaces. With this tool, the user could click on the desired
interfaces to be implemented and had the option of 1) generating the
interface methods and supportive fields directly in the class, or 2)
using a pre-existing interface delegate class to which the interface
method calls would be delegated in which case an instance of the
delegate class wold be added as an attribute of the class being
created. At the time this tool was written, Generics were not part of
the Java language, so this tool also generated type-safe collection
classes based on Vector and Hashtable. This tool was embedded in multiple DbToJava screens and some of its code generation capabilities are demonstrated near the end of the DbToJava WMV video clip located here.
Coded in Java/Swing.
Here is a simple, incomplete, illustrative RDFS Astronomy ontology. If you paste the RDF/XML into the W3C RDF Validator, you will see the auto-generated diagram below.
generate a graph/diagram, you must first select "Triples and Graph"
under "Display Result Options" before pressing the "Parse RDF" button.)
Here is a basic file system
RDF ontology I created as an exercise when
first learning RDF. RDF has tremendous potential to transform and improve almost all software and the Web.
Here is the
W3C Validator graph of this ontology:
Here are some very old C/DOS medical image processing applications I wrote
(including the pixel-level GUI lib) around 1993.
Note that even though the first and
second screen shots have different GUIs, they are in fact screen shots
of the same .exe file.
This was possible because the software's GUI could be completely reconfigured by end users simply by editing text files.
This software also used a plug-in
architecture for the image capture service and had other advanced
features such as a user configurable schema for the image database,
user-defined image attributes embedded into the image header structure,
and much more.
(Be sure to view the first and third images at full-resolution.)
Same application with Thumbnail View in effect. Note graphical XOR
overlay on first image second row which allowed users to assign display
positions in 4-up display screen above from the Thumbnail View while
selecting the images to display.
All partitioning of the full-resolution and thumbnail screens was user-configurable.
For example, the Thumbnail View could be partitioned into arbitrary
numbers of rows and columns such as 1x1, 2x1, 2x2, 3x3, 4x4, 5x5, 8x8,
(The same goes for the full resolution view mode screen above.)
Here is a view in split screen mode where full image resolution is
displayed on the left while a "full-view" image is displayed on the
is a close-up of a contrast enhancement algorithm applied to scanned
X-rays (including scanning artifacts). The unenhanced images are on the
left and the corresponding enhanced images are on the right. This
particular algorithm is called Contrast Limited Adaptive Histogram
Equalization (CLAHE). I once got an idea for an X-ray light box that
could do the same thing with film.
|Here is a sample from a basic image processing pixel-level GUI library I
wrote in C/DOS circa 1992. The library drew every pixel including the
font and cursor pixels. Users could easily define and and aggregate
their own customized menus systems by editing simple text files. The
system included context-sensitive help and highly-streamlined
click-count user interactions. A simple multiprocessing technique
allowed the user to interact with the GUI during long-running image
processing operations. Operations included image region statistics and
histograms of arbitrarily shaped regions/blobs via a seed growing/region
filling algorithm, distance, graph-pixel-values-along-a-line, draw
cubic-spline boundaries in overlay layers, automated detection of
endoluminal wall boundaries from noisy cross-sectional ultrasound
images, image subtraction, bi-quadratic image registration, real-time
bilinear-interpolated magnifying glass, and more.
Copyright (c) Richard Creamer 1992 - 2011 All