

For some time, experienced independent Mac software developers have been blogging about how they got to where they are, what risks and tribulations were involved in getting to where they are, and what mistakes they made on the way to being an indy dev…

Quite simply: (Implementation) Inheritance requires children to understand their parents (which I can tell you from personal experience is a dangerous assumption).

In January, iPhone development company App Cubby decided to run an experiment. Reacting to user complaints about App Store’s lack of a try-before-you-buy feature, App Cubby reduced its prices across the board to $0.99 and created a donation page where satisfied users were urged to donate the difference between the $0.99 and the actual value of the software.

But here’s the paradox: the types of programmers who would most benefit from these guidelines, rules, principles, and checklists are the least likely to read and follow them.

The road ahead in software development is filled with an untold number of bad theories and false starts. That’s the inevitable truth in any maturing discipline, yet it’s one that many software practitioners seems unaware of. Just because something is appealing or sounds good, doesn’t mean it is good for you. That’s obvious in food – chocolate cake for breakfast every morning will eventually kill you – but it’s also true in programming practice. The best one can expect is that we take some time to think about each new approach, and if necessary try it out somewhat. Buying into everything, at the 100% level is a recipe for disaster. The goods being sold are just not that reliable.

ObjectiveResource is an Objective-C port of Ruby on Rails’ ActiveResource. It provides a way to serialize objects to and from Rails’ standard RESTful web-services (via XML or JSON) and handles much of the complexity involved with invoking web-services of any language from the iPhone.

Some programming languages, especially among those which haven’t gained great popularity, are puzzles.
That’s not to be confused with “programming in general is a puzzle.” There’s always a certain amount of thought that goes into understanding a problem and deciding upon an approach to solving it. But if it takes focused thought to phrase that solution into working code, you go down one path then back up, then give up, then try something completely different–then you’re almost certainly using a puzzle language.