<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Et-Setera &#187; Mobile</title>
	<atom:link href="http://www.setera.org/category/mobile/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.setera.org</link>
	<description>Ramblings of a geek</description>
	<lastBuildDate>Sun, 15 Aug 2010 18:37:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>More iPhone Versus Java Differences</title>
		<link>http://www.setera.org/2010/08/15/more-iphone-versus-java-differences/</link>
		<comments>http://www.setera.org/2010/08/15/more-iphone-versus-java-differences/#comments</comments>
		<pubDate>Sun, 15 Aug 2010 18:36:59 +0000</pubDate>
		<dc:creator>Craig Setera</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.setera.org/?p=264</guid>
		<description><![CDATA[In my previous entries, I&#8217;ve discussed a few things that caught me off guard while learning iPhone development.  In the last couple of weeks, I&#8217;ve picked up an Android device to dig into that platform a bit and probably will spend less time playing with iPhone development.  Before I move too far away from iPhone, [...]]]></description>
			<content:encoded><![CDATA[<p>In my <a href="http://www.setera.org/2010/04/25/iphone-versus-exceptions/">previous</a> <a href="http://www.setera.org/2010/03/07/still-a-geek/">entries</a>, I&#8217;ve discussed a few things that caught me off  guard while learning iPhone development.  In the last couple of weeks,  I&#8217;ve picked up an Android device to dig into that platform a bit and probably will spend less time playing with iPhone development.   Before I move too far away from iPhone, I wanted to wrap up the  remaining differences I found interesting between the iPhone and Java platforms.</p>
<p><span id="more-264"></span></p>
<h2>Run Loop Required for Networking</h2>
<p>One of the earliest things I needed to do was build out the networking code for my Daap player.  Initially, I was building this code as a standard Macintosh command-line application.  I happily wrote code to set up a synchronous networking call using NSURL and NSURLConnection and then&#8230; nothing.  Unlike Java, it was necessary to have a &#8220;run loop&#8221; executing.  Had I done this test initially on the iPhone emulator, I would have never run across this since the iPhone has a run loop executing the application.</p>
<h2>Subclassing and Class Clusters</h2>
<p>In Java, it is not possible to add functionality to another class.  The only real available option is to subclass the class of interest.  In general, that works ok until you get a class like java.lang.String that isn&#8217;t mean to be subclassed, in which case you need to provide some kind of wrapper or utility class.  My first attempt at adding some new functionality to NSMutableDictionary from the Foundation library was using a subclass.  I was greeted at runtime by an error similar to:</p>
<p><em>2010-08-14 09:55:48.965 TestProject[1136:207] *** Terminating app due to uncaught exception &#8216;NSInvalidArgumentException&#8217;, reason: &#8216;*** -[NSDictionary objectForKey:]: method only defined for abstract class.  Define -[MyDictionarySubclass objectForKey:]!&#8217;<br />
</em></p>
<p>What the heck?  It turns out that most of the collection classes in iPhone are implemented as class clusters.  According to the <a href="http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/CocoaObjects.html">Cocoa Fundamentals Guide</a> class clusters</p>
<p><em>&#8230; group a number of private, concrete subclasses under a  public, abstract superclass. The grouping of classes in this way  simplifies the publicly visible architecture of an object-oriented  framework without reducing its functional richness.</em></p>
<p>Had I really needed to subclass NSMutableDictionary, <a href="http://cocoawithlove.com/2008/12/ordereddictionary-subclassing-cocoa.html">Matt Gallagher talks about how to create such a subclass</a>.  In my case, it turns out what I really needed was just an Objective-C category to add methods to NSMutableDictionary directly rather than subclassing the class.  Categories remind me of similar functionality available in Smalltalk, allowing additional methods to be attached to classes.  The class &#8220;shape&#8221; (instance variables) cannot be changed using categories, but new methods can be added which is very helpful for creating utility methods on a specific class rather than having to do it on a separate class.  Looking around the documentation for the various frameworks in the system, it is amazing to see how many classes are extended using categories.</p>
<h2>Summary</h2>
<p>Although my Daap player is nowhere near complete, the project did offer me plenty of visibility into Objective-C and iPhone development.  Objective-C and, in particular, the various libraries for iPhone development are incredibly powerful.  While there were a few growing pains along the way, the transition to doing iPhone development was relatively straightforward and enjoyable.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.setera.org/2010/08/15/more-iphone-versus-java-differences/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone Versus Exceptions</title>
		<link>http://www.setera.org/2010/04/25/iphone-versus-exceptions/</link>
		<comments>http://www.setera.org/2010/04/25/iphone-versus-exceptions/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 00:55:15 +0000</pubDate>
		<dc:creator>Craig Setera</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.setera.org/?p=249</guid>
		<description><![CDATA[I&#8217;m continuing to make slow forward progress with my DAAP-based music player for the iPhone.  My most recent changes have taken this in the direction of being much more like the standard music player functionality on the iPhone.  In particular, I&#8217;ve switched over to using a tab view controller for the major perspectives of viewing [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m continuing to make slow forward progress with my DAAP-based music player for the iPhone.  My most recent changes have taken this in the direction of being much more like the standard music player functionality on the iPhone.  In particular, I&#8217;ve switched over to using a tab view controller for the major perspectives of viewing the music database.</p>
<p><span id="more-249"></span></p>
<div id="attachment_250" class="wp-caption aligncenter" style="width: 424px"><a href="http://www.setera.org/wp-content/uploads/2010/04/mainscreen.png"><img class="size-full wp-image-250" title="Tab Based Main View" src="http://www.setera.org/wp-content/uploads/2010/04/mainscreen.png" alt="" width="414" height="770" /></a><p class="wp-caption-text">Tab Based Main View</p></div>
<p>In addition, there is now a (very) rudimentary <em>Now Playing</em> screen to control playback.</p>
<div id="attachment_251" class="wp-caption aligncenter" style="width: 424px"><a href="http://www.setera.org/wp-content/uploads/2010/04/nowplaying.png"><img class="size-full wp-image-251" title="Now Playing View" src="http://www.setera.org/wp-content/uploads/2010/04/nowplaying.png" alt="Now Playing View" width="414" height="770" /></a><p class="wp-caption-text">Now Playing View</p></div>
<h2>iPhone Versus Exceptions</h2>
<p>In my <a href="http://www.setera.org/2010/03/07/still-a-geek/">last entry</a>, I mentioned that I&#8217;ve struggled through some interesting differences when dealing with iPhone development when compared to my years of experience in Java.  As a long time Java developer, I&#8217;m very accustomed to the use of checked exceptions.   Most, if not all, error handling in Java is handled through the creation, throwing and catching of exceptions.  I&#8217;m accustomed to catching/handling exceptions from the underlying libraries as well as creating and  throwing my own exceptions.  It was with that background that I approached iPhone development and quickly found out that is not the recommended way of handling error conditions.  While, the standard try/catch functionality is supported in Objective-C, the documentation for Cocoa development makes it clear that using exceptions should be avoided:</p>
<p><em><strong>Important</strong>: You should reserve the use of exceptions for programming or unexpected runtime errors such as out-of-bounds collection access, attempts to mutate immutable objects, sending an invalid message, and losing the connection to the window server. You usually take care of these sorts of errors with exceptions when an application is being created rather than at runtime.</em></p>
<p><em>Instead of exceptions, error objects (NSError) and the Cocoa error-delivery mechanism are the recommended way to communicate expected errors in Cocoa applications. </em></p>
<p>This is an important difference to understand when transitioning to Cocoa development from Java development.  While this is important to understand when making calls to library methods and functions, it must also be considered when defining your own calling conventions and libraries.  In order to remain consistent, it is important to use the pattern of NSError usage.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.setera.org/2010/04/25/iphone-versus-exceptions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Still A Geek&#8230;</title>
		<link>http://www.setera.org/2010/03/07/still-a-geek/</link>
		<comments>http://www.setera.org/2010/03/07/still-a-geek/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 00:38:01 +0000</pubDate>
		<dc:creator>Craig Setera</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.setera.org/?p=228</guid>
		<description><![CDATA[Looking back to my last post way back in October it is pretty clear when things started getting crazy at work.  The team survived and managed to finish another awesome version of mFoundry&#8217;s mBanking product.  These days I&#8217;m doing more management and less coding, but I&#8217;m definitely still a geek.  Given that iPhone applications are [...]]]></description>
			<content:encoded><![CDATA[<p>Looking back to my last post<strong><em> <a href="http://www.setera.org/2009/10/17/once-a-geek/">way back in October</a> </em></strong>it is pretty clear when things started getting crazy at work.  The team survived and managed to finish another awesome version of <a href="http://www.mfoundry.com">mFoundry&#8217;s</a> <a href="http://www.mfoundry.com/mbanking_overview.html">mBanking</a> product.  These days I&#8217;m doing more management and less coding, but I&#8217;m definitely still a geek.  Given that iPhone applications are all the rage in the industry, I&#8217;ve been trying to learn my way around iPhone development.  During the process of learning, I&#8217;ve noticed a few things that have caught me off guard compared to Java.  I hope to post a few of those things in the days and weeks to come that may help other Java programmers.  In the meantime, I thought I would share some about the project I&#8217;ve been playing with to learn.</p>
<p><span id="more-228"></span></p>
<h3>The Project</h3>
<p>In order to learn a new platform, I always like to have a project to build.  Looking around, I didn&#8217;t find any iPhone <a href="http://en.wikipedia.org/wiki/Digital_Audio_Access_Protocol">DAAP</a> clients for servers like the <a href="http://www.fireflymediaserver.org/">Firefly Media Server</a>.  I&#8217;ve been trying to build a DAAP client as my learning experience.  I have a good chunk of the navigation working at this point.</p>
<div id="attachment_236" class="wp-caption aligncenter" style="width: 217px"><a href="http://www.setera.org/wp-content/uploads/2010/03/player1.png"><img class="size-full wp-image-236" title="DAAP Player" src="http://www.setera.org/wp-content/uploads/2010/03/player1.png" alt="" width="207" height="385" /></a><p class="wp-caption-text">DAAP Player</p></div>
<p>The <a href="http://developer.apple.com/iphone/library/documentation/DataManagement/Conceptual/iPhoneCoreData01/Introduction/Introduction.html">iPhone Core Data support</a> is amazingly powerful, providing a good chunk of the underlying data source support for table views like those in the client.</p>
<div id="attachment_241" class="wp-caption aligncenter" style="width: 217px"><a href="http://www.setera.org/wp-content/uploads/2010/03/player2.png"><img class="size-full wp-image-241" title="DAAP Albums" src="http://www.setera.org/wp-content/uploads/2010/03/player2.png" alt="" width="207" height="385" /></a><p class="wp-caption-text">DAAP Albums</p></div>
<p>There is still much to be done, but the iPhone SDK has provided a large amount of functionality for a very small price.  As always, I continue to be impressed with the power packed into modern handsets.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.setera.org/2010/03/07/still-a-geek/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse MTJ &#8211; Help Wanted</title>
		<link>http://www.setera.org/2009/09/19/eclipse-mtj-help-wanted/</link>
		<comments>http://www.setera.org/2009/09/19/eclipse-mtj-help-wanted/#comments</comments>
		<pubDate>Sat, 19 Sep 2009 18:43:17 +0000</pubDate>
		<dc:creator>Craig Setera</dc:creator>
				<category><![CDATA[EclipseME]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Mobile Tools for Java]]></category>

		<guid isPermaLink="false">http://www.setera.org/?p=212</guid>
		<description><![CDATA[Given Motorola&#8217;s push into the Android space, it comes as no surprise that they are trimming down the number of developers on the Eclipse Mobile Tools for Java project.  MTJ project lead, Christian Kurzke, announced via the mailing list that three of the key &#8220;Motorola sponsored&#8221; developers have been reassigned to a different project and [...]]]></description>
			<content:encoded><![CDATA[<p>Given <a href="http://www.motorola.com/Consumers/US-EN/Consumer-Product-and-Services/Mobile-Phones/ci.Motorola-CLIQ-US-EN.services">Motorola&#8217;s push into the Android space</a>, it comes as no surprise that they are trimming down the number of developers on the Eclipse Mobile Tools for Java project.  MTJ project lead, Christian Kurzke, <a href="http://dev.eclipse.org/mhonarc/lists/dsdp-mtj-dev/msg01352.html">announced via the mailing list</a> that three of the key &#8220;Motorola sponsored&#8221; developers have been reassigned to a different project and will no longer be sponsored to develop the Eclipse MTJ features.  The good news is that Gustavo, Diego and David have expressed interest in continuing to be involved as individual contributors.  In addition, Jon Deardon from Research In Motion will most likely be joining the list of official contributors very soon.</p>
<p>As Christian pointed out via his email, now would be an excellent time to consider getting involved in the Eclipse MTJ project.  Even something as simple as being involved on the mailing list can help us out.  If you are a mobile developer using Eclipse Mobile Tools for Java, consider contributing a patch to provide a cool new feature or to fix the bug that annoys you the most.  Not a developer, but still want to contribute?  We can always use help with documentation and project marketing.  Pitch in and lend a hand!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.setera.org/2009/09/19/eclipse-mtj-help-wanted/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>First ZBerry Release</title>
		<link>http://www.setera.org/2009/09/07/first-zberry-release/</link>
		<comments>http://www.setera.org/2009/09/07/first-zberry-release/#comments</comments>
		<pubDate>Mon, 07 Sep 2009 23:35:12 +0000</pubDate>
		<dc:creator>Craig Setera</dc:creator>
				<category><![CDATA[BlackBerry]]></category>
		<category><![CDATA[ZBerry]]></category>

		<guid isPermaLink="false">http://www.setera.org/?p=204</guid>
		<description><![CDATA[I have just made available the first public release (version 0.5.0) of the ZBerry interactive fiction application.  This release works pretty well, but is definitely rough around the edges.  I hope people get some amusement despite any bugs.  More details about installation and usage can be found on the ZBerry Documentation page. Please take this [...]]]></description>
			<content:encoded><![CDATA[<p>I have just made available the first public release (version 0.5.0) of the <a href="http://www.setera.org/projects/zberry/">ZBerry</a> interactive fiction application.  This release works pretty well, but is definitely rough around the edges.  I hope people get some amusement despite any bugs.  More details about installation and usage can be found on the <a href="http://www.setera.org/projects/zberry/zberry-documentation/">ZBerry Documentation page</a>.</p>
<div id="attachment_191" class="wp-caption aligncenter" style="width: 330px"><a href="http://www.setera.org/wp-content/uploads/2009/09/gameplay.png"><img class="size-full wp-image-191" title="ZBerry Game Play" src="http://www.setera.org/wp-content/uploads/2009/09/gameplay.png" alt="ZBerry Game Play" width="320" height="240" /></a><p class="wp-caption-text">ZBerry Game Play</p></div>
<p>Please take this for what it is worth&#8230; a silly little hobby project of mine that may or may not continue.  If you really like this, feel free to comment.  If you find bugs, source code patches are welcome, but complaints are not.  My hope is that is that it is worth more than its price <em><strong>(FREE)</strong></em> but given that I&#8217;m making nothing from this I hope that everyone can understand there is absolutely no support implied or available.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.setera.org/2009/09/07/first-zberry-release/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Snow Leopard And BlackBerry Tethering</title>
		<link>http://www.setera.org/2009/09/07/snow-leopard-and-blackberry-tethering/</link>
		<comments>http://www.setera.org/2009/09/07/snow-leopard-and-blackberry-tethering/#comments</comments>
		<pubDate>Mon, 07 Sep 2009 21:15:17 +0000</pubDate>
		<dc:creator>Craig Setera</dc:creator>
				<category><![CDATA[BlackBerry]]></category>
		<category><![CDATA[Macintosh]]></category>

		<guid isPermaLink="false">http://www.setera.org/?p=201</guid>
		<description><![CDATA[I have been told that the replacement Macintosh BlackBerry PPPD is no longer necessary for systems that have Snow Leopard installed.  In fact, it sounds like installing the patched pppd version can actually cause issues on Snow Leopard systems. If you have Snow Leopard on your system, please do not install the patched version of [...]]]></description>
			<content:encoded><![CDATA[<p>I have been told that the <a href="http://www.setera.org/projects/blackberry-bold-pppd-replacement/">replacement Macintosh BlackBerry PPPD</a> is no longer necessary for systems that have Snow Leopard installed.  In fact, it sounds like installing the patched pppd version can actually cause issues on Snow Leopard systems.</p>
<p><em><strong>If you have Snow Leopard on your system, please do not install the patched version of PPPD.</strong></em></p>
<p>I will keep the replacement package available for those like myself that are still running Leopard on their systems.  In addition, there is a <a href="http://forums.crackberry.com/f83/tethering-bold-9000-mac-over-bluetooth-4-6-0-247-a-180975/index14.html#post2959290">version built for Tiger</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.setera.org/2009/09/07/snow-leopard-and-blackberry-tethering/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>New Eclipse &#8220;Mobile Tools&#8221; Project</title>
		<link>http://www.setera.org/2009/08/23/new-eclipse-mobile-tools-project/</link>
		<comments>http://www.setera.org/2009/08/23/new-eclipse-mobile-tools-project/#comments</comments>
		<pubDate>Sun, 23 Aug 2009 12:05:02 +0000</pubDate>
		<dc:creator>Craig Setera</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[EclipseME]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Mobile Industry Working Group]]></category>
		<category><![CDATA[Mobile Tools for Java]]></category>
		<category><![CDATA[Pulsar]]></category>

		<guid isPermaLink="false">http://www.setera.org/?p=167</guid>
		<description><![CDATA[Eric Cloninger of Motorola has started the process of combining Eclipse Mobile Tools for Java, Eclipse Tools for Mobile Linux and Eclipse Pulsar projects under one combined project.  Although the specific name has not been decided yet, a leading candidate is simply the &#8220;Eclipse Mobile Tools&#8221; project.  In Eric&#8217;s presentation to members of the various [...]]]></description>
			<content:encoded><![CDATA[<p>Eric Cloninger of Motorola has started the process of combining Eclipse Mobile Tools for Java, Eclipse Tools for Mobile Linux and Eclipse Pulsar projects under one combined project.  Although the specific name has not been decided yet, a leading candidate is simply the &#8220;Eclipse Mobile Tools&#8221; project.  In Eric&#8217;s <a href="http://www.eclipse.org/dsdp/tml/reviews/MoveReview_DSDP-TmL-MTJ_2009-07-21.pdf">presentation</a> to members of the various projects he mentions a number of compelling reasons for pulling these projects together:<span id="more-167"></span></p>
<ul>
<li>The TmL project contains components that are useful on many mobile platforms, not just Linux. As the primary contributor to TmL up to this point, Motorola desires to expand the scope of the project to support other mobile platforms.</li>
<li>The MTJ project contains some components that could be valuable to all mobile developers, not just those who use Java ME.</li>
<li>Code for Eclipse Pulsar was placed in the MTJ repository due to timing issues. Since the Pulsar developers also work on MTJ, it seemed a reasonable location. There is a need for a more suitable and permanent location for this work.</li>
<li>A new project, focused on the needs of all mobile developers has momentum, as previously seen from the excitement around Pulsar. By removing the artificial barriers of “Linux” and “Java”, we hope to provide a home for all Eclipse mobile developers.</li>
</ul>
<p>It is easy to understand Motorola&#8217;s motivations in making this move, given their transition to the Linux-based Android operating system for many of their upcoming devices.  With that said, I do believe that this move is truly beneficial to the mobile development community.  While developers have to deal with the plethora of mobile device platforms and the associated fragmentation, consumers really only care about the results of development.  The more that the tools can help developers bridge the gaps between the various platforms, the easier it will be to get applications into consumer&#8217;s hand no matter what their device.</p>
<p>In many ways, this is a natural extension to my original goals of making EclipseME support all JavaME devices no matter which vendor provided those devices.  Of course, JavaME&#8217;s role in mobile devices has diminished significantly in recent years, so it makes a lot of sense to broaden the scope to other platforms.  For more information, take a look at the <a href="http://www.eclipse.org/dsdp/tml/reviews/MoveReview_DSDP-TmL-MTJ_2009-07-21.pdf">presentation</a> or drop by one of the project mailing lists.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.setera.org/2009/08/23/new-eclipse-mobile-tools-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BlackBerry Tethering with 10.5.8</title>
		<link>http://www.setera.org/2009/08/11/blackberry-tethering-with-10-5-8/</link>
		<comments>http://www.setera.org/2009/08/11/blackberry-tethering-with-10-5-8/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 17:49:00 +0000</pubDate>
		<dc:creator>Craig Setera</dc:creator>
				<category><![CDATA[BlackBerry]]></category>
		<category><![CDATA[Macintosh]]></category>

		<guid isPermaLink="false">http://www.setera.org/?p=164</guid>
		<description><![CDATA[Just a quick post to validate that the latest Leopard update (10.5.8)  overwrites the changed pppd provided by my replacement package.  I&#8217;ve also verified that installing the replacement package on top of 10.5.8 works just fine.]]></description>
			<content:encoded><![CDATA[<p>Just a quick post to validate that the latest Leopard update (10.5.8)  overwrites the changed pppd provided by my <a href="http://www.setera.org/projects/blackberry-bold-pppd-replacement/">replacement package</a>.  I&#8217;ve also verified that installing the <a href="http://www.setera.org/projects/blackberry-bold-pppd-replacement/">replacement package</a> on top of 10.5.8 works just fine.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.setera.org/2009/08/11/blackberry-tethering-with-10-5-8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cool BlackBerry API Support</title>
		<link>http://www.setera.org/2009/07/21/cool-blackberry-api-support/</link>
		<comments>http://www.setera.org/2009/07/21/cool-blackberry-api-support/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 00:23:19 +0000</pubDate>
		<dc:creator>Craig Setera</dc:creator>
				<category><![CDATA[BlackBerry]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.setera.org/?p=157</guid>
		<description><![CDATA[In my last post, I was pretty negative about the available BlackBerry user interface controls.  While that fact hasn&#8217;t changed, I didn&#8217;t want to leave the impression that the BlackBerry API&#8217;s provide nothing to developers.  The API&#8217;s provide lots of interesting functions including the ability to extend menus within other applications.  Take a look at [...]]]></description>
			<content:encoded><![CDATA[<p>In my <a href="http://www.setera.org/2009/07/13/the-woeful-state-of-blackberry-ui-controls/">last post</a>, I was pretty negative about the available BlackBerry user interface controls.  While that fact hasn&#8217;t changed, I didn&#8217;t want to leave the impression that the BlackBerry API&#8217;s provide nothing to developers.  The API&#8217;s provide lots of interesting functions including the ability to extend menus within other applications.  Take a look at the following from the default messaging application on a 4.5 device.</p>
<div id="attachment_155" class="wp-caption aligncenter" style="width: 330px"><a href="http://www.setera.org/wp-content/uploads/2009/07/facebook1.png"><img class="size-full wp-image-155" title="Before Facebook Installation" src="http://www.setera.org/wp-content/uploads/2009/07/facebook1.png" alt="Before Facebook Installation" width="320" height="240" /></a><p class="wp-caption-text">Before Facebook Installation</p></div>
<p>This shows the menu in this application before installing the Facebook application.  After installation, you can see that the Facebook application has added a new menu item to this application.</p>
<div id="attachment_156" class="wp-caption aligncenter" style="width: 330px"><a href="http://www.setera.org/wp-content/uploads/2009/07/facebook2.png"><img class="size-full wp-image-156" title="After Facebook Installation" src="http://www.setera.org/wp-content/uploads/2009/07/facebook2.png" alt="After Facebook Installation" width="320" height="240" /></a><p class="wp-caption-text">After Facebook Installation</p></div>
<p>This is a pretty nice feature of the API.  Although I don&#8217;t have actual code to show for this, my assumption is that this is provided by using:</p>
<ul>
<li><a href="http://www.blackberry.com/developers/docs/4.5.0api/net/rim/blackberry/api/menuitem/ApplicationMenuItem.html">ApplicationMenuItem</a></li>
<li><a href="http://www.blackberry.com/developers/docs/4.5.0api/net/rim/blackberry/api/menuitem/ApplicationMenuItemRepository.html">ApplicationMenuItemRepository</a>
<ul>
<li><a href="http://www.blackberry.com/developers/docs/4.5.0api/net/rim/blackberry/api/menuitem/ApplicationMenuItemRepository.html#MENUITEM_MESSAGE_LIST">MENUITEM_MESSAGE_LIST</a></li>
</ul>
</li>
</ul>
<p>API&#8217;s like this allow for incredible integration with the rest of the applications on the device, opening up many very interesting opportunities.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.setera.org/2009/07/21/cool-blackberry-api-support/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Woeful State of BlackBerry UI Controls</title>
		<link>http://www.setera.org/2009/07/13/the-woeful-state-of-blackberry-ui-controls/</link>
		<comments>http://www.setera.org/2009/07/13/the-woeful-state-of-blackberry-ui-controls/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 02:12:59 +0000</pubDate>
		<dc:creator>Craig Setera</dc:creator>
				<category><![CDATA[BlackBerry]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[ZBerry]]></category>

		<guid isPermaLink="false">http://www.setera.org/?p=138</guid>
		<description><![CDATA[I continue to be impressed with the build quality and overall polish of the BlackBerry Bold as an end-user device&#8230; at least for basic functionality.  While some may not like the way BlackBerry push email works, I find it to be pretty nice. As a developer, I&#8217;m much more disappointed developing using the BlackBerry native [...]]]></description>
			<content:encoded><![CDATA[<p>I continue to be impressed with the build quality and overall polish of the BlackBerry Bold as an end-user device&#8230; at least for basic functionality.  While some may not like the way BlackBerry push email works, I find it to be pretty nice.</p>
<p>As a developer, I&#8217;m much more disappointed developing using the BlackBerry native API than I expected I would be when I started playing with my little ZBerry project.  Marcus Watkins <a href="http://www.versatilemonkey.com/story.html">offers excellent insight into the world of BlackBerry development</a>, which I won&#8217;t try to rehash here.  The part that I find incredibly frustrating is the lack of decent reusable user interface controls.  As Marcus details in his blog post, the provided UI functionality has the bland look and feel of the base operating system.  Even more frustrating to me is how little flexibility there is even within the standard controls.  For instance, I wanted to provide the user the ability to customize the font used in the text display.  Using the standard functionality yields the following dialog.<span id="more-138"></span></p>
<div id="attachment_139" class="wp-caption aligncenter" style="width: 330px"><a href="http://www.setera.org/wp-content/uploads/2009/07/fonts.png"><img class="size-full wp-image-139" title="fonts" src="http://www.setera.org/wp-content/uploads/2009/07/fonts.png" alt="Initial Fonts Dialog" width="320" height="240" /></a><p class="wp-caption-text">Initial Fonts Dialog</p></div>
<p>Wow, look at the size of that dialog relative to the screen.  All of that wasted space.  So much space could be saved if:</p>
<ul>
<li>The extra space between the label and field contents wasn&#8217;t there.</li>
<li>The OK/Cancel buttons were laid out horizontally instead of vertically.</li>
</ul>
<p>What&#8217;s worse is that the, while the change listener support attached to those fields is capable of updating the story font on the fly, the user can hardly see the text.  Thinking there had to be a way to control things a little bit better, I tried to turn off the label text.  If I could lay out the two fields side-by-side, it might be better.  Unfortunately, there appears to be no way to do that.  Setting it to blanks yields a dialog that is even a bigger waste of space.</p>
<div id="attachment_142" class="wp-caption aligncenter" style="width: 330px"><a href="http://www.setera.org/wp-content/uploads/2009/07/fonts21.png"><img class="size-full wp-image-142" title="Fonts Attempt #2" src="http://www.setera.org/wp-content/uploads/2009/07/fonts21.png" alt="Font Dialog Attempt #2" width="320" height="240" /></a><p class="wp-caption-text">Font Dialog Attempt #2</p></div>
<p>Given that there is vertical and horizontal layout field management, why must the label and text field be tied together like this?  I&#8217;m sure some of it boils down to legacy hardware support for things like the trackwheel.  But it would be nice to be able to selectively break free of those restrictions.</p>
<p>While the API would certainly allow me to build a version of these controls from scratch, that seems a silly thing to have to do.  Doing so implies the need to account for the various input options (trackwheel, trackball, keyboard, etc), do all of the rendering and focus management that these controls are already handling.  Admittedly, this is still an issue of &#8220;look and feel&#8221;, but it is disappointing to see something so simple be neglected.</p>
<p>With that said, the text input and output controls are pretty impressive, saving effort on that side of the implementation.  I guess it should come as no surprise that the strongest parts of the BlackBerry API revolve around features such as email that have been in the platform for a very long time.</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">
<h1 id="profile_name">Marcus Watkins</h1>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.setera.org/2009/07/13/the-woeful-state-of-blackberry-ui-controls/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
