a thoughtful web.
Good ideas and conversation. No ads, no tracking.   Login or Take a Tour!

Yep yep. What you are asking to do requires a fair bit of knowledge from a number of domains:

1) Program flow: if, while, for, function calls... You'll learn all this in pretty much any "intro to language X". Start here, since the basics are common to any language, even if the syntax differs.

2) Data structures (& algorithms): How do you represent that the satellite data in a way that uses computer resources efficiently? The answer to this question will be relatively simple in your case, but knowing the limitations of a hash table vs. a linked list vs. binary tree takes a small amount of learning.

This book us usually recommended for the subject, but it might be overkill in your case. Still, understanding what "Big-O" is will take you a long way in programming. And knowing how to get O(n) instead of O(n!) means the difference between taking a second to load and finishing a task after the heat death of the universe using more memory than there are atoms in a galaxy.

3) UI Design: I'm shite at this, so ask someone else for resource recommendations. If you figure out how to strap your program on top of another tool, like Google Earth, it might be unnecessary. Maybe OP's link will help, but I can't vet it.

4) APIs: How do you issue calls to retrieve your data? What format does it come in? How do you then tell OS X / GTK / Google Earth to display your data? This is usually as domain-specific as things get. Each library / service has their own way of doing things. Sometimes their documentation / examples suck, sometimes it doesn't. If the satellite data is presented as "JSON through a RESTful API", that'll mean learning one library for retrieving the data and another to manipulate it.

5) Nitty gritty: "How do you get it to compile? To run? To be distributable?" Again, Python is different from Objective C is different from C is different from Java. Decently designed programs will give you a list of dependencies and at most three commands to build and install / run. Having an IDE around can make this as easy as hitting the build hotkey for XCode / NetBeans / Eclipse / ....

6) Behind the scenes: Depending on how far you want to go with your project, it's often valuable to learn a bit of software engineering: how to use a version control system, how to write software tests, and how to use a command line. It won't affect your code functioning, but it helps to keep track of changes over time and see where things failed when you decide your weekend's work was all shite.

- Popular VCSs are hg and git. The basics can be learned in half an hour, and both have UI tools (TortoiseHg + GitHub's App) and web services (Bitbucket and GitHub) to make your life easier. Most everyone has an opinion which one is better, but, honestly, they are extremely similar and either will suit your purposes. At best, it'll give you a detailed history of who made each change to your program. At worst, it'll give you a bug tracker.

- Tests break down into unit, integration, and functional tests, and are pretty much a list of example calls to parts of your program along with expected outputs at various levels of granularity. Every modern language has support for them, and they turn: "My program isn't working" into "get_satellite_timezone is crashing over Antarctica".

- Command lines are incredibly useful in debugging, but not 100% necessary if you pick a decent IDE / language. I can understand the aversion to esoteric file-system manipulation tools, but anything you might need for programming purposes can be fit on a single A9 cheat sheet.


Hope that helps, maybe a bit long-winded, and maybe overkill, but pick and choose what seems useful / relevant.