<?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>Cocoanetics &#187; Administrative</title>
	<atom:link href="http://www.cocoanetics.com/category/administrative/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.cocoanetics.com</link>
	<description>Our DNA is written in Objective-C</description>
	<lastBuildDate>Wed, 08 Feb 2012 15:51:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>The Going Ons</title>
		<link>http://www.cocoanetics.com/2011/10/the-going-ons/</link>
		<comments>http://www.cocoanetics.com/2011/10/the-going-ons/#comments</comments>
		<pubDate>Thu, 20 Oct 2011 07:04:14 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Administrative]]></category>

		<guid isPermaLink="false">http://www.cocoanetics.com/?p=5591</guid>
		<description><![CDATA[Let me briefly summarize what&#8217;s going on in my iOS life at the moment and where you come in (if you like). My business revolves around several pillars which I established over the course of the past 2 years. My main income comes from 2 big contracts, one for developing for ELO Digital Office in Germany, one from a development partnership with International Color Services in Arizona. The former is about developing iPhone and iPad clients for their digital document archive. The latter is iCatalog. Now I am quite lucky to have won over my brother-in-law who happens to be an excellent developer with a background in Java and Android to work exclusively on these contracts. Right now he focusses on the iPad version of ELO. Label Buy an ad here I myself have spent the past 3 weeks on a new release for iCatalog, the big items are being able to zoom catalog pages and lots of trouble to make it compatible with iOS 5. The main items regarding the new OS where to move all content to Library/Caches and I am still struggling with Apple&#8217;s decision to no longer send rotation events to fully covered view controllers. If I have a video that the users pinches-open to full screen the catalog view controller no longer gets informed about rotations. Instead you are supposed to use two new delegate methods that get called whenever the view hierarchy below the VC is about to or was performing layout. The problem there is that this happens far more often than rotations. I am hoping to get this version of iCatalog done before this week is out, because my brain is definitely in need of a break. Just yesterday, when one of our cats woke me by pawing the door to our master bedroom, I started coding at 4 am and worked through 4 pm. I did have lunch and Wednesdays I am getting a massage, but still I feel like chewed out. It&#8217;s almost there, the weekend, I need it. Now unfortunately I cannot clone myself so there are several items backlogged behind this iCatalog release. I promised my DTRichTextEditor clients to work on the layouting performance for longer documents. Everything longer than around 150 lines is lagging, because for every inserted character the entire document is being laid out presently. The idea here is to only layout the paragraph that was changed and move the following paragraphs up or down accordingly. Paragraphs because the beginning of a paragraph always coincides with the beginning of a CTLine. Or put in simpler terms, paragraph beginnings are always line beginnings. This makes it easy to automate the surgery. The second item for CoreText and my open source NSAttributedString+HTML project is to do a bit of clean up for one pull request I don&#8217;t have time to look at. Also I need to wrap this all into a library or framework because with so many classes in there it becomes tedious to having to copy all files to your apps. If there where a library target in the project then you could add the project as a sub project. Alternatively making a fake framework would give you the ability to automatically include the necessary heads in the bundle. Last week we had our annual sit down with the tax advisor. There I learned that my iOS endeavors made around 45000 Euros in 2009 (when I was by myself), and up until September (now 2 heads) we had a turnover of 93.000 Euros. So the additional help allowed me to more than double my turnover, probably to well above 100k for this year. But that&#8217;s about as far as I can grow with 100% of my own work. Granted I have some components and apps I&#8217;m selling providing passive income, but I generally still see a very tight coupling between time spent coding and cash-flow. And since I cannot clone myself that would be the limit of how much I can grow. So how can this grow further? I have 3 ideas on how to tackle this: I will hire somebody to take care of business development and the non-coding aspects of developing apps for clients. The idea is to incubate development for client in my existing company, using the synergies there and existing infrastructure to cost-effectively grow it. Then after a year or so &#8211; if this has proven that it can stand on its own &#8211; to spin it off into a new company. My current company will continue to own certain products, apps, components, licensing deals and build on these. But anything that goes into creating new products or maintaining existing ones would go into the new branch/spin-off. I would be my own client for this. I want to spin-off a website/blog [...]]]></description>
			<content:encoded><![CDATA[<div class="plus-one-wrap"><g:plusone href="http://www.cocoanetics.com/2011/10/the-going-ons/"></g:plusone></div><p>Let me briefly summarize what&#8217;s going on in my iOS life at the moment and where you come in (if you like).</p>
<p>My business revolves around several pillars which I established over the course of the past 2 years. My main income comes from 2 big contracts, one for developing for ELO Digital Office in Germany, one from a development partnership with International Color Services in Arizona. The former is about developing iPhone and iPad clients for their digital document archive. The latter is <a title="iCatalog.framework brings Digital Catalogs to Life on iPad" href="http://www.cocoanetics.com/2010/10/icatalog-framework-brings-digital-catalogs-to-life-on-ipad/">iCatalog</a>.</p>
<p>Now I am quite lucky to have won over my brother-in-law who happens to be an excellent developer with a background in Java and Android to work exclusively on these contracts. Right now he focusses on the iPad version of ELO.</p>
<p><span id="more-5591"></span></p>
<div class="inner_ad_block">
<div id="advman-7" class="widget Advman_Widget">
<h3 class="widgettitle"></h3>
<p><!-- BuySellAds.com Zone Code --></p>
<div id="bsap_1260346" class="bsarocks bsap_fc3166ea4a479e0fdb4251fbe92a1219"></div>
<p><!-- End BuySellAds.com Zone Code --></div>
<div id="text-21" class="widget widget_text">
<h3 class="widgettitle">Label</h3>
<div class="textwidget">
<div class="advert-notice"><a href="http://buysellads.com/buy/detail/56639/zone/1260346">Buy an ad here</a></div>
</div></div>
</div>
<p>I myself have spent the past 3 weeks on a new release for <strong>iCatalog</strong>, the big items are being able to zoom catalog pages and lots of trouble to make it compatible with iOS 5. The main items regarding the new OS where to move all content to Library/Caches and I am still struggling with Apple&#8217;s decision to no longer send rotation events to fully covered view controllers.</p>
<p>If I have a video that the users pinches-open to full screen the catalog view controller no longer gets informed about rotations. Instead you are supposed to use two new delegate methods that get called whenever the view hierarchy below the VC is about to or was performing layout. The problem there is that this happens far more often than rotations.</p>
<p>I am hoping to get this version of iCatalog done before this week is out, because my brain is definitely in need of a break. Just yesterday, when one of our cats woke me by pawing the door to our master bedroom, I started coding at 4 am and worked through 4 pm. I did have lunch and Wednesdays I am getting a massage, but still I feel like chewed out. It&#8217;s almost there, the weekend, I need it.</p>
<p>Now unfortunately I cannot clone myself so there are several items backlogged behind this iCatalog release. I promised my <a href="http://www.cocoanetics.com/parts/dtrichtexteditor/">DTRichTextEditor</a> clients to work on the layouting <strong>performance for longer documents</strong>. Everything longer than around 150 lines is lagging, because for every inserted character the entire document is being laid out presently.</p>
<p>The idea here is to only layout the paragraph that was changed and move the following paragraphs up or down accordingly. Paragraphs because the beginning of a paragraph always coincides with the beginning of a CTLine. Or put in simpler terms, paragraph beginnings are always line beginnings. This makes it easy to automate the surgery.</p>
<p>The second item for CoreText and my open source <strong>NSAttributedString+HTML</strong> project is to do a bit of clean up for one pull request I don&#8217;t have time to look at. Also I need to wrap this all into a library or framework because with so many classes in there it becomes tedious to having to copy all files to your apps. If there where a library target in the project then you could add the project as a sub project. Alternatively making a fake framework would give you the ability to automatically include the necessary heads in the bundle.</p>
<p>Last week we had our annual sit down with the tax advisor. There I learned that my iOS endeavors made around 45000 Euros in 2009 (when I was by myself), and up until September (now 2 heads) we had a turnover of 93.000 Euros. So the additional help allowed me to more than double my turnover, probably to well above 100k for this year.</p>
<p>But that&#8217;s about as far as I can grow with 100% of my own work. Granted I have some components and apps I&#8217;m selling providing passive income, but I generally still see a very tight coupling between time spent coding and cash-flow. And since I cannot clone myself that would be the limit of how much I can grow.</p>
<h3>So how can this grow further?</h3>
<p>I have 3 ideas on how to tackle this:</p>
<ol>
<li>I will hire somebody to take care of business development and the non-coding aspects of developing apps for clients. The idea is to incubate development for client in my existing company, using the synergies there and existing infrastructure to cost-effectively grow it. Then after a year or so &#8211; if this has proven that it can stand on its own &#8211; to spin it off into a new company.</li>
<li>My current company will continue to own certain products, apps, components, licensing deals and build on these. But anything that goes into creating new products or maintaining existing ones would go into the new branch/spin-off. I would be my own client for this.</li>
<li>I want to spin-off a website/blog to deal exclusively with topics related to working on developing for iOS. This would be a commercial endeavor in its own right because of the extreme niche focus. For developers it would give you a constant stream of what interesting jobs and projects are being staffed. For clients you would have a popular place to make your needs known. Of course I need somebody to head this new spin-off too, sort of like a Chief-Editor-Head-of-Business-Development hybrid.</li>
</ol>
<p>If the above only serves one purpose then that I hope you see that I am also interested in a META discussion with you as to how we could join forces to benefit the both of us.</p>
<p>When I got married two years ago I moved to the countryside. While I love to be working here it has several drawbacks when it comes to meeting clients or potential partners. But this is how it is meant to be, I even declined an opportunity that was presented to me by Apple itself. I am not moving. I have my own business to build.</p>
<p>So it has to be a virtual corporation. But then again, you can work on iOS projects anywhere you have Internet and a Mac handy. The only problem is that my stomach aches if I think of being billed by the hour by a contractor without having any way to check up on him and see how he spent this time. There is a big difference if I am paying for work out of my own pocket or whether it is a client footing the bill and the money is pass-through (with a margin off the top for my company).</p>
<h3>Summary: Own products. Develop for Clients in a separate Company.</h3>
<p>Right now we are focussing on external money, but I am planning to reinvest part of the surplus in my own products when it is feasible to do so. I am keeping lists of feature requests for my apps on a Mantis bug tracker. But as it stands there is no substantial budget to pay external contractors for work on these apps that only make me like a couple of hundred Euros per month. Without financing there are only three options:</p>
<ol>
<li>let it rot or take it off the app store.</li>
<li>labor of love (whenever, if ever, I have time)</li>
<li>hire somebody that I can afford, possibly part-time, who likes to gain experience working on my code</li>
</ol>
<p>I don&#8217;t know if I can be a true Entrepreneur in the sense that you start something that quickly beings to run by itself and then you move on. The other meaning of Entrepreneur is to build a business and stick with it and focus exclusively on it.</p>
<p>There are two guys that I greatly admire in this area, one is <a href="http://www.marco.org/">Marco Arment</a>, one is <a href="http://www.mindnode.com/">Markus Müller</a>. Marco only does Instapaper and due to his focus he does it extremely well. Markus only does Mindnode, and because Apple continues to feature his apps he is now looking to hire his first employee. Oh how great must it be to only having to think of ONE product, not being pulled into all directions at the same time as I am feeling like I am.</p>
<p>This envy &#8211; that I readily admit to &#8211; is one of the causes why I think that I must focus more on what my own products are. I want a simpler more focussed life. I seem to be a victim to the Austrian strategy &#8220;Kleinvieh macht auch Mist&#8221; (= &#8220;many small animals can also make a big pile of shit&#8221;). Because there is no single item forthcoming that I could bet my entire company on, I am dabbling in many small things. It pays the bills quite well, but I suspect that this approach is limiting my quality of life and also limits how much this business can grow.</p>
<p>Or maybe it is not all bad. Exactly this non-focus is what let me gain much experience with many different activities in a short time. So maybe you need to spend some time experimenting what activities satisfy you the most. And later in live you can still settle on on of the &#8220;next big things&#8221; (that seems to come around bi-weekly).</p>
<p>Whether you are still in the experimentation phase or whether you are already in a position to tackly your big idea, let&#8217;s talk! My e-mail address is no secret, there&#8217;s a big button right there at the top of my website.</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=5591&amp;md5=b277833c1803ec0218b44051a5b9c418" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2011/10/the-going-ons/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<atom:link rel="payment" href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=5591&amp;md5=b277833c1803ec0218b44051a5b9c418" type="text/html" />
	</item>
		<item>
		<title>Back &#8230; and Many News</title>
		<link>http://www.cocoanetics.com/2011/08/back-and-many-news/</link>
		<comments>http://www.cocoanetics.com/2011/08/back-and-many-news/#comments</comments>
		<pubDate>Tue, 23 Aug 2011 19:26:57 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Administrative]]></category>

		<guid isPermaLink="false">http://www.cocoanetics.com/?p=5338</guid>
		<description><![CDATA[I spent last week at several beaches in Corsica and when I came back I figured I would want to prolong the silence of not reading e-mails for one more day. And how peaceful that felt, I can only recommend that. Instead I spent Monday in my hammock an continued reading a Clive Cussler novel. When I returned to my office on Tuesday I found more than 270 unread e-mails in my inbox. It took me around 4 hours to comb through these with a jackhammer and to trim it down to like a dozen or so that I will have to act upon. Label Buy an ad here When I got around to perform the first actual work-related action it was that I added my first third-party component to my well-visited Parts Store. Third Party Components in Cocoanetics Parts Store The thing that I call the &#8220;Cocoanetics Parts Store&#8221; is basically a feature of my custom-built WordPress template that allows me to add &#8220;Parts&#8221; as one would add &#8220;Pages&#8221;. Ordering is done via e-mail and invoices are created manually as PDFs. Still I see hundreds of people &#8211; developers? &#8211; peruse these pages every day and so I decided a while ago to put an ad on there. With much success, this very ad is the only one that even has somebody on the waiting list. I figured that with hundred of people stumbling onto Cocoanetics.com every day why not also let them find some really great components that other developers are selling, provided that there is an affiliate system in place that lets me get a cut of purchases being made. Sensible TableView is my first such component that I get a share on. If you want to get the same kind of exposure as well, I am happy to provide it if you can furnish me an affiliation. MyAppSales Fixes &#8211; Hooray for Open Source Next order of business were several problems people had with MyAppSales since Apple again tinkered on iTunes Connect. Several countries had been moved to their own regions causing the financial reports for these regions to not show. Also some other change broke downloading of daily and weekly reports. I had open sourced MyAppSales a while ago for the express reason that well versed developers like the ones using it can contribute fixes for such problems. It took a bit of encouragement &#8211; as well as an acute problem coupled with my absence &#8211; to get two guys to step up to the plate and provide fixes for these two new issues. It seems to me that now many people seem to be aware how easy it is to contribute to some other developer&#8217;s project. So let me summarize the steps right now. How to contribute to Open Source Projects Generally the process to contribute to any open source project on GitHub is really simple once you did it for the first time. you set up git and GitHub you fork a project you want to contribute something &#8211; however small &#8211; to. you clone your fork to your local hard disk you modify your local copy and commit the changes, providing sensible descriptions in the commit messages you push your local clone to your online fork you create a pull request for the original master the owner might require some further changes, he will communicate with you via the pull request. If you respond to such e-mails they will automatically be appended to the conversion further commits you make to the branch you pushed will show up as updates to the pull request finally when the owner is happy he can merge your changes into the master with just one button You can see the individual changes and who made them on the MyAppSales commit history on GitHub. Those are also a great place to learn about how other developers are tackling certain issues. NSAttributedString+HTML Features My other big open source project next to MyAppSales is NSAttributedString+HTML and lately this is gathering more and more steam. In my absence two new pull request were sent, one about adding support for rule-based styles and one to make font creation thread-safe. Since there are several projects with 3.2 support dependent on this we have to keep 3.2 compatibility at least until 5.0 is out. So I had to ask the author of the update to also provide this and he did. After that I could merge it with master. The rule-based styles pull request need a bit further clean-up, so I am waiting for the author to provide that. It&#8217;s always very interesting to eavesdrop on such a commentary exchange. The original author can always decide to ignore a pull request if it is not up to his standards, but if a contributor steers his additions in [...]]]></description>
			<content:encoded><![CDATA[<div class="plus-one-wrap"><g:plusone href="http://www.cocoanetics.com/2011/08/back-and-many-news/"></g:plusone></div><p>I spent last week at several beaches in Corsica and when I came back I figured I would want to prolong the silence of not reading e-mails for one more day. And how peaceful that felt, I can only recommend that. Instead I spent Monday in my hammock an continued reading a Clive Cussler novel.</p>
<p>When I returned to my office on Tuesday I found more than 270 unread e-mails in my inbox. It took me around 4 hours to comb through these with a jackhammer and to trim it down to like a dozen or so that I will have to act upon.</p>
<p><span id="more-5338"></span></p>
<div class="inner_ad_block">
<div id="advman-7" class="widget Advman_Widget">
<h3 class="widgettitle"></h3>
<p><!-- BuySellAds.com Zone Code --></p>
<div id="bsap_1260346" class="bsarocks bsap_fc3166ea4a479e0fdb4251fbe92a1219"></div>
<p><!-- End BuySellAds.com Zone Code --></div>
<div id="text-21" class="widget widget_text">
<h3 class="widgettitle">Label</h3>
<div class="textwidget">
<div class="advert-notice"><a href="http://buysellads.com/buy/detail/56639/zone/1260346">Buy an ad here</a></div>
</div></div>
</div>
<p>When I got around to perform the first actual work-related action it was that I added my first third-party component to my well-visited <a title="Parts Store" href="http://www.cocoanetics.com/parts-store/">Parts Store</a>.</p>
<h3>Third Party Components in Cocoanetics Parts Store</h3>
<p>The thing that I call the &#8220;Cocoanetics Parts Store&#8221; is basically a feature of my custom-built WordPress template that allows me to add &#8220;Parts&#8221; as one would add &#8220;Pages&#8221;. Ordering is done via e-mail and invoices are created manually as PDFs. Still I see hundreds of people &#8211; developers? &#8211; peruse these pages every day and so I decided a while ago to put an ad on there. With much success, this very ad is the only one that even has somebody on the waiting list.</p>
<p>I figured that with hundred of people stumbling onto Cocoanetics.com every day why not also let them find some really great components that other developers are selling, provided that there is an affiliate system in place that lets me get a cut of purchases being made.</p>
<p><a href="http://www.cocoanetics.com/parts/sensible-tableview/">Sensible TableView</a> is my first such component that I get a share on. If you want to get the same kind of exposure as well, I am happy to provide it if you can furnish me an affiliation.</p>
<h3>MyAppSales Fixes &#8211; Hooray for Open Source</h3>
<p>Next order of business were several problems people had with <strong>MyAppSales</strong> since Apple again tinkered on iTunes Connect. Several countries had been moved to their own regions causing the financial reports for these regions to not show. Also some other change broke downloading of daily and weekly reports.</p>
<p>I had <a title="OpenSource’ing MyAppSales" href="http://www.cocoanetics.com/2011/01/opensourceing-myappsales/">open sourced MyAppSales</a> a while ago for the express reason that well versed developers like the ones using it can contribute fixes for such problems. It took a bit of encouragement &#8211; as well as an acute problem coupled with my absence &#8211; to get two guys to step up to the plate and provide fixes for these two new issues.</p>
<p>It seems to me that now many people seem to be aware how easy it is to contribute to some other developer&#8217;s project. So let me summarize the steps right now.</p>
<h3>How to contribute to Open Source Projects</h3>
<p>Generally the process to contribute to any open source project on GitHub is really simple once you did it for the first time.</p>
<ol>
<li>you set up git and GitHub</li>
<li>you fork a project you want to contribute something &#8211; however small &#8211; to.</li>
<li>you clone your fork to your local hard disk</li>
<li>you modify your local copy and commit the changes, providing sensible descriptions in the commit messages</li>
<li>you push your local clone to your online fork</li>
<li>you create a pull request for the original master</li>
<li>the owner might require some further changes, he will communicate with you via the pull request. If you respond to such e-mails they will automatically be appended to the conversion</li>
<li>further commits you make to the branch you pushed will show up as updates to the pull request</li>
<li>finally when the owner is happy he can merge your changes into the master with just one button</li>
</ol>
<p>You can see the individual changes and who made them on the <a href="https://github.com/Cocoanetics/MyAppSales/commits/master">MyAppSales commit history</a> on GitHub. Those are also a great place to learn about how other developers are tackling certain issues.</p>
<h3>NSAttributedString+HTML Features</h3>
<p>My other big open source project next to <a href="https://github.com/Cocoanetics/MyAppSales">MyAppSales</a> is <a href="https://github.com/Cocoanetics/NSAttributedString-Additions-for-HTML">NSAttributedString+HTML</a> and lately this is gathering more and more steam. In my absence two new pull request were sent, one about adding support for rule-based styles and one to <a href="https://github.com/Cocoanetics/NSAttributedString-Additions-for-HTML/pull/63">make font creation thread-safe</a>. Since there are several projects with 3.2 support dependent on this we have to keep 3.2 compatibility at least until 5.0 is out. So I had to ask the author of the update to also provide this and he did. After that I could merge it with master.</p>
<p>The <a href="https://github.com/Cocoanetics/NSAttributedString-Additions-for-HTML/pull/64">rule-based styles pull request</a> need a bit further clean-up, so I am waiting for the author to provide that. It&#8217;s always very interesting to eavesdrop on such a commentary exchange. The original author can always decide to ignore a pull request if it is not up to his standards, but if a contributor steers his additions in a path that the maintainer likes then magic happens.</p>
<p>This magic is also the reason why I prefer pull requests over patches because there you can actually reap the fame for the code you contributed because you show as author of the added lines for all eternity. Or put differently: the git blame command shows if a future problem stems from a change you made.</p>
<h3>And off again &#8230;</h3>
<p>I had to cut short my first work day after the vacation because stress started creeping back in after 4 hours sitting in front of my iMac. So I put off some other work items that still stand between me and Inbox Zero. Tomorrow is another great day for that.</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=5338&amp;md5=26dcdb58311e92e4bbb3840fb571ec5b" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2011/08/back-and-many-news/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<atom:link rel="payment" href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=5338&amp;md5=26dcdb58311e92e4bbb3840fb571ec5b" type="text/html" />
	</item>
		<item>
		<title>We&#8217;ll be back soon</title>
		<link>http://www.cocoanetics.com/2011/08/well-be-back-soon-2/</link>
		<comments>http://www.cocoanetics.com/2011/08/well-be-back-soon-2/#comments</comments>
		<pubDate>Sat, 13 Aug 2011 19:27:52 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Administrative]]></category>

		<guid isPermaLink="false">http://www.cocoanetics.com/?p=5327</guid>
		<description><![CDATA[Seems like everybody is taking some time off in August. So we booked a last-minute vacation as well. There will be no e-mail checking until we get back, so please be patient with your requests and wishes. We&#8217;ll be back at your service on August 23rd.]]></description>
			<content:encoded><![CDATA[<div class="plus-one-wrap"><g:plusone href="http://www.cocoanetics.com/2011/08/well-be-back-soon-2/"></g:plusone></div><p>Seems like everybody is taking some time off in August. So we booked a last-minute vacation as well. There will be no e-mail checking until we get back, so please be patient with your requests and wishes.</p>
<p><a href="http://www.cocoanetics.com/files/backsoon.jpg"><img class="alignnone size-full wp-image-5257" title="back soon" src="http://www.cocoanetics.com/files/backsoon.jpg" alt="" width="193" height="167" /></a></p>
<p>We&#8217;ll be back at your service on August 23rd.</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=5327&amp;md5=de01dca0df02f83d3e510fc195e238a2" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2011/08/well-be-back-soon-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=5327&amp;md5=de01dca0df02f83d3e510fc195e238a2" type="text/html" />
	</item>
		<item>
		<title>Cocoanetics now with Proper SSL Certificate</title>
		<link>http://www.cocoanetics.com/2011/08/cocoanetics-now-with-proper-ssl-certificate/</link>
		<comments>http://www.cocoanetics.com/2011/08/cocoanetics-now-with-proper-ssl-certificate/#comments</comments>
		<pubDate>Wed, 10 Aug 2011 06:12:55 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Administrative]]></category>

		<guid isPermaLink="false">http://www.cocoanetics.com/?p=5322</guid>
		<description><![CDATA[Last week I finally gave in and shelled out for a wildcard SSL certificate for *.cocoanetics.com. This means that any address you have been using on this domain via HTTPS has been changed. Previously you where using a self-signed certificate  which cause several problems, amongst those that you could not directly set up my Subversion repos you have access to in Xcode because you needed to first permanently accept the certificate even though it could not be verified. So you had to do the first checkout in terminal. Once accepted it would work in Xcode too. Label Buy an ad here This is no longer the case. To check out code from any repository you no longer have to jump through this hoop. Just so that you know, your convenience is worth $600 to me. Please don&#8217;t smart-ass now how much cheaper a certificate for a single domain would have been, and YES I know that there are companies that give them away for free. I had a look at some, including StartSSL, but most of the free or cheap ones don&#8217;t do wildcards or subdomains Since I have several sites I want to have covered (all on the same web server) I had to go for the wildcard option. If you access a repository which was previously set up with the self-signed cert then you might have to approve the change once more. SVN repository for AntiCrack SVN repositories for all purchasable components To see the change in action just check out anything that you have access to like this, in terminal: svn checkout https://svn.cocoanetics.com/Component/trunk --username User You should see &#8230; that you don&#8217;t see anything. For a self-signed cert you would get a message that the certificate is not trusted asking if you want to accept it temporarily or permanently.]]></description>
			<content:encoded><![CDATA[<div class="plus-one-wrap"><g:plusone href="http://www.cocoanetics.com/2011/08/cocoanetics-now-with-proper-ssl-certificate/"></g:plusone></div><p>Last week I finally gave in and shelled out for a wildcard SSL certificate for *.cocoanetics.com. This means that any address you have been using on this domain via HTTPS has been changed.</p>
<p>Previously you where using a self-signed certificate  which cause several problems, amongst those that you could not directly set up my Subversion repos you have access to in Xcode because you needed to first permanently accept the certificate even though it could not be verified. So you had to do the first checkout in terminal. Once accepted it would work in Xcode too.</p>
<p><span id="more-5322"></span></p>
<div class="inner_ad_block">
<div id="advman-7" class="widget Advman_Widget">
<h3 class="widgettitle"></h3>
<p><!-- BuySellAds.com Zone Code --></p>
<div id="bsap_1260346" class="bsarocks bsap_fc3166ea4a479e0fdb4251fbe92a1219"></div>
<p><!-- End BuySellAds.com Zone Code --></div>
<div id="text-21" class="widget widget_text">
<h3 class="widgettitle">Label</h3>
<div class="textwidget">
<div class="advert-notice"><a href="http://buysellads.com/buy/detail/56639/zone/1260346">Buy an ad here</a></div>
</div></div>
</div>
<p>This is no longer the case. To check out code from any repository you no longer have to jump through this hoop. Just so that you know, your convenience is worth $600 to me. <img src='http://www.cocoanetics.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Please don&#8217;t smart-ass now how much cheaper a certificate for a single domain would have been, and YES I know that there are companies that give them away for free. I had a look at some, including StartSSL, but most of the free or cheap ones don&#8217;t do wildcards or subdomains</p>
<p>Since I have several sites I want to have covered (all on the same web server) I had to go for the wildcard option. If you access a repository which was previously set up with the self-signed cert then you might have to approve the change once more.</p>
<ul>
<li>SVN repository for <a href="http://www.cocoanetics.com/anticrack">AntiCrack</a></li>
<li>SVN repositories for all <a href="http://www.cocoanetics.com/parts-store">purchasable components</a></li>
</ul>
<p>To see the change in action just check out anything that you have access to like this, in terminal:</p>

<div class="wp_codebox"><table><tr id="p53222"><td class="code" id="p5322code2"><pre class="sh" style="font-family:monospace;">svn checkout https://svn.cocoanetics.com/Component/trunk --username User</pre></td></tr></table></div>

<p>You should see &#8230; that you don&#8217;t see anything. For a self-signed cert you would get a message that the certificate is not trusted asking if you want to accept it temporarily or permanently.</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=5322&amp;md5=c3aa56431125df12d87e5b36753f33a7" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2011/08/cocoanetics-now-with-proper-ssl-certificate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=5322&amp;md5=c3aa56431125df12d87e5b36753f33a7" type="text/html" />
	</item>
		<item>
		<title>We&#8217;ll be back soon.</title>
		<link>http://www.cocoanetics.com/2011/07/well-be-back-soon/</link>
		<comments>http://www.cocoanetics.com/2011/07/well-be-back-soon/#comments</comments>
		<pubDate>Sun, 10 Jul 2011 07:13:27 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Administrative]]></category>

		<guid isPermaLink="false">http://www.cocoanetics.com/?p=5256</guid>
		<description><![CDATA[After working full throttle on the scribd app and struggling to keep two more deadlines the past few weeks where really taking their toll. So today begins a week of downtime for me. We &#8211; that&#8217;s me, my wife and our dog &#8211; have rented an apartment and I had to promise not to bring any devices&#8230;. except the iPhone. &#8220;Honey, what if we get lost? I need the maps app to steer us back to civilization!&#8221; You get the picture. See you on the other side.]]></description>
			<content:encoded><![CDATA[<div class="plus-one-wrap"><g:plusone href="http://www.cocoanetics.com/2011/07/well-be-back-soon/"></g:plusone></div><p>After working full throttle on the <a href="http://www.scribd.com">scribd</a> app and struggling to keep two more deadlines the past few weeks where really taking their toll. So today begins a week of downtime for me. We &#8211; that&#8217;s me, my wife and our dog &#8211; have rented an apartment and I had to promise not to bring any devices&#8230;. except the iPhone.</p>
<p><a href="http://www.cocoanetics.com/files/backsoon.jpg"><img class="alignnone size-full wp-image-5257" title="back soon" src="http://www.cocoanetics.com/files/backsoon.jpg" alt="" width="193" height="167" /></a></p>
<p><em>&#8220;Honey, what if we get lost? I need the maps app to steer us back to civilization!&#8221;</em></p>
<p><em> </em>You get the picture. <img src='http://www.cocoanetics.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  See you on the other side.</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=5256&amp;md5=27b4383b976d6be981598d457cc7e62d" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2011/07/well-be-back-soon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=5256&amp;md5=27b4383b976d6be981598d457cc7e62d" type="text/html" />
	</item>
		<item>
		<title>CoreText Loading Performance</title>
		<link>http://www.cocoanetics.com/2011/04/coretext-loading-performance/</link>
		<comments>http://www.cocoanetics.com/2011/04/coretext-loading-performance/#comments</comments>
		<pubDate>Thu, 28 Apr 2011 06:40:17 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Administrative]]></category>

		<guid isPermaLink="false">http://www.cocoanetics.com/?p=4948</guid>
		<description><![CDATA[Somebody people told me that some function in my NSAttributedStrings+HTML would take forever but whenever I tested it, I could not see anything wrong. Then Stuart Carnie was able to send a snippet of code that, when pasted into appDidFinishLaunching, would exhibit the same problem, duplicatable. I was stumped at first. How could I have missed it? But at second glance Stuart did not reference any of my classes, but was only using standard SDK calls. Yet, those are almost identical to what I had wrapped into DTCoreTextFontDescriptor, my Objective-C wrapper. Then it dawned on me: this might be a lazy loading problem. Or maybe even a bug in CoreText.framework. Label Buy an ad here So I modified Stuart&#8217;s snippet to perform the same test several times, with changing font sizes and font families. - &#40;void&#41;testWithSize:&#40;CGFloat&#41;size family:&#40;NSString *&#41;family &#123; NSLog&#40;@&#34;Start&#34;&#41;; NSMutableDictionary *attributes = &#91;NSMutableDictionary dictionary&#93;; &#91;attributes setObject:family forKey:&#40;id&#41;kCTFontFamilyNameAttribute&#93;; &#91;attributes setObject:&#91;NSNumber numberWithFloat:size&#93; forKey:&#40;id&#41;kCTFontSizeAttribute&#93;; CTFontDescriptorRef fontDesc = CTFontDescriptorCreateWithAttributes&#40;&#40;CFDictionaryRef&#41;attributes&#41;; CTFontRef matchingFont = CTFontCreateWithFontDescriptor&#40;fontDesc, size, NULL&#41;; CFRelease&#40;matchingFont&#41;; CFRelease&#40;fontDesc&#41;; NSLog&#40;@&#34;Finish&#34;&#41;; &#125; &#160; - &#40;BOOL&#41;application:&#40;UIApplication *&#41;application didFinishLaunchingWithOptions:&#40;NSDictionary *&#41;launchOptions &#123; &#91;self testWithSize:10 family:@&#34;Courier New&#34;&#93;; &#91;self testWithSize:20 family:@&#34;Georgia&#34;&#93;; &#91;self testWithSize:30 family:@&#34;Helvetica&#34;&#93;; // ... &#125; On my iPhone 4 the first test took 1284 ms, the second improved dramatically to 39 ms and the last one to only 13 ms. Clearly the very first time you are accessing a CTFontDescriptor function this causes the CoreText dynamic framework to be loaded and initialized. By extension this probably means that you would see the same problem for ANY CoreText function. Subsequent calls are as fast as you would expect them to be. Though Stuart comes to a slightly different conclusion than me: I am fairly confident it is not a dynamic lib loading issue, because the first API call to CoreText (CTFontDescriptorCreateWithAttributes) is not slow.  When I profiled into core text, it is a lot of code running in freetype library. This also explains why I was not seeing the problem myself. Because of the way the demo is structured this loading would occur during the first table view cell of the demo list was drawn. And since this was the first visible view in the demo app this would delay presentation of the UI. Stuart and me filed bug reports: 9350255 and 9350318 respectively. If you are affected by this problem too, then I encourage you to reference these two Radars in your own bug report. Now for a workaround Stuart proposes to use a background dispatch queue to force loading of the CoreText.framework without affecting either app startup or first use. dispatch_queue_t queue = dispatch_queue_create&#40;&#34;com.swatch.worker&#34;, NULL&#41;; dispatch_async&#40;queue, ^&#40;void&#41; &#123; NSMutableDictionary *attributes = &#91;NSMutableDictionary dictionary&#93;; &#91;attributes setObject:@&#34;Helvetica&#34; forKey:&#40;id&#41;kCTFontFamilyNameAttribute&#93;; &#91;attributes setObject:&#91;NSNumber numberWithFloat:36.0f&#93; forKey:&#40;id&#41;kCTFontSizeAttribute&#93;; CTFontDescriptorRef fontDesc = CTFontDescriptorCreateWithAttributes&#40;&#40;CFDictionaryRef&#41;attributes&#41;; CTFontRef matchingFont = CTFontCreateWithFontDescriptor&#40;fontDesc, 36.0f, NULL&#41;; CFRelease&#40;matchingFont&#41;; CFRelease&#40;fontDesc&#41;; &#125;&#41;; dispatch_release&#40;queue&#41;; This kind of collaboration with talented people like Stuart is exactly why I OpenSourced this project. Thanks to Stuart we were able to corner the problem! It&#8217;s always great to know that it&#8217;s not your code that is the issue, but a performance problem in a public framework is to blame.]]></description>
			<content:encoded><![CDATA[<div class="plus-one-wrap"><g:plusone href="http://www.cocoanetics.com/2011/04/coretext-loading-performance/"></g:plusone></div><p>Somebody people <a href="https://github.com/Cocoanetics/NSAttributedString-Additions-for-HTML/issues/19">told me</a> that some function in my NSAttributedStrings+HTML would take forever but whenever I tested it, I could not see anything wrong. Then <a href="http://www.cocoapedia.org/wiki/Stuart_Carnie">Stuart Carnie</a> was able to send a snippet of code that, when pasted into appDidFinishLaunching, would exhibit the same problem, duplicatable.</p>
<p>I was stumped at first. How could I have missed it? But at second glance Stuart did not reference any of my classes, but was only using standard SDK calls. Yet, those are almost identical to what I had wrapped into DTCoreTextFontDescriptor, my Objective-C wrapper.</p>
<p>Then it dawned on me: this might be a lazy loading problem. Or maybe even a bug in CoreText.framework.</p>
<p><span id="more-4948"></span></p>
<div class="inner_ad_block">
<div id="advman-7" class="widget Advman_Widget">
<h3 class="widgettitle"></h3>
<p><!-- BuySellAds.com Zone Code --></p>
<div id="bsap_1260346" class="bsarocks bsap_fc3166ea4a479e0fdb4251fbe92a1219"></div>
<p><!-- End BuySellAds.com Zone Code --></div>
<div id="text-21" class="widget widget_text">
<h3 class="widgettitle">Label</h3>
<div class="textwidget">
<div class="advert-notice"><a href="http://buysellads.com/buy/detail/56639/zone/1260346">Buy an ad here</a></div>
</div></div>
</div>
<p>So I modified Stuart&#8217;s snippet to perform the same test several times, with changing font sizes and font families.</p>

<div class="wp_codebox"><table><tr id="p49485"><td class="code" id="p4948code5"><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>testWithSize<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>CGFloat<span style="color: #002200;">&#41;</span>size family<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/"><span style="color: #400080;">NSString</span></a> <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>family
<span style="color: #002200;">&#123;</span>
    NSLog<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Start&quot;</span><span style="color: #002200;">&#41;</span>;
    <a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSMutableDictionary_Class/"><span style="color: #400080;">NSMutableDictionary</span></a> <span style="color: #002200;">*</span>attributes <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSMutableDictionary_Class/"><span style="color: #400080;">NSMutableDictionary</span></a> dictionary<span style="color: #002200;">&#93;</span>;
    <span style="color: #002200;">&#91;</span>attributes setObject<span style="color: #002200;">:</span>family forKey<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">id</span><span style="color: #002200;">&#41;</span>kCTFontFamilyNameAttribute<span style="color: #002200;">&#93;</span>;
    <span style="color: #002200;">&#91;</span>attributes setObject<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSNumber_Class/"><span style="color: #400080;">NSNumber</span></a> numberWithFloat<span style="color: #002200;">:</span>size<span style="color: #002200;">&#93;</span> forKey<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">id</span><span style="color: #002200;">&#41;</span>kCTFontSizeAttribute<span style="color: #002200;">&#93;</span>;
    CTFontDescriptorRef fontDesc <span style="color: #002200;">=</span> CTFontDescriptorCreateWithAttributes<span style="color: #002200;">&#40;</span><span style="color: #002200;">&#40;</span>CFDictionaryRef<span style="color: #002200;">&#41;</span>attributes<span style="color: #002200;">&#41;</span>;
    CTFontRef matchingFont <span style="color: #002200;">=</span> CTFontCreateWithFontDescriptor<span style="color: #002200;">&#40;</span>fontDesc, size, <span style="color: #a61390;">NULL</span><span style="color: #002200;">&#41;</span>;
    CFRelease<span style="color: #002200;">&#40;</span>matchingFont<span style="color: #002200;">&#41;</span>;
    CFRelease<span style="color: #002200;">&#40;</span>fontDesc<span style="color: #002200;">&#41;</span>;
    NSLog<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Finish&quot;</span><span style="color: #002200;">&#41;</span>;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">BOOL</span><span style="color: #002200;">&#41;</span>application<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIApplication <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>application didFinishLaunchingWithOptions<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSDictionary_Class/"><span style="color: #400080;">NSDictionary</span></a> <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>launchOptions
<span style="color: #002200;">&#123;</span>
    <span style="color: #002200;">&#91;</span>self testWithSize<span style="color: #002200;">:</span><span style="color: #2400d9;">10</span> family<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Courier New&quot;</span><span style="color: #002200;">&#93;</span>;
    <span style="color: #002200;">&#91;</span>self testWithSize<span style="color: #002200;">:</span><span style="color: #2400d9;">20</span> family<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Georgia&quot;</span><span style="color: #002200;">&#93;</span>;
    <span style="color: #002200;">&#91;</span>self testWithSize<span style="color: #002200;">:</span><span style="color: #2400d9;">30</span> family<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Helvetica&quot;</span><span style="color: #002200;">&#93;</span>;
<span style="color: #11740a; font-style: italic;">// ...</span>
<span style="color: #002200;">&#125;</span></pre></td></tr></table></div>

<p>On my iPhone 4 the first test took 1284 ms, the second improved dramatically to 39 ms and the last one to only 13 ms. Clearly the very first time you are accessing a CTFontDescriptor function this causes the CoreText dynamic framework to be loaded and initialized.</p>
<p>By extension this probably means that you would see the same problem for ANY CoreText function. Subsequent calls are as fast as you would expect them to be. Though Stuart comes to a slightly different conclusion than me:</p>
<blockquote><p>I am fairly confident it is not a dynamic lib loading issue,<br />
because the first API call to CoreText (CTFontDescriptorCreateWithAttributes)<br />
is not slow.  When I profiled into core text, it is a lot of code running in<br />
freetype library.</p></blockquote>
<p>This also explains why I was not seeing the problem myself. Because of the way the demo is structured this loading would occur during the first table view cell of the demo list was drawn. And since this was the first visible view in the demo app this would delay presentation of the UI.</p>
<p>Stuart and me filed bug reports: <a href="rdar://9350255">9350255</a> and <a href="rdar://9350318">9350318</a> respectively. If you are affected by this problem too, then I encourage you to reference these two Radars in your own bug report.</p>
<p>Now for a workaround Stuart <a href="https://gist.github.com/945862">proposes</a> to use a background dispatch queue to force loading of the CoreText.framework without affecting either app startup or first use.</p>

<div class="wp_codebox"><table><tr id="p49486"><td class="code" id="p4948code6"><pre class="objc" style="font-family:monospace;">dispatch_queue_t queue <span style="color: #002200;">=</span> dispatch_queue_create<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">&quot;com.swatch.worker&quot;</span>, <span style="color: #a61390;">NULL</span><span style="color: #002200;">&#41;</span>;
dispatch_async<span style="color: #002200;">&#40;</span>queue, <span style="color: #002200;">^</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
    <a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSMutableDictionary_Class/"><span style="color: #400080;">NSMutableDictionary</span></a> <span style="color: #002200;">*</span>attributes <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSMutableDictionary_Class/"><span style="color: #400080;">NSMutableDictionary</span></a> dictionary<span style="color: #002200;">&#93;</span>;
    <span style="color: #002200;">&#91;</span>attributes setObject<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Helvetica&quot;</span> forKey<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">id</span><span style="color: #002200;">&#41;</span>kCTFontFamilyNameAttribute<span style="color: #002200;">&#93;</span>;
    <span style="color: #002200;">&#91;</span>attributes setObject<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSNumber_Class/"><span style="color: #400080;">NSNumber</span></a> numberWithFloat<span style="color: #002200;">:</span>36.0f<span style="color: #002200;">&#93;</span> forKey<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">id</span><span style="color: #002200;">&#41;</span>kCTFontSizeAttribute<span style="color: #002200;">&#93;</span>;
    CTFontDescriptorRef fontDesc <span style="color: #002200;">=</span> CTFontDescriptorCreateWithAttributes<span style="color: #002200;">&#40;</span><span style="color: #002200;">&#40;</span>CFDictionaryRef<span style="color: #002200;">&#41;</span>attributes<span style="color: #002200;">&#41;</span>;
    CTFontRef matchingFont <span style="color: #002200;">=</span> CTFontCreateWithFontDescriptor<span style="color: #002200;">&#40;</span>fontDesc, 36.0f, <span style="color: #a61390;">NULL</span><span style="color: #002200;">&#41;</span>;
    CFRelease<span style="color: #002200;">&#40;</span>matchingFont<span style="color: #002200;">&#41;</span>;
    CFRelease<span style="color: #002200;">&#40;</span>fontDesc<span style="color: #002200;">&#41;</span>;
<span style="color: #002200;">&#125;</span><span style="color: #002200;">&#41;</span>;
dispatch_release<span style="color: #002200;">&#40;</span>queue<span style="color: #002200;">&#41;</span>;</pre></td></tr></table></div>

<p>This kind of collaboration with talented people like Stuart is exactly why I OpenSourced this project. Thanks to Stuart we were able to corner the problem!</p>
<p>It&#8217;s always great to know that it&#8217;s not your code that is the issue, but a performance problem in a public framework is to blame.</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=4948&amp;md5=e2402cab91c311e819b3f2e64375159c" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2011/04/coretext-loading-performance/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<atom:link rel="payment" href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=4948&amp;md5=e2402cab91c311e819b3f2e64375159c" type="text/html" />
	</item>
		<item>
		<title>Cocoanetics Portal 2 Raffle</title>
		<link>http://www.cocoanetics.com/2011/04/cocoanetics-portal-2-raffle/</link>
		<comments>http://www.cocoanetics.com/2011/04/cocoanetics-portal-2-raffle/#comments</comments>
		<pubDate>Mon, 11 Apr 2011 06:20:11 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Administrative]]></category>

		<guid isPermaLink="false">http://www.cocoanetics.com/?p=4865</guid>
		<description><![CDATA[Fans of this blog and twitter followers alike will have a chance to get a free copy of Portal 2 on Steam. This highly anticipated game will be released on April 19th, round about the time when @Cocoanetics will surpass 2500 followers on Twitter. When I went to Steam to pre-order my copy I saw an offer to buy two copies and give one away. So I thought that this might be a nice way to say &#8220;thank you!&#8221; for you being a frequent visitor to my blog and for following me on twitter. To participate all you need to do is tweet the following text. On April 19th I will have tweetaways select a random winner from all the ones who tweeted the correct phrase. Portal 2 Giveaway by @cocoanetics (BTW a great source for iOS dev info): http://bit.ly/g5nsKG #raffle Good Luck!]]></description>
			<content:encoded><![CDATA[<div class="plus-one-wrap"><g:plusone href="http://www.cocoanetics.com/2011/04/cocoanetics-portal-2-raffle/"></g:plusone></div><p><img class="size-full wp-image-4866 alignright" title="Portal 2 Logo" src="http://www.cocoanetics.com/files/Screen-shot-2011-04-11-at-8.00.03-AM.png" alt="" width="292" height="135" />Fans of this blog and twitter followers alike will have a chance to get a free copy of <strong>Portal 2</strong> on Steam. This highly anticipated game will be released on April 19th, round about the time when <a href="http://twitter.com/cocoanetics">@Cocoanetics</a> will surpass 2500 followers on Twitter.</p>
<p>When I went to Steam to pre-order my copy I saw an offer to buy two copies and give one away. So I thought that this might be a nice way to say &#8220;thank you!&#8221; for you being a frequent visitor to my blog and for following me on twitter.</p>
<p>To participate all you need to do is tweet the following text. On April 19th I will have <a href="http://tweetaways.com/">tweetaways</a> select a random winner from all the ones who tweeted the correct phrase.</p>
<blockquote><p>Portal 2 Giveaway by @cocoanetics (BTW a great source for iOS dev info): http://bit.ly/g5nsKG #raffle</p></blockquote>
<p>Good Luck!</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=4865&amp;md5=fa37ab4fe8558e3899675b48aedeaeaa" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2011/04/cocoanetics-portal-2-raffle/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<atom:link rel="payment" href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=4865&amp;md5=fa37ab4fe8558e3899675b48aedeaeaa" type="text/html" />
	</item>
		<item>
		<title>San Francisco, here I come!</title>
		<link>http://www.cocoanetics.com/2011/03/san-francisco-here-i-come/</link>
		<comments>http://www.cocoanetics.com/2011/03/san-francisco-here-i-come/#comments</comments>
		<pubDate>Sat, 12 Mar 2011 05:11:21 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Administrative]]></category>

		<guid isPermaLink="false">http://www.cocoanetics.com/?p=4789</guid>
		<description><![CDATA[I&#8217;ve been hired by scribd to help jumpstart one of their iOS-related projects. That means I&#8217;ll soon grab my bags and hop onto a train that brings me to Vienna from where my plane leaves early morning Saturday, March 12th. I will be flying via London Heathrow to San Francisco where two busy work weeks are awaiting me. I am mentioning this for some reasons, obvious and less obvious ones. Of course I like to gloat a bit, but I am also mentioning my trip because it might cause extensive delays when responding to your e-mails. Just how does one land such a gig? I can only assume that my online activities and networking have played a role. This includes my educational articles from which people might deduct that I am serious about Cocoa. It also includes my open source projects, one might think that CoreText might be one of the technologies that scribd has a vested interest in. Label Buy an ad here It&#8217;s the second time that I visit San Francisco, the first time that I am aware of Apple&#8217;s HQ being near. If you have some recommendations for a visiting iOS developer like myself, let me know. I will have free WiFi at the Hilton where I&#8217;m booked into. But I wonder: is there some kind of prepaid micro-SIM that one could get for a 2 week stay in the US that would give me a bit of voice and a bit of data. Just enough to use Google Maps or other connected apps while being out and about the town? Also, how would one approach visiting the mothership at Cupertino? It&#8217;s about an hour by car and like 3 hours by bus&#8230; should I maybe get a rental car? Or better to hook up with local talent? Speaking of which&#8230; is there any? I&#8217;ve been tweeting about my visit for several days now, but only one mentioned he is local to SF.]]></description>
			<content:encoded><![CDATA[<div class="plus-one-wrap"><g:plusone href="http://www.cocoanetics.com/2011/03/san-francisco-here-i-come/"></g:plusone></div><p>I&#8217;ve been hired by <a href="http://www.scribd.com/">scribd</a> to help jumpstart one of their iOS-related projects. That means I&#8217;ll soon grab my bags and hop onto a train that brings me to Vienna from where my plane leaves early morning Saturday, March 12th. I will be flying via London Heathrow to San Francisco where two busy work weeks are awaiting me.</p>
<p>I am mentioning this for some reasons, obvious and less obvious ones. Of course I like to gloat a bit, but I am also mentioning my trip because it might cause extensive delays when responding to your e-mails.</p>
<p>Just how does one land such a gig? I can only assume that my online activities and networking have played a role. This includes my educational articles from which people might deduct that I am serious about Cocoa. It also includes my open source projects, one might think that CoreText might be one of the technologies that scribd has a vested interest in.</p>
<p><span id="more-4789"></span></p>
<div class="inner_ad_block">
<div id="advman-7" class="widget Advman_Widget">
<h3 class="widgettitle"></h3>
<p><!-- BuySellAds.com Zone Code --></p>
<div id="bsap_1260346" class="bsarocks bsap_fc3166ea4a479e0fdb4251fbe92a1219"></div>
<p><!-- End BuySellAds.com Zone Code --></div>
<div id="text-21" class="widget widget_text">
<h3 class="widgettitle">Label</h3>
<div class="textwidget">
<div class="advert-notice"><a href="http://buysellads.com/buy/detail/56639/zone/1260346">Buy an ad here</a></div>
</div></div>
</div>
<p>It&#8217;s the second time that I visit San Francisco, the first time that I am aware of Apple&#8217;s HQ being near. If you have some recommendations for a visiting iOS developer like myself, let me know.</p>
<p>I will have free WiFi at the Hilton where I&#8217;m booked into. But I wonder: is there some kind of prepaid micro-SIM that one could get for a 2 week stay in the US that would give me a bit of voice and a bit of data. Just enough to use Google Maps or other connected apps while being out and about the town?</p>
<p>Also, how would one approach visiting the mothership at Cupertino? It&#8217;s about an hour by car and like 3 hours by bus&#8230; should I maybe get a rental car? Or better to hook up with local talent? Speaking of which&#8230; is there any? I&#8217;ve been tweeting about my visit for several days now, but only one mentioned he is local to SF.</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=4789&amp;md5=e14ab0b4873dd3282935da6d0a5bdb25" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2011/03/san-francisco-here-i-come/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		<atom:link rel="payment" href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=4789&amp;md5=e14ab0b4873dd3282935da6d0a5bdb25" type="text/html" />
	</item>
		<item>
		<title>You Can Thank Me</title>
		<link>http://www.cocoanetics.com/2011/03/you-can-thank-me/</link>
		<comments>http://www.cocoanetics.com/2011/03/you-can-thank-me/#comments</comments>
		<pubDate>Fri, 04 Mar 2011 14:27:05 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Administrative]]></category>

		<guid isPermaLink="false">http://www.cocoanetics.com/?p=4743</guid>
		<description><![CDATA[You might have stumbled upon my site because of the variety of iOS development topics I am covering. I generally try to make any interesting thing I&#8217;m learning myself into an educational blog post. There are the things I stumble upon myself, those I document in the Recipes section. And whenever somebody sends me a question I try to answer it with code, examples and so that both our knowledge increases. Let me summarize the ways how you can express your gratitude. There is a variety of options you have and if you make use of them I will be happy. Which in turn causes me to write more. Win-Win. Label Buy an ad here I understand that you probably don&#8217;t have an inclination to just send me money on PayPal. Here are 10 methods that you can use to build up some good karma. 1. Link to my articles If you find an article enlightening then you should link to it on your blog or tell your colleagues about it. Search traffic is in part based on the concept of authority. The more people link to a page the more authority Google thinks this page has. A site like my own lives from the traffic it gets. Yours as well as thousands of other developers who pop by every day. On February 22nd my unique visitors peaked at 1772, my article on In-App Subscriptions caused a bit of controversy. From this tendency of increasing traffic as well as comments made to my articles the consensus appears to be a favorable one. Interesting to see that people seem to prefer coming to me on weekdays. Checking the keywords that this &#8211; mostly organic &#8211; traffic is coming from we see a variety of topics that I wrote about, first and foremost how to make a Pull-To-Reload TableView. I also love to see how more and more people are referencing my posts when answering questions on Stack Overflow or the iPhone Dev SDK forums. 2. Follow me on Twitter The concept of authority can also seen at work on Twitter. Just recently I split my iOS development utterings @Cocoanetics from my German language personal tweets @OliverDrobnik. This way you won&#8217;t ever see me tweet about personal issues, but are guaranteed to see tweets and retweets that are relevant to the iOS and Mac universe. Of course I get spam followers, but generally I am followed by tweeps who are interested in iOS development. Take for example Christopher Oxley, a 26yr old iPhone app developer . Or Guy Couture, Vice-president of DCEsolutions. Or Marouen Ben Moussa who is iOS Software Engineer at Proxymit. Those are just three that mentioned their iOS passion in their twitter profile and followed me just now. By following me as well you will be part of a greater social network comprised of really smart company. And once you followed me be sure to recommend the same to your followers as well. Follow Friday was invented for this purpose. And of course my network is also available for you to crowd-source information or resources. If you tweet something funny or interesting nudge me to retweet it if I have not done so already. 3. Flattr me In the past some people sent me donations to my PayPal account (same as my e-mail address), but generally this is the exception. Being self-employed and really busy makes me sufficient money to live from. So you probably assume that I would not appreciate any small donation you might be able to make. That&#8217;s why Flattr was invented. Flattr is a play on the words Flatrate and &#8220;to flatter somebody&#8221;. It&#8217;s a small European company that makes it possible for you to do micropayments for a variety of things, mostly well written articles and blogs. The idea is that &#8211; if you like what you read &#8211; you find the nearest Flattr button and click on this. At the end of the month your &#8220;means&#8221; will be evenly divided (minus 10% fee for Flattr themselves) amongst all the articles you clicked on. The minimum amount for your monthly means is two Euros. You can add to your balance every time you like and set a slider to what monthly amount should be taken from your balance for these flattr&#8217;ing means. Also just recently Flattr introduced subscriptions which is automatic the process of flattr&#8217;ing multiple times over several months. If you click on a flattr button once it counts only for the current month. If you click a second time you can choose to have flattr repeat this click on the subsequent months. From this screenshot of my Flattr dashboard you see that so far I am earning between 2 and 4 Euros per month from people flattr&#8217;ing my articles. At the same time I have [...]]]></description>
			<content:encoded><![CDATA[<div class="plus-one-wrap"><g:plusone href="http://www.cocoanetics.com/2011/03/you-can-thank-me/"></g:plusone></div><p>You might have stumbled upon my site because of the variety of iOS development topics I am covering. I generally try to make any interesting thing I&#8217;m learning myself into an educational blog post. There are the things I stumble upon myself, those I document in the <a href="http://www.cocoanetics.com/category/recipes/">Recipes</a> section. And whenever somebody <a href="mailto:oliver@drobnik.com?subject=Question">sends me a question</a> I try to answer it with code, examples and so that both our knowledge increases.</p>
<p>Let me summarize the ways how you can express your gratitude. There is a variety of options you have and if you make use of them I will be happy. Which in turn causes me to write more. Win-Win.</p>
<p><span id="more-4743"></span></p>
<div class="inner_ad_block">
<div id="advman-7" class="widget Advman_Widget">
<h3 class="widgettitle"></h3>
<p><!-- BuySellAds.com Zone Code --></p>
<div id="bsap_1260346" class="bsarocks bsap_fc3166ea4a479e0fdb4251fbe92a1219"></div>
<p><!-- End BuySellAds.com Zone Code --></div>
<div id="text-21" class="widget widget_text">
<h3 class="widgettitle">Label</h3>
<div class="textwidget">
<div class="advert-notice"><a href="http://buysellads.com/buy/detail/56639/zone/1260346">Buy an ad here</a></div>
</div></div>
</div>
<p>I understand that you probably don&#8217;t have an inclination to just send me money on PayPal. Here are 10 methods that you can use to build up some good karma.</p>
<h3>1. Link to my articles</h3>
<p>If you find an article enlightening then you should link to it on your blog or tell your colleagues about it.</p>
<p>Search traffic is in part based on the concept of authority. The more people link to a page the more authority Google thinks this page has.</p>
<p>A site like my own lives from the traffic it gets. Yours as well as thousands of other developers who pop by every day. On February 22nd my unique visitors peaked at 1772, my <a title="Apple Subscriptions" href="http://www.cocoanetics.com/2011/02/apple-subscriptions/">article on In-App Subscriptions</a> caused a bit of controversy.</p>
<p>From this tendency of increasing traffic as well as comments made to my articles the consensus appears to be a favorable one. Interesting to see that people seem to prefer coming to me on weekdays.</p>
<p><img title="Google Analytics Feb 2011" src="http://www.cocoanetics.com/files/Screen-shot-2011-03-04-at-11.45.18-AM.png" alt="" width="663" height="119" /></p>
<p>Checking the keywords that this &#8211; mostly organic &#8211; traffic is coming from we see a variety of topics that I wrote about, first and foremost how to make a <a title="How to make a Pull-To-Reload TableView just like Tweetie 2" href="http://www.cocoanetics.com/2009/12/how-to-make-a-pull-to-reload-tableview-just-like-tweetie-2/">Pull-To-Reload TableView</a>.</p>
<p>I also love to see how more and more people are referencing my posts when answering questions on Stack Overflow or the iPhone Dev SDK forums.</p>
<h3>2. Follow me on Twitter</h3>
<p>The concept of authority can also seen at work on Twitter. Just recently I split my iOS development utterings <a href="http://twitter.com/cocoanetics" target="_blank">@Cocoanetics</a> from my German language personal tweets <a href="http://twitter.com/OliverDrobnik" target="_blank">@OliverDrobnik</a>. This way you won&#8217;t ever see me tweet about personal issues, but are guaranteed to see tweets and retweets that are relevant to the iOS and Mac universe.</p>
<p>Of course I get spam followers, but generally I am followed by tweeps who are interested in iOS development. Take for example <a href="http://twitter.com/ThisIsChrisO" target="_blank">Christopher Oxley</a>, a 26yr old iPhone app developer . Or <a href="http://twitter.com/gcouture" target="_blank">Guy Couture</a>, Vice-president of DCEsolutions. Or <a href="http://twitter.com/marouen_bm" target="_blank">Marouen Ben Moussa</a> who is iOS Software Engineer at Proxymit. Those are just three that mentioned their iOS passion in their twitter profile and followed me just now.</p>
<p><img class="alignnone size-full wp-image-4746" title="Twitter Follower Stats" src="http://www.cocoanetics.com/files/Screen-shot-2011-03-04-at-1.33.06-PM.png" alt="" width="714" height="260" /></p>
<p>By following me as well you will be part of a greater social network comprised of really smart company. And once you followed me be sure to recommend the same to your followers as well. Follow Friday was invented for this purpose.</p>
<p>And of course my network is also available for you to crowd-source information or resources. If you tweet something funny or interesting nudge me to retweet it if I have not done so already.</p>
<h3>3. Flattr me</h3>
<p>In the past some people sent me donations to my PayPal account (same as my e-mail address), but generally this is the exception. Being self-employed and really busy makes me sufficient money to live from. So you probably assume that I would not appreciate any small donation you might be able to make. That&#8217;s why Flattr was invented.</p>
<p>Flattr is a play on the words Flatrate and &#8220;to flatter somebody&#8221;. It&#8217;s a small European company that makes it possible for you to do micropayments for a variety of things, mostly well written articles and blogs. The idea is that &#8211; if you like what you read &#8211; you find the nearest Flattr button and click on this.</p>
<p>At the end of the month your &#8220;means&#8221; will be evenly divided (minus 10% fee for Flattr themselves) amongst all the articles you clicked on. The minimum amount for your monthly means is two Euros. You can add to your balance every time you like and set a slider to what monthly amount should be taken from your balance for these flattr&#8217;ing means.</p>
<p>Also just recently Flattr introduced subscriptions which is automatic the process of flattr&#8217;ing multiple times over several months. If you click on a flattr button once it counts only for the current month. If you click a second time you can choose to have flattr repeat this click on the subsequent months.</p>
<p><a href="http://www.cocoanetics.com/files/Screen-shot-2011-03-04-at-1.53.24-PM.png"><img class="alignnone size-full wp-image-4747" title="Flattr Dashboard" src="http://www.cocoanetics.com/files/Screen-shot-2011-03-04-at-1.53.24-PM.png" alt="" width="700" height="771" /></a></p>
<p>From this screenshot of my Flattr dashboard you see that so far I am earning between 2 and 4 Euros per month from people flattr&#8217;ing my articles. At the same time I have a subscription for the <a href="http://www.cocoaheads.at" target="_blank">Cocoaheads Austria</a> homepage. So if I don&#8217;t click on any other Flattr buttons my entire 2 Euros will go to them automatically.</p>
<h3>4. Advertise on Cocoanetics.com</h3>
<p>I can never hope to achieve a significant income through ads alone. But I can use the ad revenue to offset the cost of my server, approximately 60 Euros per month. Those banners you see on the site from Google AdSense average around 8-10 Euros per month, so that&#8217;s why for January and February I experimented with finding sponsors willing to pay me a bit more than that.</p>
<p>Your choice of ad spots are:</p>
<p><strong>Location:</strong> Frontpage<br />
<strong>Stats:</strong> seen by 10% of overall visitors<br />
<strong>Size: </strong>Block 300 x 300<br />
<strong>Note:</strong> this replaced the entire block including the extra text on the lower right site</p>
<p><strong>Location: </strong>Blog Article List, 2 Slots after first and second article (part before MORE tag) repeated on each page<br />
<strong>Stats: </strong>seen by 5% of overall visitors<br />
<strong>Size: </strong>Banner  728 x 90</p>
<p><strong>Location: </strong>All Individual Articles, at the location where the MORE tag.<br />
<strong>Stats: </strong>depend on popularity of article, e.g. my multitasking article gets 5% of daily visitors<br />
<strong>Size:</strong> Banner 728 x 90<br />
<strong>Note: </strong>Currently these are inserted manually, they are spread around popular articles. Development is done to automate in about 1 week.</p>
<p><strong>Location:</strong> Specific Articles that you think match your offerings really well can be selected manually as well as the position in the article.<br />
<strong>Size:</strong> Banner 728 x 90</p>
<p>One such sponsor was the maker of the <a href="http://itunes.apple.com/at/app/cyberspace/id403114491?mt=8" target="_blank">Cyberspace web browser</a> for iPad/iPhone. With the help of Google Analytics we saw that his payment got him 67 click-throughs at 0.29 Euro each. Not bad for an app that costs $3. Now imagine what conversion rate you might get for YOUR service or product if it is in the least relevant for iOS developers.</p>
<p><img title="Cyberspace App Click-throughs" src="http://www.cocoanetics.com/files/Screen-shot-2011-03-04-at-2.05.02-PM.png" alt="" width="809" height="127" /></p>
<p>I have several spots available and the only wish I have is that together I can achieve to have my server paid for. I have not set sponsoring rate, just make me an offer. There&#8217;s not exactly a queue. If you see Google ads in a spot then that&#8217;s because nobody is in front of you.</p>
<h3>5. Let&#8217;s affiliate</h3>
<p>I&#8217;d love to have more affiliations. Generally if I am using somebody&#8217;s product or services I&#8217;d love to be sending them additional business. The easiest way for me to do that is if you have an affiliate link for me. Have a look at the footer of every page. Right now there&#8217;s an affiliate link for Dropbox and Mobfox, both services that I use white a bit. Thus the affiliation.</p>
<p>From <a href="http://db.tt/pUYczl6" target="_blank">Dropbox</a> I&#8217;m getting more free storage with every sign-up. I use that quite a bit to share project files with customers and also for certain kinds of backup scenarios. What&#8217;s also great is that via Dropbox I can get to my files on Mac, PC, MacBook, iPhone, iPad and even from Linux.</p>
<p><a href="http://bit.ly/mobfox" target="_blank">MobFox</a> on the other hand is a new Ad network based in Vienna, Austria which pays an order of magnitude more than AdMob. I built their SDK and that&#8217;s why I added support for it to DTBannerManager. If you sign up with MobFox via this link then I&#8217;ll get a small percentage of your ad earnings.</p>
<p>In both cases I consider it a thank you if you visit my affiliates via these links. That&#8217;s one way of thanking me.</p>
<p>The other would be to have a service that&#8217;s relevant for us iOS developers and make me your affiliate with similar benefits as these two examples.</p>
<h3>6. Review my apps</h3>
<p>I&#8217;ve given up on trying to get blogs to write about my work long time ago. So I have a big pile of promo codes for every app of mine and this pile is getting bigger with each new version I release.</p>
<p>If you have a blog &#8211; however small &#8211; then just ask me about a promo code and you will get one. If you don&#8217;t have a blog, then you can still have a promo code if you promise to post a review on iTunes. I have to rely on your honor in this case! Many people asked me for a code but never got around to actually stating their opinion on iTunes.</p>
<p>Hey, I won&#8217;t mind, even if you give me work less than 5 stars. If that&#8217;s the truth and my app sucks than I will see it as a nudge to go back to the drawing board and improve it. On the other hand, receiving a response like this is what makes me smile.</p>
<blockquote><p>My dad owns leaflet business and I occasionally help at weekends, I have been using the breadcrumbs section of the app to track what streets i have been down and have noticed it is very accurate in recording where I have been while doing this I can periodically upload my data to my google account with ease and retrieve this information<br />
The app is very well thought out and has been a big help to me and I will continue to use this app.<br />
- <a href="http://www.cocoapedia.org/wiki/Jonathan_Heald" target="_blank">Jonathan Heald</a></p></blockquote>
<p>This review is really cool because it shows an unexpected use of my utility app <a href="http://www.cocoanetics.com/apps/geocorder/" target="_blank">GeoCorder</a>. But it does not have to use as many words, check out this other review. You don&#8217;t have to understand Italian to know that this is something favorable:</p>
<blockquote><p>Ottima applicazione!!<br />
- Riccardo Rossi</p></blockquote>
<p>Here&#8217;s another example of a good review, for <a href="http://www.cocoanetics.com/apps/speakerclock/" target="_blank">SpeakerClock</a>.</p>
<blockquote><p>I use this a lot when I teach or speak. Helps me keep the time and looks great at the same time. Educator must-have.<br />
- Chris Marquardt</p></blockquote>
<p>Leaving reviews on iTunes is in a way similar to what I wrote about about authority in web pages and about linking to my articles. If something is liked then I know that I am the right track. If something is missing then I know what to put more value on once I have some time to further development on this app.</p>
<p>In general I just love to hear your comments, because it tells you that you care about my work. Here&#8217;s the most amazing testimonial, ever. Accompanied by a photo.</p>
<blockquote><p>So cool! We&#8217;re all playing with your app in the TED office. Here&#8217;s<br />
TED&#8217;s June Cohen and Chris Anderson.</p></blockquote>
<p><a href="http://www.cocoanetics.com/files/TED_using_SpeakerClock.jpg"><img src="http://www.cocoanetics.com/files/TED_using_SpeakerClock.jpg" alt="" width="500" height="375" /></a></p>
<p>If you didn&#8217;t know, <a href="http://en.wikipedia.org/wiki/Chris_Anderson_(TED)">Chris Anderson</a> is the curator of the TED Conference and <a href="http://en.wikipedia.org/wiki/June_Cohen">June Cohen</a> the Executive Producer of TED Media.</p>
<p>You don&#8217;t have to be famous, your opinion is valuable even if you are not.</p>
<h3>7. Comment</h3>
<p>Speaking about your opinions and insights&#8230; I am just human and I cannot know everything. For the most part I am just slightly ahead of you because I&#8217;ve been developing the iOS platform since the first SDK came out and full-time for slightly more than a year.</p>
<p>Feel free to let me know about omissions or factual errors in my posts and tweets. If you have something to contribute then do so below the article that it belongs to. The advantage for you is that your comment is seen by thousands of other developers and if it is a good one then this will add to your reputation just the same.</p>
<p>If you have a blog you can also comment there in the form of a new article referencing mine. Modern blog engines like WordPress will ping my blog and this ping will show as inbound link next to the comments.</p>
<h3>8. Cocoapedia.org</h3>
<p>This is a hobby of mine, sort of a Wikipedia for facts which are of interest to the Cocoa/Mac/iOS body of knowledge. I consider it a favor if you add yourself to the Wiki and give some interesting facts. I&#8217;m also looking for volunteers to patrol new entries and add stubs for people, companies, conferences and books that fit in there.</p>
<p>Lately there where a couple of spam entries which showed even more the need of a few more admins. If you have a bit of a journalistic tendency then join me in procuring Cocoa facts. The idea is to have a place for all the knowledge that is not sufficiently relevant for Wikipedia, but highly relevant for us Cocoa developers.</p>
<p>By volunteering on Cocoapedia you can definitely get on my good side. The simplest activities you can do are:</p>
<ul>
<li>make an article for yourself</li>
<li>look at the recent changes and remove files and articles that are spam</li>
<li>add stubs for other developers, or Cocoa facts</li>
<li>link to Cocoapedia articles in your own blog posts so that your readers can quickly get facts about people or companies you mention</li>
</ul>
<p>Cocoapedia is using the MediaWiki engine which also powers Wikipedia. So by learning your way around Cocoapedia you also learn how to create and edit Wikipedia articles. Not a bad thing to have on your CV, I think.</p>
<h3>9. Open Source Social Coding</h3>
<p>Most of my code I keep close to my heart, be it my apps or my components. But every once in a while I am open-sourcing something that I feel would be of benefit to the public. Generally I would do that for projects that I have no plan to make money with or where it would be hard to achieve a level of support that&#8217;s necessary for a professional component.</p>
<p>Just recently I open-sourced my mobile report downloading app <a title="OpenSource’ing MyAppSales" href="http://www.cocoanetics.com/2011/01/opensourceing-myappsales/">MyAppSales</a> and <a title="UIWebView must die" href="http://www.cocoanetics.com/2011/01/uiwebview-must-die/">NSAttributedString+HTML</a>. You can thank me by contributing to these projects by fixing bugs and implementing features that are on the issue lists there. Just now there is a problem with downloading financial reports in MyAppSales, that would be a good way to show off your skills by fixing that.</p>
<p><img class="alignnone size-full wp-image-4755" title="Screen shot 2011-03-04 at 3.17.41 PM" src="http://www.cocoanetics.com/files/Screen-shot-2011-03-04-at-3.17.41-PM.png" alt="" width="637" height="131" /></p>
<p>Even if you don&#8217;t feel up to the task of contributing yourself, you can reuse code you find in these projects as they are BSD-licensed. It&#8217;s only required that you mention me as original author of the code you borrow. You don&#8217;t have to feel ashamed if your work is in part based on mine. Rather I consider my mission a success if my work enabled you to produce successful apps. Just give credit where credit is due.</p>
<p>If you find issues then just add them to the list of issues on GitHub. This allows other more capable developers to go in and solve the problems you found. What&#8217;s also great on GitHub is that you can fork (i.e. create a copy) of my repositories and when you are done with your changes you can send me a pull request to enable me to pull your changes into the master repository.</p>
<h3>10. Let&#8217;s network</h3>
<p>Having thousands of visitors every day and thousands of followers on twitter does not mean that there are no opportunities for us to network. Above I mentioned a great deal of ways how you can get me to notice and appreciate you. This is a good base to also build a business relationship on.</p>
<p>I <a title="State of Code" href="http://www.cocoanetics.com/2011/02/state-of-code/">recently mentioned</a> that I tend to have too much work for myself alone. But honestly I have very few people that have made an effort to earn my trust. By picking one or more of the above options you can easily get into my &#8220;inner circle&#8221;. Being there will give you even more access and accelerate your own business and learning.</p>
<p>As the iOS market grows so does the amount of opportunities. I try to keep an open mind and I am interested in your novel ideas. Let&#8217;s discuss this on Skype, record it with AudioHijack and then call it a new podcast episode.</p>
<p>I designated 2011 &#8211; the second year of my full-time iOS work &#8211; to be my social year. I am making a conscious effort of meeting my peers in person, attending meetups like the monthly get-togethers of the Cocoaheads. I plan to attend as many conferences as economically possible and sensible. A bar camp in Graz is coming up. And this might also be the first year that I will be able to afford attending WWDC.</p>
<p>To cut a long story short, I would like to meet you, in person, if at all possible. Then you can thank me personally for anything smart that you once read on Cocoanetics.com.</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=4743&amp;md5=a24cddddb044513bf0e04e729d40f65f" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2011/03/you-can-thank-me/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<atom:link rel="payment" href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=4743&amp;md5=a24cddddb044513bf0e04e729d40f65f" type="text/html" />
	</item>
		<item>
		<title>State of Code</title>
		<link>http://www.cocoanetics.com/2011/02/state-of-code/</link>
		<comments>http://www.cocoanetics.com/2011/02/state-of-code/#comments</comments>
		<pubDate>Sun, 20 Feb 2011 18:01:12 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Administrative]]></category>

		<guid isPermaLink="false">http://www.cocoanetics.com/?p=4704</guid>
		<description><![CDATA[I have to admit I am rather close to being stressed out at the moment. In this article I will try to summarize all that&#8217;s going on in my head to find a strategy or guideline as to how to deal with a good problem to have &#8220;too much work&#8221;. I made a promise to take one day off per week to recharge my batteries. Writing helps me do that and so I hope to share a few insights into my complicated brain while at the same time asking for your forgiveness if you have to queue to have me look at your code. But first, I want to show off my new battery I had put into my MacBook Pro. It&#8217;s one of the first ones that no longer has a &#8220;user serviceable battery&#8221;. I could have sent it in to an authorized Apple repair center, but instead I opted to call upon a friend of the Austrian Cocoaheads who happens to be an &#8220;authorized Apple screw-driver&#8221;. Label Buy an ad here Fresh Batteries Pepi from MacLemon installed a new battery on my MacBook Pro (Summer 2009) after I kept seeing a &#8220;Service Battery&#8221; in the status bar for quite some time. The coconutBattery tool shows how fresh it is, it has even slightly more than the design capacity at the moment. I&#8217;m certain that it will soon dip below it. Getting the old battery out was a bit of a hassle because of the Pentalope system that Apple employs inside to prevent regular people from exchanging the battery themselves. Took the better part of two hours, 3/4 of which where spent on trying to remove the final screw. The final 1/4 of the time the MacBook did not want to boot. This was &#8220;fixed&#8221; by reseating the RAM modules several times. What about my mental batteries? This morning, when I getting ready to walk the dog, I found my iPhone without charge. So I walked for one hour without a podcast to distract my mind. And boy it would have needed distraction. It kept circling about all the fires I have to put out. In an effort to preserve my sanity I am trying to take off at least one day per week from coding. Recharging if you will. Writing blog articles does not count as coding, or so I am telling myself. Dear Diary, you are the friend I never had &#8230; I should be happy about my iOS-based self-employment, but there&#8217;s a feeling of indecision that&#8217;s gnawing away on me. Once you had a bit of success in any field you always come to the crossroads where several paths lead into opposing futures. Being a one-man-show means that you will always have a fight with your schedule. There will be important customers whom have something that is more important than everything else, say, because it needs to be done before a large trade show. Long term partners need some addition programmed. Friends who hope that you can make some time to help them build apps or spend time on their projects without compensations. There are large projects that you just would need to get started on, and then write monthly invoices. And then there are all these small bugs in your own apps that are the most painful. Every bad review hurts like hell but the apps are not making enough money to warrant spending time on them as long as there are so many other projects underway. And if only I had time to continue on my rich text editing component. I&#8217;ve had like half a dozen enquiries already about when that will be available. I&#8217;m in this situation myself at this very moment. Of all the work categories I mentioned above I have one or more examples burning at this very moment. The most important question on my mind is how to prioritize all of this. For lack of any better ideas I am using money and importance to decide on the order I am tacking the projects in. An attempt at prioritization How time-critical is the work? Is there some fixed deadline that if I where not to make it would irreparably damage my long-term relationship to a customer who is willing to pay an extra premium? Next in line are projects that are long-term and that provide a recurring income. Partnerships where you share the profits be it either directly from the app store or via enterprise customers of your partners. In my case the iCatalog apps fall into this category because there I own the framework and ICS is selling this solution to catalog companies. You probably have a couple of small apps, making in the order of 10-20 Dollars a day. Not enough to retire on, but still dear to [...]]]></description>
			<content:encoded><![CDATA[<div class="plus-one-wrap"><g:plusone href="http://www.cocoanetics.com/2011/02/state-of-code/"></g:plusone></div><p>I have to admit I am rather close to being stressed out at the moment. In this article I will try to summarize all that&#8217;s going on in my head to find a strategy or guideline as to how to deal with a good problem to have &#8220;too much work&#8221;.</p>
<p>I made a promise to take one day off per week to recharge my batteries. Writing helps me do that and so I hope to share a few insights into my complicated brain while at the same time asking for your forgiveness if you have to queue to have me look at your code.</p>
<p>But first, I want to show off my new battery I had put into my MacBook Pro. It&#8217;s one of the first ones that no longer has a &#8220;user serviceable battery&#8221;. I could have sent it in to an authorized Apple repair center, but instead I opted to call upon a friend of the <a href="http://www.cocoaheads.at">Austrian Cocoaheads</a> who happens to be an &#8220;authorized Apple screw-driver&#8221;.</p>
<p><span id="more-4704"></span></p>
<div class="inner_ad_block">
<div id="advman-7" class="widget Advman_Widget">
<h3 class="widgettitle"></h3>
<p><!-- BuySellAds.com Zone Code --></p>
<div id="bsap_1260346" class="bsarocks bsap_fc3166ea4a479e0fdb4251fbe92a1219"></div>
<p><!-- End BuySellAds.com Zone Code --></div>
<div id="text-21" class="widget widget_text">
<h3 class="widgettitle">Label</h3>
<div class="textwidget">
<div class="advert-notice"><a href="http://buysellads.com/buy/detail/56639/zone/1260346">Buy an ad here</a></div>
</div></div>
</div>
<h3>Fresh Batteries</h3>
<p>Pepi from <a href="http://maclemon.at/">MacLemon</a> installed a new battery on my MacBook Pro (Summer 2009) after I kept seeing a &#8220;Service Battery&#8221; in the status bar for quite some time. The <a href="http://www.coconut-flavour.com/coconutbattery/">coconutBattery</a> tool shows how fresh it is, it has even slightly more than the design capacity at the moment. I&#8217;m certain that it will soon dip below it.</p>
<p><a href="http://www.cocoanetics.com/files/Screen-shot-2011-02-19-at-11.28.36.png"><img class="size-full wp-image-4705 alignnone" title="Coconut Battery new Battery" src="http://www.cocoanetics.com/files/Screen-shot-2011-02-19-at-11.28.36.png" alt="" width="345" height="514" /></a></p>
<p>Getting the old battery out was a bit of a hassle because of the Pentalope system that Apple employs inside to prevent regular people from exchanging the battery themselves. Took the better part of two hours, 3/4 of which where spent on trying to remove the final screw. The final 1/4 of the time the MacBook did not want to boot. This was &#8220;fixed&#8221; by reseating the RAM modules several times.</p>
<h3>What about my mental batteries?</h3>
<p>This morning, when I getting ready to walk the dog, I found my iPhone without charge. So I walked for one hour without a podcast to distract my mind. And boy it would have needed distraction. It kept circling about all the fires I have to put out.</p>
<p>In an effort to preserve my sanity I am trying to take off at least one day per week from coding. Recharging if you will. Writing blog articles does not count as coding, or so I am telling myself. Dear Diary, you are the friend I never had &#8230;</p>
<p>I should be happy about my iOS-based self-employment, but there&#8217;s a feeling of indecision that&#8217;s gnawing away on me. Once you had a bit of success in any field you always come to the crossroads where several paths lead into opposing futures.</p>
<p>Being a one-man-show means that you will always have a fight with your schedule. There will be important customers whom have something that is more important than everything else, say, because it needs to be done before a large trade show. Long term partners need some addition programmed. Friends who hope that you can make some time to help them build apps or spend time on their projects without compensations. There are large projects that you just would need to get started on, and then write monthly invoices.</p>
<p>And then there are all these small bugs in your own apps that are the most painful. Every bad review hurts like hell but the apps are not making enough money to warrant spending time on them as long as there are so many other projects underway. And if only I had time to continue on my rich text editing component. I&#8217;ve had like half a dozen enquiries already about when that will be available.</p>
<p>I&#8217;m in this situation myself at this very moment. Of all the work categories I mentioned above I have one or more examples burning at this very moment. The most important question on my mind is how to prioritize all of this. For lack of any better ideas I am using money and importance to decide on the order I am tacking the projects in.</p>
<h3>An attempt at prioritization</h3>
<p>How<strong> time-critical</strong> is the work? Is there some fixed deadline that if I where not to make it would irreparably damage my long-term relationship to a customer who is willing to pay an extra premium?</p>
<p>Next in line are projects that are long-term and that provide a <strong>recurring</strong> income. Partnerships where you share the profits be it either directly from the app store or via enterprise customers of your partners. In my case the iCatalog apps fall into this category because there I own the framework and ICS is selling this solution to catalog companies.</p>
<p>You probably have a couple of small apps, making in the order of 10-20 Dollars a day. Not enough to retire on, but still <strong>dear to your heart</strong>. Now it is time to spend a couple of hours polishing out the bugs that are a burden for your image. The apps in your portfolio might just be a playing ground to try out new technologies in. They cannot be much more if you cannot sustain yourself on them alone. But any bug that causes tons of negative reviews being written should be fixed because 1) it will ease your mind and 2) it is good for your image as a developer who cares for the quality of his code.</p>
<p>And then there&#8217;s always some work where you don&#8217;t make any money on at all. Open Source software that you are basing your commercial products on. Like the NSAttributedStrings+HTML project I open sourced while developing a rich text editor on top of it. I won&#8217;t ever make any money on the OSS part. Still this is important because projects like this and MyAppSales are benefitting my reputation. And truth be told, my customer ELO and my partner ICS found me because of them.</p>
<p><strong>Short-term contracts</strong> and consulting work might cause some invoices to be written, but you can only take on these projects if there the long-term stuff is satisfied. If I troubleshoot an app then this will provide a bit of cash in the short-term but I won&#8217;t make anything on the app if it sells well. In work overload times like I am experiencing right now you will have to not accept such work or tell them to call you in 2 weeks or a month. When you start to work in iOS development this kind of work will be your lion&#8217;s share. But down the road, in my case after just one year of doing this full time, you will have to see that your own business grows first and foremost.</p>
<p>Finally there are the mostly egotistical things like writing lengthy blog posts like this one. Be it something philosophical or about some new iOS programming API I found out how to use, I am writing those for my own benefit for the most part. Yes, I am making a couple of bucks on the side via paid ads and Flattr, but not nearly enough to be able to claim that I am making money with my <strong>writing</strong>. Still, this is the only reason why around 1100 unique people come to my site every day.</p>
<p><strong>So sorry&#8230;</strong></p>
<p>I have to ask quite a few people for forgiveness these days:</p>
<p>Dear purchasers of my apps, I am sorry for not having the time to instantly fix all bugs. I understand that you are angry if LuckyWheel does not work properly on iOS 4.x, but please understand this: it will be some time before I can fix bugs like this since my apps are but a minor part of my income.</p>
<p>Dear partners, I am sorry for having to ask you to give me a bit extra time due to something more important that I need to get off my plate before looking at our project. We&#8217;ve been partners for so long, I promise you, that you are next in line.</p>
<p>Dear readers, I wish I had the time to write all the articles I have on my mind. If only you flattr&#8217;ed more or sent me more money&#8230; just kidding, that would probably not change much, as I still need to work on the more important projects to keep my income alive. I promise that I will try to blog more interesting articles as soon as I have a bit of time.</p>
<p>Dear friends, I am sorry that I cannot help you with your stuff for free at the moment. I&#8217;d love to play with you in our iOS dev sandbox, but unfortunately there&#8217;s a long and serious queue in front of you. If you are a true friend, then you&#8217;ll understand my situation. Next chance I get I&#8217;ll make myself available for you once more.</p>
<p>Dear owners of troubled apps. I am saddened by the fact that I don&#8217;t find myself able to make you happy as well. I hate to be sending you away, but there are other able iOS developers out there who probably can do as good or better a job of fixing your memory leaks. If you cannot find one, then you can still appeal to my ego in one more or so. Maybe then I can sell you a couple hours of consulting time.</p>
<h3>The real crossroads</h3>
<p>Everybody needs to make a decision sooner or later in his life what kind of work suits his interest the most. I am not talking about deciding on whether or not to do iOS development, that&#8217;s a no-brainer. I am referring to the decision that most HR people are mentioning to prospective employees in companies around the globe: do you want to be <strong>expert or manager</strong>.</p>
<p>The <a href="http://en.wikipedia.org/wiki/Peter_Principle">Peter Principle</a> states that you will always rise to a level in an organization until further promotion would cause you to be incompetent. I suspect that organization in the context of self-employment does not need to mean that I can never be promoted. In fact I could always promote myself into a management position and instead let other experts to &#8220;the real work&#8221;.</p>
<p>But this is my real problem: I keep bouncing into this limitation of the maximum work that a single individual can accomplish. This prompts me to think that I would either require some employees to take on some of the workload. This would effectively promote me into a management position at which I would be highly incompetent. Peter Principle at work.</p>
<p>Would it make sense to stretch my limits? Other self-employed people (read: start-ups) are working way more than I am. It is rare that I can get in more than 8 hours of coding done in one day. If I sit down more than this, then my mood dramatically deteriorates, my eyes begin to burn and I find that I cannot clear my head at the end of the day. The suffering that this would impose on myself and &#8211; by extension &#8211; my wife and pets cannot be worth it.</p>
<p>This year I&#8217;ll be turning 37 and I suspect that the rule of thirds is around my natural physical and psychological limit. A third of the day is required for sleeping. A third should be spent concentrated on work. And a third should be non-work active time. Playing, spending time with family and everything else that is good for your soul.</p>
<p>I need to conserve my energies and brain power because I am not a teen or twen any more. My start-up train has sailed.</p>
<p>So I cannot work more. Or more precisely, I could work more, but the negatives would outweigh the benefits. And I cannot leverage other people&#8217;s work being my employees. Not just because I would be incompetent at leading them. Possibly I could develop these skills. But I simply cannot afford the risk of hiring somebody when the current income just barely fits my own needs. I have not just one mortgage to pay, I&#8217;ve got two.</p>
<p>Somebody on twitter suggested more partnerships. While those are at the core of several of my business endeavors already I don&#8217;t see it likely that somebody might turn up and tell me &#8220;hey Oliver, I want to work on your apps for free if you share 50% of the profits with me&#8221;. That would be something &#8230; who in his right mind would want to work on my apps for 100-200 Dollars per month. Not likely.</p>
<p>So what should I do about projects that people approach me with that I don&#8217;t have time for. Honestly I have trust issues. If I am forwarding a project to you, how can I know that you will be able to bring the project to a successful conclusion? I don&#8217;t know you personally. I don&#8217;t know what quality code you write. I don&#8217;t know about your skills dealing with difficult customers. Do you know this feeling? If you want something done right, you better do it yourself?</p>
<p>There&#8217;s also a language barrier. The majority of projects that landed on my desk recently is by German-language people and project descriptions are in German as well. That might be because German-speaking Central Europeans have little (positive) experience with outsourcing development work internationally. We see Eastern Europe as an enemy for our standard of living. Lot&#8217;s of cheap labour threatening to take our jobs away. Even cheaper is work in India, Israel and China, but these are seen less as a threat because they are so far away. In short the dilemma is this: if you speak German, you are probably too expensive. If not, then you&#8217;ll already fail at reading the project spec.</p>
<p>This is the reason why I am rejecting such projects at present and why I am not trying to make money on passing them on. If I were to take the approx. $1000 dollars in referral fee for a medium-sized project I fear that I would feel liable if it becomes a failure.</p>
<h3>Strategy forthcoming?</h3>
<p>Please forgive me if this article sounds like I am complaining or whining. I guess I am doing that a bit. But hey, I told you before that I am writing mostly for my own benefit. In this case to clear my head and try to come up with a creative solution to the &#8220;too much work&#8221; dilemma.</p>
<p>If there&#8217;s any conclusion to arrive at then only that I am keeping my eyes open for potential partnerships and deals where I have a long-term income from. At the same time I will continue to gradually raise my hourly rate as to reduce the demand for my consulting and contracting skills.</p>
<p>People say that this is a good problem to have. Here&#8217;s to hoping that they are right.</p>
<p>If you have any kind of smart ideas how you would deal with my situation let me know in the comments.</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=4704&amp;md5=16c78239779a74809f7bba42e3435715" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2011/02/state-of-code/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<atom:link rel="payment" href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=4704&amp;md5=16c78239779a74809f7bba42e3435715" type="text/html" />
	</item>
		<item>
		<title>Color Math</title>
		<link>http://www.cocoanetics.com/2011/02/color-math/</link>
		<comments>http://www.cocoanetics.com/2011/02/color-math/#comments</comments>
		<pubDate>Tue, 01 Feb 2011 13:48:29 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Administrative]]></category>

		<guid isPermaLink="false">http://www.cocoanetics.com/?p=4684</guid>
		<description><![CDATA[For my Rich Text Editing component I wanted selections to look like the Apple originals. So I made a screenshot of some editing action and inspected it in Photoshop to find out how they are drawn. Visually there are two options: either the selection boxes are drawn behind the text not affecting it, or they are layered on top of the text.  Because the selection also changes the color values of the black text it must be the latter. It&#8217;s on top. In this article I&#8217;ll try to figure out the math so that I can calculate the original blue and alpha value used. We will see that it is orders of magnitude easier to do if we know the result of blending this color over white and black than two arbitrary ones. Label Buy an ad here Assuming that a normal blend mode is used the math to compose two pixels and their alpha is according to Wikipedia. So we basically diminish the pixel color by the inverse of the alpha and add the new color of the blended pixel. Ok, that&#8217;s not too difficult. Using the color dropper tool we find these values to be the the result of the blending: Color + Black = Rb: 0 (0.000), Gb: 17 (0.067), Bb: 34 (0.133) Color + White = Rw: 203 (0.796), Gw: 221 (0.867), Bw: 238 (0.933) Calculating Original Color I turned to twitter for help and Andy Durdin from Edinburgh responded with the appropriate equations while standing and waiting for a bus. Ro = Red of Original Color Rw = Red Value from blending Ro with White Rb = Red Value from blending Ro with Black A = Alpha Changing the formulas to look like the on quote above: Rw = (1 &#8211; A) * 1 + A * Ro Rb =  (1 &#8211; A) * 0 + A * Ro Now my algebra is quite weak, but with Andy&#8217;s help I figured out Rb = A * Ro Rw = 1 &#8211; A + Rb and then add A to and subtract Rw from both sides. A = 1 + Rb &#8211; Rw Ro = Rb / A So lets substitute the Red values and see what we get as a result: A = 1 + 0 &#8211; 0.796 = 0.204 Ro = 0 / 0.2 = 0 Go = 0.067 / 0.2 = 0.338 Bo = 0.133 / 0.2 = 0.652 Lo and behold, the color we get matches exactly! Being curious I asked Andy if this solving technique would work for any two arbitrary colors as well. Somehow I suspected that having black in there might make the whole way simpler because the multiplication with 0 reliminates a big chunk of one of the two equations. The answer is yes. If alpha is involved we always have two unknowns to solve for. You always require the same number of simultaneous equations as you have unknowns. Bonus: Arbitrary Colors Andy sat down and flexed his iron math muscles a bit more. A solid color C0 is blended with alpha A over two other colors C1, C2. The blend with C1 produces color C3, and the blend with C2 produces color C4. Considering only the red channels (r0 = red channel of c0), we have: R3 = A * R0 + (1 &#8211; A) * R1 R4 = A * R0 + (1 &#8211; A) * R2 If we only know C1, C2, C3, C4, we can solve for C0 and a. Again, considering just the red channels, a solution is: s = (R2 &#8211; R1) / (R4 &#8211; R2) R0 = (R2 * s &#8211; R1) / (s &#8211; 1) A = (R4 &#8211; R2) / (R0 &#8211; R2) s is used just to make the equation for r0 more readable. Andy&#8217;s conclusion: &#8220;This is a solution, and it works, but I&#8217;m not very happy with it. With some colors it is extremely sensitive to the rounding errors in the colour values.&#8221; So, yes, it&#8217;s possible, but not very feasible to try to get the original color and alpha when it&#8217;s blended with two arbitrary colors. So generally we&#8217;ll stick with white and black if we want to find out what original colors Apple is using for certain UI elements.]]></description>
			<content:encoded><![CDATA[<div class="plus-one-wrap"><g:plusone href="http://www.cocoanetics.com/2011/02/color-math/"></g:plusone></div><p>For my <a href="http://www.cocoanetics.com/2011/01/rich-text-editing-on-ios">Rich Text Editing component</a> I wanted selections to look like the Apple originals. So I made a screenshot of some editing action and inspected it in Photoshop to find out how they are drawn.</p>
<p><a href="http://www.cocoanetics.com/files/Selection.jpg"><img class="alignnone size-full wp-image-4685" title="Selection" src="http://www.cocoanetics.com/files/Selection.jpg" alt="" width="190" height="96" /></a></p>
<p>Visually there are two options: either the selection boxes are drawn behind the text not affecting it, or they are layered on top of the text.  Because the selection also changes the color values of the black text it must be the latter. It&#8217;s on top.</p>
<p>In this article I&#8217;ll try to figure out the math so that I can calculate the original blue and alpha value used. We will see that it is orders of magnitude easier to do if we know the result of blending this color over white and black than two arbitrary ones.</p>
<p><span id="more-4684"></span></p>
<div class="inner_ad_block">
<div id="advman-7" class="widget Advman_Widget">
<h3 class="widgettitle"></h3>
<p><!-- BuySellAds.com Zone Code --></p>
<div id="bsap_1260346" class="bsarocks bsap_fc3166ea4a479e0fdb4251fbe92a1219"></div>
<p><!-- End BuySellAds.com Zone Code --></div>
<div id="text-21" class="widget widget_text">
<h3 class="widgettitle">Label</h3>
<div class="textwidget">
<div class="advert-notice"><a href="http://buysellads.com/buy/detail/56639/zone/1260346">Buy an ad here</a></div>
</div></div>
</div>
<p>Assuming that a normal blend mode is used the math to compose two pixels and their alpha is <a href="http://en.wikipedia.org/wiki/Alpha_compositing">according to Wikipedia</a>.</p>
<p><a href="http://www.cocoanetics.com/files/ee1a266894a3b625e4b6edeb4420f960.png"><img class="alignnone size-full wp-image-4686" title="Alpha Formula" src="http://www.cocoanetics.com/files/ee1a266894a3b625e4b6edeb4420f960.png" alt="" width="288" height="21" /></a></p>
<p>So we basically diminish the pixel color by the inverse of the alpha and add the new color of the blended pixel. Ok, that&#8217;s not too difficult.</p>
<p>Using the color dropper tool we find these values to be the the result of the blending:</p>
<p>Color + Black = Rb: 0 (0.000), Gb: 17 (0.067), Bb: 34 (0.133)<br />
Color + White = Rw: 203 (0.796), Gw: 221 (0.867), Bw: 238 (0.933)</p>
<h3>Calculating Original Color</h3>
<p>I turned to twitter for help and <a href="http://twitter.com/adurdin">Andy Durdin</a> from Edinburgh <a href="https://twitter.com/adurdin/status/32351212519030784">responded</a> with the appropriate equations while standing and waiting for a bus.</p>
<p>Ro = Red of Original Color<br />
Rw = Red Value from blending Ro with White<br />
Rb = Red Value from blending Ro with Black<br />
A = Alpha</p>
<p>Changing the formulas to look like the on quote above:</p>
<p>Rw = (1 &#8211; A) * 1 + A * Ro<br />
Rb =  (1 &#8211; A) * 0 + A * Ro</p>
<p>Now my algebra is quite weak, but with Andy&#8217;s help I figured out</p>
<p>Rb = A * Ro<br />
Rw = 1 &#8211; A + Rb</p>
<p>and then add A to and subtract Rw from both sides.</p>
<p>A = 1 + Rb &#8211; Rw<br />
Ro = Rb / A</p>
<p>So lets substitute the Red values and see what we get as a result:</p>
<p>A = 1 + 0 &#8211; 0.796 = 0.204<br />
Ro = 0 / 0.2 = 0<br />
Go = 0.067 / 0.2 = 0.338<br />
Bo = 0.133 / 0.2 = 0.652</p>
<p>Lo and behold, the color we get matches exactly!</p>
<p><a href="http://www.cocoanetics.com/files/Screen-shot-2011-02-01-at-11.17.50-AM.png"><img class="alignnone size-full wp-image-4687" title="Selection" src="http://www.cocoanetics.com/files/Screen-shot-2011-02-01-at-11.17.50-AM.png" alt="" width="262" height="105" /></a></p>
<p>Being curious I asked Andy if this solving technique would work for any two arbitrary colors as well. Somehow I suspected that having black in there might make the whole way simpler because the multiplication with 0 reliminates a big chunk of one of the two equations. The answer is yes. If alpha is involved we always have two unknowns to solve for. You always require the same number of <a href="http://en.wikipedia.org/wiki/Simultaneous_equations">simultaneous equations</a> as you have unknowns.</p>
<h3>Bonus: Arbitrary Colors</h3>
<p>Andy sat down and flexed his iron math muscles a bit more. <img src='http://www.cocoanetics.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>A solid color C0 is blended with alpha A over two other colors C1, C2. The blend with C1 produces color C3, and the blend with C2 produces color C4.</p>
<p>Considering only the red channels (r0 = red channel of c0), we have:</p>
<p>R3 = A * R0 + (1 &#8211; A) * R1<br />
R4 = A * R0 + (1 &#8211; A) * R2</p>
<p>If we only know C1, C2, C3, C4, we can solve for C0 and a. Again, considering just the red channels, a solution is:</p>
<p>s = (R2 &#8211; R1) / (R4 &#8211; R2)<br />
R0 = (R2 * s &#8211; R1) / (s &#8211; 1)<br />
A = (R4 &#8211; R2) / (R0 &#8211; R2)</p>
<p>s is used just to make the equation for r0 more readable.</p>
<p>Andy&#8217;s conclusion: <em>&#8220;This is a solution, and it works, but I&#8217;m not very happy with it. With some colors it is extremely sensitive to the rounding errors in the colour values.&#8221;</em></p>
<p>So, yes, it&#8217;s possible, but not very feasible to try to get the original color and alpha when it&#8217;s blended with two arbitrary colors. So generally we&#8217;ll stick with white and black if we want to find out what original colors Apple is using for certain UI elements.</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=4684&amp;md5=2b8e6be602fd194c005d51a612fcc36b" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2011/02/color-math/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<atom:link rel="payment" href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=4684&amp;md5=2b8e6be602fd194c005d51a612fcc36b" type="text/html" />
	</item>
		<item>
		<title>iTunes Connect Closed</title>
		<link>http://www.cocoanetics.com/2010/12/itunes-connect-closed/</link>
		<comments>http://www.cocoanetics.com/2010/12/itunes-connect-closed/#comments</comments>
		<pubDate>Mon, 27 Dec 2010 15:01:25 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Administrative]]></category>

		<guid isPermaLink="false">http://www.cocoanetics.com/?p=4525</guid>
		<description><![CDATA[iTunes Connect is closed until December 29th. This means: No new app submissions or update submissions No sales stats or reports No ranking info &#8230; from Apple or their sites. Label Buy an ad here We&#8217;re taking a bit of a breather ourselves, the most coding I did personally was implement tracking support in GeoCorder for Google Latitude and Crossingways. A bit of a hobby of mine because I can test the tracking when I am moving around. But even joyous things like sending out invoices are on hold because I don&#8217;t enter my home office. But I promise I&#8217;ll send them out December 29th. When Apple reopens so will we to take the turn of the year in full swing with updates for iWoman and GeoCorder.]]></description>
			<content:encoded><![CDATA[<div class="plus-one-wrap"><g:plusone href="http://www.cocoanetics.com/2010/12/itunes-connect-closed/"></g:plusone></div><p>iTunes Connect is closed until December 29th.</p>
<p><img class="alignnone size-full wp-image-4526" title="holiday-closed" src="http://www.cocoanetics.com/files/holiday-closed.png" alt="" width="166" height="118" /></p>
<p>This means:</p>
<ul>
<li>No new app submissions or update submissions</li>
<li>No sales stats or reports</li>
<li>No ranking info</li>
</ul>
<p>&#8230; from Apple or their sites.</p>
<p><span id="more-4525"></span></p>
<div class="inner_ad_block">
<div id="advman-7" class="widget Advman_Widget">
<h3 class="widgettitle"></h3>
<p><!-- BuySellAds.com Zone Code --></p>
<div id="bsap_1260346" class="bsarocks bsap_fc3166ea4a479e0fdb4251fbe92a1219"></div>
<p><!-- End BuySellAds.com Zone Code --></div>
<div id="text-21" class="widget widget_text">
<h3 class="widgettitle">Label</h3>
<div class="textwidget">
<div class="advert-notice"><a href="http://buysellads.com/buy/detail/56639/zone/1260346">Buy an ad here</a></div>
</div></div>
</div>
<p>We&#8217;re taking a bit of a breather ourselves, the most coding I did personally was implement tracking support in GeoCorder for <a href="http://www.google.com/latitude">Google Latitude</a> and <a href="http://www.crossingways.com">Crossingways</a>. A bit of a hobby of mine because I can test the tracking when I am moving around.</p>
<p>But even joyous things like sending out invoices are on hold because I don&#8217;t enter my home office. But I promise I&#8217;ll send them out December 29th. When Apple reopens so will we to take the turn of the year in full swing with updates for iWoman and GeoCorder.</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=4525&amp;md5=9df55d171020f4ddfdf5918edd3d466c" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2010/12/itunes-connect-closed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=4525&amp;md5=9df55d171020f4ddfdf5918edd3d466c" type="text/html" />
	</item>
		<item>
		<title>New Design!</title>
		<link>http://www.cocoanetics.com/2010/12/new-design/</link>
		<comments>http://www.cocoanetics.com/2010/12/new-design/#comments</comments>
		<pubDate>Fri, 17 Dec 2010 08:01:59 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Administrative]]></category>

		<guid isPermaLink="false">http://www.cocoanetics.com/?p=4342</guid>
		<description><![CDATA[A while back I announced some changes for my iOS business and website. First there was the new name &#8220;Cocoanetics&#8221; to replace the ill-fated &#8220;Dr. Touch&#8221;. Next there had to be a new design. Something professional. Something easy to read so that you have fun every time you return to the site. After asking around a bit I found Jermemiah Tolbert of Clockpunk Studios who took my by the hand and made this wonderful new WordPress template. When working with Jeremiah he took charge of the design with me defining some base rules that I wanted to have incorporated: Be a delightful reading experience. A readable font, amble spacing. Let my tutorials and recipes shine. No sidebar distracting from the contents, so we had to put navigation at the top. Have some spots where advertisements would be placed automatically, right now I had to do all the ad inserting by hand Working with a seasoned WP-Pro got me some pretty innovative solutions for a previously tedious work-flow. Label Buy an ad here My website &#8211; besides being the place where I publish educational articles &#8211; has to be a showcase of my products. Those are either apps that I have on the app store or components that I am selling via my parts store. Right now I have individual pages for my apps and a long list for my parts. Not very nice to manage. Jeremiah suggested to have custom taxonomies for the components and the apps. What this does is I basically have two new post type that are neither article nor page. With these I can create one app post per app and one part post per component. For apps I can also set the iTunes app store URL, and both have the features image. I can also categorize apps and parts. So I might specify drobnik.com as category for my own apps and contract for apps that I made for somebody else. Now if I set the app store URL I automatically get the available on the app store button leading there. Pretty nifty! The other thing that this makes possible is to have a front page where I can feature different apps and parts and posts. I haven&#8217;t enabled this yet, because first I needed to set up all the apps and parts. I had my icons polished up in 150 x 150 and I need to spend a bit of effort to write something about each app that is worth more than just the app store description. There&#8217;s another cool features that automates something previously tedious. On the left side of each app page there is a list of links to articles that have a tag by the same name. This allows me to tag posts about new versions and have this list be populated automatically. Here&#8217;s the first benefit you don&#8217;t get on iTunes: proper release notes, magically linked. The other thing that I will be doing with these is to have like two or three introductory paragraphs for apps/parts, then the MORE tag and then a more detailed description, possibly with a video demo. Then I can simply specify to feature certain apps in my template settings and you will see the icon and app store link right on the wrong page, with a more button leading to the individual page. Having this taxonomy will also allow for some other great automatic things. More on that next year, unfortunately Jeremiah has way to many customers to be only working for me. All in all I can say I&#8217;m pretty proud of what&#8217;s been achieved, nothing beats having your own logo and site design made by a professional. Note to advertisers: we have about 1000 unique visitors per day looking for solutions to iOS development-related topics. If you are interested in advertising your apps or services please contact us! Anybody paying better than Google Adsense has a chance. You should consider the current state of the site sort of a soft launched BETA version. I encourage you to leave feedback regarding glitches that you find in the comments so that we can have them looked at.]]></description>
			<content:encoded><![CDATA[<div class="plus-one-wrap"><g:plusone href="http://www.cocoanetics.com/2010/12/new-design/"></g:plusone></div><p>A while back I announced some changes for my iOS business and website. First there was the new name &#8220;Cocoanetics&#8221; to replace the ill-fated &#8220;Dr. Touch&#8221;. Next there had to be a new design. Something professional. Something easy to read so that you have fun every time you return to the site.</p>
<p>After asking around a bit I found Jermemiah Tolbert of <a href="http://www.clockpunkstudios.com">Clockpunk Studios</a> who took my by the hand and made this wonderful new WordPress template. When working with Jeremiah he took charge of the design with me defining some base rules that I wanted to have incorporated:</p>
<ul>
<li>Be a <strong>delightful reading experience</strong>. A readable font, amble spacing. Let my tutorials and recipes shine.</li>
<li><strong>No sidebar</strong> distracting from the contents, so we had to put navigation at the top.</li>
<li>Have some spots where <strong>advertisements</strong> would be placed automatically, right now I had to do all the ad inserting by hand</li>
</ul>
<p>Working with a seasoned WP-Pro got me some pretty innovative solutions for a previously tedious work-flow.<br />
<span id="more-4342"></span></p>
<div class="inner_ad_block">
<div id="advman-7" class="widget Advman_Widget">
<h3 class="widgettitle"></h3>
<p><!-- BuySellAds.com Zone Code --></p>
<div id="bsap_1260346" class="bsarocks bsap_fc3166ea4a479e0fdb4251fbe92a1219"></div>
<p><!-- End BuySellAds.com Zone Code --></div>
<div id="text-21" class="widget widget_text">
<h3 class="widgettitle">Label</h3>
<div class="textwidget">
<div class="advert-notice"><a href="http://buysellads.com/buy/detail/56639/zone/1260346">Buy an ad here</a></div>
</div></div>
</div>
<p>My website &#8211; besides being the place where I publish educational articles &#8211; has to be a showcase of my products. Those are either apps that I have on the app store or components that I am selling via my parts store. Right now I have individual pages for my apps and a long list for my parts. Not very nice to manage.</p>
<p>Jeremiah suggested to have custom taxonomies for the components and the apps. What this does is I basically have two new post type that are neither article nor page. With these I can create one app post per app and one part post per component. For apps I can also set the iTunes app store URL, and both have the features image. I can also categorize apps and parts. So I might specify drobnik.com as category for my own apps and contract for apps that I made for somebody else. Now if I set the app store URL I automatically get the available on the app store button leading there. Pretty nifty!</p>
<p>The other thing that this makes possible is to have a front page where I can feature different apps and parts and posts. I haven&#8217;t enabled this yet, because first I needed to set up all the apps and parts. I had my icons polished up in 150 x 150 and I need to spend a bit of effort to write something about each app that is worth more than just the app store description.</p>
<p>There&#8217;s another cool features that automates something previously tedious. On the left side of each app page there is a list of links to articles that have a tag by the same name. This allows me to tag posts about new versions and have this list be populated automatically. Here&#8217;s the first benefit you don&#8217;t get on iTunes: proper release notes, magically linked.</p>
<p>The other thing that I will be doing with these is to have like two or three introductory paragraphs for apps/parts, then the MORE tag and then a more detailed description, possibly with a video demo. Then I can simply specify to feature certain apps in my template settings and you will see the icon and app store link right on the wrong page, with a more button leading to the individual page.</p>
<p>Having this taxonomy will also allow for some other great automatic things. More on that next year, unfortunately Jeremiah has way to many customers to be only working for me. <img src='http://www.cocoanetics.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' />  All in all I can say I&#8217;m pretty proud of what&#8217;s been achieved, nothing beats having your own logo and site design made by a professional.</p>
<p><span style="color: #ff0000;">Note to advertisers: <span style="color: #000000;">we have about 1000 unique visitors per day looking for solutions to iOS development-related topics. If you are interested in advertising your apps or services please contact us! Anybody paying better than Google Adsense has a chance.</span></span></p>
<p>You should consider the current state of the site sort of a soft launched BETA version. I encourage you to leave feedback regarding glitches that you find in the comments so that we can have them looked at.</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=4342&amp;md5=49ec85590d017338e741b87006276bba" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2010/12/new-design/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<atom:link rel="payment" href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=4342&amp;md5=49ec85590d017338e741b87006276bba" type="text/html" />
	</item>
		<item>
		<title>Transfer of Subversion Repositories</title>
		<link>http://www.cocoanetics.com/2010/12/transfer-of-subversion-repositories/</link>
		<comments>http://www.cocoanetics.com/2010/12/transfer-of-subversion-repositories/#comments</comments>
		<pubDate>Wed, 01 Dec 2010 15:23:23 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Administrative]]></category>

		<guid isPermaLink="false">http://touch.drobnik.com/?p=4181</guid>
		<description><![CDATA[You might have noticed that your SVN access to components repositories does not work any more. As of today our old Subversion server has been turned off. It has served me well, but it was a VisualSVN on top of a virtual Windows NET and thus somewhat a pain to maintain. The new hardware is a dedicated machine with CentOS and proper backup procedures. Previously I had to rely on some file-based backup scheme, now the are regularly saving SVN backups to a second server. Having a quad-CPU dedicated server with 750 GB RAID HDD gives us way more room to grow than we previously had on a 7 GB HDD virtual Windows server. If you are a customer of one or more of our components then look for an e-mail informing you about new access details. Cocoanetics Component Charts In order to be able to send out these mails I had to go through my invoices and compile a list of customers for each component. In spirit of reusability of data let me show you how many sales I&#8217;ve had per component. Label Buy an ad here This is the same order that I will inform the customers in. DTAboutViewController (15) DTAugmentedRealityController (15) DTNotePadViewController (14) DTPurchaseButton (14) DTClusterMaker (11) DTPinLockController (10) DTBannerManager (10) DTCalendarView (10) DTMenuController (9) DTLEDNumberView (8) DTSplashExtender (7) DTVideoEncoder (6) DTCustomSwitch (5) DTChartView (2) DTMeasureStrip (1) It&#8217;s more than I would have guessed. Thank you, dear customers, for proving that selling components as source is a viable modus operandi. Cocoapedia While I was at it, I also created a page each on Cocoapedia for all these components. If you use those components in your apps you should list them there. It&#8217;s a win-win for both of us: people might get your app because of this. If you have not done so yet, please add yourself to the Cocoapedia. There are so many interesting facts and biographies in there already, so you will be in good company of geniuses. Read my introduction of Cocoapedia. Cocoapedia is free of ads and free to use, please support it through your input. Forums are back! While this blog was still named the Dr. Touch Blog I once experimented with a forum plugin. But hardly anybody wanted to write in there. So I disabled it again. Now that it is all named differently and on a new domain I figured I use this opportunity of subversion move to reinstate the forums. The goal is to make the implementation help I&#8217;m providing to new component customers visible to everybody existing and future customers alike. Also peers might be interested in supporting each other, teaching us better ways to implement features. Everybody can view, but you must be registered to write. I made one forum per component so that people already using the part have a place where they can discuss its usage with peers. Since this is a proper Linux server now you should be able to use your OpenID to log in. The same login works for the site as does for the forum. I hope to be answering implementation questions in the forums from now on so that other people get their questions answered at the same time. New Design Speaking of changes, I have hired Clockpunk Studios to make me a new site design. So please forgive the mess that some parts of the site are currently in. Like on the Forum page the sidebar is somewhat annoying, but the current theme has no option to get rid of it. I&#8217;m really looking forward to the new design. It will give us the ability to feature apps and components on the front page and will make reading my instructive blog post pleasurable.]]></description>
			<content:encoded><![CDATA[<div class="plus-one-wrap"><g:plusone href="http://www.cocoanetics.com/2010/12/transfer-of-subversion-repositories/"></g:plusone></div><p>You might have noticed that your SVN access to components repositories does not work any more. As of today our old Subversion server has been turned off.</p>
<p>It has served me well, but it was a VisualSVN on top of a virtual Windows NET and thus somewhat a pain to maintain. The new hardware is a dedicated machine with CentOS and proper backup procedures. Previously I had to rely on some file-based backup scheme, now the are regularly saving SVN backups to a second server. Having a quad-CPU dedicated server with 750 GB RAID HDD gives us way more room to grow than we previously had on a 7 GB HDD virtual Windows server.</p>
<p>If you are a customer of one or more of our components then look for an e-mail informing you about new access details.</p>
<h3>Cocoanetics Component Charts</h3>
<p>In order to be able to send out these mails I had to go through my invoices and compile a list of customers for each component. In spirit of reusability of data let me show you how many sales I&#8217;ve had per component.</p>
<p><span id="more-4181"></span></p>
<div class="inner_ad_block">
<div id="advman-7" class="widget Advman_Widget">
<h3 class="widgettitle"></h3>
<p><!-- BuySellAds.com Zone Code --></p>
<div id="bsap_1260346" class="bsarocks bsap_fc3166ea4a479e0fdb4251fbe92a1219"></div>
<p><!-- End BuySellAds.com Zone Code --></div>
<div id="text-21" class="widget widget_text">
<h3 class="widgettitle">Label</h3>
<div class="textwidget">
<div class="advert-notice"><a href="http://buysellads.com/buy/detail/56639/zone/1260346">Buy an ad here</a></div>
</div></div>
</div>
<p>This is the same order that I will inform the customers in.</p>
<ol>
<li><a href="http://www.cocoapedia.org/wiki/DTAboutViewController">DTAboutViewController</a> (15)</li>
<li><a href="http://www.cocoapedia.org/wiki/DTAugmentedRealityController">DTAugmentedRealityController</a> (15)</li>
<li><a href="http://www.cocoapedia.org/wiki/DTNotePadViewController">DTNotePadViewController</a> (14)</li>
<li><a href="http://www.cocoapedia.org/wiki/DTPurchaseButton">DTPurchaseButton</a> (14)</li>
<li><a href="http://www.cocoapedia.org/wiki/DTClusterMaker">DTClusterMaker</a> (11)</li>
<li><a href="http://www.cocoapedia.org/wiki/DTPinLockController">DTPinLockController</a> (10)</li>
<li><a href="http://www.cocoapedia.org/wiki/DTBannerManager">DTBannerManager</a> (10)</li>
<li><a href="http://www.cocoapedia.org/wiki/DTCalendarView">DTCalendarView</a> (10)</li>
<li><a href="http://www.cocoapedia.org/wiki/DTMenuController">DTMenuController</a> (9)</li>
<li><a href="http://www.cocoapedia.org/wiki/DTLEDNumberView">DTLEDNumberView</a> (8)</li>
<li><a href="http://www.cocoapedia.org/wiki/DTSplashExtender">DTSplashExtender</a> (7)</li>
<li><a href="http://www.cocoapedia.org/wiki/DTVideoEncoder">DTVideoEncoder</a> (6)</li>
<li><a href="http://www.cocoapedia.org/wiki/DTCustomSwitch">DTCustomSwitch</a> (5)</li>
<li><a href="http://www.cocoapedia.org/wiki/DTChartView">DTChartView</a> (2)</li>
<li><a href="http://www.cocoapedia.org/wiki/DTMeasureStrip">DTMeasureStrip</a> (1)</li>
</ol>
<p>It&#8217;s more than I would have guessed. Thank you, dear customers, for proving that selling components as source is a viable modus operandi.</p>
<h3><a href="http://www.cocoanetics.com/files/wiki-3.png"><img class="alignright size-full wp-image-3113" title="Cocoapedia Logo" src="http://touch.drobnik.com/files/wiki-3.png" alt="" width="135" height="135" /></a>Cocoapedia</h3>
<p>While I was at it, I also created a page each on Cocoapedia for all these components. If you use those components in your apps you should list them there. It&#8217;s a win-win for both of us: people might get your app because of this.</p>
<p>If you have not done so yet, please add yourself to the <a href="http://www.cocoapedia.org">Cocoapedia</a>. There are so many interesting facts and biographies in there already, so you will be in good company of geniuses. Read my introduction of <a href="http://www.cocoanetics.com/2010/10/cocoapedia/">Cocoapedia</a>.</p>
<p>Cocoapedia is free of ads and free to use, please support it through your input.</p>
<h3>Forums are back!</h3>
<p>While this blog was still named the Dr. Touch Blog I once experimented with a forum plugin. But hardly anybody wanted to write in there. So I disabled it again.</p>
<p>Now that it is all named differently and on a new domain I figured I use this opportunity of subversion move to reinstate the <a href="http://www.cocoanetics.com/forum/">forums</a>. The goal is to make the implementation help I&#8217;m providing to new component customers visible to everybody existing and future customers alike. Also peers might be interested in supporting each other, teaching us better ways to implement features.</p>
<p>Everybody can view, but you must be registered to write. I made one forum per component so that people already using the part have a place where they can discuss its usage with peers.</p>
<p>Since this is a proper Linux server now you should be able to use your OpenID to log in. The same login works for the site as does for the forum. I hope to be answering implementation questions in the forums from now on so that other people get their questions answered at the same time.</p>
<h3>New Design</h3>
<p>Speaking of changes, I have hired <a href="http://www.clockpunkstudios.com/">Clockpunk Studios</a> to make me a new site design. So please forgive the mess that some parts of the site are currently in. Like on the Forum page the sidebar is somewhat annoying, but the current theme has no option to get rid of it.</p>
<p><a href="http://touch.drobnik.com/files/cocoanetics_site_revised-footer.jpg"><img class="alignnone size-large wp-image-4183" title="New Site Design" src="http://touch.drobnik.com/files/cocoanetics_site_revised-footer-1024x819.jpg" alt="" width="574" height="458" /></a></p>
<p>I&#8217;m really looking forward to the new design. It will give us the ability to feature apps and components on the front page and will make reading my instructive blog post pleasurable.</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=4181&amp;md5=02502ff9b3e312bdd34e0cd5019dc3ce" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2010/12/transfer-of-subversion-repositories/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=4181&amp;md5=02502ff9b3e312bdd34e0cd5019dc3ce" type="text/html" />
	</item>
		<item>
		<title>We Moved!</title>
		<link>http://www.cocoanetics.com/2010/11/we-moved/</link>
		<comments>http://www.cocoanetics.com/2010/11/we-moved/#comments</comments>
		<pubDate>Wed, 24 Nov 2010 19:05:57 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Administrative]]></category>

		<guid isPermaLink="false">http://www.cocoanetics.com/?p=4051</guid>
		<description><![CDATA[It&#8217;s been quite some time in the making and it was the main reason for my lack of updates: Moving. For the longest time this blog was hosted on a virtual Windows server, but I finally had the guts to move to a dedicated Linux box&#8230;. and ditch Windows which I was at it. In the past I had all my content under drobnik.com which made me somewhat unhappy because the analytics would always be a mixture of traffic going to my German-language personal blog and my English-language iPhone-Development blog. Another drawback was that I had to have a &#8220;disambiguation page&#8221; under the domain root directing people to any of the sub-sites. Yuck. Now these are the sites hosted on the new server: Cocoanetics.com &#8211; iOS Development (English) Cocoapedia.org &#8211; iOS and Mac Development encyclopedia (English) Oliver.Drobnik.com &#8211; personal blog (German) drobnik.com &#8211; company blog of Drobnik KG (German) www.pasching.cc &#8211; personal blog of my brother Dieter (German) I spent most of the day today &#8211; not coding on iWoman 2.0 as I would have liked to &#8211; but working with my Linux guru to get the final kinks out of of this to be ready to call the move. A bit of URL hacking via a search&#38;replace plugin, some manual file copying, plugin updating, URL rewriting/redirecting, claiming the sites in Google Webmaster Tools and submitting sitemaps and lots of other itsy-bitsies. Well, that should have been it. Now that this blog again stands on terra firma I can resume writing the Q&#38;A and recipe articles that people love to read on this blog. UPDATE: The old server can still be reached via drobnik.net. I also am moving and consolidating my Subversion repositories on the new server. Until then you can simple substitude .net instead of .com in the repository URLs. For example: https://www.drobnik.net:8443/svn/DTBannerManager/ &#8211; you will have to re-accept the self-signed certificate.]]></description>
			<content:encoded><![CDATA[<div class="plus-one-wrap"><g:plusone href="http://www.cocoanetics.com/2010/11/we-moved/"></g:plusone></div><p>It&#8217;s been quite some time in the making and it was the main reason for my lack of updates: Moving. For the longest time this blog was hosted on a virtual Windows server, but I finally had the guts to move to a dedicated Linux box&#8230;. and ditch Windows which I was at it.</p>
<p>In the past I had all my content under drobnik.com which made me somewhat unhappy because the analytics would always be a mixture of traffic going to my German-language personal blog and my English-language iPhone-Development blog. Another drawback was that I had to have a &#8220;disambiguation page&#8221; under the domain root directing people to any of the sub-sites. Yuck.</p>
<p>Now these are the sites hosted on the new server:</p>
<ul>
<li><a href="http://www.cocoanetics.com">Cocoanetics.com</a> &#8211; iOS Development (English)</li>
<li><a href="http://www.cocoapedia.org">Cocoapedia.org</a> &#8211; iOS and Mac Development encyclopedia (English)</li>
<li><a href="http://oliver.drobnik.com">Oliver.Drobnik.com</a> &#8211; personal blog (German)</li>
<li><a href="http://www.drobnik.com">drobnik.com</a> &#8211; company blog of Drobnik KG (German)</li>
<li><a href="http://www.pasching.cc">www.pasching.cc</a> &#8211; personal blog of my brother Dieter (German)</li>
</ul>
<p>I spent most of the day today &#8211; not coding on iWoman 2.0 as I would have liked to &#8211; but working with my Linux guru to get the final kinks out of of this to be ready to call the move. A bit of URL hacking via a search&amp;replace plugin, some manual file copying, plugin updating, URL rewriting/redirecting, claiming the sites in <a href="http://www.google.com/webmasters/tools/">Google Webmaster Tools</a> and submitting sitemaps and lots of other itsy-bitsies.</p>
<p>Well, that should have been it. Now that this blog again stands on terra firma I can resume writing the Q&amp;A and recipe articles that people love to read on this blog.</p>
<p>UPDATE: The old server can still be reached via drobnik.net. I also am moving and consolidating my Subversion repositories on the new server. Until then you can simple substitude .net instead of .com in the repository URLs. For example: https://www.drobnik.net:8443/svn/DTBannerManager/ &#8211; you will have to re-accept the self-signed certificate.</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=4051&amp;md5=723200e218d338e55b792bbf629332ab" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2010/11/we-moved/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=4051&amp;md5=723200e218d338e55b792bbf629332ab" type="text/html" />
	</item>
		<item>
		<title>Cocoanetics</title>
		<link>http://www.cocoanetics.com/2010/10/cocoanetics/</link>
		<comments>http://www.cocoanetics.com/2010/10/cocoanetics/#comments</comments>
		<pubDate>Fri, 01 Oct 2010 06:49:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Administrative]]></category>

		<guid isPermaLink="false">http://www.drobnik.com/touch/?p=3066</guid>
		<description><![CDATA[When I announced my intended name change some days ago and invited suggestions my brand &#8220;Dr. Touch&#8221; had served me well as a placeholder since end of January 2009. With some drawbacks. First it is hard to get people to associate iOS development with it, secondly it sounds to some as the job title of a registered sex offender. Starting out it made sense to make this a personality-based blog. I wanted to be your friend in development, somebody you would come to in times of need, somebody you would trust to share your story and business with. Undeniably this got a bit of recognition with the heterogeneous community, as my excursion to a conference in Seattle was able to prove. This landed me several great projects, the biggest of which you&#8217;ll see unveiled in the next few months. BUT, I never got the kind of recognition I was really lusting for. While I&#8217;ve been busting my iMac, all the other iOS Developer Stars where writing books, being invited to speak on conferences and had their apps featured up the app store and down the iPhone blogs. Time to re-evaluate what I really want to achieve. What is it that YOU want? If fame is out of the question because the air up there is too thin, then what is it that I should set my sights on at this stage? What am I doing well? What do I like? What content of mine is appreciated the most? 1000 unique visitors per day tell me that at least some of my blog posts continue to attract a steady interest. The 10 hottest landing pages currently are: The Home Page Understanding iOS Backgrounding How to make a Pull-To-Reload Tableview iPhone 4 Tripod Mount Shootout UIImageView + Touch Handling = UIButton The Parts Store page How to Fix Code Signing Errors The AntiCrack Page The MyAppSales Page A Signing Identity Matching this Profile &#8230; And this order does not change very much. It&#8217;s only when an article, like the one on backgrounding, received a treatment by TUAW it gets catapulted into this list. What does this list tell you about my interests or rather the interests of my readers? I see: understanding difficult concepts, fixing problems resulting from unnecessary complexity on behalf of Apple, and 30% my source code products. That almost sounds like a plan to me. So let&#8217;s pretend that I planned it like that all along. The Genesis of Cocoanetics A new name changes everything, it&#8217;s like a new uniform that you don the first day as member of a Starfleet crew. The funny thing is that I had it slumbering in me already without being aware of that. It burst out of me like the proverbial chest cracker when I called for suggestions: &#8220;&#8230; studying to become a Doctor of Cocoanetics &#8230;&#8221; Right then and there I had coined a new word. A while after I had published the article I reread it (like most narcissist bloggers would do) and then Cocoanetics moved into my conscious consciousness. I immediately googled for it and was astonished to find that there where exactly zero entries. I registered the domain and re-checked after a few days and then the only entries where my original article plus some sites that are mentioning my domain registration. I received about a dozen or so suggestions for domain names, but most of them where variations of &#8220;Dr. Touch&#8221;, some ok and some really fruity. But honestly I had fallen in love with the new word. The best ideas are the once that you think you had yourself. So, announcing the winner of the new name competition: me. ME ME ME. Sorry, but thanks for playing. I like about the name that it still has a bit of a scientific touch. I consider learning iPhone development a science. Also I think it&#8217;s fun to play mentally with the collision of Cocoa (like the development framework we use) and Genetics (pieces of code that are the program for something larger). To mind comes a picture where you see a DNA strand that upon closer inspection turns out to consist of Objective-C code. So: out with the arrogant Doctor who thinks he&#8217;s something better. In with the Cult of Cocoa. And no, that&#8217;s not meant serious, I&#8217;m not going to found a religion. Unless &#8230; would you be willing to join? We need a new Design I asked the twitterverse for some recommendations for good designers because obviously a good name also needs a good site design. This is the first time that I&#8217;m actually hiring a professional to design something for myself. One of the first recommendations was Clockpunk Studios and they responded swiftly, professionally and courteously. UNLIKE two other designers (who shall remain unnamed) whom I had [...]]]></description>
			<content:encoded><![CDATA[<div class="plus-one-wrap"><g:plusone href="http://www.cocoanetics.com/2010/10/cocoanetics/"></g:plusone></div><p>When I announced my intended name change <a href="http://www.cocoanetics.com/2010/09/whats-in-a-name/">some days ago</a> and invited suggestions my brand &#8220;Dr. Touch&#8221; had served me well as a placeholder <a href="http://www.cocoanetics.com/2009/01/new-blog-started/">since end of January 2009</a>. With some drawbacks. First it is hard to get people to associate iOS development with it, secondly it sounds to some as the job title of a registered sex offender.</p>
<p>Starting out it made sense to make this a personality-based blog. I wanted to be your friend in development, somebody you would come to in times of need, somebody you would trust to share your story and business with. Undeniably this got a bit of <a href="http://www.cocoanetics.com/2010/05/back-almost/">recognition with the heterogeneous community</a>, as my excursion to a conference in Seattle was able to prove. This landed me several great projects, the biggest of which you&#8217;ll see unveiled in the next few months.</p>
<p>BUT, I never got the kind of recognition I was really lusting for. While I&#8217;ve been busting my iMac, all the other iOS Developer Stars where writing books, being invited to speak on conferences and had their apps featured up the app store and down the iPhone blogs. Time to re-evaluate what I really want to achieve.</p>
<h3>What is it that YOU want?</h3>
<p>If fame is out of the question because the air up there is too thin, then what is it that I should set my sights on at this stage? What am I doing well? What do I like? What content of mine is appreciated the most?</p>
<p><a href="http://www.cocoanetics.com/files/Screen-shot-2010-10-01-at-07.59.47.png"><img class="alignnone size-full wp-image-3067" src="http://www.cocoanetics.com/files/Screen-shot-2010-10-01-at-07.59.47.png" alt="" width="627" height="86" /></a></p>
<p>1000 unique visitors per day tell me that at least some of my blog posts continue to attract a steady interest. The 10 hottest landing pages currently are:</p>
<ul>
<li>The <a href="http://www.drobnik.com/touch">Home Page</a></li>
<li><a href="http://www.cocoanetics.com/2010/07/understanding-ios-4-backgrounding-and-delegate-messaging/">Understanding iOS Backgrounding</a></li>
<li><a href="http://www.cocoanetics.com/2009/12/how-to-make-a-pull-to-reload-tableview-just-like-tweetie-2/">How to make a Pull-To-Reload Tableview</a></li>
<li><a href="http://www.cocoanetics.com/2010/08/iphone-4-tripod-mount-shootout/">iPhone 4 Tripod Mount Shootout</a></li>
<li><a href="http://www.cocoanetics.com/2010/02/uiimageview-touch-handling-uibutton/">UIImageView + Touch Handling = UIButton</a></li>
<li>The <a href="http://www.cocoanetics.com/parts-store/">Parts Store</a> page</li>
<li><a href="http://www.cocoanetics.com/2009/05/how-to-fix-code-signing-errors/">How to Fix Code Signing Errors</a></li>
<li>The <a href="http://www.cocoanetics.com/anticrack/">AntiCrack Page</a></li>
<li>The <a href="http://www.cocoanetics.com/my-app-sales/">MyAppSales Page</a></li>
<li><a href="http://www.cocoanetics.com/2009/06/a-signing-identity-matching-this-profile-could-not-be-found-in-your-keychain/">A Signing Identity Matching this Profile &#8230;</a></li>
</ul>
<p>And this order does not change very much. It&#8217;s only when an article, like the one on backgrounding, received <a href="http://www.tuaw.com/2010/07/06/devsugar-understanding-iphone-4-backgrounding/">a treatment by TUAW</a> it gets catapulted into this list. What does this list tell you about my interests or rather the interests of my readers?</p>
<p>I see: understanding difficult concepts, fixing problems resulting from unnecessary complexity on behalf of Apple, and 30% my source code products. That almost sounds like a plan to me. So let&#8217;s pretend that I planned it like that all along. <img src='http://www.cocoanetics.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h3>The Genesis of Cocoanetics</h3>
<p>A new name changes everything, it&#8217;s like a new uniform that you don the first day as member of a Starfleet crew. The funny thing is that I had it slumbering in me already without being aware of that. It burst out of me like the proverbial chest cracker when I called for suggestions: <em>&#8220;&#8230; studying to become a Doctor of <strong>Cocoanetics</strong> &#8230;&#8221;</em></p>
<p>Right then and there I had coined a new word. A while after I had published the article I reread it (like most narcissist bloggers would do) and then Cocoanetics moved into my conscious consciousness. I immediately <a href="http://www.google.com/search?client=safari&amp;rls=en&amp;q=cocoanetics&amp;ie=UTF-8&amp;oe=UTF-8">googled for it</a> and was astonished to find that there where exactly zero entries. I registered the domain and re-checked after a few days and then the only entries where my original article plus some sites that are mentioning my domain registration.</p>
<p>I received about a dozen or so suggestions for domain names, but most of them where variations of &#8220;Dr. Touch&#8221;, some ok and some really fruity. But honestly I had fallen in love with the new word. The best ideas are the once that you think you had yourself.</p>
<p>So, announcing the winner of the new name competition: me. ME ME ME. Sorry, but thanks for playing.</p>
<p>I like about the name that it still has a bit of a scientific touch. I consider learning iPhone development a science. Also I think it&#8217;s fun to play mentally with the collision of Cocoa (like the development framework we use) and Genetics (pieces of code that are the program for something larger). To mind comes a picture where you see a DNA strand that upon closer inspection turns out to consist of Objective-C code.</p>
<p>So: out with the arrogant Doctor who thinks he&#8217;s something better. In with the Cult of Cocoa. And no, that&#8217;s not meant serious, I&#8217;m not going to found a religion. Unless &#8230; would you be willing to join? <img src='http://www.cocoanetics.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>
<h3>We need a new Design</h3>
<p>I asked the twitterverse for some recommendations for good designers because obviously a good name also needs a good site design. This is the first time that I&#8217;m actually hiring a professional to design something for myself. One of the first recommendations was <a href="http://www.clockpunkstudios.com/">Clockpunk Studios</a> and they responded swiftly, professionally and courteously. UNLIKE two other designers (who shall remain unnamed) whom I had to beg for an answer, only to get a snarly response from one and a rejection from the other. So that made the decision rather easy.</p>
<p>Jeremiah Tolbert from Clockpunk Studios sent me a questionaire to fill in some sites from within the same area of business and so I compiled a list of other blogging developers, again with the help of some crowd sourcing. So I went through the list and noted what I like and what I don&#8217;t like in terms of design choices: colors, typography, layout, flow etc.</p>
<p>Here&#8217;s the list in case you want to spice up your daily dose of Cocoa:</p>
<div>
<ol>
<li><a href="http://cocoawithlove.com/">http://cocoawithlove.com/</a> &#8211; Matt Gallagher</li>
<li><a href="http://www.red-sweater.com/blog/">http://www.red-sweater.com/blog/</a> &#8211; Daniel Jalkut</li>
<li><a href="http://jomnius.blogspot.com/">http://jomnius.blogspot.com/</a> &#8211; Jouni Miettunen</li>
<li><a href="http://www.cimgf.com/">http://www.cimgf.com/</a> &#8211; Marcus Zara</li>
<li><a href="http://mattgemmell.com/">http://mattgemmell.com/</a> &#8211; Matt Legend Gemmell</li>
<li><a href="http://iphonedevelopment.blogspot.com/">http://iphonedevelopment.blogspot.com/</a> &#8211; Jeff LaMarche</li>
<li><a href="http://furbo.org/">http://furbo.org/</a> - Craig Hockenberry</li>
<li><a href="http://iPhoneIncubator.com/blog/">http://iPhoneIncubator.com/blog/</a> - Nick Dalton</li>
<li><a href="http://www.buildingiphoneapps.com/">http://www.buildingiphoneapps.com/</a> - Jean-Francois Martin</li>
<li><a href="http://blog.jitsik.com/">blog.jitsik.com</a> &#8211; Unknown Author</li>
</ol>
</div>
<p>If you know any more then let me know in the comments. I also invite comments about the name. What associations does it provoke in your mind?</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=3066&amp;md5=d6ecfd153a546a78e990c9a8f0c0002d" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2010/10/cocoanetics/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<atom:link rel="payment" href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=3066&amp;md5=d6ecfd153a546a78e990c9a8f0c0002d" type="text/html" />
	</item>
		<item>
		<title>What&#039;s In a Name?</title>
		<link>http://www.cocoanetics.com/2010/09/whats-in-a-name/</link>
		<comments>http://www.cocoanetics.com/2010/09/whats-in-a-name/#comments</comments>
		<pubDate>Wed, 22 Sep 2010 13:39:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Administrative]]></category>

		<guid isPermaLink="false">http://www.drobnik.com/touch/?p=3061</guid>
		<description><![CDATA[When I started this blog I was already drawing on multiple years of blogging experience. But this second blog of mine was supposed to be highly focussed on iOS development. More out of a gut feeling than anything else I chose Dr. Touch as a monicker and sort of a brand name. I figured that this would contain some geeky references: &#8220;Dr&#8221; like &#8220;Drobnik&#8221;, but also like &#8220;Doctor&#8221;. For  two reasons: 1) I am both studying to become a Doctor of Cocoanetics and 2) I am also learning a lot by fixing up other people&#8217;s code, like a Medicus. Touch derives from Cocoa Touch, which you know is the set of frameworks that we use to program iOS Now it just so happens that I am moving servers. From a virtual Windows box to a real Linux server. I&#8217;ve already transferred all my domain names to network solutions because NS got recommended to my by a friend whom I fully trust. Having the names on a different service than who&#8217;s hosting your domain gives you a great deal of flexibility. But carrying out this move actually got me thinking: Currently all my iOS stuff is in a subdirectory of drobnik.com. That might be great for me ego to have my name as domain. But at the same time it dilutes my &#8220;brand&#8221; because &#8220;Drobnik&#8221; means so many other things on Google. I might hold the first few places there, BUT to convince people that &#8220;Drobnik&#8221; and &#8220;iOS development&#8221; are synonymous is an uphill battle. So it&#8217;s clear for me at this stage that I have to find a new domain name. A name that&#8217;s independent from my personal name, but something catchy, something that will get people to know instantly what this site is about. The usual combinations of Doctor and Touch are taken, and I don&#8217;t want to resort to DoctoreTouch.com, even though this has a bit of italian flair. And this name also carries the fatal flaw that it takes a bit of brain acrobatics to get from Dr. Touch to iOS Dev. This I&#8217;m announcing the quest for my next name. Mail me your suggestion (or DM me on Twitter) and if it wins over all the other ones that are being sent in, then I will reward you handsomely with your choice of cash or components from my shop or personal development help. I will announce the winner as soon as we get to transfer the blog to the new server and establish the domain.]]></description>
			<content:encoded><![CDATA[<div class="plus-one-wrap"><g:plusone href="http://www.cocoanetics.com/2010/09/whats-in-a-name/"></g:plusone></div><p>When I started this blog I was already drawing on multiple years of blogging experience. But this second blog of mine was supposed to be highly focussed on iOS development. More out of a gut feeling than anything else I chose Dr. Touch as a monicker and sort of a brand name. I figured that this would contain some geeky references:</p>
<ul>
<li>&#8220;Dr&#8221; like &#8220;Drobnik&#8221;,</li>
<li>but also like &#8220;Doctor&#8221;. For  two reasons: 1) I am both studying to become a Doctor of Cocoanetics and 2) I am also learning a lot by fixing up other people&#8217;s code, like a Medicus.</li>
<li>Touch derives from Cocoa Touch, which you know is the set of frameworks that we use to program iOS</li>
</ul>
<p>Now it just so happens that I am moving servers. From a virtual Windows box to a real Linux server. I&#8217;ve already transferred all my domain names to network solutions because NS got recommended to my by a friend whom I fully trust. Having the names on a different service than who&#8217;s hosting your domain gives you a great deal of flexibility.</p>
<p>But carrying out this move actually got me thinking: Currently all my iOS stuff is in a subdirectory of drobnik.com. That might be great for me ego to have my name as domain. But at the same time it dilutes my &#8220;brand&#8221; because &#8220;Drobnik&#8221; means <a href="http://www.google.com/search?client=safari&amp;rls=en&amp;q=drobnik&amp;ie=UTF-8&amp;oe=UTF-8">so many other things on Google</a>. I might hold the first few places there, BUT to convince people that &#8220;Drobnik&#8221; and &#8220;iOS development&#8221; are synonymous is an uphill battle.</p>
<p>So it&#8217;s clear for me at this stage that I have to find a <strong>new domain name</strong>. A name that&#8217;s independent from my personal name, but something catchy, something that will get people to know instantly what this site is about.</p>
<p>The usual combinations of Doctor and Touch are taken, and I don&#8217;t want to resort to DoctoreTouch.com, even though this has a bit of italian flair. And this name also carries the fatal flaw that it takes a bit of brain acrobatics to get from Dr. Touch to iOS Dev.</p>
<p>This I&#8217;m announcing the quest for my next name. <a href="mailto:oliver@drobnik.com?subject=DNS">Mail me</a> your suggestion (or DM me <a href="http://www.twitter.com/dr_touch">on Twitter</a>) and if it wins over all the other ones that are being sent in, then I will reward you handsomely with your choice of cash or components from my shop or personal development help.</p>
<p>I will announce the winner as soon as we get to transfer the blog to the new server and establish the domain.</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=3061&amp;md5=23405e88c81a2194c7bd10b5b9df67ee" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2010/09/whats-in-a-name/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<atom:link rel="payment" href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=3061&amp;md5=23405e88c81a2194c7bd10b5b9df67ee" type="text/html" />
	</item>
		<item>
		<title>Back (Almost)</title>
		<link>http://www.cocoanetics.com/2010/05/back-almost/</link>
		<comments>http://www.cocoanetics.com/2010/05/back-almost/#comments</comments>
		<pubDate>Sat, 01 May 2010 16:23:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Administrative]]></category>

		<guid isPermaLink="false">http://www.drobnik.com/touch/?p=2500</guid>
		<description><![CDATA[My trip to Seattle was great, some of the talks on the conference where indeed worth my while and my host Kevin proved to be extremely hospitable. Something that did almost shock me in the beginning was being approached by half a dozen people individually who came to me to thank me for my blog. I don&#8217;t see myself as a celebrity, but I guess with 500 people stumbling upon your online ramblings, chances are that somebody will recognize you, especially if you attend an iPhone-related conference. These are a few of the nice people that I had the presence of mind to get a picture with after they thanked me and told me that they are reading my blog. Thank you! I appreciate your appreciation. I did not get a chance to write anything useful since Seattle for several reasons. First I lost 2 days due to travelling back. One day was literally stolen from me because I had to travel back to Vienna to deal with the aftermath of a break-in into my jumpbase there. The following two days where a blur, I only faintly remember buying a parasol for the deck that our father-in-law built for us while I was away. Most of the day yesterday I spent with writing invoices for the iPads I brought home for 3 colleagues and rewriting DTAboutViewController to be allow for server-side updating of any plist. And now it&#8217;s already weekend, the only useful thing I could do was write a lengthy post for my German personal blog and this one article here. Please be patient with me while I still try to get back on firm ground. On the plane from Seattle I managed to put Box2D into a UIKit app to have buttons be &#8220;physical&#8221;. The recipe for this will come soon.]]></description>
			<content:encoded><![CDATA[<div class="plus-one-wrap"><g:plusone href="http://www.cocoanetics.com/2010/05/back-almost/"></g:plusone></div><p>My trip to Seattle was great, some of the talks on the conference where indeed worth my while and my host Kevin proved to be extremely hospitable. Something that did almost shock me in the beginning was being approached by half a dozen people individually who came to me to thank me for my blog. I don&#8217;t see myself as a celebrity, but I guess with 500 people stumbling upon your online ramblings, chances are that somebody will recognize you, especially if you attend an iPhone-related conference.</p>
<p>These are a few of the nice people that I had the presence of mind to get a picture with after they thanked me and told me that they are reading my blog. Thank you! I appreciate your appreciation. <img src='http://www.cocoanetics.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><a href="http://www.cocoanetics.com/files/IMG_0241.jpg"><img class="alignnone size-thumbnail wp-image-2501" src="http://www.cocoanetics.com/files/IMG_0241-150x150.jpg" alt="" width="150" height="150" /></a> <a href="http://www.cocoanetics.com/files/IMG_0242.jpg"><img class="alignnone size-thumbnail wp-image-2502" src="http://www.cocoanetics.com/files/IMG_0242-150x150.jpg" alt="" width="150" height="150" /></a> <a href="http://www.cocoanetics.com/files/IMG_0243.jpg"><img class="alignnone size-thumbnail wp-image-2503" src="http://www.cocoanetics.com/files/IMG_0243-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p><a href="http://www.cocoanetics.com/files/IMG_0244.jpg"><img class="alignnone size-thumbnail wp-image-2504" src="http://www.cocoanetics.com/files/IMG_0244-150x150.jpg" alt="" width="150" height="150" /></a> <a href="http://www.cocoanetics.com/files/IMG_0245.jpg"><img class="alignnone size-thumbnail wp-image-2505" src="http://www.cocoanetics.com/files/IMG_0245-150x150.jpg" alt="" width="150" height="150" /></a> <a href="http://www.cocoanetics.com/files/IMG_0246.jpg"><img class="alignnone size-thumbnail wp-image-2506" src="http://www.cocoanetics.com/files/IMG_0246-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>I did not get a chance to write anything useful since Seattle for several reasons. First I lost 2 days due to travelling back. One day was literally stolen from me because I had to travel back to Vienna to deal with the aftermath of a break-in into my jumpbase there. The following two days where a blur, I only faintly remember buying a parasol for the deck that our father-in-law built for us while I was away.</p>
<p>Most of the day yesterday I spent with writing invoices for the iPads I brought home for 3 colleagues and rewriting DTAboutViewController to be allow for server-side updating of any plist. And now it&#8217;s already weekend, the only useful thing I could do was write a lengthy post for my German personal blog and this one article here.</p>
<p>Please be patient with me while I still try to get back on firm ground. On the plane from Seattle I managed to put Box2D into a UIKit app to have buttons be &#8220;physical&#8221;. The recipe for this will come soon.</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=2500&amp;md5=88c5b936d5c7cc7790743ef45bb3fdf1" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2010/05/back-almost/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=2500&amp;md5=88c5b936d5c7cc7790743ef45bb3fdf1" type="text/html" />
	</item>
		<item>
		<title>Seattle</title>
		<link>http://www.cocoanetics.com/2010/04/seattle/</link>
		<comments>http://www.cocoanetics.com/2010/04/seattle/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 02:12:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Administrative]]></category>

		<guid isPermaLink="false">http://www.drobnik.com/touch/?p=2497</guid>
		<description><![CDATA[Provided that my stroke of luck continues, I will be in Seattle, WA, USA this week. Currently it looks like I was extremely lucky having booked my flight leaving Tuesday instead of Monday. Had I booked Monday&#8217;s, my flight would have been fallen prey to volcanish ash from Ireland. Towards the weekend I&#8217;ll be at the Voices That Matter iPhone Developer&#8217;s Conference and until then I hope to meet up with several fellow iPhone geeks who happen to live in the general area. Probably do a fair bit of sightseeing, as I have not been to Seattle before. And if possible fill the empty half of my suitcase with iPads. So if you are in the general area, drop me a note. If you require my services please be patient until I return.]]></description>
			<content:encoded><![CDATA[<div class="plus-one-wrap"><g:plusone href="http://www.cocoanetics.com/2010/04/seattle/"></g:plusone></div><p>Provided that my stroke of luck continues, I will be  in Seattle, WA, USA this week. Currently it looks like I was extremely lucky having booked my flight leaving Tuesday instead of Monday. Had I booked Monday&#8217;s, my flight would have been fallen prey to volcanish ash from Ireland.</p>
<p>Towards the weekend I&#8217;ll be at the <a href="http://www.voicesthatmatter.com/iphone2010/">Voices That Matter iPhone Developer&#8217;s Conference</a> and until then I hope to meet up with several fellow iPhone geeks who happen to live in the general area. Probably do a fair bit of sightseeing, as I have not been to Seattle before. And if possible fill the empty half of my suitcase with iPads. <img src='http://www.cocoanetics.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>So if you are in the general area, drop me a note. If you require my services please be patient until I return.</p>
<p><a href="http://www.cocoanetics.com/files/0-seattle_master.jpg"><img src="http://www.cocoanetics.com/files/0-seattle_master.jpg" alt="" width="433" height="337" class="alignnone size-full wp-image-2498" /></a></p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=2497&amp;md5=4c54c163f43d0ac8512df032b3b07bff" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2010/04/seattle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=2497&amp;md5=4c54c163f43d0ac8512df032b3b07bff" type="text/html" />
	</item>
		<item>
		<title>How to deal with contracting customers who won&#039;t pay</title>
		<link>http://www.cocoanetics.com/2010/02/how-to-deal-with-contracting-customers-who-wont-pay/</link>
		<comments>http://www.cocoanetics.com/2010/02/how-to-deal-with-contracting-customers-who-wont-pay/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 11:15:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Administrative]]></category>

		<guid isPermaLink="false">http://www.drobnik.com/touch/?p=1991</guid>
		<description><![CDATA[If you do a bit of contracting besides or publishing your own apps then you will have to deal with a wide spectrum of human beings. Some appreciate every tiny tidbit of love you put into their apps. Some of the more entrepreneurial kind will constantly come with new ideas but always assume that those where part of the initial agreement. I&#8217;ve had an encounter with an illustrious specimen of the second kind and so I thought it would be therapeutic for my hurt pride to ask the tweeting community about their opinion. Here are the responses for a view of what other iPhone developers generally think about this topic. I got a big number of responses which for the most part contain good food for thought. Label Buy an ad here &#8220;What would you do as a iphone-dev-biz in this situation: End of project customer says that he only ever agreed to pay 33% of your cost.&#8221; Look over the contract. If there wasn&#8217;t one, or it wasn&#8217;t good enough, never make that mistake again. (iradel) Give him 33% of the code Splash screen, some UI and minor functions (crasholo) I know this kind of problems man&#8230; email me if you want to talk more about it. (micheleaiello) Have you already delivered the source code? If yes, there isn&#8217;t much you can do. Maybe warn other developers about the scammer. (asandroq) Don&#8217;t release the work until he pays in full. If he doesn&#8217;t then either sell the app to his competitor or release it yourself. (avalore) If there is a contract about the payment: talk to your lawyer , if not here is your lesson for today. (thkl) Put everything in writing. Lesson learned if you gave already delivered your product. (drmiller) if you can afford to then do not deliver the project to the customer is willing to pay. You do not want to set a precedent. (darrensi) deliver 33% of the app! (lordugg) keep the source code. Tell the world. Also, structure your billing to avoid this situation: % up front, % throughout project, final amount on source code delivery. (dunk) Sue;ignore;negotiate;withhold source; sell source; create competing product; I would choose no. 3 or 2; The others = bad karma. (wuf810) Since a couple of  people responding also mentioned source code as the ultimate hostage I asked a follow up question because I felt that the implicit ownership of the source is even less clear. Do you generally assume that you will hand over the source for iPhone apps? Or take the users dev account credential and submit bin? I would say both. (Reversity) I never hand over the source for my apps (NJDevilfan26) depends on what the agreement was &#8211; if you agree the the client will own all rights to app, they&#8217;d get the source. (stuartcarnie) me personally would get them to change there dev password upload bin then they can change it back. Unless otherwise agreed (Jonn4y) Hand over the source. (pearapps) The client owns the source always. Hence our &#8220;confusion&#8221; when we starting working together. Always best to get all agreed up front (wuf810) Case by case basis, most people prefer the 2nd (less work for them) I reserve the right to use the source in other projects though (jhalickman) i think it&#8217;s standard that the costumer will want to have the app source code but your own costum libraries can/should be a binary (gaminghorror) From boiling down the essence of my experiences and the responses to my questions I put together the following iPhone App Contracting Best Practises: Have a written agreement (aka &#8220;contract&#8221; of sorts) upfront about: agreed features (with little room for &#8220;interpretation&#8221;), estimated hours, price. Estimate high if the customer wants a fixed price. You should also note who owns the source. Obviously most customers will want to own it. Then you will want to reserve the right to re-use utility classes or generic UI element code in your own projects. Get some money at project start to secure customer &#8220;buy-in&#8221;. Usual are either 50% at start and 50% at end or thirds where the middle portion comes at some milestone. If customer alludes to some new features being part of the original agreement, then be strong and say NO. Send the customer a feature extension offer mentioning the new things, needed time and that this will be charged additionally. The customer needs to agree in reply. Put this agreement into the project documentation so that you can refer to it later Depending on what your preference for the source code is: if you agree to hand it over in the first agreement then you will do so, but only after full payment. And if you did not follow the above advice and are now facing a customer who [...]]]></description>
			<content:encoded><![CDATA[<div class="plus-one-wrap"><g:plusone href="http://www.cocoanetics.com/2010/02/how-to-deal-with-contracting-customers-who-wont-pay/"></g:plusone></div><p>If you do a bit of contracting besides or publishing your own apps then you will have to deal with a wide spectrum of human beings. Some appreciate every tiny tidbit of love you put into their apps. Some of the more entrepreneurial kind will constantly come with new ideas but always assume that those where part of the initial agreement.</p>
<p>I&#8217;ve had an encounter with an illustrious specimen of the second kind and so I thought it would be therapeutic for my hurt pride to ask the tweeting community about their opinion. Here are the responses for a view of what other iPhone developers generally think about this topic. I got a big number of responses which for the most part contain good food for thought.</p>
<p><span id="more-1991"></span></p>
<div class="inner_ad_block">
<div id="advman-7" class="widget Advman_Widget">
<h3 class="widgettitle"></h3>
<p><!-- BuySellAds.com Zone Code --></p>
<div id="bsap_1260346" class="bsarocks bsap_fc3166ea4a479e0fdb4251fbe92a1219"></div>
<p><!-- End BuySellAds.com Zone Code --></div>
<div id="text-21" class="widget widget_text">
<h3 class="widgettitle">Label</h3>
<div class="textwidget">
<div class="advert-notice"><a href="http://buysellads.com/buy/detail/56639/zone/1260346">Buy an ad here</a></div>
</div></div>
</div>
<h2><span style="font-weight: normal">&#8220;What would you do as a iphone-dev-biz in this situation: End of project customer says that he only ever agreed to pay 33% of your cost.&#8221;</span></h2>
<blockquote><p>Look over the contract. If there wasn&#8217;t one, or it wasn&#8217;t good enough, never make that mistake again. (<a href="http://twitter.com/iradel">iradel</a>)</p></blockquote>
<blockquote><p>Give him 33% of the code <img src='http://www.cocoanetics.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  Splash screen, some UI and minor functions <img src='http://www.cocoanetics.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  (<a href="http://twitter.com/crasholo">crasholo</a>)</p></blockquote>
<blockquote><p>I know this kind of problems man&#8230; email me if you want to talk more about it. (<a href="http://twitter.com/micheleaiello">micheleaiello</a>)</p></blockquote>
<blockquote><p>Have you already delivered the source code? If yes, there isn&#8217;t much you can do. Maybe warn other developers about the scammer. (<a href="http://twitter.com/asandroq">asandroq</a>)</p></blockquote>
<blockquote><p>Don&#8217;t release the work until he pays in full. If he doesn&#8217;t then either sell the app to his competitor or release it yourself. (<a href="http://twitter.com/avalore">avalore</a>)</p></blockquote>
<blockquote><p>If there is a contract about the payment: talk to your lawyer , if not here is your lesson for today. (<a href="http://twitter.com/thkl">thkl</a>)</p></blockquote>
<blockquote><p>Put everything in writing. Lesson learned if you gave already delivered your product. (<a href="http://twitter.com/drmiller">drmiller</a>)</p></blockquote>
<blockquote><p>if you can afford to then do not deliver the project to the customer is willing to pay. You do not want to set a precedent. (<a href="http://twitter.com/darrensi">darrensi</a>)</p></blockquote>
<blockquote><p>deliver 33% of the app! (<a href="http://twitter.com/lordugg">lordugg</a>)</p></blockquote>
<blockquote><p>keep the source code. Tell the world. Also, structure your billing to avoid this situation: % up front, % throughout project, final amount on source code delivery. (<a href="http://twitter.com/dunk">dunk</a>)</p></blockquote>
<blockquote><p>Sue;ignore;negotiate;withhold source; sell source; create competing product; I would choose no. 3 or 2; The others = bad karma. (<a href="http://twitter.com/wuf810">wuf810</a>)</p></blockquote>
<p>Since a couple of  people responding also mentioned source code as the ultimate hostage I asked a follow up question because I felt that the implicit ownership of the source is even less clear.</p>
<h2><span style="font-weight: normal">Do you generally assume that you will hand over the source for iPhone apps? Or take the users dev account credential and submit bin?</span></h2>
<blockquote><p>I would say both. (<a href="http://twitter.com/Reversity">Reversity</a>)</p></blockquote>
<blockquote><p>I never hand over the source for my apps (<a href="http://twitter.com/NJDevilfan26">NJDevilfan26</a>)</p></blockquote>
<blockquote><p>depends on what the agreement was &#8211; if you agree the the client will own all rights to app, they&#8217;d get the source. (<a href="http://twitter.com/stuartcarnie">stuartcarnie</a>)</p></blockquote>
<blockquote><p>me personally would get them to change there dev password upload bin then they can change it back. Unless otherwise agreed (<a href="http://twitter.com/Jonn4y">Jonn4y</a>)</p></blockquote>
<blockquote><p>Hand over the source. (<a href="http://twitter.com/pearapps">pearapps</a>)</p></blockquote>
<blockquote><p>The client owns the source always. Hence our &#8220;confusion&#8221; when we starting working together. Always best to get all agreed up front (<a href="http://twitter.com/wuf810">wuf810</a>)</p></blockquote>
<blockquote><p>Case by case basis, most people prefer the 2nd (less work for them) I reserve the right to use the source in other projects though (<a href="http://twitter.com/jhalickman">jhalickman</a>)</p></blockquote>
<blockquote><p>i think it&#8217;s standard that the costumer will want to have the app source code but your own costum libraries can/should be a binary (<a href="http://twitter.com/gaminghorror">gaminghorror</a>)</p></blockquote>
<p>From boiling down the essence of my experiences and the responses to my questions I put together the following</p>
<h2>iPhone App Contracting Best Practises:</h2>
<ul>
<li>Have a written agreement (aka &#8220;contract&#8221; of sorts) upfront about: agreed features (with little room for &#8220;interpretation&#8221;), estimated hours, price. Estimate high if the customer wants a fixed price.</li>
<li>You should also note who owns the source. Obviously most customers will want to own it. Then you will want to reserve the right to re-use utility classes or generic UI element code in your own projects.</li>
<li>Get some money at project start to secure customer &#8220;buy-in&#8221;. Usual are either 50% at start and 50% at end or thirds where the middle portion comes at some milestone.</li>
<li>If customer alludes to some new features being part of the original agreement, then be strong and say NO.</li>
<li>Send the customer a feature extension offer mentioning the new things, needed time and that this will be charged additionally. The customer needs to agree in reply. Put this agreement into the project documentation so that you can refer to it later</li>
<li>Depending on what your preference for the source code is: if you agree to hand it over in the first agreement then you will do so, but only after full payment.</li>
<li>And if you did not follow the above advice and are now facing a customer who insists on a historical amount for the original feature set, then your final option is to prepare yourself to walk away from the project. &#8220;I keep my app. You keep your money&#8221;. More often than not this will spark a sudden burst of flexibility in your customer.</li>
</ul>
<p>UPDATE: Nuggets of wisdom that came in after I published this post:</p>
<blockquote><p>I have an agreement that guarantees a payment on milestones or schedule, and a paid deposit signifies agreement to those terms. (<a href="http://twitter.com/dylanrw">dylanrw</a>)</p></blockquote>
<p>Unfortunately even iPhone app development can be a hard business at times, especially if you get customers who are used to driving a very hard bargain. I hope that this post is as enlightening to you as it was therapeutic to me. Let&#8217;s hope we get smarter with every project we conclude.</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=1991&amp;md5=1007d6e93b9371187b80f6e8717307ea" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2010/02/how-to-deal-with-contracting-customers-who-wont-pay/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<atom:link rel="payment" href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=1991&amp;md5=1007d6e93b9371187b80f6e8717307ea" type="text/html" />
	</item>
	</channel>
</rss>

