Wednesday, July 27, 2011

Speaking in Code

Hello again,

Today I am hoping to explore my thoughts on the world of coding and computer programming. I have been interesting in learning computer language for several years now, and the time seems as ripe as ever to start learning. The trouble I'm having has several prongs. The first and probably most important of these is that there are so many languages and so many things I would like to do that I'm having trouble focusing and narrowing down to one language or one learning tactic, and so I end up with a set of skills that is extremely limited and broken to the point that I can only do very little. I have a basic understanding of linux alias and shell scripting, but anything beyond a few lines quickly becomes too complicated for me. I spent a good part of the past 6-8 months trying to learn C and C++ using an online course and its resources at Harvard, and did get a fairly good understanding of the basic concepts surrounding programming, but no actual knowledge in terms of being able to write a program myself. I can navigate in windows and linux command-line interfaces, but actually performing meaningful tasks usually requires a few minutes of google search followed by pasting code from the web and letting it do what I was looking for. This solution does work in theory, but it can be very time consuming. A solid understanding of any of these programming languages would definitely be preferable to what I have now, but this is very difficult for me, especially when I cannot commit all my time to learning or using the languages. The CS50 course at Harvard taught a lot of basic information about a few languages, but doing a Masters while trying to take a distance learning course proved a little bit too much.

All of this is not to say that I am not computer literate. When it comes to solving problems on any of my electronic gadgets, I can efficiently solve them, and even my intuition for these matters is fairly high. The issue I'm having is that when it comes to understanding how what I do solves my problem, my level of understanding is extremely low. It seems to me that in attempting to learn these skills, I am met with oversimplification. I realize that there are reasons for explaining things in this way, and that it will always be this way, at some point I will want to have all the layers peeled back and be able to see what I am actually doing while programming. Maybe if that ends up happening, I'll finally be able to understand what I'm doing wrong and how I can truly learn and use programming to mine and everyone's benefit.

This week's App:

Panamp (iOS)

This app is a music player which should be able to completely replace the default iPod app for only $2.99. The app consists of three screens, in order a search screen, library screen and finally current playlist screen. Playback and search is most easily performed through swiping. For example, selecting a song to play from the library screen is as simple as swiping it to the right into the playing screen (the queue picture on the left). Once a song is in the queue, you can move it around easily from the right of the song (on the right), and swiping it off the screen removes it from the playlist. Playback is also controlled from the bottom of the screen by swiping the currently playing song to the left (next) or right (previous). Playlists loop automatically. It is a very simple intuitive app which is extremely smooth and whose menu transitions are meaningful rather than distracting and slow down navigation.

Jailbreak app: iFile

This is a must-have app for anybody wanting to use their phone as a computer in any sort of meaningful way. The app now also integrates beautifully with Dropbox, meaning that transferring files to your phone from your computer has never been simpler than now.