
Jul 2, 2009
The iphonedevcamp.org is at the end of July and is only $50. It’s mostly developer centered, but it’s a great way to learn to become an iphone developer. Here are some quick steps you can take to be able to write iphone apps in less than 31 days, for less than $100, and less than 60 hours of effort. The only requirement is that you have a mac.
1) Buy the following book: http://www.amazon.com/iPhone-Action-Introduction-Web-Development/dp/193398886X ($26) and go through the exercises in chapters 10-19 ( 30 hrs)
2) Sign up at iphonedevcamp.org ($50), (includes tons of food and beer for an entire weekend)
3) Attend dev camp and develop your own app (24 hrs)

Mar 20, 2009
Update 7/2/2009:
Now Google App Engine supports Java, which was at the top of a lot of developers’s wish lists.
Original Post:
The cloud hype is maxed out. Every company is rolling out their cloud initiative. Every analyst thinks the cloud is the future. Every developer wants to add the cloud to their resume. Every CIO wants to be leveraging the cloud to save money.
However, nobody really knows what the cloud is. Just like in the late 1990’s, when everyone was a web service expert but nobody had the same technical definition of what a web service was. I’ve used Amazon’s cloud, which gives developers a virtual machine login and also a special way to store data. I’ve used the Google cloud, which gives developers a way to deploy web apps with Python. I’ve used the Slicehost/Rackspace cloud, which is like the Amazon cloud, but cheaper and without the data storage. My employer, Sun Microsystems, is rolling out a cloud API that will define a different kind of cloud. If the cloud is the future, shouldn’t we first agree on what it is?
If I could define what the cloud should be, I would say that it should be a place where I can deploy any application written in any language with any IDE. I should have the freedom to make it available to anyone on the internet or make it securely available only to my corporate intranet. It should be infinitely scalable (which is impossible, but should be scalable to the point that a well written application could keep growing to support hundreds of thousands of users.) I want to be able to pay for storage, bandwidth, processing, and memory units with no minimum and be able to scale up and down instantaneously by moving a dial on a website up and down. I want to receive an email when any of the parameters I’m paying for reach 90% capacity so I can scale up and down. I want to have easy integration with content delivery networks like Akamai.

Mar 16, 2009
Divergence can mean many different things in hardware and software. I look at it from the point of view of a software developer. To me, divergence is measured by the amount of work to get software to run for as many users as possible.
In browsers over the years, divergence has meant fine tune javascript, learn HTML bugs on different renderers, and put up with corporate competitive sabotage over Flash and Java applet supports. These challenges still exist to an extent, but the situation is much better. Today, if you stay away from writing I.E. specific functionality, Firefox, Safari, and I.E. handle HTML, javascript, flash, and even the new Java applets similarly.
On the desktop, divergence has basically meant porting between Mac and Windows. With the advent of Ajax and more featureful web apps, there are just fewer instances when you want to write a desktop client in the first place. The increased conformity among browsers has helped. Also, when Apple switched to Intel chips, tools like VMWare make it so if users really want to run an Windows app with their Mac, they have no problems. I’ve had my Mac for about a year now and have only used VMWare once.
While divergence has diminished on the browser and desktop, the mobile landscape is the next frontier… and it is a big mess. Java ME for a time helped minimize porting between mobile platforms, but developers still had to adjust their apps to all the different form factors and the whims of the carriers that arbitrarily restricted various API’s. Now that Java ME is more or less slowing down and Sun is turning its attention to Java FX, Java ME is becoming less relevant in mobile. The new app stores announced are great, but to reach the full capabilities of each phone, developers have to pretty much to a completely rewrite of each application. I try to stay on top of development options for iPhone, R.I.M. BlackBerry, and Symbian, but the task is daunting. I’ve been watching the work of the Symbian foundation. Symbian currently runs on 50% of new smart phones. I’m hoping that now that they are open source, their share can grow and eventually become the de facto standard for mobile developers.