Cottage Systems
Jeremy Faden, Chief Software Engineer
Home
Services
Projects
Resume
Contact Info

Project Sampler

 

 

Java to Python

On-line converter from Java code to Jython 2.2 or Python 3.6, written after no satisfactory public converters were found. It does limited semmantic translation as well as syntax, for example translating String functions and ArrayLists into Python lists.

Technologies: JavaParser, Python, Apache Tomcat

Java-to-Python Converter

 

 

 

 

Python Data Adapters

Python adapters convert data from HAPI servers for use in SpacePy and SunPy.

Technologies: Python, HAPI

Data Adapters GitHub Project

 

 

Autoplot: a browser for science data on the web

Data in ASCII tables, CDF files, and many other forms are read in and displayed with reasonable default settings. Das2's powerful abstrations are made available to everyone, such as remote filesystems and interactive graphics.

Technologies: Java, Jython, Webstart, Das2, QDataSet, QStreams, Mediawiki, Jenkins, Apache Tomcat, CDF, NetCDF, HDF, OpenDAP, XML, JSON, Source Forge, GitLabs, IDL, Matlab, Python, SciPy

clients: NASA/Goddard, ViRBO (George Mason University), VMO (University of Maryland), Los Alamos National Laboratories, University of Iowa Dept of Physics and Astronomy, other applications

Autoplot Website

 

HAPI Servers: a standard protocol for transmitting time series data

The HAPI (Heliophysics API) server is a specification for how time series data should be discovered and transmitted to clients, where clients have been written in Python, Java, IDL, Matlab and other languages. A production-ready, extensible Java-based server was written which will be used at NASA/Goddard and ESA science centers. Autoplot is also a client for the HAPI servers, and a standard Java client was also made available.

Technologies: Java, J2EE, Apache Tomcat, GitHub, Python, SciPy, JSON, JSON Schema

clients: NASA/Goddard, University of Iowa Dept of Physics and Astronomy, other centers will utilize.

HAPI Website J2EE HAPI Server Java HAPI Client

 

 

Autoplot Jython: IDE for science analysis

Code from the Netbeans IDE, JSyntaxPane, and Jython are brought together to provide a rich programming environment for data analysis in Autoplot. An alternative to IDL and Matlab, and similar to SciPy, Autoplot Jython is Python implemented in Java, plus libraries to handle data. Scientists can quickly combine data with several lines of code, or thousand-line Jython codes can work at the heart of a data processing system. Because Autoplot handles data on-the-web not in-the-desktop, codes can be shared easily and software installation and licenses don't get in the way of scientic collaboration.

Technologies: Java, Jython, GitLabs, NetbeansIDE, QDataSet, JavaDoc

clients: NASA/Goddard, LANL, U. Iowa, other applications

 

 

QDataSet and QStream: representing and moving science data

Autoplot needed a flexible interface for representing science data, so QDataSet was developed. Semmantics are used on a thin syntax layer so that it can be represented in many programming languages. QDataSet can represent everything from a dimensionless scalar to highly dimensional qubes of time series data, and events lists and bounding cubes. QStream is the serialized version of this, allowing any data represented in QDataSet to be transmitted serially. The Das2 library was later refactored to use QDataSet as its internal data model.

Technologies: Java, Webstart, IDL, XML

clients: ViRBO, Applied Physics Laboratory, U. Iowa

QDataSet PowerPoint

 

 

Das2: Java-based system for data distribution, visualization and analysis

lead team at the University of Iowa to design and implement system. Design and implement data visualization methods for Java. Design and implement data servers. D & I platform for workgroup development. D & I human interface components.

Technologies: Java, Webstart, XML, JSP, numerical methods, visualization methods, cgi-bin scripting, Perl, HTML, databases, CVS/SVN, NetBeans

client: U. Iowa, APL

das2 website

 

 

IDL mode for Netbeans IDE

internal project to greatly improve workflow in IDL code development. The Emacs IDLwave mode is sophistocated, but doesn't support work on Windows desktops well. This has gotten to the point where work flow is vastly improved over IDLWave for Emacs. Click here for a close-up veiw. (This unfunded project was abandoned when RSI built a new IDE based on Eclipse.)

Technologies: Java, Netbeans IDE, IDL

 

 

das2Streams: an efficient, self-describing, streamable data format.

lead in requirements identification, specification and implementation C library for producing and consuming das2Streams. XML is used to describe packets of arbitrary data on the stream. Designed and implement stream operators. (e.g. source | binAverage <resolution> | consumer)

Technologies: XML, Java, C, zlib

client: Plasma Wave Group, University of Iowa Department of Physics and Astronomy

 

 

on-line talent search interpretation guide. students log in and retrieve their test scores, and are presented a dynamically-generated interpretation of their scores. A PDF report containing dynamic, imbedded graphics is generated on-the-fly as well.

design and implement JSP webapp that utilizes Das2 libraries for generating graphics and PDF. Provide JSP server.

Technologies: JSP, Javascript, visualization methods, SQL, Apache Tomcat, PDF, iText

Client: Belin-Blank Center for the Gifted Child, University of Iowa

 

HYDRA PaPCo module

design and implement PaPCo module for distributing and visualizing Hydra data.

Technologies: visualization methods, RSI's IDL, cgi-bin scripting, wget

Client: Hydra group, University of Iowa Department of Physics and Astronomy

 

LertServer for Englert Theatre. Non-profit group needed affordable, reliable backup solution for their Windows workstations.

design, implement, and maintain samba server with automated, end user-accessible backups.

Technologies: Linux, samba, rsync

In-kind donation to Englert Civic Theatre, Iowa City

Continued...