A Good Development LLC

My Business

Coming out of school with a Master's in Computer Science last year, the job market looked pretty spare. So I decided that, rather than waiting around, I would go into business for myself and take on such individual jobs as could be found. It is amazing how much work there is out there if you work cheap enough (or volunteer for free).

Through personal contacts at the Infrared Processing and Analysis Center (IPAC) at Caltech, I identified a set of projects that would be of use to the scientific community and hopefully have broader applicability as well. These projects are extensions of work done at IPAC but contain significant new work, especially in the areas of user interface and integration with processing environments.

Montage, Python, and Image Visualization


Messier 51 (Whirlpool Galaxy) using Montage.

If you are looking for the installation instructions, go to the Quickstart page.

Most of the documentation here is intended for people who want to understand how the Python mViewer astronomical image display code works. Use the menu at the top of the page to skip that discussion.

Python has become very popular in the astronomical research community as a platform for data analysis and processing. One of its strengths is the ease with which external libraries in C and C++ can be folded into the system.

Montage is an image processing toolkit developed by Caltech which is extensively used in astronomy (and in the computer science compute-intensive workflow community) to reproject, background match and mosaic astronomical images at scale. Recently updated to support use as a C library, Montage can be directly incorporated into Python and processing pipelines.

A subset of the Montage modules can be used to produce high-quality visualizations of multi-wavelength imagery (with information overlays). This can also be driven directly from inside Python.

Finally, a Python session can interact directly with a web browser instance, using the Javascript session within a browser page to support two-way messaging and interactive, event-driven processing in Javascript and Python working in concert. The very mature GUI capabilities of the Javascript/browser complement the processing and scripting provided by Python/Montage and provide a platform for both processing image data and supporting high-end image visualization and interaction.   More ...

Interactive SQL Interface to User Data Tables


Screen capture of table manipulation interface.

SQLite is an SQL database engine that is file-based (no resident server) and comes as a single C object file. This makes it a natural for integration into all sorts of environments. The main thing missing is a convenient way to visualize the data.

There are a number of advanced Javascript libraries for presenting data and controls, such as Ext-JS and DHTMLX. These provide complicated constructs like scrolling tables, trees and Gantt charts, as opposed to the more low-level utilities in packages like jQuery or controls like jQuery-UI. Marrying the SQLite back-end to a Javascript-based GUI gives us a fully-functional SQL engine and a very friendly tabular data display, complete with column selection and column-based GUI relational constraints.

This combination could be implemented in the same sort of Python/local-browser mode as Montage above but for demonstration purposes (and because people are much more likely to have their own tabular data than astronomical images) we have opted for a web-based example. With SQLite on the back-end and a Javascript GUI we can provide an easy way to visualize tables with full SQL filtering / sorting support. The tools would be easy to customize, most likely with more simpler query construction for those unfamiliar with SQL.   More ...