Friday, February 5, 2010

The Forest Through the Trees

On reddit today there was a question, "What is a good introductory programming language for a 12-year-old?"

I don't think there is one. People don't learn programming languages for the sake of learning programming language. This goes back to if you want to learn a programming language you should first have something you want to say (do). I see this question a lot when it comes to learning a new language. People make the connection between knowing how to program and other benefits they can derive from it so the next logical thing to do is learn a programming language. I don't agree. Nothing is as interesting as solving a real problem than learning how to program. Learning how to program is a natural side effect of solving interesting problems.

I have seen this pattern of efficiency in learning when you are doing something and your primary goal is not learning the subject at hand. If you want to get good at guitar perhaps join a band and have fun playing with people. Knowing how to make all the chords is boring compared to playing an actual song that happens to have chords in it.

Sunday, January 17, 2010

Not it!

Steve Yegge wrote a very interesting blog post about the web development and how it’s not a part of the software industry.

http://steve.yegge.googlepages.com/its-not-software

Friday, January 1, 2010

Happy New Year

Another year under the belt. Now I have to work that off. :(

Saturday, September 19, 2009

_SCDynamicStoreCopyConsoleUser Error

While working on my iPhone game I all of the sudden got an error when I would attempt to launch the simulator using 2.2.1.

2009-09-19 12:24:48.742 StarCatch[6781:20b] Error loading /Library/Components/Google Camera Adapter 0.component/Contents/MacOS/Google Camera Adapter 0: dlopen(/Library/Components/Google Camera Adapter 0.component/Contents/MacOS/Google Camera Adapter 0, 262): Symbol not found: _SCDynamicStoreCopyConsoleUser
Referenced from: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/LangAnalysis
Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.2.1.sdk/System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration


So I went to my best friend, Google, and asked them what could be the problem. I found this link:
http://discussions.apple.com/thread.jspa?threadID=1650506

Where they mentioned QuickTime add-ins. I could not remember the last thing I updated but QuickTime was one of them recently. So in the error Google Camera was mentioned and I followed all of the paths in the error message to see if I could make sense of this. When I went into Library/Quicktime and found Google Camera I archived it and removed it.

It worked.

Monday, July 27, 2009

Beware: The King is bored!

The following is a rant.

I enjoy listening to the Stackoverflow podcast as I have been a long time reader of both Jeff Atwoods and Joel Spolsky’s blogs. The last podcast (Stackoverflow Podcast 62) Jeff and Joel discussed how questions are asked and the prospect of stopping people from asking too many ‘bad’ questions. From what I gather on the podcast Jeff doesn’t think these people asking so many ‘bad’ questions should get the reputation they have accumulated. He says that people should be researching questions and putting a lot of thought into them as he does.

Now, in the beginning of Stackoverflow Jeff said it very clearly that the community owns the site and it’s emergent properties are what will make it good. It will become what the community wants it to become. So say the King. Now it seems the King has gotten bored and wants everyone to be learning and asking thoughtful questions. When the King gets bored crazy things start to happen. They might start tournaments or send off people on quests for the holy grail.

In this podcast he went as far as saying that he wants to design the system to make people want to learn more by doing their own research. I think people should do research and learn as much as they can. The problem I have with all this is the fact that he is interrupting the emergence we now call Stackoverflow. Control the aspects that you need to so people continue to have an enjoyable visit but when you start promoting values I think you have gone too far. I would love for everyone to love learning as much as me (I know there are people who love learning more than me so I would love for everyone to love learning as much as them as well). But when I visit stackoverflow I am looking for a quick answer to a problem I am trying to solve. I don’t want the system to halt me and prevent me from asking my simple question just because Jeff (The King) is thinking of better ways to make his people more like him.

I am not going to write out detailed and thoughtful questions with all of its caveats and attempted solutions. In fact when I google for my simple question I probably won’t hit any of Jeff’s because they contain so much detail and may not even be a starting point for me to get my answer.

Beware the bored King. I think we need to get Jeff his own jester.

Wednesday, June 24, 2009

Competition

I have had many business ideas over the years and the fear that most people seem to bring to me is that someone is already doing it (Competition) or that the field is saturated. Now, I am an eternal optimist so I am going to disagree just out of principle. The point I would like to make today though is that when it comes to competition you only have to worry about the top 5% of people. This is of course assuming that you are either a top 5% yourself or you have what it takes to get to the top 5%. I will talk a bit later about what I think it takes to get to the top 5%. Many successful people have given the answer.

Everyone has probably heard about the 80/20 rule. The top 20% will do 80% of the work in a system. The same applies for competition. The top 20% of people will be carrying 80% of the work being done. Out of that 20% the top 25% of people are the ones you want to worry about as they are the ones that will help you grow the most. These are the people you will learn the most from. Of course this all assumes that your goal is to compete and be the best at what you do. You may have different goals. No matter what your goals are the 80/20 rule will show itself to you. 20% of your code does 80% of the work and so on and so forth.

My point with all of this is if you are thinking about doing a startup or some sort of business you need not look at the many who are doing it but the ones that are doing it at a level you wish to get to. Look for the top 5% based on your goals and get to know them. Learn from them. You want to be in that top 20% minimum.

Tuesday, June 23, 2009

Analogies

While working on a project the project manager and I would sometimes sit and come up with creative analogies to explain why the project we were working on was failing. These sessions were always therapeutic for me as they allowed me to map out the problems and relationships that were causing us our current pain. I am sure I am not alone in this practice of creating analogies or metaphors to help other developers, managers and customers understand our point of view. This is why I would like to point out the pitfalls of creating these analogies as I have learned on this project.

Analogies, like abstractions, can be leaky


Just like abstractions can be leaky, so can analogies. In the Disney move “A bugs life”, Flik attempts to explain to a younger ant how a seed will grow into a big tree but with no seed around he tries to use a rock. This visual analogy is lost on the little ant girl as she attempts to explain to Flik it is only a rock. When using an analogy try to shore up any holes or distractions that take away from your point.

It’s about the communication

Analogies are only as good to the point they successfully convey the message you are trying to send. When developing an analogy to make your point focus on the results of your communication and not this great analogy you created. The whole purpose of creating an analogy is to help the other person(s) map your idea to one they are already familiar with. If they don’t relate to your analogy then you have failed.

Don’t idolize the analogy

Be flexible and don’t get hung up on a great analogy you have. Sometimes analogies can take on a life of their own completely undermining the point you are trying to make. Keep it simple.

Don’t overuse a painful analogy

If the message you need to convey is pointing out another person or teams failing be careful not to overuse it. If you are trying to pour salt into an already opened wound then be my guest but remember you are not going to win over any hearts if you are doing nothing but twisting the knife at every conversation.

Analogies are great but like everything need to be used sparingly to convey the real power of your message. Our project manager now has the identity as “the guy that comes up with all the analogies ad nausea.” Don’t be that guy/girl.