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

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.





insomniasexx  ·  3677 days ago  ·  link  ·  

    3) UI Design

Oh! I've got this.

Books:

1. "The Visual Display of Quantitative Information" - fucking fantastic book

2. Everyone says "Don't Make Me Think" but I didn't find much new/useful from this books. Most is covered by the basic UI blogs.

3. About Face: The Essentials of User Interface Design - just finished this one. The basics. Great.

I prefer blogs though.

Here's my list:

1. Nielsen Norman Group

2. Weekly newsletters about general design / ux - full of modern information that is 100% applicable to today

3. Pattern Tap - this is a reference of how other people do certain things like forms or top navigations etc.

4. The Hipper Element - mostly pulls exceptional stories from other blogs. Great. Also his UX Crash Course is so good.

5. Tuts+ - basically will teach you anything about anything. They recently broke their tutorials down into categories like design and code which is great. This is one of my favorite things in my RSS. One moment I'll be reading about Russia, the next I'll be knee deep in creating a knight in shiny armor with illustrator.

6. ia blog

7. UX Apprentice

here's the full list. 1 2 3

Here's another good thread from Quora: http://www.quora.com/Which-books-can-help-me-become-well-versed-in-UI-UX-and-usability-standards

thundara  ·  3676 days ago  ·  link  ·  

Links all appreciated. Tangential complaint, hubski notifications on comments have stopped working for me. I had to manually go into this thread to see that there were replies (Happened the other day, too).

insomniasexx  ·  3676 days ago  ·  link  ·  

Both your email notifs and orange hub wheel notifs?

thundara  ·  3676 days ago  ·  link  ·  

Turned off email, but now it's suddenly working, got hub wheel notification for this entire thread between that post and now.

insomniasexx  ·  3676 days ago  ·  link  ·  

Interesting. Maybe it was just hungover from a long night and is playing catchup now. :P

kleinbl00  ·  3677 days ago  ·  link  ·  

Helpful. I'm seeing lots of python talk. That's a start. Perhaps to improve the perspective, I can look at your lists and go 'yup. recognize the language. Passing familiarity with all that. Zero confidence in implementation.'

That whole "known knowns" and "known unknowns" and "unknown unknowns" thing? Programming is a "known unknown" for me.

thundara  ·  3677 days ago  ·  link  ·  

It's a lovely language that's easy to read / write (Originally described as "executable pseudocode", has a large range of freely available libraries, and hides much of the nitty-gritty from people who don't want to add: "How to compile" and "How to manage memory" to the list of things to learn.

On the other hand, benchmark-to-benchmark, it's interpreter isn't the faster in the universe, it doesn't do multiprocessing very well, and there is the current divide in the versioning. When you've hit a performance wall, the language designer's advice is "re-write it in C".