Saturday, May 18, 2019

A Birthday, Collaboration, and the Open Source Process

Yesterday I turned thirty, and this past month I got my first and second “real” pull requests accepted, into the Astroquery module of Astropy.

If you don't understand what I just said, I'm going to need to do some explaining. Let's start with the concept of “open source” mentioned in the title: open source, as used in computing, refers to computer programs where the source code for the program is available somehow for inspection. An open-source program is one where anyone can come along and look at the underlying code, and usually (though it depends on the license) take it, modify it, and use it themselves. Typically it also involves an idea of open collaboration, where anyone can suggest improvements to the code for the benefit of all users.

A “pull request” is one such way to suggest an improvement, using the popular version control software Git (originally written by Linus Torvalds, also the creator of the original Linux kernel). The website GitHub.com hosts vast numbers of Git repositories (the name for a collection of all the source code for a project) and makes it easy to coordinate collaboration from many people around the world. A pull request is a request to the maintainer of a repository to merge (or “pull in”) some changes from another source.

Around a month and a half go ago I started using the Astroquery module of the Astropy project (which is a collection of Python code for use in astronomy). The Astroquery module allows you to query various astronomical databases that don't have official APIs; I use it for searching for information about atomic transitions from the National Institute of Standards and Technology (NIST) Atomic Spectra Database (ASD). Anyway, I discovered that there was some information being returned that wasn't being parsed into the returned results, so I made a one-line addition to my local copy of the code (after a little experimentation) which made it work. I figured it might be of interest to other people, so I made a pull request to the maintainers of the package, and after going through the review process it got accepted!

This was more of a feature addition than anything, but a week or so later I discovered an actual bug in the handling of certain Unicode characters present in the database. (The dagger character [†] was being written as an HTML multi-character code which broke the fixed-width formatting that was being performed on the query results.) This required a little more detective work to figure out, and some back-and-forth with the package maintainers on what a good fix would look like, but I found a simple, effective fix and submitted a pull request for that as well. This time the process was slightly more involved, as I wrote an automated test to cover the situation and a change log entry for the issue I'd raised regarding the bug, but after another week or so this one got accepted as well.

I've long admired the idea of open source, of people around the world giving of their time and creativity to improve software freely available to everyone, and it's a great feeling to finally be part of it myself. A person's contributions to open source projects can look good on a résumé as well (it shows you can code and work as part of a team), so it has practical benefits as well. I don't know what form future contributions might take, but I'd definitely like to continue contributing in the future as my knowledge and skill allow. A hui hou!

Monday, May 6, 2019

A Glimpse into the Stellar Painting Process

I promised a post on the creation process for my series of stars, and though I've been distracted by other things I've finally found time to write one. The entire painting process took almost two months, so I thought it might be interesting to see it in photos.

I started the entire series with the giant O-type star, and took the following three photos during the first session. Here it is as I was applying a layer of titanium white (like I did with my second star, the B-type in the video I made.)


Initially I wasn't sure how purple to go with it, so I started conservatively with a layer of blue before adding any purple. This was kind of my first time really using a deerfoot brush and I went a bit overboard with the paint splotches; I'd use a much lighter touch with more feathery character later on, but at the time I thought it was a great effect.


It's funny to think how elated I was with this first version (seen below at the end of the first painting session); I thought it was just the coolest star I'd seen at that point. I've spent many hours on it since and I think the final version is far superior, but it was still fun to see how even a few hours could get something that made me think of a star.


In retrospect, the blue was too much, or at least, too far from violet. I came to this conclusion after I started on the B-type star, after I looked at them together as seen in the picture below. I realized I could make each star be more tightly centered around a smaller part of the color range and it'd still be fine. Though trying to mask out some of the blue in the O-type is what lead me to the serendipitous discovery that making snaking white lines over the surface made the star look a lot hotter and more dynamic, so it all worked out in the end.
 

This next picture is what the A-type star looked like at first: almost completely white, with just the faintest tinge of pale blue. Originally the A-type and F-type were going to be very nearly completely white, just slightly tinted towards blue and yellow, respectively. To help, the A-type would have titanium white as a base (which is blueish) while the F-type would have antique white (which is slanted more towards yellow). After doing more of the other types I realized I could differentiate them a bit more, and I think they were both improved by that decision.


Here's a shot of my very first time using textures gels. The top is ceramic stucco texture, for the F-type, and the bottom is resin sand for the G-type. (This is before I added any colors.) This was such a mind-blowing experience that I ended up writing a whole post about it


Here's what the F-type star originally looked like, showing the ceramic stucco texture gel. It was very “mustard yellow” initially, which I toned down a bit towards white (the opposite of what I did for the A-type, funnily enough). It's still yellow now, but more mellow.


Finally, this photo is of the custom gel mixture of heavy gloss gel and glass beads that I whipped up for the O- and B-type stars. I had a pre-mixed glass beads gel with some little tiny beads that I used on all the stars, but for these two biggest ones I also used some larger glass beads (about the size of a BB) as well. I took this right after mixing it up as I was starting to apply it to the paintings, though it's hard to make out the glass beads amongst the white gel. You can see the O-type painting in the background.


Hopefully this gives a little insight into the creative process. I showed off the completed paintings, but it took some time—quite a lot of time for the O-type especially—to come to fruition. That's one of the benefits of painting, I suppose; much like writing, you can go back and edit and improve (to a greater or lesser extent, anyway)! A hui hou!