<?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-1380054009381876770</id><updated>2008-06-26T22:39:04.535-04:00</updated><title type='text'>Adam Houghton</title><link rel='alternate' type='text/html' href='http://www.adamhoughton.com/'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://feeds.feedburner.com/AdamHoughton'/><author><name>Adam Houghton</name><uri>http://www.blogger.com/profile/14776528168857299346</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1380054009381876770.post-8334133838481312349</id><published>2008-06-09T16:28:00.009-04:00</published><updated>2008-06-09T16:51:37.672-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>3G iPhone Price Increase: Total Cost of Ownership $40 More</title><content type='html'>I'll be first in line to buy a new 3G iPhone as soon as they're released on July 11.  3G, GPS, AppStore - I can't wait.&lt;br /&gt;
&lt;br /&gt;
That said.... it's worth noting that in the United States, where AT&amp;amp;T is the only provider, the iPhone's total cost of ownership increased by $40 over the previous version.  &lt;a href="http://biz.yahoo.com/ap/080609/apple_iphone.html?.v=13"&gt;As reported by the Associated Press&lt;/a&gt;, AT&amp;amp;T will charge $30/month for an unlimited data plan, up from the current $20/month.  Over the life of the mandatory 2-year contract, this means the 3G iPhone will be more expensive:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Old 8GB iPhone: $400 purchase price + ($20/month X 24 months) = &lt;span style="font-weight: bold;"&gt;$880&lt;/span&gt;&lt;/li&gt;&lt;li&gt;New 3G 8GB iPhone: $200 purchase price + ($30/month X 24 months) = &lt;span style="font-weight: bold;"&gt;$920&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:85%;"&gt;(Everything rounded up from 99 cents &amp;amp; 99 dollars for simplicity)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
I thought the original pricing was a good value, so I don't mind paying $40 more over the life of the phone for all the additional features.  If anything, the change in pricing will actually make it easier to justify an upgrade to my wife: "Look, it's half the price!"  As long as she doesn't read the fine print on the AT&amp;amp;T contract, I'll get my new toy in July...  : )&lt;br /&gt;
&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.adamhoughton.com/uploaded_images/hero20080609-714021.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://www.adamhoughton.com/uploaded_images/hero20080609-713996.png" alt="" border="0" /&gt;&lt;/a&gt;</content><link rel='alternate' type='text/html' href='http://www.adamhoughton.com/2008/06/3g-iphone-price-increase-total-cost-of.html' title='3G iPhone Price Increase: Total Cost of Ownership $40 More'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1380054009381876770&amp;postID=8334133838481312349' title='1 Comments'/><link rel='replies' type='application/atom+xml' href='http://feeds.feedburner.com/AdamHoughton' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/8334133838481312349'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/8334133838481312349'/><author><name>Adam Houghton</name><uri>http://www.blogger.com/profile/14776528168857299346</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-1380054009381876770.post-2218028209355435190</id><published>2008-03-13T01:06:00.012-04:00</published><updated>2008-03-13T02:13:34.924-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>iPhone vs Android: A Matter of Touch</title><content type='html'>After last week's press conference, my friend Ed Burnette &lt;a href="http://blogs.zdnet.com/Burnette/?p=544"&gt;compared the iPhone SDK to Google's Android SDK&lt;/a&gt; on his ZDNet blog.   It's a great rundown of the platforms, and describes the dev kit differences (developer tools, application life cycle, devices) and the many similarities (location based services, acceleromater,&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.adamhoughton.com/uploaded_images/SDK-726143.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://www.adamhoughton.com/uploaded_images/SDK-726140.png" alt="" border="0" /&gt;&lt;/a&gt; OpenGL ES, SQLite).&lt;br /&gt;
&lt;br /&gt;
From the software developer's perspective, Android openness is appealing: less restrictions on applications, easier deployment to devices, and a lower barrier to entry (any OS, no $99).  But Ed points out two advantages for iPhone that I think will end up being Apple's aces in the hole:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Multi-touch&lt;/span&gt;: The multi-touch experience is the iPhone's killer app, and Android doesn't have it.&lt;br /&gt;
&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Consistent hardware&lt;/span&gt;: Android devices will come with differing screen sizes, processing power, and input devices.  This will lead to cheaper phones, but an inferior user experience: applications designed to accommodate never excel.  Desktop apps have room for error (what's 1024 pixels among friends?), but mobile apps have to shine or they stay in the pocket.  With the iPhone, developers can target their application to one specific platform and fine-tune a pixel-perfect user interface.&lt;br /&gt;
&lt;/li&gt;&lt;/ol&gt;I might be wrong, and the PC model might win out again.  Google has put forth an impressive SDK, and it's somewhat of a foolish exercise to judge usability without actually using a device.    But from my perspective, the entire iPhone experience will be hard to beat.&lt;br /&gt;
&lt;br /&gt;
The second half of 2008 will be an exciting time in the mobile space: Android devices will be on the market, iPhone applications will be in AppStore, and hopefully a 3G iPhone  will be flying off the shelves.  I can't wait to see what developers start releasing and, more importantly, what consumers start using.</content><link rel='alternate' type='text/html' href='http://www.adamhoughton.com/2008/03/iphone-vs-android-matter-of-touch.html' title='iPhone vs Android: A Matter of Touch'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1380054009381876770&amp;postID=2218028209355435190' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://feeds.feedburner.com/AdamHoughton' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/2218028209355435190'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/2218028209355435190'/><author><name>Adam Houghton</name><uri>http://www.blogger.com/profile/14776528168857299346</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-1380054009381876770.post-7016058010079726521</id><published>2008-03-10T15:28:00.013-04:00</published><updated>2008-03-10T18:11:54.853-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><category scheme='http://www.blogger.com/atom/ns#' term='Leopard'/><title type='text'>iPhone Software Development: No Anger Here</title><content type='html'>I'd like to follow up on my &lt;a href="http://www.adamhoughton.com/2008/03/visiting-aspen-trip-through-iphone-sdk.html"&gt;initial impressions of the iPhone SDK&lt;/a&gt;.  Overall, I think Apple did a great job with the SDK, and released a powerful, comprehensive environment for developers.  I brought up a few minor criticisms in my post, but concluded with:&lt;br /&gt;
&lt;blockquote&gt;"Setting aside these concerns, I'm very impressed by the iPhone SDK. It builds on the strong foundation of OS X, while integrating with the multi-touch and mobile capabilities of the iPhone. You can tell a great deal of work went into preserving the Mac experience on a device lacking in memory &amp;amp; computing horsepower."&lt;/blockquote&gt;The Internet being the Internet, I shouldn't have been surprised to see my post quoted in an article by Alexander Wolfe of InformationWeek entitled "&lt;a href="http://www.informationweek.com/blog/main/archives/2008/03/iphone_sdk_deve.html"&gt;iPhone SDK Developers Angry at Apple's Tight Control&lt;/a&gt;."  A few points of clarification:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;I'm not angry at Apple or the SDK.  Thrilled, actually.  I can't wait to release native applications for the iPhone and iPod touch.&lt;br /&gt;
&lt;/li&gt;&lt;li&gt;Access to calendar appointments &amp;amp; media would be nice, and I hope it's added in a future version.  (&lt;a href="http://speirs.org/2008/03/10/bampot-of-the-week-alexander-wolfe/"&gt;As Fraser Speirs notes&lt;/a&gt;, this is the &lt;span style="font-weight: bold;"&gt;beta &lt;/span&gt;SDK.)  After perusing the technical docs, I thought it was a noticable omission and worth pointing out.  It probably wasn't worth the "glaring" adjective, but I surely wasn't suggesting Apple keeps all the good stuff to itself.&lt;/li&gt;&lt;li&gt;Access to the phone &amp;amp; SMS functionality would be great, but is problematic from a security/carrier standpoint.  I made that point in my post, and Wolfe included it.  I was actually impressed to hear Steve Jobs say that a 3rd party VOIP app would be allowed over WiFi.&lt;/li&gt;&lt;/ul&gt;Creating a developer platform and ecosystem is hard, especially when you throw in security constraints and the conflicting interests of the mobile phone market.  Apple had to make trade-offs, and I think they made the right ones, but it's worthwhile to document and discuss them.  In my opinion, the most interesting restriction is that 3rd party applications can't register themselves as the default providers for URLs that conflict with Apple applications (like Safari or Mail).  I can see the reasoning: malicious applications would love to hijack all HREF-handling, but there's a legitimate business case as well (e.g. Opera or Thunderbird).  These trade-offs should be discussed, and I was hoping to do so with some nuance.  But then again, this is the Internet...&lt;br /&gt;
&lt;br /&gt;
Now, back to &lt;span style="font-weight: bold;"&gt;happily &lt;/span&gt;writing code with the iPhone SDK...</content><link rel='alternate' type='text/html' href='http://www.adamhoughton.com/2008/03/iphone-software-development-no-anger.html' title='iPhone Software Development: No Anger Here'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1380054009381876770&amp;postID=7016058010079726521' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://feeds.feedburner.com/AdamHoughton' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/7016058010079726521'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/7016058010079726521'/><author><name>Adam Houghton</name><uri>http://www.blogger.com/profile/14776528168857299346</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-1380054009381876770.post-8557242081337694922</id><published>2008-03-08T00:44:00.000-05:00</published><updated>2008-03-08T00:45:10.218-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><category scheme='http://www.blogger.com/atom/ns#' term='Leopard'/><title type='text'>Visiting Aspen: A Trip Through the iPhone SDK</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.adamhoughton.com/uploaded_images/index_promofooter_sdk-713644.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://www.adamhoughton.com/uploaded_images/index_promofooter_sdk-713619.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;
The real iPhone SDK has arrived.  While I &lt;a href="http://www-128.ibm.com/developerworks/opensource/library/os-eclipse-iphone/?ca=dgr-eclipse-1"&gt;enjoyed developing iPhone web apps&lt;/a&gt; (and have another one in the works), software developers like myself were waiting for something beefier, and Apple delivered a heifer.  The previous web-only "human interface guidelines" weighed in at a measy 54 pages.  The new guidelines are double that size, and serve as an addendum to the 200 page iPhone OS Programming Guide.  I've been plowing through the docs and tools to learn about the new SDK and v1.2 of the iPhone software, codenamed Aspen.  It's been a fun trip.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;The Good&lt;/span&gt;&lt;br /&gt;
Apple delivered an architecture familiar to any OS X developer: Objective-C, Cocoa, and lots of Core* frameworks.  Built on top of a Mach kernel, the iPhone OS contains all the basics like threading, networking, and file-system access.  The gaming industry will be happy with support for OpenGL ES (embedded systems), 3D audio, and access to the accelerometer.  For business software developers, the exciting technologies are SQLite (a lightweight, embedded database that is taking over the world) and XML parsing via libXML2 and libxslt.&lt;br /&gt;
&lt;br /&gt;
But in my mind, the real All-Stars of the SDK are:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Full access to multi-touch events via the Cocoa touch framework&lt;/li&gt;&lt;li&gt;Location-based services (triangulation and bonjour)&lt;br /&gt;
&lt;/li&gt;&lt;li&gt;System-wide access to address book contacts and photo albums&lt;/li&gt;&lt;/ul&gt;These features show off the power of a &lt;span&gt;mobile device&lt;/span&gt;, while providing consistent, unified services to make it a &lt;span&gt;mobile platform&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;The Bad&lt;/span&gt;&lt;br /&gt;
The biggest letdown is that Apple didn't expand this mobile platform far enough.  While the shared address book contacts and photo albums are great, there are a few glaring things that developers can't access:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;appointments from the Calendar app&lt;/li&gt;&lt;li&gt;music or videos from the iPod app&lt;/li&gt;&lt;li&gt;phone or SMS functionality&lt;/li&gt;&lt;/ul&gt;Calendar integration seems like a no-brainer.  There should be a way to schedule and share appointments between applications.  iPod media support is probably restricted due to DRM issues.  The iPhone supports video and audio playback, but only from remote servers or local files within the app's sandbox.  Phone and SMS restrictions are likely due to the carriers &amp;amp; security concerns.  Phone calls can be initiated via "tel:" links, but this is the same, limited action currently available to web pages: the phone app launches and prompts the user to confirm the call.  There's no way to integrate with voicemail, access call history, or initiate a text message.  Given the potential for abuse, this is probably a wise restriction.  However, when Apple brags that 3rd party developers use the same tools and access the same APIs as engineers in Cupertino, this is only partially true.  Indy developers writing the next great Weather app are on a level playing field, but there's no way to design the next great iPod interface* or replace the telephony apps.&lt;br /&gt;
&lt;br /&gt;
For an entirely different reason, there's no way to compete with Apple's iPhone Mail app.  Applications can register custom URLs to launch their application.  For example, my Flickr viewing app could register "flickr".  If a user clicked on the URL "flickr:user123" from another app, my Flickr app would launch and display photos from user123.  According to the iPhone OS Programming Guide, URL conflicts between 3rd party apps are undefined: so if two apps register "flickr", there's no guarantee who wins.  However, if a 3rd party application tries to register a URL identical to one defined by Apple (like "mail" or "tel"), the Apple-provided application always wins.  Here's hoping the rumors are right about Apple improving the Mail app, since there's no getting rid of it.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size:85%;"&gt; &lt;span style="font-style: italic;"&gt;* Technically you could design a new iPod app with all the media enclosed in its sandbox, but without iTunes integration you'd be DOA.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;The Controversial&lt;/span&gt;&lt;br /&gt;
The iPhone SDK's first big, public firestorm arose over AppStore and Apple's cut.  Native iPhone applications can only be distributed by Apple, and they take 30% of the revenue for their efforts.  I'm reserving judgment on this one: when &lt;a href="http://arstechnica.com/staff/fatbits.ars/2008/03/07/cant-help-falling-in-love"&gt;John Siracusa&lt;/a&gt; and &lt;a href="http://mobile.slashdot.org/comments.pl?sid=478544&amp;amp;cid=22669142"&gt;John Carmack&lt;/a&gt; take opposing sides of an issue, I'll wait on the sidelines to see how it plays out.&lt;br /&gt;
&lt;br /&gt;
However, my immediate concern with AppStore is not with the 30% cut, but with the iPhone Developer Program.  In order to deploy and test an application on an iPhone, you have to become a member of the iPhone Developer Program and pay $99.  Like the thousands of developers hammering the ADC site on Thursday, I signed up for the program and gladly offered to pay.  But alas, I just got a message thanking me for my application and promising to get back to me in the future.  The fine print says the program "will initially be available to a limited number of developers in the U.S. and will expand to other countries in the coming months."  Until my membership gets approved, I can only test my iPhone applications via the software emulator, not on my actual iPhone.  I'm sure they're deluged with applications and I don't mind waiting in line with everyone else, but I hope it gets processed in weeks, not months.  Please Apple, take my money!  (They're usually so good at that...)&lt;br /&gt;
&lt;br /&gt;
As we get closer to the official SDK launch in June, it will be interesting to see how long it takes from developer submission  to AppStore appearance.  What will the screening and approval process be like?  When Microsoft started the XBox Arcade service, they were deluged with ideas and submissions from independent developers.  It took them months to work through the backlog, with the bigger companies usually getting preferred treatment.  I anticipate a similar deluge from indy iPhone developers, and I hope Apple has the resources to handle it when June rolls around.  If not, expect another round of controversy&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;The Apple Polish&lt;/span&gt;&lt;br /&gt;
Setting aside these concerns, I'm very impressed by the iPhone SDK.  It builds on the strong foundation of OS X, while integrating with the multi-touch and mobile capabilities of the iPhone.  You can tell a great deal of work went into preserving the Mac experience on a device lacking in memory &amp;amp; computing horsepower.&lt;br /&gt;
&lt;br /&gt;
My favorite nugget is that developers can include an &lt;span style="font-style: italic;"&gt;application launch image&lt;/span&gt; in their distribution.  Quoting from the programming guide, this image "should closely resemble the application’s initial user interface; the system displays the launch image before an application is ready to display its user interface, giving the impression of a quick launch."  Even when it's computationally impossible, Apple found a way to make apps feel snappy.</content><link rel='alternate' type='text/html' href='http://www.adamhoughton.com/2008/03/visiting-aspen-trip-through-iphone-sdk.html' title='Visiting Aspen: A Trip Through the iPhone SDK'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1380054009381876770&amp;postID=8557242081337694922' title='2 Comments'/><link rel='replies' type='application/atom+xml' href='http://feeds.feedburner.com/AdamHoughton' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/8557242081337694922'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/8557242081337694922'/><author><name>Adam Houghton</name><uri>http://www.blogger.com/profile/14776528168857299346</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-1380054009381876770.post-301346397518270917</id><published>2008-01-29T08:00:00.000-05:00</published><updated>2008-01-29T08:22:47.182-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Writing'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>Announcing iDoc: Javadoc for iPhone</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.adamhoughton.com/iDoc.html"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://www.adamhoughton.com/uploaded_images/apps-idoc-722320.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style="text-align: center;"&gt;Got an iPhone?  &lt;a href="http://www.adamhoughton.com/iDoc"&gt;View iDoc demo of the OpenJDK Javadoc&lt;/a&gt;&lt;br /&gt;
Want to make iPhone Javadoc?  &lt;a href="http://www.adamhoughton.com/iDoc.html"&gt;Download the iDoc source code&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Every Java developer loves Javadoc.  Every software developer* loves the iPhone.  iDoc brings these two worlds together and generates iPhone-friendly Javadoc for your source code.  Now you can browse API documentation when you want it, where you want it - all in the palm of your hand.&lt;br /&gt;
&lt;br /&gt;
The cynical set might question the need for iDoc.  After all, isn't Javadoc only useful while programming?  And doesn't all programming happen at an eight-core workstation with a high-speed Internet connection and two 30" monitors?  Surely Javadoc is best viewed when tethered to a desk.&lt;br /&gt;
&lt;br /&gt;
Sadly, that view (shared by 100% of my coworkers) is mistaken, as evidenced by the following...&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Top 10 Uses for iPhone Javadoc&lt;/span&gt;&lt;br /&gt;
10. Settle an API argument at the Google cafe&lt;br /&gt;
9. Give the observer in your pair programming team something to do&lt;br /&gt;
8. Study open source on the subway&lt;br /&gt;
7. Justify the iPhone's business use to the your IT department&lt;br /&gt;
6. Sound smart during an interview (requires hidden iPhone &amp;amp; discreet fingers)&lt;br /&gt;
5. Impress Blackberry users&lt;br /&gt;
4. View Tomcat docs while flying an F-14 Tomcat (not recommended)&lt;br /&gt;
3. Cheat on the Sun Java Certification test&lt;br /&gt;
2. Write off your iPhone in next year's taxes&lt;br /&gt;
1. You're writing an article about iPhone Web Development and need to create an iPhone application that appeals to developerWorks' readers&lt;br /&gt;
&lt;br /&gt;
That last one happens to be reason for writing iDoc.  My article, "&lt;a href="http://www.ibm.com/developerworks/library/os-eclipse-iphone/index.html?S_TACT=105AGX44&amp;amp;S_CMP=EDU"&gt;Develop iPhone Web Applications with Eclipse&lt;/a&gt;", describes the creation of iDoc and covers best practices for iPhone web development.   While designing the iDoc user interface, I use two slick open source tools: Aptana's iPhone Development plug-in and Joe Hewitt's iUi framework. If you're looking to create an iPhone-specific web site, I highly recommend you check them out.  The article was published today on IBM developerWorks and can be found in the Open Source and Java Technology zones.&lt;br /&gt;
&lt;br /&gt;
I generated iPhone-specific Java 7 Javadoc using OpenJDK and &lt;a href="http://www.adamhoughton.com/iDoc/"&gt;posted it online as the iDoc demo&lt;/a&gt;.  If my Top 10 list won you over and you want to generate Javadoc for your own code base, &lt;a href="http://www.adamhoughton.com/iDoc.html"&gt;download the v0.1 iDoc source code&lt;/a&gt;.  I'd love to hear any feedback on the project or article.  Right now the generator is very simple: it doesn't resolve links within comments or display full signatures for Java 5 generics.  (So maybe it won't help you cheat on a Sun Java Certification test after all...)&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-style: italic;font-size:85%;" &gt;* every software developer who doesn't work for Microsoft or Nokia&lt;/span&gt;</content><link rel='alternate' type='text/html' href='http://www.adamhoughton.com/2008/01/announcing-idoc-javadoc-for-iphone.html' title='Announcing iDoc: Javadoc for iPhone'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1380054009381876770&amp;postID=301346397518270917' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://feeds.feedburner.com/AdamHoughton' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/301346397518270917'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/301346397518270917'/><author><name>Adam Houghton</name><uri>http://www.blogger.com/profile/14776528168857299346</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-1380054009381876770.post-6213097815490586289</id><published>2007-12-17T08:00:00.000-05:00</published><updated>2007-12-17T00:55:49.743-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GWT'/><category scheme='http://www.blogger.com/atom/ns#' term='Writing'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><title type='text'>Dr. Dobb's Article: Hands-On Google Web Toolkit</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.ddj.com/web-development/204800628"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://www.adamhoughton.com/uploaded_images/ddj_cover_110x149-759236.jpg" alt="" border="0" /&gt;&lt;/a&gt;"&lt;a href="http://www.ddj.com/web-development/204800628"&gt;Hands-On Google Web Toolkit&lt;/a&gt;," an article I co-authored with Ed Burnette, is in this month's issue of Dr. Dobb's Journal.  The article details the creation of GWTFlow, an Ajax Cover Flow Mash-up.  To view your Flickr photos using this application, visit the &lt;a href="http://www.adamhoughton.com/GWTFlow/"&gt;GWTFlow Project Page&lt;/a&gt;.</content><link rel='alternate' type='text/html' href='http://www.adamhoughton.com/2007/12/dr-dobbs-article-hands-on-google-web.html' title='Dr. Dobb&apos;s Article: Hands-On Google Web Toolkit'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1380054009381876770&amp;postID=6213097815490586289' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://feeds.feedburner.com/AdamHoughton' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/6213097815490586289'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/6213097815490586289'/><author><name>Adam Houghton</name><uri>http://www.blogger.com/profile/14776528168857299346</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-1380054009381876770.post-6763609441491950441</id><published>2007-12-16T23:36:00.000-05:00</published><updated>2007-12-17T00:40:53.761-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GWT'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><title type='text'>GWT Conference Wrap-up</title><content type='html'>I had a great time at the &lt;a href="http://www.voicesthatmatter.com/gwt2007/"&gt;Voices That Matter: Google Web Toolkit&lt;/a&gt; conference.  Many thanks to Barbara Gavin at Pearson for organizing the event.&lt;br /&gt;
&lt;br /&gt;
The highlight of the week was moderating Wednesday afternoon's GWT Tools Panel.  We had a great group of panelists on stage to discuss widget libraries, components, and IDE plugins (pretty much anything to make a GWT developers' life easier):&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.voicesthatmatter.com/gwt2007/"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://www.adamhoughton.com/uploaded_images/GWTConference-791314-757568.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.smalltalksystems.com/clayberg/"&gt;&lt;span style="font-weight: bold;"&gt;Eric Clayberg&lt;/span&gt;&lt;/a&gt; - &lt;a href="http://www.instantiations.com/"&gt;Instantiations&lt;/a&gt; &lt;a href="http://www.instantiations.com/gwtdesigner/index.html%5C"&gt;GWT Designer&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://timepedia.blogspot.com/"&gt;&lt;span style="font-weight: bold;"&gt;Ray Cromwell&lt;/span&gt;&lt;/a&gt; - &lt;a href="http://timepedia.org/chronoscope/"&gt;Chronoscope&lt;/a&gt; visualization, charting, and vector graphics framework&lt;/li&gt;&lt;li&gt;&lt;a href="http://roberthanson.blogspot.com/"&gt;&lt;span style="font-weight: bold;"&gt;Robert Hanson&lt;/span&gt;&lt;/a&gt; - &lt;a href="http://gwt-widget.sourceforge.net/"&gt;gwt-widget library &amp;amp; gwt-server library&lt;/a&gt;, author of &lt;a href="http://www.manning.com/hanson/"&gt;GWT In Action&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Fred Sauer&lt;/span&gt; - &lt;a href="http://code.google.com/p/gwt-dnd/"&gt;gwt-dnd&lt;/a&gt; (Drag &amp;amp; Drop), &lt;a href="http://code.google.com/p/gwt-voices/"&gt;gwt-voices&lt;/a&gt; (Sound), &lt;a href="http://code.google.com/p/gwt-log/"&gt;gwt-log&lt;/a&gt; (Logging), &lt;a href="http://code.google.com/p/gwt-game/"&gt;gwt-game&lt;/a&gt; (Game engine) &lt;/li&gt;&lt;/ul&gt;We had great questions from the audience, and the panelists got to share their passion for technology and helping developers.&lt;br /&gt;
&lt;br /&gt;
Selected quotes from the week's &lt;a href="http://www.voicesthatmatter.com/gwt2007/gwtsessions.html"&gt;sessions&lt;/a&gt;:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;"Fast is better than slow is an understatement when switching costs are low."  Bruce Johnson, A Business Case for GWT&lt;/li&gt;&lt;li&gt;"It's not that the dog talks beautifully, &lt;span style="font-style: italic;"&gt;it's that the dog talks!&lt;/span&gt;"  Josh Bloch on Ajax&lt;/li&gt;&lt;li&gt;"Techniques you use to build a hut are not the same techniques you use to build a skyscraper.  If you try to turn a hut into a skyscraper, it will probably fall down."  Josh Bloch on the benefits of static typing and GWT&lt;/li&gt;&lt;li&gt;"Turn on GZIP compression - gPokr went from 250kb to 70kb."  Ryan Dewsbury, Deployment Best Practices&lt;/li&gt;&lt;li&gt;"HTTP requests are the slowest thing you'll ever do in a browser."  Joel Webber, GWT Performance&lt;/li&gt;&lt;li&gt;"Fastest code is that which never executes." Joel Webber, GWT Performance&lt;/li&gt;&lt;li&gt;"Graphic design derives from use, not from making things look pretty."  Kelly Norton, GWT Usability&lt;/li&gt;&lt;li&gt;"Keep the user interface stable.  If it's moving around, that's bad."  Kelly Norton, GWT Usability&lt;/li&gt;&lt;li&gt;"This is Ajax Baby!" David Geary, GWT Cool &amp;amp; Useful Stuff&lt;br /&gt;
&lt;/li&gt;&lt;li&gt;"Deferred Binding allows resources to be baked into crunched-down, streamlined versions."  Ray Cromwell, Deferred Binding&lt;/li&gt;&lt;li&gt;"GWT libraries are value-add, not magic."  Bruce Johnson, A Tour of GWT Libraries&lt;/li&gt;&lt;li&gt;"The optimization is not pre-mature if it's about to affect hundreds of thousands of people."  Joel Webber, Best Practices for Building Libraries&lt;/li&gt;&lt;li&gt;"Design to real use cases, not someone's dreamscape." Kelly Norton, Best Practices for Building Libraries&lt;br /&gt;
&lt;/li&gt;&lt;/ul&gt;As others have mentioned, it was amazing to see the applications created in the last year based on GWT.  The technology is really moving the bar for what's possible in a web application.  I can't imagine what they'll be demoing next year...</content><link rel='alternate' type='text/html' href='http://www.adamhoughton.com/2007/12/gwt-conference-wrap-up.html' title='GWT Conference Wrap-up'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1380054009381876770&amp;postID=6763609441491950441' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://feeds.feedburner.com/AdamHoughton' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/6763609441491950441'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/6763609441491950441'/><author><name>Adam Houghton</name><uri>http://www.blogger.com/profile/14776528168857299346</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-1380054009381876770.post-4076913425962152648</id><published>2007-11-07T08:00:00.000-05:00</published><updated>2007-11-07T10:41:53.778-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GWT'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><category scheme='http://www.blogger.com/atom/ns#' term='Leopard'/><title type='text'>GWT Leopard Fixed</title><content type='html'>Google Web Toolkit now works on Mac OS 10.5. Google's team posted a link to the unofficial test build of GWT 1.4.61 in the issue tracker (comment #46):&lt;br /&gt;
&lt;a href="http://code.google.com/p/google-web-toolkit/issues/detail?id=1792#c46"&gt;http://code.google.com/p/google-web-toolkit/issues/detail?id=1792#c46&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://code.google.com/p/google-web-toolkit/issues/detail?id=1792#c46"&gt;&lt;img style="margin-left: 10px; float: right; cursor: pointer;" src="http://www.adamhoughton.com/uploaded_images/GWTLeopard-751445.jpg" alt="" border="0" /&gt;&lt;/a&gt;According to the post, this is not an official release and is still under testing, so report any problems to &lt;a href="http://code.google.com/p/google-web-toolkit/issues/detail?id=1792"&gt;GWT Issue 1792&lt;/a&gt;.  I've tested the patch on Leopard with the Hello World, Kitchen Sink, and my &lt;a href="http://www.adamhoughton.com/2007/10/announcing-gwtflow-ajax-cover-flow.html"&gt;GWTFlow&lt;/a&gt; applications.  Everything works great. I had no problems launching GWT applications via shell scripts or debugging them from Eclipse.  Other users report similar successes with IntelliJ JetBrains and Cypal Studio.&lt;br /&gt;
&lt;br /&gt;
If you're interested in the gory details of the GWT/Leopard incompatibilities, view the history &lt;a href="http://code.google.com/p/google-web-toolkit/issues/detail?id=1792"&gt;in the issue notes&lt;/a&gt;.  The first two problems stemmed from changes in Apple's AWT subsystem initialization and Webkit's Carbon interop.  The third problem was a ClassLoader bug in Leopard's 1.5 JVM when starting Java with -XstartOnFirstThread.&lt;br /&gt;
&lt;br /&gt;
Many thanks to Google's Kelly Norton* and members of the GWT community for tracking this issue down.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-style: italic;"&gt;*If you want to thank Kelly in person and hear some in-depth talks on GWT and Ajax, register for the &lt;/span&gt;&lt;a style="font-style: italic;" href="http://www.adamhoughton.com/2007/11/google-web-toolkit-conference.html"&gt;upcoming Google Web Toolkit Conference&lt;/a&gt;&lt;span style="font-style: italic;"&gt; (Dec 3-6, 2007 in San Francisco).  Take $100 off registration with discount code GW-ADAM.&lt;/span&gt;</content><link rel='alternate' type='text/html' href='http://www.adamhoughton.com/2007/11/gwt-leopard-fixed.html' title='GWT Leopard Fixed'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1380054009381876770&amp;postID=4076913425962152648' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://feeds.feedburner.com/AdamHoughton' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/4076913425962152648'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/4076913425962152648'/><author><name>Adam Houghton</name><uri>http://www.blogger.com/profile/14776528168857299346</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-1380054009381876770.post-3020573388585064637</id><published>2007-11-06T18:00:00.000-05:00</published><updated>2007-11-06T23:16:11.601-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GWT'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><title type='text'>Google Web Toolkit Conference</title><content type='html'>Pearson's GWT Conference is coming in less than a month!  &lt;a href="http://www.voicesthatmatter.com/gwt2007/index.html"&gt;Voices That Matter: Google Web Toolkit&lt;/a&gt; will take place December 3-6, 2007 at the Palace Hotel in San Francisco.  There's a fantastic collection of speakers:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.voicesthatmatter.com/gwt2007/index.html"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://www.adamhoughton.com/uploaded_images/GWTConference-791314.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;ul&gt;&lt;li&gt;Bruce Johnson &amp;amp; Joel Webber: creators of GWT&lt;/li&gt;&lt;li&gt;David Geary: author of the upcoming book Google Web Toolkit Solutions: More Cool &amp;amp; Useful Stuff&lt;br /&gt;
&lt;/li&gt;&lt;li&gt;Josh Bloch: Chief Java Architect at Google&lt;/li&gt;&lt;li&gt;Billy Hoffman: author of Ajax Security&lt;br /&gt;
&lt;/li&gt;&lt;li&gt;Kelly Norton: Google engineer &amp;amp; MIT Media Lab alum&lt;br /&gt;
&lt;/li&gt;&lt;li&gt;Ryan Dewsbury:  creator of GPokr and author of the upcoming Google Web Toolkit Applications book&lt;/li&gt;&lt;li&gt;..and &lt;a href="http://www.voicesthatmatter.com/GWT2007/gwtschedule.html"&gt;many more&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;I'm excited to be moderating the &lt;a href="http://www.voicesthatmatter.com/GWT2007/gwtsessions.html#panel"&gt;Tools for GWT Panel&lt;/a&gt;. We're lining up some great participants to talk about the third party tools available for GWT.  I'll be posting more information about the panel soon, but please let me know if there's something you're interested in.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Discount Code: Save $100!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
Pearson was nice enough to provide me with a discount code to share with my readers.  If you're interested in attending, please register with the following code to receive $100 off the conference price:  &lt;span style="font-weight: bold;"&gt;GW-ADAM&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
I look forward to meeting some of the great members of the GWT Community!</content><link rel='alternate' type='text/html' href='http://www.adamhoughton.com/2007/11/google-web-toolkit-conference.html' title='Google Web Toolkit Conference'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1380054009381876770&amp;postID=3020573388585064637' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://feeds.feedburner.com/AdamHoughton' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/3020573388585064637'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/3020573388585064637'/><author><name>Adam Houghton</name><uri>http://www.blogger.com/profile/14776528168857299346</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-1380054009381876770.post-8005973745207658633</id><published>2007-11-05T09:57:00.001-05:00</published><updated>2007-11-06T09:23:34.392-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Leopard'/><title type='text'>Leopard vs Vista: Duke University Sees More Interest in Mac OS 10.5 Upgrades</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.adamhoughton.com/uploaded_images/Leopard-782428.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://www.adamhoughton.com/uploaded_images/Leopard-782424.jpg" alt="" border="0" /&gt;&lt;/a&gt;Today's Duke University Chronicle &lt;a href="http://media.www.dukechronicle.com/media/storage/paper884/news/2007/11/05/News/New-Mac.Os.Users.See.Problems.With.Eprint-3078461.shtml"&gt;reports a problem&lt;/a&gt; with Mac OS 10.5 and the campus ePrint system.  It's a pretty standard story: ePrint is incompatible with the new Mac operating system, and the Duke IT department has developed a workaround until the vendor can patch their software.&lt;br /&gt;
&lt;br /&gt;
Interestingly, Duke faced the same ePrint incompatibility when Microsoft released Vista.  This creates a controlled environment for gauging interest in Vista vs Leopard: if students are upgrading to a new OS, they'll ask for help getting ePrint to work.  According to Duke OIT manager Kevin Davis, &lt;a href="http://media.www.dukechronicle.com/media/storage/paper884/news/2007/11/05/News/New-Mac.Os.Users.See.Problems.With.Eprint-3078461.shtml"&gt;Leopard is winning&lt;/a&gt;:&lt;br /&gt;
&lt;blockquote&gt;"We're actually seeing more concerns about Leopard than we did from Vista, which I suspect is because there is much more active interest around Leopard than we saw with Vista's release."&lt;/blockquote&gt;Like &lt;a href="http://www.dailyprincetonian.com/archives/2007/10/05/news/18871.shtml?sr=hotnews"&gt;other schools&lt;/a&gt;, Duke is seeing an increase in students choosing Macs.  It's encouraging to see the enthusiasm from the student body in upgrading to Leopard.  But if I was back in school and had to worry about term papers and tests, I'd probably wait until Winter Break to upgrade...</content><link rel='alternate' type='text/html' href='http://www.adamhoughton.com/2007/11/leopard-vs-vista-duke-university-sees.html' title='Leopard vs Vista: Duke University Sees More Interest in Mac OS 10.5 Upgrades'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1380054009381876770&amp;postID=8005973745207658633' title='1 Comments'/><link rel='replies' type='application/atom+xml' href='http://feeds.feedburner.com/AdamHoughton' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/8005973745207658633'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/8005973745207658633'/><author><name>Adam Houghton</name><uri>http://www.blogger.com/profile/14776528168857299346</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-1380054009381876770.post-7134069711079552307</id><published>2007-11-03T00:17:00.000-04:00</published><updated>2007-11-04T14:06:03.884-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Leopard'/><category scheme='http://www.blogger.com/atom/ns#' term='DTrace'/><title type='text'>DTrace: Why Java 6 on Leopard Matters</title><content type='html'>In all the hullabaloo and &lt;a href="http://www.adamhoughton.com/2007/10/java-6-on-leopard-developer-discontent.html"&gt;developer discontent&lt;/a&gt; about Mac OS 10.5 shipping with Java 1.5, one question has been frequently overlooked: why do we need Java 6? Why is Java 1.6 so much better than Java 1.5?&lt;br /&gt;
&lt;br /&gt;
The standard answer is &lt;span style="font-style: italic;"&gt;performance.&lt;/span&gt;  And it's true, Java 6 smokes Java 5, especially in GUI applications.  But I spend most of my time in the server world, so the Java 6 performance improvements don't impact my life that much.  There are some other nice-to-haves like XML binding, better exception logging, and improved web service support - but nothing on the scale of the Java 1.4-&gt;1.5 changes.&lt;br /&gt;
&lt;br /&gt;
So why does Java 6 on Leopard Matter?&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;DTrace!&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;DTrace is a kernel debugging framework created by Sun.  Apple built DTrace support into Leopard and created a Garageband-like GUI around it: Instruments, aka Xray.   Apple is pretty proud of DTrace (5 of Leopard's &lt;a href="http://www.apple.com/macosx/features/300.html"&gt;300 new features&lt;/a&gt; are DTrace related), and rightfully so.  The developer community is also excited about it - in his &lt;a href="http://arstechnica.com/reviews/os/mac-os-x-10-5.ars/5"&gt;seminal Mac OS 10.5 review&lt;/a&gt;, John Siracusa called it "indistinguishable from magic" and said DTrace "can't help but lead to better, faster, more stable applications." &lt;br /&gt;
&lt;br /&gt;
For an in depth description of DTrace, I highly recommend you read &lt;a href="http://arstechnica.com/reviews/os/mac-os-x-10-5.ars/5"&gt;Siracusa's review&lt;/a&gt;, &lt;a href="http://www.sun.com/bigadmin/content/dtrace/"&gt;Sun's page&lt;/a&gt;, or &lt;a href="http://blogs.sun.com/ahl/"&gt;the&lt;/a&gt; &lt;a href="http://blogs.sun.com/bmc/"&gt;developers'&lt;/a&gt; &lt;a href="http://blogs.sun.com/mws/"&gt;blogs&lt;/a&gt;.  If you're short on time, here's the poor man's guide to DTrace:&lt;br /&gt;
&lt;br /&gt;
How developers monitored &amp;amp; debugged applications before DTrace:&lt;br /&gt;
&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.adamhoughton.com/uploaded_images/beforedtrace-799025.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://www.adamhoughton.com/uploaded_images/beforedtrace-799022.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;
How developers monitor &amp;amp; debug applications after DTrace:&lt;br /&gt;
&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.adamhoughton.com/uploaded_images/afterdtrace-736301.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://www.adamhoughton.com/uploaded_images/afterdtrace-736296.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;DTrace and Java 6&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
So what does DTrace have to do with Java?  DTrace allows developers to get a top-to-bottom view of application activity and see what happens across the entire stack.  You can look "beneath the JVM" and understand how your application interacts with the kernel.  Very cool stuff.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, DTrace probes are only available in Java 6 - it can't be hooked up to Java 5, which ships with Leopard.  So there's this incredibly useful tool that developers are dying to use for debugging Java applications.  It's sitting there in the terminal, taunting techies.  But everytime they type "dtrace -l", 21,527 probes scroll by without a hotspot in sight.&lt;br /&gt;
&lt;br /&gt;
Performance &amp;amp; parity are all great reasons to want Java 6 on Leopard, but I'm looking forward to DTrace support.</content><link rel='alternate' type='text/html' href='http://www.adamhoughton.com/2007/11/dtrace-why-java-6-on-leopard-matters.html' title='DTrace: Why Java 6 on Leopard Matters'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1380054009381876770&amp;postID=7134069711079552307' title='3 Comments'/><link rel='replies' type='application/atom+xml' href='http://feeds.feedburner.com/AdamHoughton' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/7134069711079552307'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/7134069711079552307'/><author><name>Adam Houghton</name><uri>http://www.blogger.com/profile/14776528168857299346</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-1380054009381876770.post-3375122974546496991</id><published>2007-10-30T00:42:00.000-04:00</published><updated>2007-11-05T10:37:42.099-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Leopard'/><title type='text'>Java 6 on Leopard: Developer Discontent</title><content type='html'>In my &lt;a href="http://www.adamhoughton.com/2007/10/leopard-first-impressions-gwt-shrook.html"&gt;Leopard First Impressions&lt;/a&gt; post, I mentioned that Mac OS X 10.5 ships with Java 5, not  Java 6.  Sun released Java 6 almost a year ago, so this is generating quite a bit of angst in the Java developer community.  Is Apple abandoning Java?  Is it time to install Ubuntu?  Should &lt;a href="http://en.wikipedia.org/wiki/Java_mascot"&gt;Duke&lt;/a&gt; sell his iPods?&lt;br /&gt;
&lt;br /&gt;
In short, no.  The same thing happened in 2003: Apple shipped OS X Panther with the old version of Java (1.3).  A few weeks later, however, Apple released the latest Java (1.4.1) via a software update.  I'd expect the same thing to happen in this case. Eric Burke &lt;a href="http://stuffthathappens.com/blog/2007/10/28/os-x-java-definitive-timeline/"&gt;created a nice timeline&lt;/a&gt; showing the history of Mac OS X releases, and he agrees: it's not time to panic, Java 1.6 is coming.&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.adamhoughton.com/uploaded_images/100px-DukeWave-732928.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://www.adamhoughton.com/uploaded_images/100px-DukeWave-732927.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;
From a stroll through the Java developer blogs and mailing lists, there are roughly three areas of contention:&lt;br /&gt;
1. Java versions on Mac are always late&lt;br /&gt;
2. Steve Jobs said nobody uses Java anymore&lt;br /&gt;
3. Apple is too secretive towards developers&lt;br /&gt;
&lt;br /&gt;
All are legitimate and longstanding critiques, but none have stopped me from developing Java on a Mac these past few years (and enjoying it!).  Yes, Apple takes some time to release the latest &amp;amp; greatest versions - but coming from the world of application servers &amp;amp; corporate software, I'm used to being a version or two behind.  Developing on Windows or Linux would let me use Java 6 right now, but I'm not willing to put up with the trade-offs.&lt;br /&gt;
&lt;br /&gt;
From a consumer standpoint, I still love the fact that a modern version of Java is shipped with every copy of OS X and integrated with the software update system.   It might be a version or two behind, but it's still light years ahead of the Windows world - I shudder to think what JRE is on grandma's Acer.&lt;br /&gt;
&lt;br /&gt;
The Steve Jobs comment was in the context of supporting Java applets on the iPhone.  Applets have been losing to Flash and Ajax for years.  Server-side Java development, however, is alive and thriving - and I'm pretty sure they're aware of that in Cupertino.&lt;br /&gt;
&lt;br /&gt;
The last issue, secrecy, is par for course with Apple.  I haven't been following the release of information too closely this time.  In general, though, most communication is reserved for  ADC members and covered under a strict NDA.  Apple &amp;amp; Microsoft take different approaches with developers: Apple gives away XCode and charges for information, while Microsoft gives away information and charges for Visual Studio.  (But really, who's keynote would you rather watch?)&lt;br /&gt;
&lt;br /&gt;
Leopard is a great developer's environment right now.  When Java 6 is released, it will get even better.</content><link rel='alternate' type='text/html' href='http://www.adamhoughton.com/2007/10/java-6-on-leopard-developer-discontent.html' title='Java 6 on Leopard: Developer Discontent'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1380054009381876770&amp;postID=3375122974546496991' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://feeds.feedburner.com/AdamHoughton' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/3375122974546496991'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/3375122974546496991'/><author><name>Adam Houghton</name><uri>http://www.blogger.com/profile/14776528168857299346</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-1380054009381876770.post-2726129056961629143</id><published>2007-10-27T12:13:00.000-04:00</published><updated>2007-11-07T08:26:23.929-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GWT'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Leopard'/><title type='text'>Leopard: First Impressions, Java, GWT</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.adamhoughton.com/uploaded_images/Leopard-782428.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://www.adamhoughton.com/uploaded_images/Leopard-782424.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;
I had the official Leopard release up &amp;amp; running on my laptop by 8:00pm EST.  Short of an early FedEx delivery or mugging &lt;a href="http://online.wsj.com/public/article/SB119326655774870521-_1guKieddydNBOHhvRYV4F1ZCe4_20081024.html"&gt;Walt Mossberg&lt;/a&gt;, I don' t think I could have done it much faster.  Install was a breeze - click a few buttons, grab some dinner, and come back to a star-covered desktop.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Leopard First Impressions&lt;/span&gt;&lt;br /&gt;
Three features immediately help my productivity: &lt;a href="http://www.apple.com/macosx/features/quicklook.html"&gt;Quick Look&lt;/a&gt;, &lt;a href="http://www.apple.com/macosx/features/spaces.html"&gt;Spaces&lt;/a&gt;, and &lt;a href="http://www.apple.com/macosx/technology/unix.html"&gt;Tabbed Terminal&lt;/a&gt;.  I spent half an hour zipping through old files using Quick Look, finding documents and spreadsheets I'd completely forgotten about.  Spaces &amp;amp; Tabbed Terminal are a developer's best friend (although I kept tripping the Spaces hot keys when RDCing to a Windows box).  I'm still working on my optimal desktop configuration, with 2x2 currently in the lead.&lt;br /&gt;
&lt;br /&gt;
Network sharing is great, except for a slight lag when populating the Shared list.  This  causes Places to appear in one spot then jump down 40 pixels.  This happens in open &amp;amp; save dialogs, resulting in some whack-a-mole mouse action.  (Anyone know how to move Places above Shared?)&lt;br /&gt;
&lt;br /&gt;
Other personal highlights: faster Safari, faster Spotlight (hallelujah), unified UI.  The animated iChat backgrounds will make for a nice demo to non-Mac friends.  The transparent top bar is ridiculous and the tiny blue lights in the dock are hard to see, but I'll gladly put up with them to get all the other improvements.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Java on Leopard&lt;/span&gt;&lt;br /&gt;
Most of my third party tools worked like a charm: Eclipse, Smultron, Fugu, RDC.  I had no problems upgrading XCode/Interface Builder.  Unlike previous releases, the developer tool install does not include the Java Developer Documentation - you now have to download it separately.  &lt;a href="http://connect.apple.com/"&gt;Log in to the ADC Member Site&lt;/a&gt; (free memberships work), click Downloads, then select Java for Mac OS X 10.5 Documentation. As reported earlier, Leopard ships with Java 5 (build 1.5.0_13-b05-237); hopefully they'll release Java 6 soon as a software update.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Google Web Toolkit on Leopard&lt;/span&gt;&lt;br /&gt;
Unfortunately, GWT on Leopard has some issues.  If you start hosted mode, it either exits immediately or brings up the window then quickly crashes with this stack trace:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size:85%;"&gt;Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException&lt;br /&gt;
at apple.awt.CGraphicsEnvironment.displayChanged(CGraphicsEnvironment.java:65)&lt;br /&gt;
at apple.awt.CToolkit$4.run(CToolkit.java:1259)&lt;br /&gt;
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)...&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;s&gt;This looks like a bug inside Apple's AWT implementation.  Over at the GWT group, &lt;a href="http://code.google.com/p/google-web-toolkit/issues/detail?id=1792"&gt;Issue 1792&lt;/a&gt; is tracking this problem.   I also filed a bug report to Apple with more details and an easy-to-reproduce example.  If you need to develop using GWT, I suggest you hold off on upgrading to Leopard until this issue is resolved.&lt;/s&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Update 11/6/07: GWT now works on Leopard!  &lt;/span&gt;&lt;a style="font-weight: bold;" href="http://www.adamhoughton.com/2007/11/gwt-leopard-fixed.html"&gt;View my latest post&lt;/a&gt;&lt;span style="font-weight: bold;"&gt; for more information and links to a test build.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Shrook&lt;/span&gt;&lt;br /&gt;
&lt;s&gt;My RSS reader is dead-on-arrival with Leopard.  It immediately crashes whenever I start it.  I haven't spent any time looking into this yet - maybe I'll migrate to Google Reader.&lt;/s&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;(Updated 10/28/07: &lt;a href="http://www.fondantfancies.com/blog/3010467/"&gt;Shrook is now compatible with Leopard!&lt;/a&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;</content><link rel='alternate' type='text/html' href='http://www.adamhoughton.com/2007/10/leopard-first-impressions-gwt-shrook.html' title='Leopard: First Impressions, Java, GWT'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1380054009381876770&amp;postID=2726129056961629143' title='1 Comments'/><link rel='replies' type='application/atom+xml' href='http://feeds.feedburner.com/AdamHoughton' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/2726129056961629143'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/2726129056961629143'/><author><name>Adam Houghton</name><uri>http://www.blogger.com/profile/14776528168857299346</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-1380054009381876770.post-251763597280168513</id><published>2007-10-24T01:24:00.000-04:00</published><updated>2007-10-27T15:37:15.192-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GWT'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><title type='text'>Announcing GWTFlow: Ajax Cover Flow photo gallery</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.adamhoughton.com/GWTFlow"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://www.adamhoughton.com/uploaded_images/GWTFlowCapture-790766.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;
View &lt;a href="http://www.adamhoughton.com/GWTFlow"&gt;GWTFlow version 0.1&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.adamhoughton.com/GWTFlow/"&gt;GWTFlow&lt;/a&gt; is a mashup photo viewer I wrote using the Google Web Toolkit (GWT) for an upcoming Dr. Dobbs article.  GWTFlow uses CoverFlow-like effects for navigating through photos.  Currently you can view photos from Flickr, but it's designed to support other image services like Picasa Web Albums.  The article, which I co-authored with &lt;a href="http://blogs.zdnet.com/Burnette/"&gt;Ed Burnette&lt;/a&gt;, gives a hands-on look at GWT development using GWTFlow as our sample application.  It is scheduled to be published in the December issue of Dr. Dobbs Journal.&lt;br /&gt;
&lt;br /&gt;
GWTFlow's user interface is inspired by the &lt;a href="http://gallery.mac.com/emily_parker"&gt;.Mac Web Gallery&lt;/a&gt;, which was redesigned in August 2007 to make extensive use of the Prototype &amp;amp; Script.aclo.us frameworks.  Apple's web gallery has three viewing modes: grid, mosaic, and carousel.  Grid and mosaic modes are great examples of Ajax applications  (if slightly resource intensive).  Unfortunately, the Cover Flow-like carousel mode initially used Flash instead of Ajax*.  This led to some &lt;a href="http://ajaxian.com/archives/mac-web-gallery-on-prototype"&gt;criticism&lt;/a&gt; from Ajaxian readers, wishing that Apple had done the entire application in Ajax.  GWTFlow, I'm proud to say, is 100% Flash-free. : )&lt;br /&gt;
&lt;br /&gt;
GWTFlow uses standard GWT widgets for positioning the images and callouts to Script.aculo.us for the effects.  All of the photos are just Image objects placed on an AbsolutePanel, with a little math behind the scenes to determine positioning &amp;amp; simulate perspective. Albums &amp;amp; images are retrieved via RPC calls to a Java service, which then calls out to Flickr's public API using &lt;a href="http://flickrj.sourceforge.net/"&gt;flickrj&lt;/a&gt;.  GWT made development &amp;amp; debugging a breeze, with history &amp;amp; cross-browser support basically coming for free.  Not being a JavaScript expert, this would have been a nightmare for me to build by hand and expect it to work on Internet Explorer, Firefox, and Safari.&lt;br /&gt;
&lt;br /&gt;
As a 0.1 release, there are obviously some bugs.  Performance is dependent on the client machine; everything runs smoothly on my workstation, but  the effects are a little jumpy on my laptop and downright ugly on my iPhone (poor 620mhz ARM processor).  Larger photo albums also degrade performance.  There's a known bug where some Flickr accounts aren't getting loaded properly, possibly due to spaces in the username.  In future versions, I'd like to add Picasa support, more options for navigating through photos (keyboard, slider, etc), and integration with Adam Tacy's &lt;a href="http://code.google.com/p/gwt-fx/"&gt;gwt-fx&lt;/a&gt; effects library.  I'd also like to angle the images &amp;amp; add reflections to make it more like Cover Flow, but I'm a little worried about hurting performance.&lt;br /&gt;
&lt;br /&gt;
The latest GWTFlow version should always be available at &lt;a href="http://www.adamhoughton.com/GWTFlow"&gt;http://www.adamhoughton.com/GWTFlow&lt;/a&gt;.  Any feedback is appreciated!  Once the Dr. Dobbs article is published, I'll post a link.  I should have the complete source code online soon.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size:78%;"&gt;* Since I first starting working on GWTFlow, it looks like Apple rolled out a version of Carousel mode that uses Ajax instead of Flash.  Good for them.&lt;/span&gt;</content><link rel='alternate' type='text/html' href='http://www.adamhoughton.com/2007/10/announcing-gwtflow-ajax-cover-flow.html' title='Announcing GWTFlow: Ajax Cover Flow photo gallery'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1380054009381876770&amp;postID=251763597280168513' title='4 Comments'/><link rel='replies' type='application/atom+xml' href='http://feeds.feedburner.com/AdamHoughton' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/251763597280168513'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/251763597280168513'/><author><name>Adam Houghton</name><uri>http://www.blogger.com/profile/14776528168857299346</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-1380054009381876770.post-6911371517956370275</id><published>2007-10-16T08:00:00.000-04:00</published><updated>2007-10-16T08:46:02.598-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><title type='text'>Leopard Up-To-Date Announced: Shouldn't have waited after all!</title><content type='html'>Apple &lt;a href="http://www.apple.com/pr/library/2007/10/16leopard.html"&gt;announced&lt;/a&gt; Leopard this morning:&lt;br /&gt;
- Release: Friday, October 26, 2007 @ 6:00pm&lt;br /&gt;
- Up-To-Date program: $9.95 upgrade for Mac purchases as of &lt;span style="font-weight: bold;"&gt;October 1st&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
My &lt;a href="http://www.adamhoughton.com/2007/10/dont-buy-mac-this-weekend.html"&gt;earlier post&lt;/a&gt; was a week too early on the announcement date, and a week too late on the up-to-date cut-off.  The waters are safe now: now go buy a Mac this weekend!  :)</content><link rel='alternate' type='text/html' href='http://www.adamhoughton.com/2007/10/leopard-up-to-date-announced-shouldnt.html' title='Leopard Up-To-Date Announced: Shouldn&apos;t have waited after all!'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1380054009381876770&amp;postID=6911371517956370275' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://feeds.feedburner.com/AdamHoughton' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/6911371517956370275'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/6911371517956370275'/><author><name>Adam Houghton</name><uri>http://www.blogger.com/profile/14776528168857299346</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-1380054009381876770.post-7551539915524750472</id><published>2007-10-04T00:42:00.000-04:00</published><updated>2007-10-10T12:43:45.677-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>Don't Buy a Mac This Weekend</title><content type='html'>Leopard, the next version of Mac OS X, is scheduled to be released this month - but, Apple hasn't formally announced a release date yet.  This might seem unimportant, except that the announcement date has traditionally been the start date for the Mac OS Up-To-Date Program.  This program lets you get a copy of the new OS for a small shipping/handling fee ($10-$20) on any new Mac purchases before the actual OS release date.  If you buy a new Mac before the announcement (like this weekend), you get to pay full price for the upgrade.&lt;br /&gt;
&lt;br /&gt;
Looking back at history...&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Panther&lt;/span&gt; (10.3): Announced: Wednesday October 8, 2003 / Released: Friday October 24, 2003 @ 8:00pm&lt;br /&gt;
Up-To-Date: &lt;a href="http://www.apple.com/pr/library/2003/oct/08panther.html"&gt;$19.95 for purchases after October 8&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Tiger&lt;/span&gt; (10.4): Announced: Tuesday April 12, 2005 / Released: Friday April 29, 2005 @ 6:00pm&lt;br /&gt;
Up-To-Date: &lt;a href="http://www.apple.com/pr/library/2005/apr/12tiger.html"&gt;$9.95 for purchases after April 12&lt;br /&gt;
&lt;/a&gt;&lt;br /&gt;
So looking forward, my prediction is:&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Leopard&lt;/span&gt; (10.5): Announced: Tuesday, October 9, 2007 / Released: Friday, October 26, 2007 @ 6:00pm&lt;br /&gt;
Up-To-Date: &lt;a href="http://www.apple.com/pr/library/2007/10/09leopard.html"&gt;$9.95 for purchases after October 9&lt;/a&gt;&lt;span style="font-style: italic;font-size:85%;" &gt; (link not active yet - but it will be!)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
And while we're having fun...  : )&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Tabby&lt;/span&gt; (10.6): Announced: Tuesday, April 5, 2010 / Released: Friday, April 23, 2010 @ 6:00pm&lt;br /&gt;
Up-To-Date: &lt;a href="http://www.apple.com/pr/library/2010/04/23tabby.html"&gt;$29.95 for purchases after April 5&lt;/a&gt;&lt;span style="font-style: italic;font-size:85%;" &gt; (my in-house economist says rampant inflation is coming...)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
And while we're on the topic of Leopard, I am looking forward to the new features in Objective-C 2.0: garbage collection, properties, and x-ray debugging.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-style: italic;font-size:85%;" &gt;(Updated 10/4/07: forgot that Puma was 10.1's codename.  Changed 10.6 to Tabby...)&lt;br /&gt;
(Updated 10/10/07: no announcement yet - looks like my prediction was off.  Next Tuesday, perhaps?  Keep an eye on the &lt;a href="http://images.apple.com/main/rss/hotnews/pr.rss"&gt;Apple PR RSS feed&lt;/a&gt;.)&lt;br /&gt;
&lt;/span&gt;</content><link rel='alternate' type='text/html' href='http://www.adamhoughton.com/2007/10/dont-buy-mac-this-weekend.html' title='Don&apos;t Buy a Mac This Weekend'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1380054009381876770&amp;postID=7551539915524750472' title='3 Comments'/><link rel='replies' type='application/atom+xml' href='http://feeds.feedburner.com/AdamHoughton' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/7551539915524750472'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/7551539915524750472'/><author><name>Adam Houghton</name><uri>http://www.blogger.com/profile/14776528168857299346</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-1380054009381876770.post-6331355096834751532</id><published>2007-08-22T23:40:00.000-04:00</published><updated>2007-10-26T16:16:06.774-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GWT'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><title type='text'>Book Review: Google Web Toolkit Solutions</title><content type='html'>&lt;span style="font-style: italic;"&gt;This book review was &lt;a href="http://blogs.zdnet.com/Burnette/?p=370"&gt;originally published&lt;/a&gt; on &lt;a href="http://blogs.zdnet.com/Burnette/"&gt;Ed Burnette's ZDNet blog&lt;/a&gt;.  Ed received a preview copy of the book from Addison-Wesley and was kind enough to let me review it.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
I'm not a very good tennis player.  Yet when I signed up for tennis lessons a few months ago, for some reason I checked "Intermediate" skill level.  Not Beginner or even Advanced Beginner - no, I signed up for Intermediate.  So when everyone in class focused on speeding up their top spin or disguising their back spin, I'd be happy just to get the ball over the net.  I settled into my role as a ball feeder to the other students, who really were Intermediate.&lt;br /&gt;
&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://safari.awprofessional.com/9780132344814"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://www.adamhoughton.com/uploaded_images/GWTSolutionsBook-731736.jpg" alt="" border="0" /&gt;&lt;/a&gt;Which brings us to &lt;a href="http://safari.awprofessional.com/9780132344814"&gt;Google Web Toolkit Solutions: More Cool &amp;amp; Useful Stuff&lt;/a&gt; by David Geary &amp;amp; Rob Gordon.  This upcoming book is written for an Intermediate audience - developers who have (at least) installed the Google Web Toolkit (GWT), created an ajax-y app, and debugged it via Eclipse.  There are great resources for Beginner GWT and Advanced Beginner GWT, such as Google's &lt;a href="http://code.google.com/webtoolkit/documentation/"&gt;online developer guide&lt;/a&gt; or Ed's excellent &lt;a href="http://pragmaticprogrammer.com/titles/ebgwt/index.html"&gt;e-book&lt;/a&gt; and &lt;a href="http://www.gwtpowered.org/"&gt;gwtPowered web site&lt;/a&gt;.   If you are just picking up GWT for the first time, I highly recommend you start there.  But when you're ready to add a little spin to your ball, GWT Solutions is a good next step.&lt;br /&gt;
&lt;br /&gt;
Right from the start, this book helps lay the framework for creating production-level applications.  The first chapter covers two important topics: browser history and internationalization (i18n).  Neither is necessary for creating Hello World, but definitely make a difference in real world applications.  Support for browser history has always been tricky in web applications, especially in the Ajax world ("please use my special previous arrow, not the big one you click everywhere else!!!").  Luckily, GWT provides integration with browser history via HistoryListeners.  It's pretty painless to implement, but definitely easiest if you build it into your app at the beginning.  Ditto with i18n - no developer looks forward to removing hard-coded strings from 20,000 lines of code.  This book makes you eat your broccoli from the start: a couple extra minutes of work that you'll be thankful for weeks later when the boss decides it's time to translate the application into Dutch.&lt;br /&gt;
&lt;br /&gt;
In addition to covering the important plumbing, Google Web Toolkit Solutions shows off a few of the framework's flashy possibilities.  The fun really starts in Chapters 4 and 5, with examples of dragging viewports, iPhone-like gestures, and Yahoo Map mashups  (and this is all before the halfway point of the book).  These implementations are chock full of useful GWT tips, and the authors provide source code for using or extending them.  But they also help illustrate one of the authors' main themes: that GWT is a feature-rich, world-class environment for developing GUIs.  The fact that they could reproduce iPhone gestures with cross-browser compatibility in just a couple days of coding really shows the power of the framework.  The authors encourage developers to think beyond traditional web frameworks like Struts and Ruby on Rails, and to treat GWT as a competitor (successor?) to Swing &amp;amp; Eclipse's Rich Client Platform.&lt;br /&gt;
&lt;br /&gt;
The areas of the book I find most helpful are the instructions for real-world deployment and integration of Google Web Toolkit applications.  It's easy enough to launch GWT apps from Eclipse in hosted mode, but your local playpen is probably not an ideal server for thousands of users.  The last three chapters cover the nuts and bolts of deploying GWT apps to external servers and integrating with ORM frameworks like Hibernate.  And as much fun as it would be to rewrite everything in GWT, upper management usually isn't keen to throw away perfectly fine code that took years to develop.  GWT Solutions shows how to integrate with Struts-based legacy applications and mix-in external Javascript libraries like Script.aculo.us.  (Once your GWT component is sitting on a sidebar of the company web page, it can begin its quest for site-wide domination.)&lt;br /&gt;
&lt;br /&gt;
The format of the book is long code examples with follow-up discussion and tips scattered throughout.  This makes for interesting reading and helped me discover quite a few new techniques.  The only downside is that the discussion of some features is spread out over different examples and chapters, which made it easy to forget where I found something and difficult to focus in on help with a specific feature.  The examples are written using version 1.3.3 of GWT, but the authors note areas where the upcoming 1.4 version fixes bugs and improves on functionality.&lt;br /&gt;
&lt;br /&gt;
Overall, I'd recommend Google Web Toolkit Solutions.  The extensive examples and tips go a long way in progressing GWT skills from Intermediate to Advanced.</content><link rel='alternate' type='text/html' href='http://www.adamhoughton.com/2007/08/book-review-google-web-toolkit.html' title='Book Review: Google Web Toolkit Solutions'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1380054009381876770&amp;postID=6331355096834751532' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://feeds.feedburner.com/AdamHoughton' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/6331355096834751532'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1380054009381876770/posts/default/6331355096834751532'/><author><name>Adam Houghton</name><uri>http://www.blogger.com/profile/14776528168857299346</uri><email>noreply@blogger.com</email></author></entry></feed>