Sunday, March 22, 2015

Which project?

As part of my quest to adventure-ously code for open source projects, I'm applying to Google Summer of Code 2015.   I'm looking at two project areas affiliated with Astropy, the astronomer's best friend* when coding in Python.  My potential mentors are professional astronomers and astrophysicists, as well as long-time contributors to Astropy and similar projects.

One possible project would involve putting together a planning tool for observational work.  Our motivation comes from a need to automate the analysis of scheduling telescope time, and do it in a package that "FITS"** in nicely with pre-existing Python work flows.

Some of the thoughts that literally keep astronomers awake at night:

"When will my star/galaxy/X-ray source/etc. be visible, and for how long?"

"Will the moon/other objects/atmospheric effects get me noisy star spectra?"

"Can my telescope's motors move fast enough to view a second or third galaxy in one night?"


???!!!


Tools that answer these questions are constantly being developed by various observatories.  Some existing software packages use languages like C and Javascript.  Since Astropy's goal is to provide a one-stop-shop for all your open source astronomical needs, a Python implementation would be very useful.

The products of such a tool would include the usual plots and tables (airmass, paralletic angle, etc.) and customizable object lists, but would be packaged in an easy-to-use GUI, perhaps with simple animations and web browser capabilities.  The tool would work in requested features from the Astropy community and be used by researchers at various observatories to provide feedback. 


...

"Gee, Jaz, sounds great!  But how would you do actually do it?" 

For starters, I had to learn how to use Git (a back-up system used by programmers).  Then I dug around in the Astropy code repository on GitHub and a couple different developer mailing lists until I knew enough lingo to go undercover as a "real" programmer. 

I also asked the incredibly smart (and super helpful!) astropy-dev community about the procedures for setting up isolated environments for testing code.  I've been practicing my cloning, forking, branching, setup.py'ing, and list-mailing.  So far, so good--no one's blown my cover.  

...but this is only the start!  In the next couple of days, I need to:

  1. Take a closer look at the code base for Potential Project #2, and run some tests on it.  
  2. Skype meet with my potential mentors.  We're scattered across 10+ time zones, so that should be easy.
  3. Submit a patch (bug fix, documentation edit, etc.) to the Astropy code base.  This is required for applications to GSOC under the Python umbrella. 
  4. Get my application hammered out.
  5. ??? You tell me.  It's like 4AM over here.

Footnotes:

*Even if said astronomer has real, human friends.  Unless said human friends know how to write code in Python.  Still waiting on Astropy to accept forgot_wallet=TRUE option when I run letsgobeer().

** Flexible Image Transport System. 


No comments:

Post a Comment