<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en" xml:base="http://akosma.com/wp-atom.php">
	<title type="text">akosma software</title>
	<subtitle type="text">Leading international provider of cross-platform and multilingual software solutions, for iPhone, iPad, Mac, Windows, Linux, Android, and the web.</subtitle>

	<updated>2010-08-29T14:43:17Z</updated>

	<link rel="alternate" type="text/html" href="http://akosma.com" />
	<id>http://akosma.com/feed/atom/</id>
	

	<generator uri="http://wordpress.org/" version="3.0.1">WordPress</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/akosmasoftware" /><feedburner:info uri="akosmasoftware" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry>
		<author>
			<name>Adrian Kosmaczewski</name>
						<uri>http://kosmaczewski.net/</uri>
					</author>
		<title type="html"><![CDATA[JAOO 2010]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/akosmasoftware/~3/R1rCbTCDm0o/" />
		<id>http://akosma.com/?p=2631</id>
		<updated>2010-08-29T14:43:17Z</updated>
		<published>2010-08-27T08:35:04Z</published>
		<category scheme="http://akosma.com" term="Announcements" /><category scheme="http://akosma.com" term="Conferences" /><category scheme="http://akosma.com" term="iPad" /><category scheme="http://akosma.com" term="iPhone" /><category scheme="http://akosma.com" term="iOS" /><category scheme="http://akosma.com" term="JAOO" /><category scheme="http://akosma.com" term="workshop" />		<summary type="html"><![CDATA[It&#8217;s that time of the year again: JAOO 2010 is getting closer, with sessions and workshops from Sunday October 3rd to Friday 8th. JAOO has been held since 1996, and it is a multi-language, non-vendor focused, eclectic, flexible conference where you can learn about those technologies you&#8217;ve never heard about, or those you never had [...]]]></summary>
		<content type="html" xml:base="http://akosma.com/2010/08/27/jaoo-2010/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=jaoo-2010"><![CDATA[<p>It&#8217;s that time of the year again: <a target="_blank" href="http://jaoo.dk/">JAOO 2010</a> is getting closer, with sessions and workshops from Sunday October 3rd to Friday 8th. JAOO has been held since 1996, and it is a multi-language, non-vendor focused, eclectic, flexible conference where you can learn about those technologies you&#8217;ve never heard about, or those you never had the time to explore in depth. I can&#8217;t but recommend to any software engineer to attend, given the breadth and the quality of the presentations.</p>
<p><img src="http://akosma.com/wp/wp-content/uploads/2010/08/jaoo.png" alt="jaoo.png" border="0" width="170" height="70" class="alignleft size-full" /></p>
<p>This year&#8217;s speaker lineup is awesome as usual; just a few names to get you excited: Rob Pike (creator of the <a target="_blank" href="http://golang.org/">Go programming language</a>, at Google), Martin Odersky (creator of <a target="_blank" href="http://www.scala-lang.org/">Scala</a>, from the <a target="_blank" href="http://www.epfl.ch/">EPFL</a>), Douglas Crockford (the legendary <a target="_blank" href="http://www.crockford.com/javascript/javascript.html">JavaScript guru</a> and the creator of <a target="_blank" href="http://www.json.org/">JSON</a>, from Yahoo!), Scott Chacon (founder of <a target="_blank" href="http://github.com/">Github</a>), Jeff Sutherland (father of the <a target="_blank" href="http://www.scrumalliance.org/">Scrum</a> methodology), <a target="_blank" href="http://en.wikipedia.org/wiki/James_Gosling">James Gosling</a> (creator of Java), <a target="_blank" href="http://en.wikipedia.org/wiki/Jim_Coplien">Jim Coplien</a> (C++ legend), <a target="_blank" href="http://martinfowler.com/">Martin Fowler</a> (no need to say more), <a target="_blank" href="http://en.wikipedia.org/wiki/Tim_Bray">Tim Bray</a> (father of XML)&#8230; and much more!</p>
<p>And akosma software is proud and humbled to announce that I will be there to talk about, you guessed it, iOS, the iPhone and the iPad. I am going to host <a target="_blank" href="http://jaoo.dk/aarhus-2010/speaker/Adrian+Kosmaczewski">two sessions</a> this year:</p>
<ul>
<li>On Sunday, October 3rd, from 9 AM to 12 PM, the &#8220;Write your first iPhone App&#8221; training, where I will guide you into learning the tools and paradigms required to create a small yet functional iPhone application.</li>
<li>On Monday, October 4th, from 1:30 PM to 2:30 PM I will present my findings on &#8220;Accessing Web Services From iPhone and iPad Applications&#8221;, diving into a subject of interest to many developers new to the platform.</li>
</ul>
<p>In any case, if you are <a target="_blank" href="http://twitter.com/akosma">following me on Twitter</a> (which you should, definitely) you can benefit of a 20% discount on the ticket price by using the &#8220;JAOOspeakerfollower&#8221; promotion code! I will be there the whole week, so don&#8217;t hesitate to stop me to say hi; I&#8217;d love to meet you in person there, and to share a good conversation about software engineering, trends and buzzwords!</p>
]]></content>
		<link rel="replies" type="text/html" href="http://akosma.com/2010/08/27/jaoo-2010/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=jaoo-2010#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://akosma.com/2010/08/27/jaoo-2010/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://akosma.com/2010/08/27/jaoo-2010/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=jaoo-2010</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Adrian Kosmaczewski</name>
						<uri>http://kosmaczewski.net/</uri>
					</author>
		<title type="html"><![CDATA[Migrating iPhone 3.x apps to iPad and iOS 4.0]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/akosmasoftware/~3/UShGN1mF9UI/" />
		<id>http://akosma.com/?p=2597</id>
		<updated>2010-07-26T08:44:22Z</updated>
		<published>2010-07-26T08:43:30Z</published>
		<category scheme="http://akosma.com" term="Tech" /><category scheme="http://akosma.com" term="iPad" /><category scheme="http://akosma.com" term="iPhone" /><category scheme="http://akosma.com" term="iOS" /><category scheme="http://akosma.com" term="migration" /><category scheme="http://akosma.com" term="technology" /><category scheme="http://akosma.com" term="Xcode" />		<summary type="html"><![CDATA[Right now, creating Universal Applications for the iPod touch, the iPhone and the iPad is not really a straightforward task. The current panorama of iOS-compatible software and hardware platforms is getting more and more complex, and this blog post is a small guide (by no means exhaustive) of tips and tricks that have helped me [...]]]></summary>
		<content type="html" xml:base="http://akosma.com/2010/07/26/migrating-iphone-3-x-apps-to-ipad-and-ios-4-0/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=migrating-iphone-3-x-apps-to-ipad-and-ios-4-0"><![CDATA[<p>Right now, creating <a target="_blank" href="http://devimages.apple.com/iphone/resources/introductiontouniversalapps.pdf">Universal Applications</a> for the iPod touch, the iPhone and the iPad is not really a straightforward task. The current panorama of iOS-compatible software and hardware platforms is getting more and more complex, and this blog post is a small guide (by no means exhaustive) of tips and tricks that have helped me get my apps running in as many platforms as possible, with as few headaches as possible.</p>
<p>First of all, a few warnings:</p>
<ul>
<li>I assume your current applications run in iPhone OS 3.1 as a minimum requirement. Apple does not accept any more applications targeting the 2.x frameworks these days, and the developer tools do not include those anymore.</li>
<li>I assume your projects <a target="_blank" href="http://akosma.com/2009/07/16/objective-c-compiler-warnings/">compile and link without warnings</a>; many API calls have been deprecated between 2.x and 4.0, so you&#8217;d better have code using the latest methods and no deprecated ones.</li>
</ul>
<h2>Panorama</h2>
<p>Waiting for an unification of the iPad and the iOS 4 frameworks (probably <a target="_blank" href="http://adage.com/digital/article?article_id=144670">later this year</a>), the current panorama of software and hardware iOS platforms looks as follows:</p>
<table border="1" width="100%">
<tr>
<th style="text-align: center" rowspan="2" width="25%"></th>
<th style="text-align: center" colspan="3" width="25%">iPhone</th>
<th style="text-align: center" colspan="2" width="25%">iPod touch</th>
<th style="text-align: center" rowspan="2" width="25%">iPad</th>
</tr>
<tr>
<th style="text-align: center" width="8.3%">3G</th>
<th style="text-align: center" width="8.3%">3GS</th>
<th style="text-align: center" width="8.3%">4</th>
<th style="text-align: center" width="12.5%">2nd gen</th>
<th style="text-align: center" width="12.5%">3rd gen</th>
</tr>
<tr>
<td style="text-align: center"><strong>iPhone OS 3.1</strong></td>
<td style="text-align: center"> <strong>x</strong> </td>
<td style="text-align: center"> <strong>x</strong> </td>
<td></td>
<td style="text-align: center"> <strong>x</strong> </td>
<td style="text-align: center"> <strong>x</strong> </td>
<td></td>
</tr>
<tr>
<td style="text-align: center"><strong>iPhone OS 3.2</strong></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td style="text-align: center"> <strong>x</strong> </td>
</tr>
<tr>
<td style="text-align: center"><strong>iOS 4.0</strong></td>
<td></td>
<td style="text-align: center"> (ls) </td>
<td style="text-align: center"> <strong>x</strong> </td>
<td style="text-align: center"> (ls) </td>
<td style="text-align: center"> <strong>x</strong> </td>
<td></td>
</tr>
<tr>
<td style="text-align: center"><strong>Year Released</strong></td>
<td style="text-align: center"> 2008 </td>
<td style="text-align: center"> 2009 </td>
<td style="text-align: center"> 2010 </td>
<td style="text-align: center"> 2008 </td>
<td style="text-align: center"> 2009 </td>
<td style="text-align: center"> 2010 </td>
</tr>
<tr>
<td style="text-align: center"><strong>RAM (MB)</strong></td>
<td style="text-align: center"> 128 </td>
<td style="text-align: center"> 256 </td>
<td style="text-align: center"> 512 </td>
<td style="text-align: center"> 128 </td>
<td style="text-align: center"> 256 </td>
<td style="text-align: center"> 256 </td>
</tr>
<tr>
<td style="text-align: center"><strong>CPU (MHz)</strong></td>
<td style="text-align: center"> 620 </td>
<td style="text-align: center"> 833 </td>
<td style="text-align: center"> 1 GHz </td>
<td style="text-align: center"> 620 </td>
<td style="text-align: center"> 833 </td>
<td style="text-align: center"> 1 GHz </td>
</tr>
</table>
<p>(ls): limited support, particularly for multitasking.</p>
<p>For practical purposes, I&#8217;ve omitted in the table above the fact that the iPhone 3G is (theoretically) able to run iOS 4. Something that has been empirically proved to be a <a target="_blank" href="http://www.tuaw.com/2010/07/22/ios-4-and-iphone-3g-is-a-match-made-in-whats-the-opposite-of/">bad idea</a>.<br />
<span id="more-2597"></span><br />
<img src="http://akosma.com/wp/wp-content/uploads/2010/07/ios4_icon_20100624.png" alt="ios4_icon_20100624.png" border="0" width="170" height="73" class="alignleft size-full" /></p>
<h2>Upgrading Xcode Projects to iOS 4</h2>
<p>Your Xcode 3.1 iPhone project can be migrated to iOS 4 as follows:</p>
<ul>
<li>If you are using an SCM with branching support, create a new branch for all of the operations below; you don&#8217;t want to impact your &#8220;trunk&#8221;, or main branch with all these changes, as more urgent bugs might appear while you are doing this.</li>
<li>Download the <a target="_blank" href="http://developer.apple.com/iphone/">latest SDK from Apple</a>. This is required by Apple, actually. And the latest version of Xcode (3.2.3 at the time of this writing) allows you to write applications compatible with all the platforms in the table above.</li>
<li>Open your project with Xcode 3.2.3; select the &#8220;Project / Edit Project Settings&#8230;&#8221; menu and change the &#8220;Base SDK value to iPhone Device 4.0 (yes, even if your project is meant to target iPhone OS 3.1&#8230; stay with me!)</li>
</ul>
<p><img src="http://akosma.com/wp/wp-content/uploads/2010/07/default_sdk_xcode1.png" alt="default_sdk_xcode.png" border="0" width="440" height="608" class="alignnone size-medium" /></p>
<ul>
<li>In the &#8220;Targets&#8221; group of your Xcode project, open the &#8220;Info&#8221; panel, select the &#8220;Build&#8221; tab and change the &#8220;iPhone OS Deployment Target&#8221; entry for all the configurations of your target to &#8220;iPhone OS 3.1&#8243;. This will allow your code to be loaded in earlier versions of iOS, even if your application uses iOS 4 as a base SDK for all configurations:</li>
</ul>
<p><img src="http://akosma.com/wp/wp-content/uploads/2010/07/deployment_target_xcode.png" alt="deployment_target_xcode.png" border="0" width="440" height="608" class="alignnone size-medium" /></p>
<ul>
<li>Set the UIKit framework, as well as any new framework provided by iOS 4, to link as &#8220;Weak&#8221;; for example, in the screenshot below, taken from the settings of <a target="_blank" href="http://github.com/akosma/Senbei">my open source Senbei application</a>, you can see that UIKit is weakly linked, as well as the MobileCoreServices framework (which does not exist in iPhone OS 3). This prevents the application from crashing at startup in versions of iOS earlier than 4, because newer versions of UIKit bring new classes and APIs that were not available before:</li>
</ul>
<p><img src="http://akosma.com/wp/wp-content/uploads/2010/07/weak_type_framework.png" alt="weak_type_framework.png" border="0" width="440" height="630" class="alignnone size-medium" /></p>
<ul>
<li>Change your Entitlements.plist file, because iOS 4 applications submitted to the App Store require a new format in the Entitlements.plist file. In most cases, you can just delete the previous file, and create a new one from Xcode (&#8220;File / New File&#8230;&#8221;, then select &#8220;Code Signing / Entitlements&#8221; in the dialog that appears).</li>
</ul>
<p>Old Entitlements.plist:</p>
<pre class="brush: xml;">
&lt;!DOCTYPE plist PUBLIC &quot;-//Apple//DTD PLIST 1.0//EN&quot; &quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&quot;&gt;
&lt;plist version=&quot;1.0&quot;&gt;
&lt;dict&gt;
    &lt;key&gt;get-task-allow&lt;/key&gt;
    &lt;false/&gt;
&lt;/dict&gt;
&lt;/plist&gt;
</pre>
<p>New Entitlements.plist:</p>
<pre class="brush: xml;">
&lt;!DOCTYPE plist PUBLIC &quot;-//Apple//DTD PLIST 1.0//EN&quot; &quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&quot;&gt;
&lt;plist version=&quot;1.0&quot;&gt;
&lt;dict&gt;
    &lt;!--- Required entitlements (in most cases shouldn't be changed) ---&gt;
    &lt;key&gt;application-identifier&lt;/key&gt;
    &lt;string&gt;$(AppIdentifierPrefix)$(CFBundleIdentifier)&lt;/string&gt;
    &lt;key&gt;keychain-access-groups&lt;/key&gt;
    &lt;array&gt;
        &lt;string&gt;$(AppIdentifierPrefix)$(CFBundleIdentifier)&lt;/string&gt;
    &lt;/array&gt;

    &lt;!--- Custom entitlements below ---&gt;

&lt;/dict&gt;
&lt;/plist&gt;
</pre>
<ul>
<li>Update your icons and graphics for the new &#8220;Retina&#8221; display of the iPhone 4; <a target="_blank" href="http://developer.apple.com/iphone/library/qa/qa2010/qa1686.html">Apple has published a special guide</a> that provides all the information required in terms of sizes, formats and naming conventions.</li>
</ul>
<p>After doing the steps above, you should have an application running on iPhone OS 3.1, 3.2 (as an iPhone application) and 4.0, offering exactly the same functionality and ready to be sent to the App Store.</p>
<p><img src="http://akosma.com/wp/wp-content/uploads/2010/03/ipadbooks.png" alt="ipadbooks.png" border="0" width="170" height="206" class="alignleft size-full" /></p>
<h2>Create a Universal iPhone and iPad application</h2>
<p>Creating an iPad-compatible application from your iPhone app requires much more than just adapting your source code; the user experience of iPad apps is a completely different beast than that of iPhone apps, so I strongly recommend you <a target="_blank" href="http://www.smashingmagazine.com/2010/04/16/design-tips-for-your-ipad-app/">ask a graphic and/or UX designer for help</a>. I can&#8217;t stress this too much; iPad apps aren&#8217;t just &#8220;big&#8221; iPhone apps. They are much, much more.</p>
<p>Technically speaking, in the simplest of terms, you should be able to migrate most UIKit-based application following the standard path provided by Apple:</p>
<ul>
<li>Select your target in Xcode and choose the &#8220;Project / Upgrade Current Target for iPad&#8230;&#8221; menu.</li>
<li>Use some compile-time and runtime tricks to get different parts of your code to execute in different environments, as explained by <a target="_blank" href="http://iphonedevelopment.blogspot.com/2010/04/few-more-notes-on-creating-universal.html">Jeff LaMarche</a>:</li>
</ul>
<pre class="brush: objc;">
#if __IPHONE_OS_VERSION_MAX_ALLOWED &gt;= 30200
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
        NSLog(@&quot;iPad Idiom&quot;);
    else
#else
        NSLog(@&quot;iPhone Idiom&quot;);
#endif
</pre>
<h2>Testing your code in different devices</h2>
<p>My advice is the following: don&#8217;t upgrade your old iPhone to iOS 4, particularly if you own a 3G. Keep it running under 3.1 and get the new iPhone 4 as soon as you can. This has two major advantages:</p>
<ul>
<li>You will be sure that there aren&#8217;t crashes or unexpected situations in iPhone OS 3.1, particularly when you are using new APIs in your code.</li>
<li>The iPhone 3G and 3GS are slower than the new iPhone 4, but they are still (probably not for long) the most widely deployed, particularly in those countries where the iPhone 4 has not yet been released. This will help you create code that uses low memory, and that runs faster in newer models.</li>
</ul>
<p>In my personal situation, I have my old iPhone 3G running iPhone OS 3.1.3, and a second generation iPod touch running iOS 4. And of course, my iPad runs iPhone OS 3.2.1.</p>
<h2>Adapting your code for different platforms</h2>
<p>Although <a target="_blank" href="http://developer.apple.com/iphone/library/documentation/General/Conceptual/iPadProgrammingGuide/StartingYourProject/StartingYourProject.html">Apple recommends using the UI_USER_INTERFACE_IDIOM macro</a>, sometimes you need a tighter control in your code. For this, I have used three different techniques:</p>
<ul>
<li>Use a different class as the app delegate in your iPad application; instead of making your code a mess of &#8220;if&#8221; and &#8220;else&#8221; statements or preprocessor routines, make your iPad application create an instance of a different class, one that might or might not be a child class of the existing application delegate. This way, you can completely separate the code of both platforms, and each can load a different UI control hierarchy, without impacting the existing iPhone OS 3.1 or iOS 4.0 infrastructure.<br />
You can specify a different class for your iPad app delegate directly in your MainWindow-iPad.xib file, created for you when you selected the &#8220;Project / Upgrade Current Target for iPad&#8230;&#8221; menu (one more advantage of using Interface Builder files in your projects!):</li>
</ul>
<p><img src="http://akosma.com/wp/wp-content/uploads/2010/07/mainwindow_xib_ipad.png" alt="mainwindow_xib_ipad.png" border="0" width="440" height="255" class="alignnone size-medium" /></p>
<ul>
<li>Check for symbols at runtime, taking advantage of the dynamic nature of Objective-C; for example, the code below only executes in iOS 4 or later, because the ADBannerView is not available in previous versions of the iPhone OS. This code will run without problems in iPhone OS 3.1! You can also use NSObject&#8217;s &#8220;respondToSelector:&#8221; method to perform runtime checks of the capabilities of your current platform, which might help you branch your code in different directions depending on the context:</li>
</ul>
<pre class="brush: objc;">
- (void)showAdvertising
{
    Class klass = NSClassFromString(@&quot;ADBannerView&quot;);
    if (klass)
    {
        ADBannerView *adView = [[ADBannerView alloc] initWithFrame:CGRectMake(0.0, 416.0, 320.0, 50.0)];
        adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;
        adView.delegate = self;
        [self.view addSubview:adView];
    }
}
</pre>
<ul>
<li>Include and use in your project the <a target="_blank" href="http://github.com/erica/uidevice-extension">UIDevice extensions by Erica Sadun</a>. This very handy set of categories provides a wealth of options, making your code much more readable and easier to understand. Most importantly, it is actively maintained by Erica, and this means that future versions of the categories will be able to detect more features of iOS.</li>
</ul>
<p>Finally, MPMoviePlayerController requires special attention, because it&#8217;s widely used in many applications and also because it has been greatly improved (and changed) between iPhone OS 3.1, iPhone OS 3.2 and iOS 4. Those changes include, in some cases, deprecated APIs, so here I&#8217;ll just link to <a target="_blank" href="http://iphonedevelopertips.com/video/getting-mpmovieplayercontroller-to-cooperate-with-ios4-3-2-ipad-and-earlier-versions-of-iphone-sdk.html">this excellent article by John Muchow</a> in the iPhone Developer Tips blog, which explains all the problems and the possible solutions.</p>
<h2>Conclusion</h2>
<p>As you could see, creating universal apps is not easy, but it isn&#8217;t impossible either; it requires a bit of attention and lots of testing. Do you have any tips or links that you would like to share? Feel free to add more information in the comments below.</p>
]]></content>
		<link rel="replies" type="text/html" href="http://akosma.com/2010/07/26/migrating-iphone-3-x-apps-to-ipad-and-ios-4-0/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=migrating-iphone-3-x-apps-to-ipad-and-ios-4-0#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://akosma.com/2010/07/26/migrating-iphone-3-x-apps-to-ipad-and-ios-4-0/feed/atom/" thr:count="2" />
		<thr:total>2</thr:total>
	<feedburner:origLink>http://akosma.com/2010/07/26/migrating-iphone-3-x-apps-to-ipad-and-ios-4-0/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=migrating-iphone-3-x-apps-to-ipad-and-ios-4-0</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Adrian Kosmaczewski</name>
						<uri>http://kosmaczewski.net/</uri>
					</author>
		<title type="html"><![CDATA[A nicer cortito, courtesy of Zerofee]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/akosmasoftware/~3/N9xBnvUFKmE/" />
		<id>http://akosma.com/?p=2585</id>
		<updated>2010-07-25T16:51:34Z</updated>
		<published>2010-07-22T13:30:00Z</published>
		<category scheme="http://akosma.com" term="Announcements" /><category scheme="http://akosma.com" term="cortito" /><category scheme="http://akosma.com" term="design" /><category scheme="http://akosma.com" term="London" /><category scheme="http://akosma.com" term="style" /><category scheme="http://akosma.com" term="url shortener" /><category scheme="http://akosma.com" term="Zerofee" />		<summary type="html"><![CDATA[Those who follow me on Twitter are certainly aware of my endless sequence of shared links, some of them shortened using the akos.ma domain, itself powered by cortito, one of my most popular open source projects. Well, Ela and Paul of Zerofee asked me to give them a hand to install an instance of cortito [...]]]></summary>
		<content type="html" xml:base="http://akosma.com/2010/07/22/a-nicer-cortito-courtesy-of-zerofee/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=a-nicer-cortito-courtesy-of-zerofee"><![CDATA[<p>Those who <a target="_blank" href="http://twitter.com/akosma">follow me on Twitter</a> are certainly aware of my endless sequence of shared links, some of them shortened using the <a target="_blank" href="http://akos.ma/">akos.ma</a> domain, itself powered by <a target="_blank" href="http://github.com/akosma/cortito">cortito</a>, one of my most popular open source projects.</p>
<p><img src="http://akosma.com/wp/wp-content/uploads/2010/07/myze.ro_.png" alt="myze.ro.png" border="0" width="440" height="220" class="alignnone size-medium" /></p>
<p>Well, Ela and Paul of <a target="_blank" href="http://zerofee.org/">Zerofee</a> asked me to give them a hand to install an instance of cortito into their own shortening domain, <a target="_blank" href="http://myze.ro/">myze.ro</a>, and in return they contributed an awesome design for cortito!<br />
<span id="more-2585"></span><br />
<img src="http://akosma.com/wp/wp-content/uploads/2010/07/akos.ma_.png" alt="akos.ma.png" border="0" width="440" height="343" class="alignnone size-medium" /></p>
<p>Disclaimer: Ela and Paul are my cousins <img src='http://akosma.com/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  And if you have not heard about Zerofee, check <a target="_blank" href="http://zerofee.org/">their website</a>, <a target="_blank" href="http://zerofee.org/goodthinking/">their blog</a> and their Twitter streams: <a target="_blank" href="http://twitter.com/Zerofee/">@Zerofee</a> and <a target="_blank" href="http://twitter.com/zerofee_ela/">@zerofee_ela</a>.</p>
<p>Finally, for those who do not know it, cortito is written using <a target="_blank" href="http://rubyonrails.org/">Ruby on Rails</a>, and I have been told that it is even used internally by <a target="_blank" href="http://attinteractive.com/">AT&#038;T Interactive</a>. Feel free to check the code out and use it in your own domain!</p>
]]></content>
		<link rel="replies" type="text/html" href="http://akosma.com/2010/07/22/a-nicer-cortito-courtesy-of-zerofee/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=a-nicer-cortito-courtesy-of-zerofee#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://akosma.com/2010/07/22/a-nicer-cortito-courtesy-of-zerofee/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://akosma.com/2010/07/22/a-nicer-cortito-courtesy-of-zerofee/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=a-nicer-cortito-courtesy-of-zerofee</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Adrian Kosmaczewski</name>
						<uri>http://kosmaczewski.net/</uri>
					</author>
		<title type="html"><![CDATA[More nib2objc fun]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/akosmasoftware/~3/EDsfhkrMxQc/" />
		<id>http://akosma.com/?p=2570</id>
		<updated>2010-08-06T13:59:35Z</updated>
		<published>2010-07-18T11:37:47Z</published>
		<category scheme="http://akosma.com" term="Announcements" /><category scheme="http://akosma.com" term="Tech" /><category scheme="http://akosma.com" term="Github" /><category scheme="http://akosma.com" term="iPad" /><category scheme="http://akosma.com" term="iPhone" /><category scheme="http://akosma.com" term="nib2objc" /><category scheme="http://akosma.com" term="open source" /><category scheme="http://akosma.com" term="tool" /><category scheme="http://akosma.com" term="update" /><category scheme="http://akosma.com" term="Xcode" />		<summary type="html"><![CDATA[There are many things that I wanted to do with nib2objc since day one, but of course sometimes you just don&#8217;t have the time to implement them all. But here go two new additions to the project, that will make nib2objc even simpler and more fun to use: a Mac application and a Mac OS [...]]]></summary>
		<content type="html" xml:base="http://akosma.com/2010/07/18/more-nib2objc-fun/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=more-nib2objc-fun"><![CDATA[<p>There are many things that I wanted to do with <a target="_blank" href="http://github.com/akosma/nib2objc">nib2objc</a> since day one, but of course sometimes you just don&#8217;t have the time to implement them all. But here go two new additions to the project, that will make nib2objc even simpler and more fun to use: a Mac application and a Mac OS X Service! The command line version is OK, but again, not everyone feels at home with command line tools.</p>
<h2>Mac OS X Application</h2>
<p>I&#8217;ve crafted a quick and dirty Mac application, available in the repository (under the &#8220;GUI&#8221; folder) that can be used to open several NIB files and see their contents in separate windows. Simple and useful. You can drag and drop xib files from the Finder to the dock icon and open any file in your projects.<br />
<img src="http://akosma.com/wp/wp-content/uploads/2010/07/nib2objc_gui1.jpg" alt="nib2objc_gui.jpg" border="0" width="440" height="291" class="alignnone size-medium" /><br />
<span id="more-2570"></span><br />
<h2>Mac OS X Service</h2>
<p>It cannot be simpler than this: select a file in Finder, open the &#8220;Services&#8221; menu, select the &#8220;Convert with nib2objc&#8221; entry, and your clipboard will contain the full source code of your NIB file. You only have to paste it into your preferred code editor!<br />
<img src="http://akosma.com/wp/wp-content/uploads/2010/07/nib2objc_service1.jpg" alt="nib2objc_service.jpg" border="0" width="440" height="321" class="alignnone size-medium" /></p>
<p>I hope you will enjoy using these tools, and feel free to send your ideas and patches, as usual, via <a target="_blank" href="http://github.com/akosma/nib2objc">Github</a>.</p>
]]></content>
		<link rel="replies" type="text/html" href="http://akosma.com/2010/07/18/more-nib2objc-fun/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=more-nib2objc-fun#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://akosma.com/2010/07/18/more-nib2objc-fun/feed/atom/" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://akosma.com/2010/07/18/more-nib2objc-fun/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=more-nib2objc-fun</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Adrian Kosmaczewski</name>
						<uri>http://kosmaczewski.net/</uri>
					</author>
		<title type="html"><![CDATA[nib2objc updated]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/akosmasoftware/~3/5iJfg-suvDU/" />
		<id>http://akosma.com/?p=2560</id>
		<updated>2010-07-17T09:57:21Z</updated>
		<published>2010-07-17T09:51:48Z</published>
		<category scheme="http://akosma.com" term="Announcements" /><category scheme="http://akosma.com" term="Tech" /><category scheme="http://akosma.com" term="Github" /><category scheme="http://akosma.com" term="iPad" /><category scheme="http://akosma.com" term="iPhone" /><category scheme="http://akosma.com" term="nib2objc" /><category scheme="http://akosma.com" term="update" />		<summary type="html"><![CDATA[I&#8217;ve just committed version 1.2 of nib2objc to Github with the following enhancements: Compatibility with Xcode 3.2.3 and the latest iPhone SDKs; In debug mode, the tool generates stub comments for properties not currently recognized; Provides much nicer variable names; instead of &#8220;view24&#8243; you get &#8220;button53&#8243; or &#8220;tableview34&#8243;; those names are also used in the [...]]]></summary>
		<content type="html" xml:base="http://akosma.com/2010/07/17/nib2objc-updated/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=nib2objc-updated"><![CDATA[<p>I&#8217;ve just committed version 1.2 of <a target="_blank" href="http://github.com/akosma/nib2objc">nib2objc</a> to Github with the following enhancements:</p>
<ol>
<li>Compatibility with Xcode 3.2.3 and the latest iPhone SDKs;</li>
<li>In debug mode, the tool generates stub comments for properties not currently recognized;</li>
<li>Provides much nicer variable names; instead of &#8220;view24&#8243; you get &#8220;button53&#8243; or &#8220;tableview34&#8243;; those names are also used in the hierarchy output at the end of the generated code;</li>
<li>Added support for MKMapView instances;</li>
<li>Added support for some new UIView properties: autoresizesSubviews and contentStretch;</li>
<li>Added support for UITextView&#8217;s clearButtonMode property;</li>
<li>Added support for UIImageView&#8217;s highlighted property;</li>
<li>Added support for the following UISearchBar properties: showsScopeBar,<br />
showsSearchResultsButton, scopeButtonTitles;</li>
<li>Added support for the following UITableViewCell properties:<br />
editingAccessoryType, shouldIndentWhileEditing;</li>
<li>Added support for the following UITableView properties: rowHeight,<br />
sectionFooterHeight, sectionHeaderHeight;</li>
<li>Removed code generated for deprecated API calls (since SDK 3.0) in UIButton and UITableViewCell;</li>
</ol>
<p><span id="more-2560"></span>In particular, item #3 above is my preferred: the output of a simple NIB files looks like this now:</p>
<pre class="brush: objc;">
UIActivityIndicatorView *activityindicatorview8 = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
activityindicatorview8.frame = CGRectMake(309.0, 669.0, 20.0, 20.0);
activityindicatorview8.alpha = 1.000;
activityindicatorview8.autoresizesSubviews = YES;
activityindicatorview8.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin;
activityindicatorview8.clearsContextBeforeDrawing = YES;
activityindicatorview8.clipsToBounds = NO;
activityindicatorview8.contentMode = UIViewContentModeScaleToFill;
activityindicatorview8.contentStretch = CGRectFromString(@&amp;amp;quot;{{0, 0}, {1, 1}}&amp;amp;quot;);
activityindicatorview8.hidden = NO;
activityindicatorview8.hidesWhenStopped = NO;
activityindicatorview8.multipleTouchEnabled = NO;
activityindicatorview8.opaque = NO;
activityindicatorview8.tag = 0;
activityindicatorview8.userInteractionEnabled = YES;
[activityindicatorview8 stopAnimating];

UISegmentedControl *segmentedcontrol6 = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@&amp;amp;quot;First&amp;amp;quot;, @&amp;amp;quot;Second&amp;amp;quot;, nil]];
segmentedcontrol6.frame = CGRectMake(174.0, 466.0, 207.0, 44.0);
segmentedcontrol6.alpha = 1.000;
segmentedcontrol6.autoresizesSubviews = YES;
segmentedcontrol6.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin;
segmentedcontrol6.clearsContextBeforeDrawing = YES;
segmentedcontrol6.clipsToBounds = NO;
segmentedcontrol6.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
segmentedcontrol6.contentMode = UIViewContentModeScaleToFill;
segmentedcontrol6.contentStretch = CGRectFromString(@&amp;amp;quot;{{0, 0}, {1, 1}}&amp;amp;quot;);
segmentedcontrol6.contentVerticalAlignment = UIControlContentVerticalAlignmentTop;
segmentedcontrol6.enabled = YES;
segmentedcontrol6.hidden = NO;
segmentedcontrol6.highlighted = NO;
segmentedcontrol6.momentary = NO;
segmentedcontrol6.multipleTouchEnabled = NO;
segmentedcontrol6.opaque = NO;
segmentedcontrol6.segmentedControlStyle = UISegmentedControlStylePlain;
segmentedcontrol6.selected = NO;
segmentedcontrol6.selectedSegmentIndex = 0;
segmentedcontrol6.tag = 0;
segmentedcontrol6.userInteractionEnabled = YES;

UIImageView *imageview4 = [[UIImageView alloc] initWithFrame:CGRectMake(79.0, 47.0, 311.0, 260.0)];
imageview4.frame = CGRectMake(79.0, 47.0, 311.0, 260.0);
imageview4.alpha = 1.000;
imageview4.autoresizesSubviews = YES;
imageview4.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
imageview4.clearsContextBeforeDrawing = YES;
imageview4.clipsToBounds = NO;
imageview4.contentMode = UIViewContentModeScaleToFill;
imageview4.contentStretch = CGRectFromString(@&amp;amp;quot;{{0, 0}, {1, 1}}&amp;amp;quot;);
imageview4.hidden = NO;
imageview4.highlighted = NO;
imageview4.multipleTouchEnabled = NO;
imageview4.opaque = YES;
imageview4.tag = 0;
imageview4.userInteractionEnabled = NO;

UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 768.0, 1004.0)];
view2.frame = CGRectMake(0.0, 0.0, 768.0, 1004.0);
view2.alpha = 1.000;
view2.autoresizesSubviews = YES;
view2.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
view2.backgroundColor = [UIColor colorWithWhite:1.000 alpha:1.000];
view2.clearsContextBeforeDrawing = YES;
view2.clipsToBounds = NO;
view2.contentMode = UIViewContentModeScaleToFill;
view2.contentStretch = CGRectFromString(@&amp;amp;quot;{{0, 0}, {1, 1}}&amp;amp;quot;);
view2.hidden = NO;
view2.multipleTouchEnabled = NO;
view2.opaque = YES;
view2.tag = 0;
view2.userInteractionEnabled = YES;

UISlider *slider7 = [[UISlider alloc] initWithFrame:CGRectMake(520.0, 588.0, 118.0, 23.0)];
slider7.frame = CGRectMake(520.0, 588.0, 118.0, 23.0);
slider7.alpha = 1.000;
slider7.autoresizesSubviews = YES;
slider7.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin;
slider7.clearsContextBeforeDrawing = YES;
slider7.clipsToBounds = NO;
slider7.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
slider7.contentMode = UIViewContentModeScaleToFill;
slider7.contentStretch = CGRectFromString(@&amp;amp;quot;{{0, 0}, {1, 1}}&amp;amp;quot;);
slider7.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
slider7.continuous = YES;
slider7.enabled = YES;
slider7.hidden = NO;
slider7.highlighted = NO;
slider7.maximumValue = 1.000;
slider7.minimumValue = 0.000;
slider7.multipleTouchEnabled = NO;
slider7.opaque = NO;
slider7.selected = NO;
slider7.tag = 0;
slider7.userInteractionEnabled = YES;
slider7.value = 0.500;

UILabel *label5 = [[UILabel alloc] initWithFrame:CGRectMake(478.0, 364.0, 163.0, 21.0)];
label5.frame = CGRectMake(478.0, 364.0, 163.0, 21.0);
label5.adjustsFontSizeToFitWidth = YES;
label5.alpha = 1.000;
label5.autoresizesSubviews = YES;
label5.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin;
label5.baselineAdjustment = UIBaselineAdjustmentAlignCenters;
label5.clearsContextBeforeDrawing = YES;
label5.clipsToBounds = YES;
label5.contentMode = UIViewContentModeLeft;
label5.contentStretch = CGRectFromString(@&amp;amp;quot;{{0, 0}, {1, 1}}&amp;amp;quot;);
label5.enabled = YES;
label5.font = [UIFont fontWithName:@&amp;amp;quot;Helvetica&amp;amp;quot; size:17.000];
label5.hidden = NO;
label5.lineBreakMode = UILineBreakModeTailTruncation;
label5.minimumFontSize = 10.000;
label5.multipleTouchEnabled = NO;
label5.numberOfLines = 1;
label5.opaque = NO;
label5.shadowOffset = CGSizeMake(0.0, -1.0);
label5.tag = 0;
label5.text = @&amp;amp;quot;Label&amp;amp;quot;;
label5.textAlignment = UITextAlignmentLeft;
label5.textColor = [UIColor colorWithRed:0.000 green:0.000 blue:0.000 alpha:1.000];
label5.userInteractionEnabled = NO;

[view2 addSubview:imageview4];
[view2 addSubview:label5];
[view2 addSubview:segmentedcontrol6];
[view2 addSubview:slider7];
[view2 addSubview:activityindicatorview8];
</pre>
<p>This makes the hierarchy part at the end to be much more readable and easier to understand. This was something that Rudi&#8217;s script was doing after the code was produced, and I wanted to integrate that functionality inside the tool.</p>
<p>Enjoy!</p>
]]></content>
		<link rel="replies" type="text/html" href="http://akosma.com/2010/07/17/nib2objc-updated/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=nib2objc-updated#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://akosma.com/2010/07/17/nib2objc-updated/feed/atom/" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://akosma.com/2010/07/17/nib2objc-updated/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=nib2objc-updated</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Adrian Kosmaczewski</name>
						<uri>http://kosmaczewski.net/</uri>
					</author>
		<title type="html"><![CDATA[Making of digital2.0]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/akosmasoftware/~3/zKJMLWeV4jU/" />
		<id>http://akosma.com/?p=2549</id>
		<updated>2010-07-10T11:52:26Z</updated>
		<published>2010-07-10T11:52:24Z</published>
		<category scheme="http://akosma.com" term="Video" /><category scheme="http://akosma.com" term="iPad" /><category scheme="http://akosma.com" term="digital2.0" /><category scheme="http://akosma.com" term="VPS" />		<summary type="html"><![CDATA[This is the video shot by the amazing team of VPS prod while we were working on the application. There was always a camera rolling during our meetings and even during our work sessions! The final result is simply outstanding and we are very happy to release it in public. The videos included in the [...]]]></summary>
		<content type="html" xml:base="http://akosma.com/2010/07/10/making-of-digital2-0/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=making-of-digital2-0"><![CDATA[<p>This is the video shot by the amazing team of <a target="_blank" href="http://vpsprod.com/">VPS prod</a> while we were working on the application. There was always a camera rolling during our meetings and even during our work sessions! The final result is simply outstanding and we are very happy to release it in public.</p>
<p><object width="440" height="272"><param name="movie" value="http://www.youtube.com/v/B91_JXEoSn4&amp;hl=en_US&amp;fs=1?rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/B91_JXEoSn4&amp;hl=en_US&amp;fs=1?rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="440" height="272"></embed></object></p>
<p>The videos included in the <a target="_blank" href="http://itunes.com/apps/digital20">digital2.0</a> application are available in HD format from <a target="_blank" href="http://www.youtube.com/user/digital2dot0">YouTube</a> and from <a target="_blank" href="http://vimeo.com/digital2dot0">Vimeo</a>. Check them out!</p>
]]></content>
		<link rel="replies" type="text/html" href="http://akosma.com/2010/07/10/making-of-digital2-0/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=making-of-digital2-0#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://akosma.com/2010/07/10/making-of-digital2-0/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://akosma.com/2010/07/10/making-of-digital2-0/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=making-of-digital2-0</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Adrian Kosmaczewski</name>
						<uri>http://kosmaczewski.net/</uri>
					</author>
		<title type="html"><![CDATA[digital2.0]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/akosmasoftware/~3/lG0kRqdahL4/" />
		<id>http://akosma.com/?p=2546</id>
		<updated>2010-07-09T08:38:21Z</updated>
		<published>2010-07-09T08:38:19Z</published>
		<category scheme="http://akosma.com" term="Announcements" /><category scheme="http://akosma.com" term="iPad" /><category scheme="http://akosma.com" term="application" /><category scheme="http://akosma.com" term="concept" /><category scheme="http://akosma.com" term="experiment" /><category scheme="http://akosma.com" term="media" /><category scheme="http://akosma.com" term="moser" /><category scheme="http://akosma.com" term="possibilities" /><category scheme="http://akosma.com" term="technology" /><category scheme="http://akosma.com" term="Video" /><category scheme="http://akosma.com" term="VPS" />		<summary type="html"><![CDATA[This is a very special blog post to introduce our latest project, a unique collaboration between moser, a brand and design specialist, VPS prod, an award-winning video production company, and akosma software: digital2.0, available on the App Store, is an exploration into the capabilities of the iPad. Everybody talks about this new device, but what [...]]]></summary>
		<content type="html" xml:base="http://akosma.com/2010/07/09/digital2-0/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=digital2-0"><![CDATA[<p>This is a very special blog post to introduce our latest project, a unique collaboration between <a target="_blank" href="http://www.moserdesign.ch/">moser</a>, a brand and design specialist, <a target="_blank" href="http://vpsprod.com/">VPS prod</a>, an award-winning video production company, and akosma software: </p>
<p><a target="_blank" href="http://itunes.com/apps/digital20"><img src="http://akosma.com/wp/wp-content/uploads/2010/07/digital20icon.png" alt="digital20icon.png" border="0" width="170" height="168" class="alignleft size-full" /></a></p>
<p><a target="_blank" href="http://itunes.com/apps/digital20">digital2.0</a>, available on the App Store, is an exploration into the capabilities of the iPad. Everybody talks about this new device, but what can you do with it? We hear this question all the time, from our clients and even from our colleagues and the teams we work with. So we decided to join forces and create a demo application answering most of the questions raised by this new type of media.</p>
<p><a target="_blank" href="http://itunes.com/apps/digital20">digital2.0</a> provides answers to the following questions:</p>
<ul>
<li>How does the iPad deal with changes in the orientations of the device?</li>
<li>Which fonts are available in the device? Can I add my own corporate fonts?</li>
<li>What kind of interactivity is available in the iPad?</li>
<li>How do you integrate video content into an iPad application?</li>
<li>Can you retrieve and display real-time data on an iPad?</li>
<li>What about 3D? How do you integrate it into an application?</li>
<li>Does the iPad know where the user is located?</li>
<li>How can you connect the iPad to social networking sites?</li>
</ul>
<p>Finally, we&#8217;ve also included a &#8220;Making of&#8221; video, shot during the 3 months of work required to create this project since April. Around 10 people were involved in this project, from graphic designers to video directors, and we are all really proud of the result. We hope you&#8217;ll like it too!<br />
<a target="_blank" href="http://itunes.com/apps/digital20"><img src="http://akosma.com/wp/wp-content/uploads/2010/07/digital_screenshots.png" alt="digital_screenshots.png" border="0" width="440" height="114" class="alignnone size-medium" /></a></p>
<p>If you want to get more information about digital2.0, check out the official <a target="_blank" href="http://www.facebook.com/pages/digital20/122084417836409">Facebook page</a> of the project and also our <a target="_blank" href="https://twitter.com/digital2dot0">Twitter account</a>.</p>
]]></content>
		<link rel="replies" type="text/html" href="http://akosma.com/2010/07/09/digital2-0/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=digital2-0#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://akosma.com/2010/07/09/digital2-0/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://akosma.com/2010/07/09/digital2-0/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=digital2-0</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Adrian Kosmaczewski</name>
						<uri>http://kosmaczewski.net/</uri>
					</author>
		<title type="html"><![CDATA[Core Text Objective-C Wrapper]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/akosmasoftware/~3/TTcSklXcrWg/" />
		<id>http://akosma.com/?p=2541</id>
		<updated>2010-07-10T10:31:11Z</updated>
		<published>2010-07-08T10:38:53Z</published>
		<category scheme="http://akosma.com" term="Tech" /><category scheme="http://akosma.com" term="iPad" /><category scheme="http://akosma.com" term="Core Text" /><category scheme="http://akosma.com" term="fonts" /><category scheme="http://akosma.com" term="frameworks" /><category scheme="http://akosma.com" term="Objective-C" /><category scheme="http://akosma.com" term="style" /><category scheme="http://akosma.com" term="technology" />		<summary type="html"><![CDATA[One of the most promising and mysterious new frameworks introduced in iOS 3.2 is Core Text. Apple defines Core Text as a &#8220;text drawing engine&#8221;, which allows Mac (and now iPad) apps to render rich text on any graphics context. Strings drawn with Core Text feature lots of custom settings such as detailed font information, [...]]]></summary>
		<content type="html" xml:base="http://akosma.com/2010/07/08/core-text-objective-c-wrapper/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=core-text-objective-c-wrapper"><![CDATA[<p>One of the most promising and mysterious new frameworks introduced in iOS 3.2 is Core Text. Apple defines Core Text as a &#8220;text drawing engine&#8221;, which allows Mac (and now iPad) apps to render rich text on any graphics context. Strings drawn with Core Text feature lots of custom settings such as detailed font information, columns, variable line and paragraph heights and several different attributes, which designers and font aficionados surely understand much better than I do. Many new apps have been using this framework since the release of the iPad, particularly newspapers and ebook reader applications, rendering gorgeous text in custom fonts, many of them not available natively in iOS. This framework is also used in lifestyle and corporate applications, too, where using a custom font is sometimes required to match the specifications of brands and trademarks.<br />
<img src="http://akosma.com/wp/wp-content/uploads/2010/07/coretextwrapper.png" alt="coretextwrapper.png" border="0" width="440" height="300" class="alignnone size-medium" /><span id="more-2541"></span>It is very important to understand that Core Text is really just a text drawing engine to be used on top of Quartz (Core Graphics), to render rich text on any graphics context. Core Text cannot be used to create a rich text editor, for example, so don&#8217;t expect to extend UITextView with it. But you can use it to draw any kind of rich text on screen, which can make you avoid using UIWebView instances for that.</p>
<p>One of the most interesting capabilities of Core Text is being able to render text in several columns. However, Core Test is a C-based framework, and I think that understanding and using the concepts and structures required to render text in columns can be particularly tricky. To make the my life and that of my fellow developers easier, I&#8217;ve created a small set of Objective-C classes that encapsulate the creation of framesetters, attributed strings and other constructions, and takes care of the creation of several columns, as well as the division of the text in several pages if required. </p>
<p>The API interface is very simple (in purpose) and I&#8217;m pretty sure you&#8217;ll be able to integrate it very easily in your own projects, particularly if you look at the sample project where the classes are used. I&#8217;ve also added a category for UIFont, that returns the associated CTFontRef pointer, in a similar fashion to UIImage, which is able to return a pointer to the underlying CGImageRef pointer. It also allows to create a CTFontRef from any font embedded in the application bundle. I am puzzled that the framework designers haven&#8217;t included this by default in UIKit.</p>
<p>A future extension I&#8217;d like to add would be a couple of categories to parse simple RTF or HTML strings (to start with, probably just with bold and italic text) and create the appropriate attributed string from it; there&#8217;s a couple of AppKit extensions to NSAttributedString that do exactly that, but for the moment they are only available in the Mac version of Cocoa, and I haven&#8217;t found anything similar for iOS yet (feel free to leave a comment below if you know about some implementation for generating NSAttributedStrings from HTML or RTF text!)</p>
<p>The code, as usual, is available through <a target="_blank" href="http://github.com/akosma/CoreTextWrapper">Github</a> (BSD license), so feel free to use it and even contribute bug fixes or enhancements if you want. The font embedded in the project is Polsku Regula, <a target="_blank" href="http://openfontlibrary.org/files/ospublish/140">available through the Open Font Library.org</a>. The project requires Xcode 3.2.3 and the iOS SDK 4.0, and it creates a simple application that works on the iPad (iOS 3.2). As usual, use it at your own risk. Enjoy!</p>
]]></content>
		<link rel="replies" type="text/html" href="http://akosma.com/2010/07/08/core-text-objective-c-wrapper/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=core-text-objective-c-wrapper#comments" thr:count="5" />
		<link rel="replies" type="application/atom+xml" href="http://akosma.com/2010/07/08/core-text-objective-c-wrapper/feed/atom/" thr:count="5" />
		<thr:total>5</thr:total>
	<feedburner:origLink>http://akosma.com/2010/07/08/core-text-objective-c-wrapper/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=core-text-objective-c-wrapper</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Adrian Kosmaczewski</name>
						<uri>http://kosmaczewski.net/</uri>
					</author>
		<title type="html"><![CDATA[&#8220;Dev Day for iPhone&#8221; sur Le Temps]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/akosmasoftware/~3/Y10gHaf2pA0/" />
		<id>http://akosma.com/?p=2537</id>
		<updated>2010-06-28T06:43:01Z</updated>
		<published>2010-06-28T06:42:59Z</published>
		<category scheme="http://akosma.com" term="Conferences" /><category scheme="http://akosma.com" term="Français" /><category scheme="http://akosma.com" term="Press" /><category scheme="http://akosma.com" term="Print" /><category scheme="http://akosma.com" term="iPhone" />		<summary type="html"><![CDATA[«Face à cette demande, il manque des développeurs pour iPhone en Suisse. Nous devons être une centaine en Suisse romande et n’arrivons pas à répondre à toutes les offres» confirme Stephan Burlot, de la société Coriolis, à Chevilly (VD). «Bon, de nombreux développeurs viennent du monde de l’open source et ne sont pas forcément à [...]]]></summary>
		<content type="html" xml:base="http://akosma.com/2010/06/28/dev-day-for-iphone-sur-le-temps/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=dev-day-for-iphone-sur-le-temps"><![CDATA[<blockquote><p>«Face à cette demande, il manque des développeurs pour iPhone en Suisse. Nous devons être une centaine en Suisse romande et n’arrivons pas à répondre à toutes les offres» confirme Stephan Burlot, de la société Coriolis, à Chevilly (VD). «Bon, de nombreux développeurs viennent du monde de l’open source et ne sont pas forcément à l’aise avec le monde plus fermé d’Apple», sourit Adrian Kosmaczewski, directeur d’Akosma Software, à Pully.</p></blockquote>
<p><a target="_blank" href="http://letemps.ch/Page/Uuid/08633638-7f07-11df-b539-5d63add52629/Pour_liPhone_il_manque_des_développeurs_en_Suisse">&#8220;Pour l’iPhone, il manque des développeurs en Suisse&#8221;</a>, interview par Anouch Seydtaghia publiée le 24 juin dernier sur <a target="_blank" href="http://letemps.ch/">Le Temps</a>.</p>
]]></content>
		<link rel="replies" type="text/html" href="http://akosma.com/2010/06/28/dev-day-for-iphone-sur-le-temps/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=dev-day-for-iphone-sur-le-temps#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://akosma.com/2010/06/28/dev-day-for-iphone-sur-le-temps/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://akosma.com/2010/06/28/dev-day-for-iphone-sur-le-temps/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=dev-day-for-iphone-sur-le-temps</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Adrian Kosmaczewski</name>
						<uri>http://kosmaczewski.net/</uri>
					</author>
		<title type="html"><![CDATA[Panorama et enjeux du marché des applications iPhone]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/akosmasoftware/~3/qjrpYXwLqaY/" />
		<id>http://akosma.com/?p=2535</id>
		<updated>2010-07-22T13:34:28Z</updated>
		<published>2010-06-17T11:12:42Z</published>
		<category scheme="http://akosma.com" term="Business" /><category scheme="http://akosma.com" term="Conferences" /><category scheme="http://akosma.com" term="Français" /><category scheme="http://akosma.com" term="iPad" /><category scheme="http://akosma.com" term="iPhone" /><category scheme="http://akosma.com" term="App Store" /><category scheme="http://akosma.com" term="développement" /><category scheme="http://akosma.com" term="market" /><category scheme="http://akosma.com" term="marketing" />		<summary type="html"><![CDATA[Voici les slides de la présentation que j&#8217;ai donné hier dans le cadre du Rezonance First &#8220;Applications iPhone: il est temps de s&#8217;y mettre!&#8221; Panorama et enjeux du marché des applications iPhone View more presentations from Adrian Kosmaczewski. Merci à l&#8217;équipe de Rezonance pour l&#8217;organisation impeccable, à l&#8217;HEIG VD de Yverdon pour l&#8217;accueil magnifique et [...]]]></summary>
		<content type="html" xml:base="http://akosma.com/2010/06/17/panorama-et-enjeux-du-marche-des-applications-iphone/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=panorama-et-enjeux-du-marche-des-applications-iphone"><![CDATA[<p>Voici les slides de la présentation que j&#8217;ai donné hier dans le cadre du Rezonance First <a target="_blank" href="http://www.rezonance.ch/rezo/classes/ft-first-tuesday/vaud/20100616/one-community?page_num=0">&#8220;Applications iPhone: il est temps de s&#8217;y mettre!&#8221;</a></p>
<div style="width:425px" id="__ss_4524948"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/akosma/panorama-et-enjeux-du-march-des-applications-iphone" title="Panorama et enjeux du marché des applications iPhone">Panorama et enjeux du marché des applications iPhone</a></strong><object id="__sse4524948" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=iphone-presentation-100617060551-phpapp01&#038;stripped_title=panorama-et-enjeux-du-march-des-applications-iphone" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse4524948" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=iphone-presentation-100617060551-phpapp01&#038;stripped_title=panorama-et-enjeux-du-march-des-applications-iphone" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/akosma">Adrian Kosmaczewski</a>.</div>
</div>
<p>Merci à l&#8217;équipe de Rezonance pour l&#8217;organisation impeccable, à l&#8217;HEIG VD de Yverdon pour l&#8217;accueil magnifique et a tous ceux qui sont venus!</p>
]]></content>
		<link rel="replies" type="text/html" href="http://akosma.com/2010/06/17/panorama-et-enjeux-du-marche-des-applications-iphone/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=panorama-et-enjeux-du-marche-des-applications-iphone#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://akosma.com/2010/06/17/panorama-et-enjeux-du-marche-des-applications-iphone/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://akosma.com/2010/06/17/panorama-et-enjeux-du-marche-des-applications-iphone/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=panorama-et-enjeux-du-marche-des-applications-iphone</feedburner:origLink></entry>
	</feed><!-- Dynamic page generated in 0.478 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-09-04 19:46:57 -->
