<?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>//dennisbloete</title>
	<atom:link href="http://dennisbloete.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://dennisbloete.de</link>
	<description>Arbeit und Alltag eines Software-Entwicklers aus Bremen</description>
	<lastBuildDate>Sun, 07 Mar 2010 13:42:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>de-de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>&#8220;Digitaler Schimpfweltmeister&#8221;: DISSER für&#8217;s iPhone</title>
		<link>http://dennisbloete.de/blog/disser-app-iphone/</link>
		<comments>http://dennisbloete.de/blog/disser-app-iphone/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 13:42:46 +0000</pubDate>
		<dc:creator>Dennis</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Disser]]></category>
		<category><![CDATA[Marketing]]></category>

		<guid isPermaLink="false">http://dennisbloete.de/?p=667</guid>
		<description><![CDATA[Als Stephan Griesenbrock und Daniel Knobloch mir Ende letzten Jahres die Idee für ihre DISSER App für&#8217;s iPhone (und iPod Touch) vorstellten war mir schon klar, dass die App ein sehr großes Potential hat: Ein schlüßiges Konzept um eine witzige und bislang so nicht umgesetzte Idee, eine gut zu erreichende Zielgruppe und angebrachte Sharing-Funktionen für [...]]]></description>
			<content:encoded><![CDATA[<p>Als <a href="https://www.xing.com/profile/Stephan_Griesenbrock2">Stephan Griesenbrock</a> und <a href="https://www.xing.com/profile/Daniel_Knobloch4">Daniel Knobloch</a> mir Ende letzten Jahres die Idee für ihre <a href="http://disser-app.de/">DISSER App</a> für&#8217;s iPhone (und iPod Touch) vorstellten war mir schon klar, dass die App ein sehr großes Potential hat: Ein schlüßiges Konzept um eine witzige und bislang so nicht umgesetzte Idee, eine gut zu erreichende Zielgruppe und angebrachte Sharing-Funktionen für soziale Netzwerke, so dass auch der Grundstein für eine virale Verbreitung gelegt ist. Aber damit, dass die App direkt so einschlagen würde, hat von <a href="http://disser-app.de/team.php">uns dreien</a> selbst bei dem guten Feedback das wir von Freunden bekommen haben keiner gerechnet.</p>
<p><a href="http://www.disser-app.de/appstore/"><img class="align-right size-full wp-image-670" title="disser_platz_1_itunes" src="http://dennisbloete.de/wp-content/uploads/disser_platz_1_itunes.png" alt="" width="245" height="187" /></a>Wir schreiben heute Tag 4 nach Livegang <a href="http://www.disser-app.de/appstore/">im App Store</a> und der Disser hat sich bis ganz nach oben an Position 1 der meistverkauften Apps in Deutschland gepöbelt. Der helle Wahnsinn, vor allem weil es so schnell ging &#8211; was aber wiederum der sehr Marketingarbeit der zwei Jungs aus Köln zu verdanken ist: Rund um den Disser wurde vor dem Livegang ein umfassendes Gesamtpaket inklusive <a href="http://disser-app.de/">Website</a>, <a href="http://disser-app.de/blog/">Projektblog</a>, <a href="http://www.facebook.com/pages/Disser/241996562531">Facebook Fan-Page</a>, <a href="http://disser-app.de/demovideo.php">Marketing-Video</a> und <a href="http://disser-app.de/presse.php">Pressematerial</a> geschnürt, so dass die App nicht nur auf dem iPhone stattfindet. Schnell trudelten die ersten sehr guten Rezensionen und <a href="http://www.youtube.com/watch?v=V1VVHAKDz3Y&amp;feature=related">Video-Reviews</a> ein: So schreibt beispielsweise iPhone-Junkie Carsten Scheibe im <a href="http://www.stern.de/blog/95_iphone-junkie/archive/3579_disser_10_runzelige_speckbratze_.html">Stern.de Blog</a>: &#8220;Der Disser ist eine überaus professionell umgesetzte Fun-App, die auf jedes iPhone und auf jeden iPod touch gehört.&#8221;</p>
<p>Auch das Feedback der Nutzer im App Store und auf der Website sind super: Viele wollen den Wortschatz des Dissers erweitert sehen und schlagen selbst <a href="http://disser-app.de/diss-vorschlagen.php">neue Wörter</a> vor, so dass sich ein sehr kuriose und amüsante Liste von Vorschlägen ansammelt, die wir möglichst schnell mit einem neuen Update herausgeben werden. Wir sind gespannt auf die nächsten Tage, freuen uns über weitere Reviews und Vorschläge und bedanken uns bei allen Nutzern für&#8217;s Herunterladen der App &#8211; sowas macht echt Spaß! <img src='http://dennisbloete.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://dennisbloete.de/blog/disser-app-iphone/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Using MongoMapper with Rails 3</title>
		<link>http://dennisbloete.de/blog/using-mongomapper-with-rails-3/</link>
		<comments>http://dennisbloete.de/blog/using-mongomapper-with-rails-3/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 15:31:17 +0000</pubDate>
		<dc:creator>Dennis</dc:creator>
				<category><![CDATA[Ruby and Rails]]></category>

		<guid isPermaLink="false">http://dennisbloete.de/?p=660</guid>
		<description><![CDATA[There is a really nice introduction at the MongoDB site on How to get started with MongoDB and Rails 3. I used this as a starting point but had to do a few more things before I was fully satisfied and got things running with MongoMapper. At the time of writing this the official repository [...]]]></description>
			<content:encoded><![CDATA[<p>There is a really nice introduction at the MongoDB site on <a href="http://www.mongodb.org/display/DOCS/Rails+3+-+Getting+Started">How to get started with MongoDB and Rails 3</a>. I used this as a starting point but had to do a few more things before I was fully satisfied and got things running with MongoMapper. At the time of writing this <a href="http://github.com/jnunemaker/mongomapper">the official repository</a> is not Rails 3 compatible (because it does not implement the ActiveModel interface, yet), so I had to go with the <a href="http://github.com/merbjedi/mongomapper/tree/rails3">rails3 branch of merbjedi&#8217;s repository</a>. Use the following line to add the dependency to your Gemfile:</p>

<div class="wp_syntax"><div class="code"><pre class="rails" style="font-family:monospace;">gem <span style="color:#996600;">&quot;mongo_mapper&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:git</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'http://github.com/merbjedi/mongomapper.git'</span>, <span style="color:#ff3333; font-weight:bold;">:branch</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'rails3'</span></pre></div></div>

<p>And while you are at it, add this line to include <a href="http://github.com/indirect/rails3-generators">some handy generators for Rails 3</a>, including one for MongoMapper models:</p>

<div class="wp_syntax"><div class="code"><pre class="rails" style="font-family:monospace;">gem <span style="color:#996600;">&quot;rails3-generators&quot;</span></pre></div></div>

<p>To use the generator set the orm config in your <code>config/application.rb</code> to <code>:mongomapper</code></p>

<div class="wp_syntax"><div class="code"><pre class="rails" style="font-family:monospace;">config.<span style="color:#9900CC;">generators</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>g<span style="color:#006600; font-weight:bold;">|</span>
      g.<span style="color:#9900CC;">orm</span> <span style="color:#ff3333; font-weight:bold;">:mongomapper</span>
      …
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>… and you are good to go!</p>
<p>btw: If you are like me and you prefer to have some kind of GUI for quick database lookups, check out <a href="http://github.com/bububa/MongoHub">MongoHub</a>. It is in a very early stage of development, but at least you get to see your databases and documents.</p>
]]></content:encoded>
			<wfw:commentRss>http://dennisbloete.de/blog/using-mongomapper-with-rails-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ZENDOME für das iPhone</title>
		<link>http://dennisbloete.de/blog/zendome-iphone-app/</link>
		<comments>http://dennisbloete.de/blog/zendome-iphone-app/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 10:49:44 +0000</pubDate>
		<dc:creator>Dennis</dc:creator>
				<category><![CDATA[Cocoa / Objective-C]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://dennisbloete.de/?p=651</guid>
		<description><![CDATA[Es ist soweit und ZENDOME &#8211; ein Kundenprojekt an dem ich in letzter Zeit gearbeitet habe &#8211; ist nun kostenlos im App Store erhältlich. Die Applikation wurde im Auftrag der ZENDOME GmbH entwickelt und ermöglicht die Planung von individuellen Event-Landschaften, die beispielsweise auf Messen oder für Ausstellungen verwendet werden. Der Benutzer hat die Möglichkeit, die [...]]]></description>
			<content:encoded><![CDATA[<p>Es ist soweit und <a href="http://itunes.com/apps/zendome">ZENDOME</a> &#8211; ein Kundenprojekt an dem ich in letzter Zeit gearbeitet habe &#8211; ist nun <a href="itms://itunes.apple.com/de/app/zendome/id353137169?mt=8">kostenlos im App Store erhältlich</a>. Die Applikation wurde im Auftrag der <a href="http://zendome.de/">ZENDOME GmbH</a> entwickelt und ermöglicht die Planung von individuellen Event-Landschaften, die beispielsweise auf Messen oder für Ausstellungen verwendet werden. Der Benutzer hat die Möglichkeit, die verschiedenen geodätischen Dome zur ZENDOME.domescapes zu kombinieren und damit seine Veranstaltung vorzudenken. Ist eine Planung erstellt lässt sich schnell und unkompliziert ein Angebot anfordern.</p>
<p><a href="itms://itunes.apple.com/de/app/zendome/id353137169?mt=8"><img class="align-right size-full wp-image-652" title="zendome-iphone" src="http://dennisbloete.de/wp-content/uploads/zendome-iphone.png" alt="ZENDOME iPhone-Applikation" width="135" height="250" /></a></p>
<p>Besonderer Wert wurde auf eine intuitive Benutzung der Anwendung gelegt. Um dies zu erreichen wurde auf die aus dem allgemeinen iPhone-Kontext bekannte Gesten und Aktionen (bspw. Pinch/Zoom, Drag and Drop, Scrolling, etc. ) zurückgegriffen und einfache Interaktionsmuster benutzt. Es gibt bereits Erweiterungspläne für kommende Versionen: So ist insbesondere eine iPad-Variante angedacht, da die größere Bildschirmfläche natürlich mehr Platz für eine komfortable und detailreiche Planung bietet. Noch etwas zum technischen Hintergrund: Das Projekt wurde mit Xcode und CocoaTouch-Standardtechnologien wie UIKit, CoreGraphics und CoreAnimation innerhalb von vier Wochen realisiert und hatte insgesamt einen Arbeitsaufwand von ca. 40 Stunden. Weitere Projektdetails und Informationen plane ich in naher Zukunft in einer kurzen Fallstudie zu veröffentlichen.</p>
]]></content:encoded>
			<wfw:commentRss>http://dennisbloete.de/blog/zendome-iphone-app/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Going solo</title>
		<link>http://dennisbloete.de/blog/going-solo/</link>
		<comments>http://dennisbloete.de/blog/going-solo/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 17:42:46 +0000</pubDate>
		<dc:creator>Dennis</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Freelance]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://dennisbloete.de/?p=576</guid>
		<description><![CDATA[A few months ago, after the birth of our daugther (yeah, Lotta!) and during my parental leave, thoughts arose about realizing an idea I&#8217;ve carried around with me since I finished my studies: Going solo, working on my own projects and earning a living as a freelance software developer. A few weeks ago I realized [...]]]></description>
			<content:encoded><![CDATA[<p>A few months ago, after the birth of our daugther (<a href="http://www.flickr.com/photos/dbloete/4025365815/">yeah, Lotta!</a>) and during my parental leave, thoughts arose about realizing an idea I&#8217;ve carried around with me since I finished my studies: Going solo, working on my own projects and earning a living as a freelance software developer. A few weeks ago I realized that plan and decided to quit my current job at <a href="http://neuland-bfi.de/">neuland</a>, though it wasn&#8217;t an easy decision: working for neuland has always been fun, especially because of the nice environment and the multitude of different personalities of the people working there &#8211; some of which are now close friends of mine. Nevertheless I felt that deep urge of doing something on my own and having sold <a href="http://venteria.com/">venteria</a> in summer makes taking the plunge a little less risky.</p>
<p>Alright, so where am I heading? A new focus will be iPhone/Cocoa app development and I&#8217;ll keep on working with Ruby on Rails &#8211; I&#8217;m really looking forward to all the great enhancements planned for Rails 3.0 and I just love doing web development, so that I won&#8217;t <a href="http://tammofreese.de/2009/09/03/goodbye-rails-hello-os-x-iphone-mac">burn all the bridges</a> <img src='http://dennisbloete.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>The bootstrapping went pretty well so far, I joined a really nice coworking environment and got an office at the infamous <a href="http://abfertigung.de/">Abfertigung</a>. As far as I can tell I&#8217;ll be surrounded by a bunch of very nice, creative and innovative people. Furthermore it&#8217;s good to know that I can, but don&#8217;t have to work from home &#8211; that makes meeting clients and finding quiet hours to get work done (I&#8217;m lookin&#8217; atcha, <a href="http://www.flickr.com/photos/dbloete/4125102227/">Lotta</a>) a lot easier <img src='http://dennisbloete.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Hopefully I&#8217;ll find the time during the next weeks to write about some of the aspects of becoming a freelancer as I know some of you are interested in that and I&#8217;d like to take you along on that journey. I think it will be a pretty interesting time and I&#8217;ll learn tons about myself, meet nice and interesting people (including clients <img src='http://dennisbloete.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) and most important of all: still have the time to enjoy my family… <a href="http://www.rainbowbody.com/newarticles/farmerson.htm">we shall see</a> <img src='http://dennisbloete.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://dennisbloete.de/blog/going-solo/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Syncing Socialite across multiple Macs (using Dropbox)</title>
		<link>http://dennisbloete.de/blog/syncing-socialite-across-multiple-macs-using-dropbox/</link>
		<comments>http://dennisbloete.de/blog/syncing-socialite-across-multiple-macs-using-dropbox/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 17:00:48 +0000</pubDate>
		<dc:creator>Dennis</dc:creator>
				<category><![CDATA[off topic]]></category>

		<guid isPermaLink="false">http://dennisbloete.de/?p=619</guid>
		<description><![CDATA[If you are working on multiple Macs (i.e. having a personal and one at work) you probably know this problem: You would like to sync some application data between these machines, so that you don&#8217;t have to manage separate todo-lists, items in your inbox that you&#8217;ve already read on one machine but are marked as [...]]]></description>
			<content:encoded><![CDATA[<p>If you are working on multiple Macs (i.e. having a personal and one at work) you probably know this problem: You would like to sync some application data between these machines, so that you don&#8217;t have to manage separate todo-lists, items in your inbox that you&#8217;ve already read on one machine but are marked as unread on the other, etc. I&#8217;m using <a href="https://www.dropbox.com/referrals/NTk4MDU4MDk">Dropbox</a> (disclaimer: If you sign up using this link, I&#8217;ll get some more disk space, thank you!) to sync various applications (<a href="http://culturedcode.com/things/">Things</a>, <a href="http://billingsapp.com/">Billings</a> and <a href="http://www.realmacsoftware.com/socialite/">Socialite</a> for example), but you can use any other cloud storage solution if you like.</p>
<p>In this little tutorial I&#8217;ll explain how to sync the data with Dropbox and I&#8217;m using Socialite as an example. It basically works like this for any app that stores its data in an <em>Application Support</em> folder, but Socialite requires some extra steps people are <a href="http://www.realmacsoftware.com/forums/index.php/forums/viewthread/26653/">frequently</a> <a href="http://www.realmacsoftware.com/forums/index.php/forums/viewthread/27518/">asking</a> about, so here we go:</p>
<ol>
<li>Go to your Dropbox folder and create a new folder called <em>Synced Application Support</em> (or whatever you like)</li>
<li>Quit any running instance of the application you would like to sync (in this case <em>Socialite</em>).</li>
<li>Got to your <em>~/Library/Application Support</em> and move the <em>Socialite</em> folder into the Dropbox folder you just created (<em>Synced Application Support</em>)</li>
<li>Open your Terminal.app and symlink the moved folder:<br />
<code>$ ln -s ~/Dropbox/Synced\ Application\ Support/Socialite/ ~/Library/</code><code>Application\ Support</code><code>/Socialite</code></li>
<li>Start the app and see if it worked</li>
</ol>
<p>After this five steps you should be up and running with most of your apps (syncing Things is as easy as that). Unfortunately Socialite requires some extra steps if you are using Twitter (and who isn&#8217;t these days), because it keeps the OAuth authentication tokens in the keychain, so that you need to sync them too. Fortunately this isn&#8217;t a big deal, because now you know how to sync your data, so go ahead and…</p>
<ol>
<li>Quit Socialite</li>
<li>Open your Keychain and create a new keychain called Socialite and save it within your <em>Synced Application Support/Socialite</em> folder</li>
<li>Right click the new Socialite keychain, edit the settings and uncheck the checkboxes so that you won&#8217;t be bothered with authentication request every now and then</li>
<li>Use the search bar at the upper right corner to search for twitter.com and move all items used by Socialite to the new Socialite keychain</li>
<li>Start Socialite and see if your Twitter services are still working &#8211; if not: Delete all items in your Socialite keychain, remove the Twitter services from Socialite, restart Socialite, add them again and move the freshly created twitter.com items in your Login keychain to the Socialite keychain.</li>
</ol>
<p>Okay, that&#8217;s it, I hope it&#8217;s helpful to some of you and I also hope that someday syncing will be baked into Socialite, though <a href="http://www.realmacsoftware.com/forums/index.php/forums/viewthread/26653/#115067">Realmac Software currenty doesn&#8217;t have any plans for implementing that</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://dennisbloete.de/blog/syncing-socialite-across-multiple-macs-using-dropbox/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Asynchronität mit dem iPhone SDK</title>
		<link>http://dennisbloete.de/blog/asynchronitat-mit-dem-iphone-sdk/</link>
		<comments>http://dennisbloete.de/blog/asynchronitat-mit-dem-iphone-sdk/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 20:22:16 +0000</pubDate>
		<dc:creator>Dennis</dc:creator>
				<category><![CDATA[Cocoa / Objective-C]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://dennisbloete.de/?p=605</guid>
		<description><![CDATA[Im Rahmen der WebTechCon in Karlsruhe fand heute der iPhone Dev Day statt, auf dem Arne Harren, Johannes Fahrenkrug, Tammo Freese und ich jeweils Sessions rund um die iPhone-Entwicklung gegeben haben. Hier findet ihr die Folien und den Demo Code meines Vortrags zum Thema &#8220;Asynchronität mit dem iPhone SDK&#8221; und ein paar Fotos zu den [...]]]></description>
			<content:encoded><![CDATA[<p>Im Rahmen der WebTechCon in Karlsruhe fand heute der <a href="http://it-republik.de/konferenzen/webtech09/sessions?tid=1380">iPhone Dev Day</a> statt, auf dem <a href="http://beharren.net/ah">Arne Harren</a>, <a href="http://blog.springenwerk.com/">Johannes Fahrenkrug</a>, <a href="http://tammofreese.de/">Tammo Freese</a> und ich jeweils Sessions rund um die iPhone-Entwicklung gegeben haben. Hier findet ihr die <a href="http://dennisbloete.de/talks/iPhone-Asynchronitaet.pdf">Folien</a> und den <a href="http://github.com/dbloete/webtech09-async-samples">Demo Code</a> meines Vortrags zum Thema &#8220;<a href="http://dennisbloete.de/talks/iPhone-Asynchronitaet.pdf">Asynchronität mit dem iPhone SDK</a>&#8221; und ein paar <a href="http://www.flickr.com/photos/dbloete/tags/iphonedevday/">Fotos zu den Sessions</a>. Ich freu mich sehr über das positive Feedback, sowohl zu meiner als auch den anderen Sessions. Falls Interesse besteht, kann ich den Vortrag gerne mal bei einem der lokalen CocoaHeads Treffen wiederholen.</p>
<p>Die <a href="http://it-republik.de/konferenzen/webtech09/">WebTechCon</a> war sehr gut organisiert, die Unterbringung, Essen und Atmosphäre top. Unterm Strich eine sehr nette Konferenz die Spaß gemacht hat und auf der ich viele nette Leute getroffen hab &#8211; unter anderem habe ich endlich auch mal den Rest der <a href="http://railslove.com/">Railslove</a> Gang persönlich kennen gelernt. Fazit: Vielen Dank, gerne wieder!</p>
]]></content:encoded>
			<wfw:commentRss>http://dennisbloete.de/blog/asynchronitat-mit-dem-iphone-sdk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Authentication handling on the iPhone</title>
		<link>http://dennisbloete.de/blog/authentication-logic-on-the-iphone/</link>
		<comments>http://dennisbloete.de/blog/authentication-logic-on-the-iphone/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 10:56:33 +0000</pubDate>
		<dc:creator>Dennis</dc:creator>
				<category><![CDATA[Cocoa / Objective-C]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Authentication]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Objective-C]]></category>

		<guid isPermaLink="false">http://dennisbloete.de/?p=577</guid>
		<description><![CDATA[This iPhone tutorial about encapsulating authentication logic in a separate controller was planned as a chapter for an upcoming iPhone Recipes Book, but unfortunately the book got cancelled. As I had written most of it and already finished the example code I thought it might be of interest for some of you and I would [...]]]></description>
			<content:encoded><![CDATA[<p>This iPhone tutorial about encapsulating authentication logic in a separate controller was planned as a chapter for an upcoming <a href="http://www.iphonerecipesbook.com/">iPhone Recipes Book</a>, but unfortunately the book got <a href="http://www.iphonerecipesbook.com/2009/09/10/sadly/">cancelled</a>. As I had written most of it and already finished the <a href="http://github.com/dbloete/AuthenticationController">example code</a> I thought it might be of interest for some of you and I would like to share it before it gets dusty.</p>
<h4>Problem</h4>
<p>Most applications that deal with users registered on a backend (like webapps) are likely to verify<br />
the user credentials. This recipe explains how to extract the authentication functionality that<br />
handles the workflow of prompting the user for credentials and verifying them at the backend.</p>
<h4>Solution</h4>
<p>A separate (Modal View) Controller that acts as the apps AuthenticationController and gets called by other controllers. This controller encapsulates the authentication logic so that it is cleanly separated from the rest of the app. The provided code is compatible for all iPhone OS from 2.0 on.</p>
<p>The code for this recipe is <a href="http://github.com/dbloete/AuthenticationController">available on GitHub</a> and it contains an example app that features <a href="http://apiwiki.twitter.com/Authentication">authentication with the Twitter API</a> (HTTP Basic Auth, keepin&#8217; it simple) along with <a href="http://github.com/dbloete/AuthenticationController/blob/master/README">explanatory notes in the README</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://dennisbloete.de/blog/authentication-logic-on-the-iphone/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to deploy to older OS versions with the iPhone SDK 3.0</title>
		<link>http://dennisbloete.de/blog/how-to-deploy-to-older-os-versions-with-the-iphone-sdk-3-0/</link>
		<comments>http://dennisbloete.de/blog/how-to-deploy-to-older-os-versions-with-the-iphone-sdk-3-0/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 10:19:11 +0000</pubDate>
		<dc:creator>Dennis</dc:creator>
				<category><![CDATA[Cocoa / Objective-C]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://dennisbloete.de/?p=521</guid>
		<description><![CDATA[One thing I recently struggled with was how to build and deploy apps for outdated OS versions. After upgrading to the new iPhone SDK 3.0 the build options for iPhone OS minor to 3.0 seem to be gone.

The solution to this is pretty simple, but I spent some time searching for it: Open your Project [...]]]></description>
			<content:encoded><![CDATA[<p>One thing I recently struggled with was how to build and deploy apps for outdated OS versions. After upgrading to the new iPhone SDK 3.0 the build options for iPhone OS minor to 3.0 seem to be gone.</p>
<p><img class="alignnone size-full wp-image-523" title="build_options1" src="http://dennisbloete.de/wp-content/uploads/build_options1.png" alt="build_options1" width="265" height="167" /></p>
<p>The solution to this is pretty simple, but I spent some time searching for it: Open your Project Info (double click the project icon) and adjust the build settings. You need to set the Base SDK to something prior to OS 3.0.</p>
<p><img class="alignnone size-full wp-image-525" title="project_info" src="http://dennisbloete.de/wp-content/uploads/project_info.png" alt="project_info" width="528" height="244" /></p>
<p>Having done that, the build options for older versions reappear. I hope this little trick saves some of your time <img src='http://dennisbloete.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><img class="alignnone size-medium wp-image-524" title="build_options2" src="http://dennisbloete.de/wp-content/uploads/build_options2-261x300.png" alt="build_options2" width="261" height="300" /></p>
]]></content:encoded>
			<wfw:commentRss>http://dennisbloete.de/blog/how-to-deploy-to-older-os-versions-with-the-iphone-sdk-3-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing iPhone SDK 3.0</title>
		<link>http://dennisbloete.de/blog/installing-iphone-sdk-30/</link>
		<comments>http://dennisbloete.de/blog/installing-iphone-sdk-30/#comments</comments>
		<pubDate>Fri, 08 May 2009 07:28:52 +0000</pubDate>
		<dc:creator>Dennis</dc:creator>
				<category><![CDATA[Cocoa / Objective-C]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://dennisbloete.de/?p=514</guid>
		<description><![CDATA[Tonight Apple sent out a mail to all developers enrolled in the iPhone Development Program prompting us to test all our applications with the soon to be released SDK 3.0. Though the apps must be compatible with the changes in 3.0, they currently are not allowed to be build with the new SDK.]]></description>
			<content:encoded><![CDATA[<p>Tonight Apple sent out a mail to all developers enrolled in the iPhone Development Program prompting us to test all our applications with the soon to be released SDK 3.0. Though the apps must be compatible with the changes in 3.0, they currently are not allowed to be build with the new SDK. This requires developers to keep both instances of Xcode during the transitional period. So be sure to install the new Xcode to a different location (the neccessary steps are described in the accompanied README).</p>
<p>Happy beta testing and quick app approvals to all of you! <img src='http://dennisbloete.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://dennisbloete.de/blog/installing-iphone-sdk-30/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gravatar loading with Objective-C</title>
		<link>http://dennisbloete.de/blog/gravatar-loading-with-objective-c/</link>
		<comments>http://dennisbloete.de/blog/gravatar-loading-with-objective-c/#comments</comments>
		<pubDate>Tue, 05 May 2009 16:00:50 +0000</pubDate>
		<dc:creator>Dennis</dc:creator>
				<category><![CDATA[Cocoa / Objective-C]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Gravatar]]></category>
		<category><![CDATA[Objective-C]]></category>

		<guid isPermaLink="false">http://dennisbloete.de/?p=501</guid>
		<description><![CDATA[Working on iOctocat I had to integrate Gravatars. Therefore I wrote an Objective-C GravatarLoader class that I would like to share. You can use it like this:

- &#40;void&#41;viewDidLoad &#123;
   &#91;super viewDidLoad&#93;;
   gravatarLoader = &#91;&#91;GravatarLoader alloc&#93; initWithTarget:self andHandle:@selector&#40;setGravatarImage:&#41;&#93;;
   &#91;gravatarLoader loadEmail:@&#34;your@email.com&#34; withSize:50&#93;;
&#125;

The gravatarLoader needs to be an instance variable of the [...]]]></description>
			<content:encoded><![CDATA[<p>Working on <a href="http://dennisbloete.de/blog/ioctocat-a-github-app-for-the-iphone/">iOctocat</a> I had to integrate <a href="http://gravatar.com/">Gravatars</a>. Therefore I wrote an <a href="http://dennisbloete.de/stuff/code/GravatarLoader.zip">Objective-C GravatarLoader class</a> that I would like to share. You can use it like this:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>viewDidLoad <span style="color: #002200;">&#123;</span>
   <span style="color: #002200;">&#91;</span>super viewDidLoad<span style="color: #002200;">&#93;</span>;
   gravatarLoader <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>GravatarLoader alloc<span style="color: #002200;">&#93;</span> initWithTarget<span style="color: #002200;">:</span>self andHandle<span style="color: #002200;">:</span><span style="color: #a61390;">@selector</span><span style="color: #002200;">&#40;</span>setGravatarImage<span style="color: #002200;">:</span><span style="color: #002200;">&#41;</span><span style="color: #002200;">&#93;</span>;
   <span style="color: #002200;">&#91;</span>gravatarLoader loadEmail<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;your@email.com&quot;</span> withSize<span style="color: #002200;">:</span><span style="color: #2400d9;">50</span><span style="color: #002200;">&#93;</span>;
<span style="color: #002200;">&#125;</span></pre></div></div>

<p>The <code>gravatarLoader</code> needs to be an instance variable of the class that&#8217;s using it as it loads the Gravatar asynchronously. You initialize the GravatarLoader with a target object and a selector. The selector works as request handle and gets passed an UIImage when the Gravatar is loaded. After initializing it you can load the image with the email address and the square size.</p>
<p>Download the <a href="http://dennisbloete.de/stuff/code/GravatarLoader.zip">GravatarLoader source</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://dennisbloete.de/blog/gravatar-loading-with-objective-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iOctocat &#8211; a GitHub app for the iPhone</title>
		<link>http://dennisbloete.de/blog/ioctocat-a-github-app-for-the-iphone/</link>
		<comments>http://dennisbloete.de/blog/ioctocat-a-github-app-for-the-iphone/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 20:36:16 +0000</pubDate>
		<dc:creator>Dennis</dc:creator>
				<category><![CDATA[Cocoa / Objective-C]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[App Store]]></category>
		<category><![CDATA[Arbeit]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[Objective-C]]></category>

		<guid isPermaLink="false">http://dennisbloete.de/?p=504</guid>
		<description><![CDATA[Today a new project of mine has been released into the wild: iOctocat - a GitHub app for the iPhone and iPod Touch. It is open source and available on the App Store…]]></description>
			<content:encoded><![CDATA[<p>Today a new project of mine has been released into the wild: <a href="http://dbloete.github.com/ioctocat/">iOctocat &#8211; a GitHub app for the iPhone and iPod Touch</a>. It is <a href="http://github.com/dbloete/ioctocat">open source</a> and <a href="http://itunes.com/apps/ioctocat">available on the App Store</a>…</p>
<p><a href="http://dbloete.github.com/ioctocat/"><img class="align-right size-medium wp-image-507" title="Github Newsfeed on the iPhone" src="http://dennisbloete.de/wp-content/uploads/newsfeed-200x300.png" alt="Github Newsfeed on the iPhone" width="200" height="300" /></a>Version 0.7.0 can already be downloaded, 0.8.1 is currently reviewed by Apple. Up to now these features are supported:</p>
<ul>
<li>My Private News Feed</li>
<li>My Activity Feed</li>
<li>Profile View</li>
<li>My Repositories</li>
<li>Repository Details</li>
</ul>
<p>Version 0.8.1 will also display a list of recent commits on a repository and the commit details. Things like user following and repository watching are in the <a href="http://dbloete.github.com/ioctocat/#todo">backlog</a>, some of them require <a href="http://github.com/blog/413-github-api-take-two">the new GitHub API</a> to implement support therefor first (like the repository watchlist).</p>
<p>I&#8217;m still looking for some more <a href="http://dbloete.github.com/ioctocat/#betatest">beta testers</a> and people who would like to review the app. If you are interested please mail your device UUID to <a href="mailto:ioctocat@dennisbloete.de">ioctocat@dennisbloete.de</a>. Participation from the developer front is also welcome &#8211; feel free to fork, add missing features or <a href="http://github.com/dbloete/ioctocat/issues">report issues</a> <img src='http://dennisbloete.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://dennisbloete.de/blog/ioctocat-a-github-app-for-the-iphone/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>UIActivityIndicatorView in UINavigationBar</title>
		<link>http://dennisbloete.de/blog/uiactivityindicatorview-in-uinavigationbar/</link>
		<comments>http://dennisbloete.de/blog/uiactivityindicatorview-in-uinavigationbar/#comments</comments>
		<pubDate>Mon, 30 Mar 2009 17:16:02 +0000</pubDate>
		<dc:creator>Dennis</dc:creator>
				<category><![CDATA[Cocoa / Objective-C]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[UIActivityIndicatorView]]></category>
		<category><![CDATA[UINavigationController]]></category>

		<guid isPermaLink="false">http://dennisbloete.de/?p=488</guid>
		<description><![CDATA[Here&#8217;s a short snippet I find myself using often when I have to communicate with web services: Adding an UIActivityIndicatorView to the bar of an UINavigationController, so that users are informed of the ongoing process in the background. Unfortunately you can&#8217;t plug this together in Interface Builder, so we have to do it in code.

- [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a short snippet I find myself using often when I have to communicate with web services: Adding an UIActivityIndicatorView to the bar of an UINavigationController, so that users are informed of the ongoing process in the background. Unfortunately you can&#8217;t plug this together in Interface Builder, so we have to do it in code.</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>viewDidLoad <span style="color: #002200;">&#123;</span>
   <span style="color: #002200;">&#91;</span>super viewDidLoad<span style="color: #002200;">&#93;</span>;
   <span style="color: #11740a; font-style: italic;">// Add an activity indicator to the navigation bar</span>
   UIBarButtonItem <span style="color: #002200;">*</span>activityItem <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>UIBarButtonItem alloc<span style="color: #002200;">&#93;</span> initWithCustomView<span style="color: #002200;">:</span>activityView<span style="color: #002200;">&#93;</span>;
   self.navigationItem.rightBarButtonItem <span style="color: #002200;">=</span> activityItem;
   <span style="color: #002200;">&#91;</span>activityItem release<span style="color: #002200;">&#93;</span>;
<span style="color: #002200;">&#125;</span></pre></div></div>

<p>This requires the <code>activityView</code> to be defined as a property of the view controller and setup in Interface Builder (hidden when stopped).</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;">IBOutlet UIActivityIndicatorView <span style="color: #002200;">*</span>activityView;</pre></div></div>

<p>When the communication with the web service start you can simply call</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #002200;">&#91;</span>activityView startAnimating<span style="color: #002200;">&#93;</span>;</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://dennisbloete.de/blog/uiactivityindicatorview-in-uinavigationbar/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Rails deployment with Vlad, Git and Passenger</title>
		<link>http://dennisbloete.de/blog/rails-deployment-with-vlad-git-and-passenger/</link>
		<comments>http://dennisbloete.de/blog/rails-deployment-with-vlad-git-and-passenger/#comments</comments>
		<pubDate>Sun, 22 Mar 2009 15:47:52 +0000</pubDate>
		<dc:creator>Dennis</dc:creator>
				<category><![CDATA[Ruby and Rails]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Passenger]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Vlad]]></category>

		<guid isPermaLink="false">http://dennisbloete.de/?p=477</guid>
		<description><![CDATA[Now that Capistrano is discontinued, Vlad (at GitHub) seems to be the new cool deployment tool on the block. It works nicely with other usual suspects like Git and Passenger and uses Rake instead of reinventing the wheel &#8211; so let&#8217;s have a closer look.
Getting started
First of you need to install the Vlad gem: $ [...]]]></description>
			<content:encoded><![CDATA[<p>Now that <a href="http://weblog.jamisbuck.org/2009/2/25/net-ssh-capistrano-and-saying-goodbye">Capistrano is discontinued</a>, <a href="http://rubyhitsquad.com/Vlad_the_Deployer.html">Vlad</a> (at <a href="http://github.com/seattlerb/vlad/tree/master">GitHub</a>) seems to be the new cool deployment tool on the block. It works nicely with other usual suspects like Git and Passenger and uses Rake instead of reinventing the wheel &#8211; so let&#8217;s have a closer look.</p>
<h3>Getting started</h3>
<p>First of you need to install the Vlad gem: <code>$ sudo gem install vlad</code></p>
<p>In its current version (1.3.2) Vlads default options are deploying from a SVN repository to a cluster of mongrels, which is not exactly what we are after. We need to configure it to use Git and Passenger, so switch to your Rails project and add the following lines to the end of the <em>Rakefile</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">begin</span>
  <span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'vlad'</span>
  Vlad.<span style="color:#CC0066; font-weight:bold;">load</span> <span style="color:#ff3333; font-weight:bold;">:app</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:passenger</span>, <span style="color:#ff3333; font-weight:bold;">:scm</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:git</span>
<span style="color:#9966CC; font-weight:bold;">rescue</span> <span style="color:#CC00FF; font-weight:bold;">LoadError</span>
  <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">'Could not load Vlad'</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>Run <code>$ rake -T vlad</code> to verify that Rake and Vlad know each other.</p>
<p>Now it&#8217;s time to <a href="http://hitsquad.rubyforge.org/vlad/doco/getting_started_txt.html">set up</a> your deployment configuration. Configuring Vlad is very similar to Capistrano, most of the <a href="http://hitsquad.rubyforge.org/vlad/doco/variables_txt.html">variables</a> are the same, so that you can easily <a href="http://hitsquad.rubyforge.org/vlad/doco/migration_txt.html">migrate</a> if you where using Capistrano before. Here is a simple configuration file including a deployment recipe which I&#8217;m currently using:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">set <span style="color:#ff3333; font-weight:bold;">:user</span>, <span style="color:#996600;">&quot;myuser&quot;</span>
set <span style="color:#ff3333; font-weight:bold;">:domain</span>, <span style="color:#996600;">&quot;my.domain.com&quot;</span>
set <span style="color:#ff3333; font-weight:bold;">:application</span>, <span style="color:#996600;">&quot;myapp&quot;</span>
set <span style="color:#ff3333; font-weight:bold;">:deploy_to</span>, <span style="color:#996600;">&quot;/var/www/#{application}&quot;</span>
set <span style="color:#ff3333; font-weight:bold;">:repository</span>, <span style="color:#996600;">&quot;git@github.com:#{user}/#{application}.git&quot;</span>
&nbsp;
namespace <span style="color:#ff3333; font-weight:bold;">:vlad</span> <span style="color:#9966CC; font-weight:bold;">do</span>
  desc <span style="color:#996600;">&quot;Symlinks the configuration files&quot;</span>
  remote_task <span style="color:#ff3333; font-weight:bold;">:symlink_config</span>, <span style="color:#ff3333; font-weight:bold;">:roles</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:web</span> <span style="color:#9966CC; font-weight:bold;">do</span>
    <span style="color:#006600; font-weight:bold;">%</span>w<span style="color:#006600; font-weight:bold;">&#40;</span>application.<span style="color:#9900CC;">yml</span> database.<span style="color:#9900CC;">yml</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>file<span style="color:#006600; font-weight:bold;">|</span>
      run <span style="color:#996600;">&quot;ln -s #{shared_path}/config/#{file} #{current_path}/config/#{file}&quot;</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  desc <span style="color:#996600;">&quot;Full deployment cycle: Update, migrate, restart, cleanup&quot;</span>
  remote_task <span style="color:#ff3333; font-weight:bold;">:deploy</span>, <span style="color:#ff3333; font-weight:bold;">:roles</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:app</span> <span style="color:#9966CC; font-weight:bold;">do</span>
    <span style="color:#6666ff; font-weight:bold;">Rake::Task</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'vlad:update'</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">invoke</span>
    <span style="color:#6666ff; font-weight:bold;">Rake::Task</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'vlad:symlink_config'</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">invoke</span>
    <span style="color:#6666ff; font-weight:bold;">Rake::Task</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'vlad:migrate'</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">invoke</span>
    <span style="color:#6666ff; font-weight:bold;">Rake::Task</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'vlad:start_app'</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">invoke</span>
    <span style="color:#6666ff; font-weight:bold;">Rake::Task</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'vlad:cleanup'</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">invoke</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<h3>Gotchas</h3>
<p>It took me a while to get everything up and running because I encountered permission problems while trying to access the application repository from my deployment server. If you are running <code>$ rake vlad:update</code> and experience Git errors like <code>fetch-pack from '...' failed</code>, turn to <a href="http://jordanelver.co.uk/articles/2008/07/10/rails-deployment-with-git-vlad-and-ssh-agent-forwarding/">Jordan Elvers blog post about it</a> &#8211; he explains how you can solve this by setting up SSH agent forwarding.</p>
<h3>Advancing</h3>
<p>Need to go further and setup a multistage deployment environment? Check out <a href="http://blog.engineyard.com/2008/10/20/multi-environment-merb-dm-deployment-with-vlad-git">this post</a> on the Engine Yard blog, they solved this problem already.</p>
]]></content:encoded>
			<wfw:commentRss>http://dennisbloete.de/blog/rails-deployment-with-vlad-git-and-passenger/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Lecker Cappuccino</title>
		<link>http://dennisbloete.de/blog/lecker-cappuccino/</link>
		<comments>http://dennisbloete.de/blog/lecker-cappuccino/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 22:46:37 +0000</pubDate>
		<dc:creator>Dennis</dc:creator>
				<category><![CDATA[Cappuccino / Objective-J]]></category>
		<category><![CDATA[Cocoa / Objective-C]]></category>
		<category><![CDATA[Cappuccino]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Objective-J]]></category>

		<guid isPermaLink="false">http://dennisbloete.de/?p=327</guid>
		<description><![CDATA[Bei neuland beschäftigen wir uns im Rahmen eines Forschungsprojekts aktuell mit Cappuccino. Dabei handelt es sich um ein Open Source Framework zur Erstellung von Webanwendungen, die vom look and feel an Mac OS X Desktop Software angelehnt sind. Vorzeigebeispiel für solche Anwendungen ist die derzeit einzige umfangreichere Anwendung 280 Slides, die von den Cappuccino-Machern 280 [...]]]></description>
			<content:encoded><![CDATA[<p><img class="align-right size-full wp-image-467 no-border" title="Cappuccino" src="http://dennisbloete.de/wp-content/uploads/cappuccino.png" alt="" width="256" height="256" />Bei <a href="http://neuland-bfi.de/">neuland</a> beschäftigen wir uns im Rahmen eines Forschungsprojekts aktuell mit <a href="http://cappuccino.org/">Cappuccino</a>. Dabei handelt es sich um ein <a href="http://github.com/280north/cappuccino/tree/master">Open Source</a> Framework zur Erstellung von Webanwendungen, die vom look and feel an Mac OS X Desktop Software angelehnt sind. Vorzeigebeispiel für solche Anwendungen ist die derzeit einzige umfangreichere Anwendung <a href="http://280slides.com/">280 Slides</a>, die von den Cappuccino-Machern <a href="http://280north.com/">280 North</a> entwickelt wurde.</p>
<p>Cappuccino ist wie <a href="http://www.sproutcore.com/">SproutCore</a> Teil (und möglicherweise Wegbereiter) eines aktuellen Trends, Webanwendungen stärker an das Aussehen und Verhalten von Desktop-Software anzugleichen. Im Gegensatz zu SproutCore setzt Cappuccino jedoch nicht auf altbekannte Mittel: Anwendungen werden mit Objective-J entwickelt — eine neue Sprache, die das übliche Gespann aus HTML, CSS und JavaScript ersetzt.</p>
<h4>Objective-J</h4>
<p>Wie der Name schon andeutet: Objective-J orientiert sich sehr stark an Objective-C, genau genommen ist es eine Portierung der Objective-C-Syntax zu JavaScript. Ziel dabei ist es auch, die in Cocoa zur Vefügung stehenden Klassen zu portieren und sie als Cappuccino-Klassen abzubilden (bspw. NSObject -&gt; CPObject, NSView -&gt; CPView). Die Cappuccino-API wird somit also nach dem Vorbild der Cocoa-API entwickelt, es ist jedoch vieles noch nicht portiert (aktueller Versionsstand von Cappuccino ist 0.6).</p>
<p>Aus den Erfahrungen der letzten Tage würde ich sagen, dass man relativ schnell einen Einstieg findet, wenn man sich kopfüber in das <a href="http://cappuccino.org/learn/tutorials/scrapbook-tutorial-1/">Einsteigertutorial</a> stürzt &#8211; wer keine Objective-C-Kenntnisse mitbringt sollte sich zunächst die <a href="http://cappuccino.org/learn/tutorials/objective-j-tutorial.php">kurze Einführung in Objective-J</a> angucken. Das Entwickeln eigener Anwendungen setzt eine umfangreiche Auseinandersetzung mit der Cappuccino API oder besser noch Cocoa-Vorkenntnisse voraus, da es bislang erst relativ wenig Dokumentation und Beispiele gibt. Vor allem Best Practice-Hinweise zur Umsetzungen fehlen noch und wären in Zukunft hilfreich. In den nächsten Tagen werde ich versuchen, immer mal wieder stückweise einzelne Erfahrungen, die wir im Forschungsprojekt machen zu posten und näher darauf einzugehen.</p>
<p>Bis dahin viel Spaß beim Experimentieren! Erfahrungsaustausch &#8211; gerne auch zu SproutCore &#8211; wäre super!</p>
<h4>Weiterführendes</h4>
<ul>
<li><a href="http://cappuccino.org/learn/documentation/annotated.html">Objective-J Referenz</a></li>
<li><a href="http://cappuccino.org/discuss/2008/10/01/using-xcode-to-develop-in-cappuccino/">Objective-J Plugin für XCode</a></li>
<li><a href="http://github.com/280north/cappuccino/wikis/nib2cib">nib2cib</a>: Ein Tool, um Interface Builder Dateien in von Cappuccino darstellbare CIBs umzuwandeln (aktuell aber noch sehr früher Entwicklungsstand)</li>
<li>Tutorial zum <a href="http://cappuccino.org/discuss/2008/11/11/cappuccino-and-ruby-on-rails/">Übertragen von Daten aus einer Rails-Anwendung an Cappuccino</a></li>
</ul>
<p>Wer etwas mehr zu den Hintergründen erfahren möchte, der kann sich die folgenden beiden Interview-Podcasts von Ajaxian anhören: Der eine zu <a href="http://ajaxian.com/archives/an-interview-with-280-north-on-objective-j-and-cappuccino">Cappuccino und Objective-J</a>, der andere zu <a href="http://ajaxian.com/archives/audible-ajax-episode-27-sproutcore-with-charles-jolley">SproutCore</a>. Die Podcasts sind beide ca. 15 Minuten lang und gehen auch etwas auf die unterschiedlichen Ansätze der beiden Frameworks ein.</p>
<p>Wer bislang noch keine Erfahrung mit Cocoa/Objective-C mitbringt kann sich auch etwas im <a href="http://developer.apple.com/mac/">Mac Dev Center</a> umsehen. Dort findet man einige nützliche Ressourcen zur Entwicklung mit Objective-C, beispielsweise <a href="http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/Introduction/chapter_1_section_1.html">The Objective-C 2.0 Programming Language</a> oder den<a href="http://developer.apple.com/documentation/Cocoa/Conceptual/CocoaFundamentals/Introduction/chapter_1_section_1.html"> Cocoa Fundamentals Guide</a>.</p>
<p>Die Stanford Universität bietet dieses Semester zum ersten Mal einen <a href="http://www.stanford.edu/class/cs193p/cgi-bin/index.php">iPhone-Dev-Kurs</a> an und stellt die Folien im Netz zur Verfügung. Das ist zwar nicht genau unser Thema, aber insbesondere die ersten Lectures behandeln Objective-C und sind gut um schnell einen Überblick zu bekommen:</p>
<ul>
<li><a href="http://cs193p.stanford.edu/downloads/02-ObjectiveC.pdf">Objective-C und wichtige Klassen</a></li>
<li><a href="http://cs193p.stanford.edu/downloads/03-CustomClasses.pdf">Eigene Objekte und Klassen</a></li>
<li><a href="http://cs193p.stanford.edu/downloads/05-ViewsAnimation.pdf ">View Fundamentals</a>: Was sind Frames, Bounds, Rects, Points, etc.?</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://dennisbloete.de/blog/lecker-cappuccino/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby -&gt; MacRuby -&gt; Cocoa</title>
		<link>http://dennisbloete.de/blog/ruby-macruby-cocoa/</link>
		<comments>http://dennisbloete.de/blog/ruby-macruby-cocoa/#comments</comments>
		<pubDate>Sun, 26 Oct 2008 19:15:27 +0000</pubDate>
		<dc:creator>Dennis</dc:creator>
				<category><![CDATA[Cocoa / Objective-C]]></category>
		<category><![CDATA[Ruby and Rails]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[MacRuby]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://dennisbloete.de/?p=321</guid>
		<description><![CDATA[Die letzte Zeit über habe ich mich mehr oder weniger intensiv bemüht, einen Einstieg in die Objective-C und Cocoa Welt zu finden. Die ersten Kapitel des Hillegass Buch waren schnell durchgearbeitet und ich würde sagen, dass sich das Buch gut für Einsteiger eignet, da es neben der theoretischen Einführung auch immer wieder kleine Hands-On Beispiele [...]]]></description>
			<content:encoded><![CDATA[<p>Die letzte Zeit über habe ich mich mehr oder weniger intensiv bemüht, einen Einstieg in die Objective-C und Cocoa Welt zu finden. Die ersten Kapitel des <a href="https://www.amazon.de/dp/0321503619?tag=innovatedde-21">Hillegass Buch</a> waren schnell durchgearbeitet und ich würde sagen, dass sich das Buch gut für Einsteiger eignet, da es neben der theoretischen Einführung auch immer wieder kleine Hands-On Beispiele gibt. Etwas ungewohnt ist das alles schon, wenn man aus der Ruby-Ecke kommt, aber durch meinen kurzen <a href="http://dennisbloete.de/blog/smalltalk-lernen/">Abstecher Richtung Smalltalk</a> ist Objective-C dann doch gar nicht so fremd und schwer zu lernen wie anfangs gedacht.</p>
<p>Etwas leichter fällt das Lernen allerdings, wenn man bereits Bekanntes relativ einfach übertragen kann. So verhält es sich in diesem Fall mit <a href="http://www.macruby.org/">MacRuby</a>. MacRuby erschien kürzlich in der Version 0.3 und ist im Gegensatz zu <a href="http://rubycocoa.sourceforge.net/HomePage">RubyCocoa</a> eine OS X-native Implementierung der Brücke zwischen Ruby und Cocoa. Vor ein paar Tagen fand ich im Mac Dev Center einen sehr guten Einführungsartikel zur <a href="http://developer.apple.com/mac/articles/scriptingautomation/cocoaappswithmacruby.html">Entwicklung von Cocoa Anwendungen mit MacRuby</a>, den ich jedem der sich mal etwas mit Cocoa befassen will empfehle. MacRuby ist schnell installiert und den Artikel durchzugehen dauert vielleicht 45 Minuten. Das gibt einem zumindest einen schnellen Einblick und mit Sicherheit die Erkenntnis, dass der Interface Builder eine sehr geniales Tool ist <img src='http://dennisbloete.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Trotz mangelnder Zeit wegen Umzug ist das Hillegass Buch jetzt doch wieder auf meinem Schreibtisch gelandet, weil ich mir fest vorgenommen habe, die nächsten Tage doch noch etwas mehr mit Cocoa zu experimentieren &#8211; nichtzuletzt weil grade der Interface Builder  eben sehr viel Spaß macht. Das erinnert mich ein wenig an damalige Zeiten der Anwendungsentwicklung mit Flash und ActionScript&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://dennisbloete.de/blog/ruby-macruby-cocoa/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
