100 Observations Logged on AstroChallenge!

🔖 featured  astrochallenge  astronomy  code 
I created AstroChallenge to scratch my own itch: to have a place to keep an observation journal for astronomy and to share it with the rest of the community. In that I believe I’ve succeeded, check out my profile and journal. Since then the word has gotten out and other astronomers have been logging their own observations. Now, only 2 weeks after making AstroChallenge public, over 100 observations have been logged! Read more...

Reviving fchart to Create Beautiful Astronomical Finder Charts

🔖 astronomy  code  astrochallenge 

I’ve spent a good deal of time in the last few days searching for a good library to draw star charts (finder charts) that I could use to integrate with AstroChallenge. While there are plenty of utilities to create star maps, they mostly consist of desktop software or websites that are not open source.


Eventually I found fchart which resembled was I was looking for. A set of python scripts with minimal dependencies that would output star maps! This I could use.


GraniteMaps: Soquel Demonstaion Forest/Nisene Marks released!

🔖 granitemaps  code  cartography 
After much ado, the latest map from GraniteMaps is now available. This map covers 2 distinct areas; The first is Soquel Demonstration Forest, well known in the mountain biking community as having miles of challenging, technical singletrack. The other is the Forest of Nisene Marks which shares a ridge with Demo and provides trail users of all types some of the most pristine redwood forest trails available in California. This new map is much improved over the last version for Santa Cruz by having a brand new base layer. Read more...

Using Django and PyEphem to Determine the Location of White Fuzzies

🔖 AstroChallenge  astronomy  code 

I’ve been working on new project recently called AstroChallenge. While the details of what exactly AstroChallenge is will have to come later, rest assured, it has to do with Astronomy.


One of the bits of information I’m interested in is whether a particular celestial object is visible in the sky or not. Given an observer’s latitude, longitude and elevation and an object’s right ascension and declination it becomes a straightforward calculation.


Creating nice looking topo maps for use in GraniteMaps

🔖 cartography  code  granitemaps 

The goal of GraniteMaps is to provide accurate and educational maps for people participating in outdoor activities, so a large part of the project is creating maps that are pleasing to the eye.

The map displayed in granitemaps is actually two layers: the “base map” and the trail layer. The base map is is responsible for displaying the details of the map’s area such as land boundaries, rivers/lakes, major roads and elevation. The trail layer is an overlay of the actual trails and points of interest.


Hello World! In AngularJS

🔖 code 

My coworker recently complained to me how hard it was to find a simple “Hello World” program in AngularJS. I did a google search and found that indeed, all the simplest examples still asked the user to set up a bunch of boilerplate, file structure, etc.

Here is the simplest Hello World in AngularJS I could come up with, and it still shows 2 way binding:


Building a trail map for Android using Ionic and Leaflet

🔖 code  cartography  granitemaps  featured 


Edit 11/27/2014: GraniteMaps Santa Cruz is now available on the iOS store! link

It took me a while, but over the weekend I officially submitted my first app into the Google Play Store:

GraniteMaps: Santa Cruz is a digital trail map for those looking to hike, ride or trot the trails in and around Santa Cruz, CA. GraniteMaps: Santa Cruz provides an easy to read topographical map, current location, trail list, and extra information on local wildlife.

So technically, how did all this come together? Using a bunch of awesome libraries held together by dirty hacks, of course!


Making ng-grid scroll and select naturally with arrow keys

🔖 code 

The default behaviour of angular’s ng-grid library while using multiselect is a little strange. By default using the arrow keys will select multiple rows. I was looking for behaviour that would only select rows if ctrl or shift were being held. ng-grid also seems to have an issue with not showing the currently selected row in the viewport, causing the table not to scroll properly. The following code placed in your gridOptions object addresses both issues:


Getting the Time Right in Python

🔖 code 

I hate time. I especially hate dates. There is not a single data type I hate working with more.

I think the problem boils down to the fact that they seem so arbitrary. The Gregorian calendar just doesn’t translate over well to binary systems. Ideally, there would be 100 seconds in every minute, 100 minutes in every hour, 100 hours in every day, etc. But no. We must deal with weird numbers like 60, 24 and 31 (but sometimes 28, or maybe 30) and all the inconsistencies they cause.


I’m going to lay out some of the modules and function in Python relevant to working with time.