Home‎ > ‎

Portfolio

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
using Java/Swing 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 New!
Watch a WMV movie of this Java/Swing app 'in action' at the top of this page.


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 neighborhood/adjacent triangles.

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 which 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:

 

java 2d and java 3d graphics library unit tests gis map shapes  flowchart shapes, also rotating earth

 
 

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.

java swing multi-layer hierarchical tree control shown with homeland security example


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.

java swing GUI joystick widget control

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

shaded relief image of folsom lake area computed from DEM data


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.


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.

excerpt of much larger Mars relief image computed from DEM data

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.

very large relief image of Mars computed from DEM data about 50 MP


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

large shaded relief image of earth computed from DEM data


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:

GIS like map of u.s. states and counties including airports and bases


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

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.

(To 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:

RDF validator image graph of simple filesystem 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, etc. 

(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 right:

Here 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 Rights Reserved