Software Projects

This is a highlight of projects that I have done, people who helped or I helped and the approximate dates.

Macaulay Library Website Redesign

March 2017 ~ Macaulay Library
Made endpoints to use Solr in order to return relevant information for new website. Interesting data to fill in number of photos/audio/video vs month/week/day.


October 2016 ~ Cornell Lab of Ornithology - Macaulay Library
Implemented API endpoints in Java Spring. Simplified JS enough to add a review option to help review box-annotations on bird photos.

OSF Meetings

May 2016 ~ COS
A redesign of the meetings page for the OSF. Managed four interns. Requested requirements, drew up specifications, met and planned with supervisees. Checked-in periodically on progress, tracked progress, and noted issues as arose. Also helped to code, project used Django and JS.

OSF Admin

October 2015 ~ COS
A project to alleviate stress from technical administrators of the site and make a Django app that allows a non-technical user to administrate blocking projects or users that are found to be in violation of the EULA.

Current Contributors (GitHub #4301)

September 2015 ~ COS

File Notifications (Github #3200)

April-August 2015 ~ COS

Knowledge Based AI

May-July 2015 ~ OMSCS

Fix Dragging Issues (GitHub #2571)

May 2015 ~ COS

Small Refactor of Notifications (GitHub #2402)

April 2015 ~ COS

Permissions Fixes (GitHub #2223)

March 2015 ~ COS

NoteTaker 2.0 (GitHub)

2013-ongoing ~ JAC
With learning Python and needing a project to test out some of the ideas I had, I started to recreate my Perl version. Along the way I had ideas about how to make improvements. Since then I have put it up on GitHub and been improving it since from being able to run more than just my notes database, to completely revamping the layout to track notes for different projects. It also keeps track of time on each project, making reporting a hundred times easier.

Fade (GitHub)

2014 ~ JAC
Quite a simple little project that might come in useful on a busy number-ridden display. This calculates an list of colors given a starting and ending colors and number of steps. With the chance of drama in python and the pyepics project, neither are mine, this could easily be used to help keep track of changing temperatures on scientific instruments' displays.

MFR_FITS (GitHub) (Center for Open Science)

April 2014
Attended Pycon in Montreal and sprinted with the COS guys. They helped me quite a bit getting into testing modules.

This is a module for their Modular File Renderer, but it's a bit stuck on dependencies at the moment. It can take a .fits file from astronomy observing and makes a .tiff. Then puts it up as a webpage. Not much there, should really take the time to make it better.

UKIRT Handshake for Remote Operations and Publication

2010-2011 - JAC
This was a big project mostly done by Tim, Craig, and Russell. I helped with the final stages of the project and with most of the testing to make sure that we could observe with UKIRT remotely. When Russell left I was in charge of the parts he left behind, namely the Perl/Tk GUI and the EPICS including a state machine interfacing with a PLC (Allen-Bradley).

Of course there were hiccups the first few tests. I did troubleshooting to find and fix the problems in the Perl, EPICS, and the state machine. With the errors smoothed out the telescope has run quite nicely since then.

I wrote a paper for the SPIE conference in Amsterdam, NL in 2012. Craig and Tim contributed. I presented the topic as well.

Receiver A GUI

2012-2013 - JAC
Worked with Ryan, Craig, and Maren on this one.

The old RxA computer ran the control software off of 5.5 inch floppy disks. With a lack of working drives, this computer needed to be replaced quickly. We decided to go with a real time Linux box.

I developed and tested a user interface that monitored the DRAMA task and sent actions to the task. I designed the interface to be small and compact when only needed for general monitoring with the ability to expand the window to show more detailed numbers. There are several green/red indicators that indicate the status of the most important parts of the receiver and controlling software.


2009-2013 ~ JAC
Even as a side project it has saved me many hours of flipping through notes. This is basically just a Perl/Tk GUI that allows me to type text in and then save it to a text file. Looking for past commands for something I haven't used in a long while is very useful. I put insights and what I am working on.

I have tried to add checklists, reminders, timers and all sort of things, but I find it best with the most simple input and search. Right now I am moving it into Python/Tkinter/sql which helps me learn all three tools. Using sql it is really simple to be able to take a note and put it into the right project. And very simple to handle in general. This might lend itself well to many other interfaces and might be good to keep with me and keep upgrading.

Dynamic Bolometer Mask (DynBoloMask)

2012-2013 - JAC
Using the results from setup, the Quick Look Pipeline for our newest instrument at JCMT, SCUBA2, it makes a new mask for the bolometers, pixels essentially, and applies it during the setup. This cuts helps the signal by turning off noisy bolometers.

Rover Testing

Nov 2012, Mar 2013 - JAC
Rover is a roving polarimeter that can be moved in front of a few instruments in the JCMT cabin. Along with Craig we tested and troubleshot the setup before a successful observation run. I helped reconfigure some C code to better control the instrument. I tested it again a few months later and helped test integration into the VLBI, Very Long Baseline Interferometer.


2012-2013 - JAC
The K-mirror de-rotates the image from the tertiary mirror of JCMT to an naysmth platform. This mirror's rotation can sometimes go out of range and the gears can grind in the physical hard limit. In the software hard limit micro-switches are pressed and the software kills movement and then drives it out. However, the shoulders that pressed the micro-switches could be passed if the momentum was enough. A combination of power-cycling or losing current status would allow the motor to drive it into the physical hard limit, potentially causing damage.

I suggested that new, longer shoulders be made. New shoulders were fabricated and installed, but in testing I found that if it had driven into the software hard limit it would have destroyed the micro-switch on the right side. When done these will not allow momentum to carry the micro-switches past being pressed.

Louver Handling System

2011 - Joint Astronomy Centre
The louvers open on the side of JCMT to allow structural cooling, causing the telescope to settle sooner and therefore need less calibration. Ian and I collaborated on this project. He programmed the PLC and then gave me the registers that would have the outputs and the inputs.

I developed an EPICS database to interact with the registers and then made a medm interface so it could be controlled remotely to enable cooling before observing was to take place.

Small Tools

Although small these tools are/were invaluable. (Joint Astronomy Centre)

  • hexcon - basically a way to convert to hex, nothing to fancy. Was able to read binary serial traffic and parse out what was wrong with the communications.
  • logreader - The telescope has tons of logs so a log reader helps sort through.
  • noiseSep - Takes data and separates out specific columns for use.
  • spikeFinder - Finds spikes in numerical data. Original was written in C, but was somehow cobbled together from DRAMA but didn't have connections to other tasks. I figured out what was happening and rewrote it in Perl with 1/3 the lines of code. Probably could slim it down even more with python.
  • sc2Qui - Calls a script on 8 computers in parallel to make the systems quiescent, hence the weird name. This is used every night by the operators at JCMT.

ACSIS Temperature Monitoring

March 2013 - Joint Astronomy Centre
Given PLC registers, developed EPICS database, logged to our archive.

Ongoing Computer Upkeep

2008-Present - Joint Astronomy Centre
I help the system administrators by replacing hard-drives and other hardware at the summit on our many machines.


Popular posts from this blog


Manufacturing Coming to a Place Near You

Short Story: Dreams with no Prophecy