<?xml version="1.0" encoding="utf-8" ?>

<rdf:RDF 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns="http://my.netscape.com/rdf/simple/0.9/">
<channel>
    <title>Feelin' Fine</title>
    <link>http://blog.proculo.de/</link>
    <description>Macs &amp; more</description>
    <dc:language>en</dc:language>
    <admin:errorReportsTo rdf:resource="mailto:lex@proculo.de" />

    <image rdf:resource="http://blog.proculo.de/templates/default/img/s9y_banner_small.png" />

    <items>
      <rdf:Seq>
        <rdf:li resource="http://blog.proculo.de/archives/181-guid.html" />
        <rdf:li resource="http://blog.proculo.de/archives/180-guid.html" />
        <rdf:li resource="http://blog.proculo.de/archives/179-guid.html" />
        <rdf:li resource="http://blog.proculo.de/archives/178-guid.html" />
        <rdf:li resource="http://blog.proculo.de/archives/177-guid.html" />
        <rdf:li resource="http://blog.proculo.de/archives/176-guid.html" />
        <rdf:li resource="http://blog.proculo.de/archives/175-guid.html" />
        <rdf:li resource="http://blog.proculo.de/archives/174-guid.html" />
        <rdf:li resource="http://blog.proculo.de/archives/173-guid.html" />
        <rdf:li resource="http://blog.proculo.de/archives/172-guid.html" />
        <rdf:li resource="http://blog.proculo.de/archives/171-guid.html" />
        <rdf:li resource="http://blog.proculo.de/archives/170-guid.html" />
        <rdf:li resource="http://blog.proculo.de/archives/169-guid.html" />
        <rdf:li resource="http://blog.proculo.de/archives/168-guid.html" />
        <rdf:li resource="http://blog.proculo.de/archives/166-guid.html" />
      </rdf:Seq>
    </items>
</channel>

<image rdf:about="http://blog.proculo.de/templates/default/img/s9y_banner_small.png">
        <url>http://blog.proculo.de/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Feelin' Fine - Macs &amp; more</title>
        <link>http://blog.proculo.de/</link>
        <width>100</width>
        <height>21</height>
    </image>


<item rdf:about="http://blog.proculo.de/archives/181-guid.html">
    <title>On Folio Case, Competition and Sales</title>
    <link>http://blog.proculo.de/archives/181-On-Folio-Case,-Competition-and-Sales.html</link>
    <description>
    When I released my iPad PDF reader &lt;a href=&quot;http://foliocaseapp.com/&quot;&gt;Folio Case&lt;/a&gt; &lt;a href=&quot;http://www.foliocaseapp.com/blog/files/folio_case_released.php&quot;&gt;on Thursday&lt;/a&gt;, I received a lot of praise for it. People found it to be beautiful, easy to use, even calling it the &lt;a href=&quot;http://www.macstories.net/ipad/folio-case-review/&quot;&gt;most elegant solution currently available on the iPad&lt;/a&gt;. Since Folio Case was focusing on a very pleasant reading experience, I never regarded the most downloaded PDF readers as my main competition - the differences were just too big, since those apps usually focus on a huge amount of features and lagged behind in user experience.&lt;br /&gt;
&lt;br /&gt;
However, Apple today released an update to &lt;a href=&quot;http://www.apple.com/ipad/features/ibooks.html&quot;&gt;iBooks&lt;/a&gt;, their fantastic eBook reader software from which Folio Case takes quite a bit of inspiration. iBooks is a direct competitor because it plays in the same league as Folio Case, if not actually higher. It has a reduced feature set, but a beautiful reading experience. The biggest problem here for me is, obviously, that iBooks is free while &lt;a href=&quot;http://bit.ly/getfoliocase&quot;&gt;Folio Case is priced at $5.99&lt;/a&gt; - and they say you just cannot compete with free. I cannot say I planned for this to happen, but I&#039;ll likely find out soon if it is possible to sustain a competitor to iBooks. The least I can do is try to keep my app from finding its untimely death at the bottom of the App Store charts.&lt;br /&gt;
&lt;br /&gt;
So what&#039;s my plan of action here? Fortunately, Folio Case had its origin as a fun little project on the side which just started because I didn&#039;t like any of the available PDF readers out there, &lt;a href=&quot;http://twitter.com/gruber/status/13334452692&quot;&gt;and it seems others didn&#039;t either&lt;/a&gt;. That means that it&#039;s easier for me to keep this app going than it would be for someone who depends on the income from their App Store sales. Speaking of sales, I thought I&#039;d share some sales numbers here to illustrate my point:&lt;br /&gt;
&lt;br /&gt;
Thursday, June 18 2010: 85 sales&lt;br /&gt;
Friday, June 19 2010: 100 sales&lt;br /&gt;
Saturday, June 20 2010: 123 sales&lt;br /&gt;
Sunday, June 21 2010: 76 sales&lt;br /&gt;
&lt;br /&gt;
That&#039;s 384 sales in total since Folio Case was approved for sale in the App Store, or about  1,180 in revenue for me after Apple&#039;s cut and before taxes. Not bad for four days of sales, but I don&#039;t expect these to stay at this level at all, for two reasons. First, there&#039;s now pretty good competition which is free. Second, this was the launch, which had &lt;a href=&quot;http://favstar.fm/users/arepty/status/16412146412&quot;&gt;quite a bit of buzz on Twitter&lt;/a&gt; and was bound to have higher sales numbers than what an app like this would get a few weeks after its release. I&#039;m pretty happy about selling 20 copies of Folio Case per day in the long run, but even that is going to require some effort on my part.&lt;br /&gt;
&lt;br /&gt;
So what am I going to do in the future? While Apple has several advantages over me, especially in the resources department, I believe I can be more flexible and deliver more quickly. I can have direct connections to customers, which helps both me and all of them. For example, on Saturday I had a pissed off customer who was complaining about crashes in Folio Case and demanded his money back. We wrote back and forth, I got help from him and identified the issue and submitted a fix, which is currently in review. The same customer just wrote to me, saying that iBooks behaves worse than Folio Case in his case, crashing more and not recovering at all. Suffice to say, thanks to me being able to help him out and taking a real interest in his problem, the customer is now rather happy.&lt;br /&gt;
&lt;br /&gt;
Cases like this will be my chance to keep Folio Case a viable product in the future. Right now, I am working on Folio Case 1.1 which will, among other features which I have yet to reveal, hopefully contain &lt;a href=&quot;https://www.dropbox.com/&quot;&gt;Dropbox&lt;/a&gt; support (Dropbox has yet to accept my application). Folio Case already allows downloading documents from the web, which iBooks doesn&#039;t, and this feature will help to allow users even more flexibility in managing their documents. Also, people seem to just love the page turning effect, and iBooks for some reason doesn&#039;t use that for PDF documents. Users who want a PDF reader which does exactly what they want it to do and offers a great reading experience at the same time will find it in Folio Case. In the future, I see Folio Case as the app iPad users should get when they have outgrown iBooks.&lt;br /&gt;
&lt;br /&gt;
In the end, I cannot say whether it&#039;s a smart idea to put more effort into Folio Case from a return-on-investment perspective. All I know is that it&#039;s what I love to do, and it&#039;s what those existing 384+ customers deserve, so I&#039;ll just push forward now. If I didn&#039;t have a day job and were living off the money from my App Store sales, I might see things differently. But even if I only get 10 sales per day in the next few months, it was all worth it because it&#039;s just been incredible so far. 
    </description>

    <dc:publisher>Feelin' Fine</dc:publisher>
    <dc:creator>alexander.repty@mac.com (Alexander Repty)</dc:creator>
    <dc:subject>
    Development, </dc:subject>
    <dc:date>2010-06-21T20:43:00Z</dc:date>
    <wfw:comment>http://blog.proculo.de/wfwcomment.php?cid=181</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.proculo.de/rss.php?version=1.0&amp;type=comments&amp;cid=181</wfw:commentRss>
    
    
</item>
<item rdf:about="http://blog.proculo.de/archives/180-guid.html">
    <title>Paging-enabled UIScrollView With Previews</title>
    <link>http://blog.proculo.de/archives/180-Paging-enabled-UIScrollView-With-Previews.html</link>
    <description>
    &lt;p&gt;&lt;div class=&quot;serendipity_imageComment_left&quot; style=&quot;width: 45px&quot;&gt;&lt;div class=&quot;serendipity_imageComment_img&quot;&gt;&lt;a  class=&#039;serendipity_image_link&#039;  rel=&#039;lightbox&#039; href=&#039;http://blog.proculo.de/uploads/AppStoreGroceries.png&#039;&gt;&lt;!-- s9ymdb:174 --&gt;&lt;img width=&quot;45&quot; height=&quot;110&quot; src=&quot;http://blog.proculo.de/uploads/AppStoreGroceries.serendipityThumb.png&quot; alt=&quot;&quot;  /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;serendipity_imageComment_txt&quot;&gt;App Store&lt;/div&gt;&lt;/div&gt;In some of the applications that come with the iPhone, such as the App Store and Mobile Safari, Apple uses a technique for paging-enabled &lt;code&gt;UIScrollViews&lt;/code&gt; that show a little bit of the neighbouring pieces of content instead of displaying a single view controller over the whole width of the screen.  I think those previews are a really great UI element, since they&#039;re much easier to spot than the &lt;code&gt;UIPageControl&lt;/code&gt; which usually sits right below the UIScrollView. It shows the user that there is more (or no more) content right next to what they are currently seeing.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;&lt;div class=&quot;serendipity_imageComment_left&quot; style=&quot;width: 45px&quot;&gt;&lt;div class=&quot;serendipity_imageComment_img&quot;&gt;&lt;a  class=&#039;serendipity_image_link&#039;  rel=&#039;lightbox&#039; href=&#039;http://blog.proculo.de/uploads/Safari.png&#039;&gt;&lt;!-- s9ymdb:175 --&gt;&lt;img width=&quot;45&quot; height=&quot;110&quot; src=&quot;http://blog.proculo.de/uploads/Safari.serendipityThumb.png&quot; alt=&quot;&quot;  /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;serendipity_imageComment_txt&quot;&gt;Mobile Safari&lt;/div&gt;&lt;/div&gt;If you&#039;ve ever used &lt;code&gt;UIScrollView&lt;/code&gt;&#039;s &lt;code&gt;pagingEnabled&lt;/code&gt; property, you probably know that this is not easily doable. The &lt;code&gt;UIScrollView&lt;/code&gt; will stop only at multiples of its frame&#039;s width and cannot be configured to stop at shorter intervals. I recently needed to implement a paging-enabled &lt;code&gt;UIScrollView&lt;/code&gt; and was trying to replicate this behaviour and found a way to implement these previews.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://blog.proculo.de/archives/180-Paging-enabled-UIScrollView-With-Previews.html&quot;&gt;Read on for the full tutorial.&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;&lt;a href=&quot;http://blog.proculo.de/archives/180-Paging-enabled-UIScrollView-With-Previews.html#extended&quot;&gt;Continue reading &quot;Paging-enabled UIScrollView With Previews&quot;&lt;/a&gt;
    </description>

    <dc:publisher>Feelin' Fine</dc:publisher>
    <dc:creator>alexander.repty@mac.com (Alexander Repty)</dc:creator>
    <dc:subject>
    Tutorials, </dc:subject>
    <dc:date>2010-02-12T16:14:00Z</dc:date>
    <wfw:comment>http://blog.proculo.de/wfwcomment.php?cid=180</wfw:comment>
        <slash:comments>7</slash:comments>
        <wfw:commentRss>http://blog.proculo.de/rss.php?version=1.0&amp;type=comments&amp;cid=180</wfw:commentRss>
    
    
</item>
<item rdf:about="http://blog.proculo.de/archives/179-guid.html">
    <title>NSConference 2010 UK</title>
    <link>http://blog.proculo.de/archives/179-NSConference-2010-UK.html</link>
    <description>
    &lt;h1&gt;History of NSConference&lt;/h1&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Ever since the inaugural &lt;a href=&quot;http://www.nsconference.com/&quot;&gt;NSConference&lt;/a&gt; 2009 ended, I&#039;ve been looking forward to the next one. I, pretty much like everyone else, had a fantastic time there and really enjoyed Scotty&#039;s approach to hosting a conference.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Despite a number of really great and thoughtful presentations at NSConference 2009, the main focus and benefit for me was community. I met so many interesting and smart people there who have helped me become a better Cocoa developer in every regard. NSConference is the kind of event you can benefit from even if you don&#039;t think the sessions will bring you much new knowledge.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;With this kind of experience from last year&#039;s conference, Scotty (&lt;a href=&quot;http://twitter.com/macdevnet&quot;&gt;@macdevnet&lt;/a&gt;) and Tim (&lt;a href=&quot;http://twitter.com/timisted&quot;&gt;@timisted&lt;/a&gt;) had a lot of work to do. According to &lt;a href=&quot;http://www.mac-developer-network.com/news/why-nsconference/&quot;&gt;a blog post by Scotty&lt;/a&gt;, 85% of the delegates in 2009 signed up for the 2010 conference. That&#039;s a huge number and goes to show just how great the conference last year was. The question on my mind was not if this year&#039;s conference could live up to our expectations, but more how they would do it.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h1&gt;Changes to Last Year&#039;s Conference&lt;/h1&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;There were some major changes in this year&#039;s conference. The most obvious one was that in addition to the workshops, which took place on Sunday, and the main conference (Monday and Tuesday), there now was an optional iPhone day that could be booked in addition to the main conference or on its own. This day even saw a number of new attendees, most of which did regret not going to the main conference after they experienced NSConference for themselves.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Another major change compared to last year&#039;s conference, which took place at the University of Hertfordshire campus in Hatfield, was that all workshop rooms, the main conference room and our hotel rooms were now in the same building. Even the restaurant and bar were there, which made it really easy to get to places and to find people.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;A very welcome change were the sponsored soft drinks during the coffee breaks, including Red Bull. Yes, there was free Red Bull. It was awesome.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h1&gt;The Venue&lt;/h1&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;The venue for this year&#039;s event was in a rather remote location in a town called Wokefield Park near Reading, England. It was easily reachable by car, but I took two wrong turns on the way and ended up really close to the edge of the world. A lot of attendees got there by public transport, which wouldn&#039;t really have been an option for me, since I was traveling from Stansted Airport. Given my plane landed at 7pm and the train line between Stansted and London isn&#039;t currently operating on weekends, it would have taken me at least 5 hours to get there. So instead I chose to rent a car and get used to driving on the wrong side of the road and lots of roundabouts.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Remote location aside, the venue was a great choice for the conference. The rooms were rather nice, they had Nintendo Wiis there (although I didn&#039;t have time to play) and they had a number of coffee makers in the hall way, which all provided decent coffee. The instructions to make tea were a little confusing, but fortunately Mike Lee (&lt;a href=&quot;http://twitter.com/bmf&quot;&gt;@bmf&lt;/a&gt;) applied his engineering talent to the problem and quickly figured out what they meant.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h1&gt;The Workshops&lt;/h1&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;I did sign up for Matt Gemmell&#039;s (&lt;a href=&quot;http://twitter.com/mattgemmell&quot;&gt;@mattgemmell&lt;/a&gt;) workshop appropriately titled &quot;The World According to Gemmell&quot;, but because of conflicting schedules, I only got to experience about half of it. There was a lot of talk about the iPad, bathroom reading and the opportunity for us developers to create apps for the device or adopt our existing ones. We were sitting in groups and, as a group exercise, got to design an iPad app. Matt graciously provided a number of ideas for groups who couldn&#039;t decide what to do. There were also some opportunities to get live feedback from Matt and the rest of the group on problems people were currently facing in their own apps.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;As I had to leave rather early, I don&#039;t really have any more insight to the end of Matt&#039;s workshop and no idea what was discussed in Drew McCormack&#039;s (&lt;a href=&quot;http://twitter.com/drewmccormack&quot;&gt;@drewmccormack&lt;/a&gt;) workshop at all, but I&#039;m sure others who were there will fill this void.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h1&gt;1st Conference Day&lt;/h1&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;The main conference keynote was delivered by Mike Lee (of Delicious Library fame), who told us various anecdotes where he could apply his engineering skills to everyday (and rare) situations in his life. While doing that, he disclosed his super secret algorithm for awesomeness and encouraged us to fix problems whenever we encounter them and be the hero. During his session, Mike established the ongoing Matrix theme that we could see throughout the entire conference.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;After an encouraging keynote, Jonathan &quot;Wolf&quot; Rentzsch (&lt;a href=&quot;http://twitter.com/rentzsch&quot;&gt;@rentzsch&lt;/a&gt;) took us on a journey through many inner workings of Mac OS X and Objective-C applications. He delivered great insight into static analysis, runtime analysis, code injection and enhancing. He introduced us to various tools and showed how they relate to our jobs as Cocoa developers and did a really great job of not diving in too deep, so even people unfamiliar with the subject and the tools could follow his presentation. Some of the things I took away from this presentation are of a philosophical nature which should prove helpful in my future career.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;After this exciting subject, Dave Dribin (&lt;a href=&quot;http://twitter.com/ddribin&quot;&gt;@ddribin&lt;/a&gt;) gave his talk about clean code, which involved a lot of practical tips and some really controversial theses about various design patterns, such as delegation vs. notifications vs. KVO and the use of singletons. These statements caused a lot of discussion during Q&amp;A and during the whole conference, but Dave had a good answer to every single question that was asked, which for me really made the impression that he had some great points there. I left the session feeling good about the design principles I currently employ and with the intention of adopting even more of the practical tips he presented.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Next on the agenda was Drew McCormack&#039;s talk about data presentation, in which he focused mostly on table views (cells vs. views) and the Core Plot framework, which he started and helped develop last year. He presented various actual uses of the framework, which is still in development and pre-1.0. Based on my observation of the talk and what various other developers said during the break, Drew really got some attendees thinking about implementing the framework in their own apps.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;The final session for the first day was Marcus Zarra (&lt;a href=&quot;http://twitter.com/mzarra&quot;&gt;@mzarra&lt;/a&gt;) on Core Animation, which he just recently wrote a book on. His talk was aimed at novices and didn&#039;t dive in too deep, but gave a good overview about the topic. He introduced us to implicit and explicit animations, and showed a small demo app that proved how little animation code you actually have to write to get decent animations. Unfortunately, the allotted time for the session didn&#039;t allow him to go deeper and teach us about more in-depth procedures.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;The first day of the conference came to a close with a delightful banquet, which took place in the same room where we had our sessions. We all got to have some great conversations with like-minded people over wine and a three-course dinner. It moved to the bar once the wine was empty where we continued to have a phenomenal time that caused many of us to go to bed rather late and catch little sleep.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h1&gt;2nd Conference Day&lt;/h1&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;The second day of the main conference was kicked off by Jeff LaMarche (&lt;a href=&quot;http://twitter.com/jeff_lamarche&quot;&gt;@jeff_lamarche&lt;/a&gt;), who was still severely jet-lagged and missing his clothes (he had replacements though) because the airline misplaced it and didn&#039;t deliver it until later that day. Jeff told us about some Objective-C language and design features and gave us an overview of runtime features, such as reflection/introspection. He made a point to make it clear that messing with the runtime can be rather dangerous, but he gave some safe-to-use examples of what can be done.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;The second session of the day was Andy Finnell&#039;s (&lt;a href=&quot;http://twitter.com/macgeek02&quot;&gt;@macgeek02&lt;/a&gt;) in-depth talk on OpenCL using an example app where he modeled the effect of painting with watercolour. He talked about OpenCL devices, contexts, vectors and queues as well as the meaning of OpenCL kernels and various implementation details. Unfortunately, the physics involved in modeling the spread of watercolour on paper are rather extensive, and Andy lost me and several other listeners during that segment. However, he did put up the source code to his sample app, so we can investigate this on our own.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;The next two sessions, on source code control by Dave Dribin and code signing by Graham Lee (&lt;a href=&quot;http://twitter.com/iamleeg&quot;&gt;@iamleeg&lt;/a&gt;), filled in for Matt Gemmell, who unfortunately had to leave the conference early for medical reasons. We were relieved to head that he did get better and is fine again now. Dave delivered his talk based on a talk he gave last year for a CocoaHeads group. He referred to version control systems as &quot;Time Machine for your source code&quot; and gave us various reasons on why we should use VCSs. His talk was very fact-based and had a history of source control systems up to current DVCSs such as Git and Mercurial. Graham Lee gave an overview of code signing and cleared  up some myths around the topic and concluded with a demo.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Following the lunch break, Aaron Hillegass (&lt;a href=&quot;http://twitter.com/aaronhillegass&quot;&gt;@AaronHillegass&lt;/a&gt;) of Big Nerd Ranch and Cocoa Programming for Mac OS X fame gave a talk on data persistence. He commented on the change away from direct file system access which we&#039;re currently seeing in the &quot;cloud&quot; and on the iPad. He followed it up with rather interesting bits about sync services, algorithms, examples, archiving and DBMS, which lead to notes about Core Data. Aaron had various pros and cons about every persistence solution he talked about, even Core Data, which led to his recently developed open source BNRPersistence framework, which looks very promising and is a lot faster than Core Data in most cases. He mentioned that the framework is still work-in-progress and that the community is welcome to supply patches.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Right before the mysterious Cocoa Rumble, which I am not going to talk about here (you have to see it to believe it), Danny Greg (&lt;a href=&quot;http://twitter.com/dannygreg&quot;&gt;@dannygreg&lt;/a&gt;), Martin Pilkington (&lt;a href=&quot;http://twitter.com/pilky&quot;&gt;@pilky&lt;/a&gt;) and I (&lt;a href=&quot;http://twitter.com/arepty&quot;&gt;@arepty&lt;/a&gt;)  presented Scotty with a few gifts that &lt;a href=&quot;http://pledgie.com/campaigns/7348&quot;&gt;dozens of Mac developers from around the world contributed to&lt;/a&gt;. We have video for it, so I am not going to write everything down. Just see for yourself.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/BSGiz_CingA&amp;hl=en_US&amp;fs=1&amp;&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/BSGiz_CingA&amp;hl=en_US&amp;fs=1&amp;&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Obviously, this day was followed by a lot of drinks and chatter in the bar, and much like the previous nights, everybody seemed to enjoy themselves and went to bed way too late at night. Unfortunately, this marked the end of the main conference and already saw a good number of developers leaving.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h1&gt;iPhone Conference Day&lt;/h1&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;The day saw Mike Lee delivering his keynote titled &quot;Meet the User&quot; to a partially renewed crowd, and Mike does really know and understand the user he wants us to meet. Mike gave some practical real-life examples of bad user experience and showed us how they translate into our domain. He talked about feature creep, unnecessary branding and meaningless version naming schemes. This talk left me excited about the rest of the day and thinking about various incidents where I was guilty of letting slip in some of the user experience issues Mike talked about.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;In the day&#039;s second session, a better-rested and well-dressed Jeff LaMarche introduced us to OpenGL ES on the iPhone. He talked about differences between OpenGL and OpenGL ES (i.e. direct mode), differences between OpenGL ES 1.1 and 2.0, when to use OpenGL ES, the Cartesian coordinate system and its different uses (y-up vs. z-up). He gave a good overview and some pointers concerning data types and function naming schemes and general performance considerations, such as Thumb optimation for ARM6 and ARM7 CPUs. That&#039;s when the talk got a little more into the deep technical stuff, but was still very easy to follow, which I was a novice in terms of OpenGL ES really appreciated. We learned about triangles and the winding rule, viewports, orthographic code and geometry. Shortly before the end of the talk, Jeff also touched the topic of lighting and introduced its different aspects (ambient/diffuse/specular).&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Right before the lunch break, we got to hear Marcus Zarra talk about his absolute favourite topic, Core Data. Marcus introduced a framework that he has written called ZSync which allows for easy synchronisation of data between Macs and iPhones. Previously, this wasn&#039;t as easy to do due to the lack of Sync Services on the iPhone. The framework is still under development and will be rolled out in 3 phases, leading up to cloud sync at one point. Like BNRPersistence, feedback and contribution by developers is welcome. I could tell from the Q&amp;A that people were genuinely excited about this technology and are looking forward to using it in their own products.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;The second-to-last presentation of the day was about developing a game using Core Animation, presented by Drew McCormack who must have been exhausted after his workshop on Sunday and his talk on the first day of the conference. Drew explained how he created the whole game using Core Animation rather than OpenGL ES and why this probably is a bad idea, but worked out for him anyway. He presented various animation inside the game and showed us, based on his source code, how they were implemented. I was really surprised to see how easily many things can be done using Core Animation and a free game programming library (for physics), such as cocos2d.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;The conference&#039;s final session saw Jeff LaMarche&#039;s third appearance, and by now he could hear the beer calling for him all the way from the bar. Ignoring those calls, Jeff gave us a good overview of GameKit and quite a bit of example code and even provided some methods for working around GameKit&#039;s lack of an online play API, for which we still have to use low-level CFNetwork ourselves. He provides sample code for his implementation, but it&#039;s not a large-scale open source library like BNRPersistence or ZSync.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;As an iPhone developer, especially the final 2 sessions made an impression with me, mostly because they covered APIs which I hadn&#039;t yet used. However, they got me really excited about writing a Core-Animation-based game using GameKit for local multiplayer. In combination with the upcoming iPad, I think there&#039;s an opportunity around the corner which I may have to explore.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h1&gt;Conclusion&lt;/h1&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;NSConference 2010 in the UK was a great conference and even managed to be better than last year&#039;s conference. I felt the focus of the talks was a little different, with lots of frameworks being introduced and discussed. However, almost one week later, I still don&#039;t see any of it as advertising. I rather regret not having had the time to have used any of the great technologies introduced by these talented developers.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;I took a lot of practical advise from the conference, but also various general tips and tricks about user experience and life as an engineer. Maybe that&#039;s because of all the smoke breaks with Mike Lee, but it certainly helped my thought process in so many ways.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;In general, it showed once more that NSConference&#039;s focus is community. One thing I constantly heard from various random attendees is that it is so much easier to get in contact with people at NSConference compared to other conferences. And this is one thing I wouldn&#039;t want to miss for the world.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Thanks to Scotty, Tim, Dave and everyone else involved for putting together such a great conference for us to enjoy and get together.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h1&gt;Photos&lt;/h1&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;I took some pictured during the event and a selection of those is available on Flickr: &lt;a href=&quot;http://www.flickr.com/photos/alexrepty/sets/72157623253034969/&quot;&gt;http://www.flickr.com/photos/alexrepty/sets/72157623253034969/&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://blog.j2mepolish.org/?p=285&quot;&gt;Cross-posted to J2ME Polish Blog&lt;/a&gt; 
    </description>

    <dc:publisher>Feelin' Fine</dc:publisher>
    <dc:creator>alexander.repty@mac.com (Alexander Repty)</dc:creator>
    <dc:subject>
    Development, </dc:subject>
    <dc:date>2010-02-09T14:54:43Z</dc:date>
    <wfw:comment>http://blog.proculo.de/wfwcomment.php?cid=179</wfw:comment>
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://blog.proculo.de/rss.php?version=1.0&amp;type=comments&amp;cid=179</wfw:commentRss>
    
    
</item>
<item rdf:about="http://blog.proculo.de/archives/178-guid.html">
    <title>Attaching a UIToolbar to the iPhone's Keyboard</title>
    <link>http://blog.proculo.de/archives/178-Attaching-a-UIToolbar-to-the-iPhones-Keyboard.html</link>
    <description>
    One nifty little &lt;a href=&quot;http://www.apple.com/iphone/&quot;&gt;iPhone&lt;/a&gt; feature that left an impression with me is the way that the keyboard in the &quot;&lt;a href=&quot;http://www.apple.com/iphone/iphone-3gs/messages.html&quot;&gt;Messages&lt;/a&gt;&quot; application slides in and out with the keyboard, as if it were attached to it - but it isn&#039;t. I needed a similar feature for an app that I&#039;m currently working on for a client, so I decided to investigate how to implement this feature in my own stuff.&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;&lt;div class=&quot;serendipity_imageComment_left&quot; style=&quot;width: 142px&quot;&gt;&lt;div class=&quot;serendipity_imageComment_img&quot;&gt;&lt;a  class=&#039;serendipity_image_link&#039;  rel=&#039;lightbox&#039; href=&#039;http://blog.proculo.de/uploads/Messages_NoKeyboard.png&#039;&gt;&lt;!-- s9ymdb:168 --&gt;&lt;img width=&quot;71&quot; height=&quot;110&quot; src=&quot;http://blog.proculo.de/uploads/Messages_NoKeyboard.serendipityThumb.png&quot; alt=&quot;&quot;  /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;serendipity_imageComment_txt&quot;&gt;Viewing messages, keyboard not shown.&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;serendipity_imageComment_left&quot; style=&quot;width: 142px&quot;&gt;&lt;div class=&quot;serendipity_imageComment_img&quot;&gt;&lt;a  class=&#039;serendipity_image_link&#039;  rel=&#039;lightbox&#039; href=&#039;http://blog.proculo.de/uploads/Messages_WithKeyboard.png&#039;&gt;&lt;!-- s9ymdb:169 --&gt;&lt;img width=&quot;71&quot; height=&quot;110&quot; src=&quot;http://blog.proculo.de/uploads/Messages_WithKeyboard.serendipityThumb.png&quot; alt=&quot;&quot;  /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;serendipity_imageComment_txt&quot;&gt;Keyboard displayed. The toolbar moves up, attached to the keyboard.&lt;/div&gt;&lt;/div&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;
Although my first instinct was to simply use an implicit animation using &lt;code&gt;&lt;a href=&quot;http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html&quot;&gt;UIView&lt;/a&gt;&lt;/code&gt;&#039;s &lt;code&gt;&lt;a href=&quot;http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/occ/clm/UIView/beginAnimations:context:&quot;&gt;+beginAnimations:context:&lt;/a&gt;&lt;/code&gt; method, I decided to quickly search the web for some information on how other developers approached this problem.&lt;br /&gt;
&lt;br /&gt;
The results were a little surprising, possibly because the proper way to do it wasn&#039;t as easily available before iPhone OS 3.0 - various people on different message boards and mailing lists suggested a hack that involved looping through all instances of &lt;code&gt;&lt;a href=&quot;http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIWindow_Class/UIWindowClassReference/UIWindowClassReference.html&quot;&gt;UIWindow&lt;/a&gt;&lt;/code&gt; to find the one containing an instance of &lt;code&gt;UIKeyboard&lt;/code&gt;, a private class that isn&#039;t even documented in the iPhone SDK. Those hacks then proceeded to modify the dimensions of the view that contains the keyboard and adding the &lt;code&gt;&lt;a href=&quot;http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIToolbar_Class/Reference/Reference.html&quot;&gt;UIToolbar&lt;/a&gt;&lt;/code&gt; instance as a subview, so it would animate into the key window right along with the keyboard.&lt;br /&gt;
&lt;br /&gt;
Needless to say, these hacks are not exactly future-proof or what I would consider a proper implementation of this feature. The &lt;a href=&quot;http://en.wikipedia.org/wiki/Core_Animation&quot;&gt;Core Animation&lt;/a&gt; route was the one to go, so I proceeded in that direction.&lt;br /&gt;
&lt;br /&gt;
More about this after the jump. &lt;br /&gt;&lt;a href=&quot;http://blog.proculo.de/archives/178-Attaching-a-UIToolbar-to-the-iPhones-Keyboard.html#extended&quot;&gt;Continue reading &quot;Attaching a UIToolbar to the iPhone&#039;s Keyboard&quot;&lt;/a&gt;
    </description>

    <dc:publisher>Feelin' Fine</dc:publisher>
    <dc:creator>alexander.repty@mac.com (Alexander Repty)</dc:creator>
    <dc:subject>
    Tutorials, </dc:subject>
    <dc:date>2009-10-06T18:30:54Z</dc:date>
    <wfw:comment>http://blog.proculo.de/wfwcomment.php?cid=178</wfw:comment>
        <slash:comments>5</slash:comments>
        <wfw:commentRss>http://blog.proculo.de/rss.php?version=1.0&amp;type=comments&amp;cid=178</wfw:commentRss>
    
    
</item>
<item rdf:about="http://blog.proculo.de/archives/177-guid.html">
    <title>I was a guest on Apfelshow</title>
    <link>http://blog.proculo.de/archives/177-I-was-a-guest-on-Apfelshow.html</link>
    <description>
    and all I got was this lousy lanyard:&lt;br /&gt;
&lt;br /&gt;
&lt;a  class=&#039;serendipity_image_link&#039;  rel=&#039;lightbox&#039; href=&#039;http://blog.proculo.de/uploads/Foto-3.jpg&#039;&gt;&lt;!-- s9ymdb:167 --&gt;&lt;img width=&quot;83&quot; height=&quot;110&quot; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://blog.proculo.de/uploads/Foto-3.serendipityThumb.jpg&quot; alt=&quot;&quot;  /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Seriously though, I had a great time at the recording of the &lt;a href=&quot;http://www.apfeltalk.de/forum/apfelshow-11-a-t260779.html&quot;&gt;11th edition of Apfelshow&lt;/a&gt;, &lt;a href=&quot;http://www.apfeltalk.de/&quot;&gt;Apfeltalk.de&lt;/a&gt;&#039;s monthly video podcast. I got to talk a bit about &lt;a href=&quot;http://labtick.proculo.de/&quot;&gt;Lab Tick&lt;/a&gt; and being a Mac and iPhone developer in general.&lt;br /&gt;
&lt;br /&gt;
Watch the full video (German language) after the jump. &lt;br /&gt;&lt;a href=&quot;http://blog.proculo.de/archives/177-I-was-a-guest-on-Apfelshow.html#extended&quot;&gt;Continue reading &quot;I was a guest on Apfelshow&quot;&lt;/a&gt;
    </description>

    <dc:publisher>Feelin' Fine</dc:publisher>
    <dc:creator>alexander.repty@mac.com (Alexander Repty)</dc:creator>
    <dc:subject>
    Film, </dc:subject>
    <dc:date>2009-10-05T09:02:12Z</dc:date>
    <wfw:comment>http://blog.proculo.de/wfwcomment.php?cid=177</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.proculo.de/rss.php?version=1.0&amp;type=comments&amp;cid=177</wfw:commentRss>
    
    
</item>
<item rdf:about="http://blog.proculo.de/archives/176-guid.html">
    <title>Mobile Developer's Guide to the Galaxy</title>
    <link>http://blog.proculo.de/archives/176-Mobile-Developers-Guide-to-the-Galaxy.html</link>
    <description>
    &lt;a  class=&#039;serendipity_image_link&#039;  rel=&#039;lightbox&#039; href=&#039;http://blog.proculo.de/uploads/MDGTTG.png&#039;&gt;&lt;!-- s9ymdb:166 --&gt;&lt;img width=&quot;110&quot; height=&quot;110&quot; style=&quot;float: left; border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://blog.proculo.de/uploads/MDGTTG.serendipityThumb.png&quot; alt=&quot;&quot;  /&gt;&lt;/a&gt;A couple of weeks ago, my employer, &lt;a href=&quot;http://www.enough.de/&quot;&gt;Enough Software&lt;/a&gt;, published a small booklet titled &quot;&lt;a href=&quot;http://www1.j2mepolish.org/downloads/MobileDevelopersGuideToTheGalaxy.pdf&quot;&gt;Mobile Developer&#039;s Guide to the Galaxy&lt;/a&gt;&quot; in co-operation with &lt;a href=&quot;http://www.7val.com/&quot;&gt;Sevenval&lt;/a&gt; and &lt;a href=&quot;http://www.wipconnector.com/&quot;&gt;WIP&lt;/a&gt;. For the second edition, which has just been released, I&#039;ve been asked to contribute a chapter on iPhone development.&lt;br /&gt;
&lt;br /&gt;
So I did, and it can be found on pages 16 through 20 in the PDF, which you may &lt;a href=&quot;http://www1.j2mepolish.org/downloads/MobileDevelopersGuideToTheGalaxy.pdf&quot;&gt;grab here&lt;/a&gt;. Feedback is welcome, a contact email address can be found in the document (p. 52).&lt;br /&gt;
&lt;br /&gt;
Enjoy! 
    </description>

    <dc:publisher>Feelin' Fine</dc:publisher>
    <dc:creator>alexander.repty@mac.com (Alexander Repty)</dc:creator>
    <dc:subject>
    Development, </dc:subject>
    <dc:date>2009-10-02T12:44:26Z</dc:date>
    <wfw:comment>http://blog.proculo.de/wfwcomment.php?cid=176</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.proculo.de/rss.php?version=1.0&amp;type=comments&amp;cid=176</wfw:commentRss>
    
    
</item>
<item rdf:about="http://blog.proculo.de/archives/175-guid.html">
    <title>Asynchronous Networking Using NSOperation And Delegates</title>
    <link>http://blog.proculo.de/archives/175-Asynchronous-Networking-Using-NSOperation-And-Delegates.html</link>
    <description>
    Lately, I have been using a lot of REST APIs for various projects that I have been working on. One development pattern that I have constantly used among all these projects is that of using various &lt;code&gt;&lt;a href=&quot;http://developer.apple.com/mac/library/DOCUMENTATION/Cocoa/Reference/NSOperation_class/Reference/Reference.html&quot;&gt;NSOperation&lt;/a&gt;&lt;/code&gt; objects, feed them to an &lt;code&gt;&lt;a href=&quot;http://developer.apple.com/mac/library/DOCUMENTATION/Cocoa/Reference/NSOperationQueue_class/Reference/Reference.html&quot;&gt;NSOperationQueue&lt;/a&gt;&lt;/code&gt; and get the results fed back to the caller via &lt;a href=&quot;http://www.stepwise.com/Articles/Technical/2000-03-03.01.html&quot;&gt;delegation&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Why Would You Do This?&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Now, why would you go through the trouble of learning all these APIs, creating a delegate protocol and implementing all this stuff if you could use a simple &lt;code&gt;initWithContentsOfURL:&lt;/code&gt; (or similar)? The main reason here is asynchronous networking. If you&#039;re going to just fetch network data, such as strings, images or whole XML documents from remote servers, you are going to see some latency, especially if you&#039;re developing for the iPhone and running on an EDGE or 3G network.&lt;br /&gt;
&lt;br /&gt;
If you were to use synchronous networking from within your main thread, you would be blocking your application&#039;s UI until your method stack returns and the system can redraw your views. If you&#039;re looking at multiple seconds of latency, which might easily occur if you&#039;re fetching dynamically generated data from a server, this practically makes your application unusable. The solution to this problem is to push networking tasks into separate functions and move those to different threads.&lt;br /&gt;
&lt;br /&gt;
&lt;a  class=&#039;serendipity_image_link&#039;  rel=&#039;lightbox&#039; href=&#039;http://blog.proculo.de/uploads/Bildschirmfoto2009-09-29um00.29.53.png&#039;&gt;&lt;!-- s9ymdb:164 --&gt;&lt;img width=&quot;110&quot; height=&quot;79&quot; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://blog.proculo.de/uploads/Bildschirmfoto2009-09-29um00.29.53.serendipityThumb.png&quot; alt=&quot;&quot;  /&gt;&lt;br /&gt;Asynchronous networking keeps the main thread available for drawing and other tasks.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Clean Thread Management&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Of course, you could just detach new thread selectors all over your controller, but that would be rather ugly, error-prone and a bitch to maintain. Fortunately, Apple introduced &lt;code&gt;NSOperation&lt;/code&gt; and &lt;code&gt;NSOperationQueue&lt;/code&gt; a while back (in Mac OS X 10.5 Leopard).&lt;br /&gt;
&lt;br /&gt;
For your projects, you will create a subclass of &lt;code&gt;NSOperation&lt;/code&gt; and override the &lt;code&gt;-main&lt;/code&gt; method to do your bidding. This is where the heavy lifting should take place and all your network latency will not matter anymore. I have written a sample application that uses an &lt;code&gt;NSOperation&lt;/code&gt; subclass to fetch an image via HTTP and return it to the controller using a delegate protocol that I have written specifically for this task. My &lt;code&gt;-main&lt;/code&gt; method look like this:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
- (void)main {&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;NSImage *image = nil;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;NSError *error = nil;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;NS_DURING&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;if ([self isCancelled]) {&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;NS_VOIDRETURN;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;NSData *data = [NSData dataWithContentsOfURL:_url options:NSDataReadingUncached error:&amp;error];&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;if (nil != error) {&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;[(NSObject *)_delegate performSelectorOnMainThread:@selector(errorOccurred:) withObject:error waitUntilDone:NO];&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;NS_VOIDRETURN;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;image = [[NSImage alloc] initWithData:data];&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;NS_HANDLER&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;NS_ENDHANDLER&lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;sleep(2); // for illustration purposes&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;[(NSObject *)_delegate performSelectorOnMainThread:@selector(didReceiveImage:) withObject:image waitUntilDone:NO];&lt;br /&gt;
}&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
This method does nothing more than what you would previously have done to retrieve an image given a URL (&lt;code&gt;_url&lt;/code&gt; and &lt;code&gt;_delegate&lt;/code&gt; are instance variables that were filled during initialization). The delegate implements the selectors defined in my protocol, &lt;code&gt;errorOccurred:&lt;/code&gt; and &lt;code&gt;didReceiveImage:&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
So much for the heavy lifting. But how do you actually get this method to run in the first place? This is easy, thanks to &lt;code&gt;NSOperationQueue&lt;/code&gt;, which provides a method to queue &lt;code&gt;NSOperation&lt;/code&gt; subclasses for execution. In my application controller&#039;s &lt;code&gt;-awakeFromNib&lt;/code&gt; method, I instantiate my &lt;code&gt;NSOperation&lt;/code&gt; subclass and add it to the &lt;code&gt;NSOperationQueue&lt;/code&gt; like this:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
- (void)awakeFromNib {&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;[_progressIndicator startAnimation:self];&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;NSURL *url = [NSURL URLWithString:@&quot;http://alexrepty.com/other/kiwi.jpg&quot;];&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;ImageFetchOperation *operation = [[[ImageFetchOperation alloc] initWithURL:url delegate:self] autorelease];&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;[_queue addOperation:operation];&lt;br /&gt;
}&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Add the implementation of the delegate protocol and you&#039;re done! What you end up with is a nice, clean and efficient way of dealing with networking that helps to keep your code readable, error-free and makes for a better user experience by keeping the main thread free of blocking operations.&lt;br /&gt;
&lt;br /&gt;
&lt;a  class=&#039;serendipity_image_link&#039;  rel=&#039;lightbox&#039; href=&#039;http://blog.proculo.de/uploads/Bildschirmfoto2009-09-29um00.30.07.png&#039;&gt;&lt;!-- s9ymdb:165 --&gt;&lt;img width=&quot;110&quot; height=&quot;89&quot; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://blog.proculo.de/uploads/Bildschirmfoto2009-09-29um00.30.07.serendipityThumb.png&quot; alt=&quot;Isn&#039;t Kiwi cute?&quot; /&gt;&lt;br /&gt;Delegation makes sure your application controller has immediate access to the image once it has been fetched.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Yes, the cat in the picture is mine. :)&lt;br /&gt;
&lt;br /&gt;
Feel free to &lt;a href=&quot;http://alexrepty.com/other/ImageFetcher.zip&quot;&gt;download the source code&lt;/a&gt; for this example and use it in your own projects. If you have any comments or questions, use the box below or &lt;a href=&quot;http://twitter.com/arepty&quot;&gt;ask me on Twitter&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Update&lt;/strong&gt;: I&#039;ve published the source code for this tutorial on &lt;a href=&quot;http://github.com/&quot;&gt;Github&lt;/a&gt;:&lt;br /&gt;
&lt;a href=&quot;http://github.com/alexrepty/Asynchronous-Image-Fetcher/fast_forward&quot;&gt;http://github.com/alexrepty/Asynchronous-Image-Fetcher/fast_forward&lt;/a&gt;&lt;br /&gt;
 
    </description>

    <dc:publisher>Feelin' Fine</dc:publisher>
    <dc:creator>alexander.repty@mac.com (Alexander Repty)</dc:creator>
    <dc:subject>
    Tutorials, </dc:subject>
    <dc:date>2009-09-28T21:41:48Z</dc:date>
    <wfw:comment>http://blog.proculo.de/wfwcomment.php?cid=175</wfw:comment>
        <slash:comments>6</slash:comments>
        <wfw:commentRss>http://blog.proculo.de/rss.php?version=1.0&amp;type=comments&amp;cid=175</wfw:commentRss>
    
    
</item>
<item rdf:about="http://blog.proculo.de/archives/174-guid.html">
    <title>Lab Tick 0.9.4 Released</title>
    <link>http://blog.proculo.de/archives/174-Lab-Tick-0.9.4-Released.html</link>
    <description>
    I have just released Lab Tick 0.9.4 which introduces full 64-bit-support for users running a 64-bit-capable machine and Mac OS X 10.6 Snow Leopard.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://labtick.proculo.de/files/LabTick_0.9.4.dmg&quot;&gt;Download the new version here&lt;/a&gt; or use Lab Tick&#039;s built-in updating mechanism. 
    </description>

    <dc:publisher>Feelin' Fine</dc:publisher>
    <dc:creator>alexander.repty@mac.com (Alexander Repty)</dc:creator>
    <dc:subject>
    Lab Tick, </dc:subject>
    <dc:date>2009-09-11T21:10:32Z</dc:date>
    <wfw:comment>http://blog.proculo.de/wfwcomment.php?cid=174</wfw:comment>
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://blog.proculo.de/rss.php?version=1.0&amp;type=comments&amp;cid=174</wfw:commentRss>
    
    
</item>
<item rdf:about="http://blog.proculo.de/archives/173-guid.html">
    <title>Lab Tick 0.9.3 Released &amp; Snow Leopard Compatibility</title>
    <link>http://blog.proculo.de/archives/173-Lab-Tick-0.9.3-Released-Snow-Leopard-Compatibility.html</link>
    <description>
    &lt;p&gt;Last night, I released &lt;a href=&quot;http://labtick.proculo.de/&quot;&gt;Lab Tick 0.9.3&lt;/a&gt; which fixes a number of small bugs. The biggest change in this release is support for fast user switching. In previous versions of Lab Tick, you either had to disable or quite Lab Tick before you would switch to a different account on your notebook - otherwise, Lab Tick would continue to run and try to control the illumination. This caused erratic behaviour when another instance of Lab Tick was running under a different account.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Also, since Xcode 3.2 in Snow Leopard comes with a static analyzer built-in, I could find a number of small memory leaks, which should hopefully reduce memory usage by a bit.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;However, even though Lab Tick 0.9.3 runs perfectly fine on Snow Leopard, it won&#039;t run in 64 bit. That is because some of the APIs I use to control the backlit keyboard are not fully 64-bit-capable and have been deprecated by Apple. I will look into replacing those APIs with modern ones that have 64 bit support. Since spare time is always an issue, I cannot make any promises on a release date.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Until then, I hope the lack of support for 64 bit doesn&#039;t bother you too much.&lt;/p&gt; 
    </description>

    <dc:publisher>Feelin' Fine</dc:publisher>
    <dc:creator>alexander.repty@mac.com (Alexander Repty)</dc:creator>
    <dc:subject>
    Lab Tick, </dc:subject>
    <dc:date>2009-09-08T08:46:55Z</dc:date>
    <wfw:comment>http://blog.proculo.de/wfwcomment.php?cid=173</wfw:comment>
        <slash:comments>5</slash:comments>
        <wfw:commentRss>http://blog.proculo.de/rss.php?version=1.0&amp;type=comments&amp;cid=173</wfw:commentRss>
    
    
</item>
<item rdf:about="http://blog.proculo.de/archives/172-guid.html">
    <title>CocoaHeads Bremen Coding Competition</title>
    <link>http://blog.proculo.de/archives/172-CocoaHeads-Bremen-Coding-Competition.html</link>
    <description>
    &lt;p&gt;Recently, I&#039;ve founded a &lt;a href=&quot;http://cocoaheads.org/&quot; target=&quot;_blank&quot;&gt;CocoaHeads&lt;/a&gt; chapter for the city of &lt;a href=&quot;http://cocoaheads.org/de/Bremen/index.html&quot; target=&quot;_blank&quot;&gt;Bremen&lt;/a&gt;. We&#039;ve had a lot of initial interest in our meetings and have managed about 15 people coming to each of the meetings. For our second meeting, I organized a small challenge for which I gave away a coupon code to receive the first three &lt;a href=&quot;http://www.mac-developer-network.com/category/shows/screencasts/nsconference2009/&quot; target=&quot;_blank&quot;&gt;NSConference 2009 videos&lt;/a&gt; for free (Thanks, Scotty!). This challenge was well received and got me thinking about organizing something bigger and better, much like what &lt;a href=&quot;http://ironcoder.org/blog&quot; target=&quot;_blank&quot;&gt;Ironcoder&lt;/a&gt; used to be, but just for our local CocoaHeads chapter.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;I&#039;ve started asking around on Twitter (I&#039;m &lt;a href=&quot;http://twitter.com/arepty&quot; target=&quot;_blank&quot;&gt;@arepty&lt;/a&gt;, by the way) for software vendors to donate licenses, and with the Mac developer community being as fantastic as always, I received pledges for software licenses worth over 500  within a couple of days. To top this off, falkemedia has thrown three one-year subscriptions of their magazine Mac Life into the mix, so the winners of the upcoming competition have quite a lot of stuff to look forward to.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;The competition details (theme and API) will be announced at our meeting next Thursday, August 13th 2009. Please note that this being strictly a competition for the Bremen chapter of CocoaHeads, you will only be eligible to enter if you have participated in one of our local meetings in the past or will participate on Thursday. Participants will have about three weeks to build an app (Mac or iPhone) with the theme and API that I will choose for them. After the deadline, I will judge the apps and announce winners at the September meeting of our chapter.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;You&#039;re probably interested to learn what kind of software was pledged as prizes for the competition, so here&#039;s the complete list:&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://www.realmacsoftware.com/rapidweaver/&#039; target=&quot;_blank&quot;&gt;&lt;!-- s9ymdb:163 --&gt;&lt;img width=&quot;128&quot; height=&quot;128&quot; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://blog.proculo.de/uploads/CHBCC/RapidWeaver.png&quot; alt=&quot;RapidWeaver&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;strong&gt;RapidWeaver (5 licenses)&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://www.realmacsoftware.com/littlesnapper/&#039; target=&quot;_blank&quot;&gt;&lt;!-- s9ymdb:163 --&gt;&lt;img width=&quot;128&quot; height=&quot;128&quot; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://blog.proculo.de/uploads/CHBCC/LittleSnapper.png&quot; alt=&quot;LittleSnapper&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;strong&gt; LittleSnapper (5 licenses)&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://connectedflow.com/changes/&#039; target=&quot;_blank&quot;&gt;&lt;!-- s9ymdb:151 --&gt;&lt;img width=&quot;128&quot; height=&quot;128&quot; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://blog.proculo.de/uploads/CHBCC/Changes.png&quot; alt=&quot;Changes&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;strong&gt;Changes (2 licenses)&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://www.mcubedsw.com/software/lighthousekeeper&#039; target=&quot;_blank&quot;&gt;&lt;!-- s9ymdb:151 --&gt;&lt;img width=&quot;128&quot; height=&quot;128&quot; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://blog.proculo.de/uploads/CHBCC/LighthouseKeeper.png&quot; alt=&quot;Lighthouse Keeper&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;strong&gt;Lighthouse Keeper (1 license)&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://www.mcubedsw.com/software/codecollectorpro&#039; target=&quot;_blank&quot;&gt;&lt;!-- s9ymdb:151 --&gt;&lt;img width=&quot;128&quot; height=&quot;128&quot; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://blog.proculo.de/uploads/CHBCC/CodeCollectorPro.png&quot; alt=&quot;Code Collector Pro&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;strong&gt;Code Collector Pro (1 license)&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://www.versionsapp.com/&#039; target=&quot;_blank&quot;&gt;&lt;!-- s9ymdb:151 --&gt;&lt;img width=&quot;128&quot; height=&quot;128&quot; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://blog.proculo.de/uploads/CHBCC/Versions.png&quot; alt=&quot;Versions&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;strong&gt;Versions (3 licenses)&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://www.coversutra.com/&#039; target=&quot;_blank&quot;&gt;&lt;!-- s9ymdb:151 --&gt;&lt;img width=&quot;128&quot; height=&quot;128&quot; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://blog.proculo.de/uploads/CHBCC/CoverSutra.png&quot; alt=&quot;CoverSutra&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;strong&gt;CoverSutra (3 licenses)&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://www.pixelespressoapps.com/decloner/&#039; target=&quot;_blank&quot;&gt;&lt;!-- s9ymdb:151 --&gt;&lt;img width=&quot;128&quot; height=&quot;128&quot; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://blog.proculo.de/uploads/CHBCC/Decloner.png&quot; alt=&quot;Decloner&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;strong&gt;Decloner (5 licenses)&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://zykloid.com/posterino&#039; target=&quot;_blank&quot;&gt;&lt;!-- s9ymdb:151 --&gt;&lt;img width=&quot;128&quot; height=&quot;128&quot; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://blog.proculo.de/uploads/CHBCC/Posterino.png&quot; alt=&quot;Posterino&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;strong&gt;Posterino (5 licenses)&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://www.maccoremac.com/&#039; target=&quot;_blank&quot;&gt;&lt;!-- s9ymdb:151 --&gt;&lt;img width=&quot;128&quot; height=&quot;128&quot; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://blog.proculo.de/uploads/CHBCC/MentalCase.png&quot; alt=&quot;Mental Case&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;strong&gt;Mental Case (1 license)&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://www.macmation.com/TimeBoxed&#039; target=&quot;_blank&quot;&gt;&lt;!-- s9ymdb:151 --&gt;&lt;img width=&quot;128&quot; height=&quot;128&quot; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://blog.proculo.de/uploads/CHBCC/TimeBoxed.png&quot; alt=&quot;TimeBoxed&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;strong&gt;TimeBoxed (5 licenses)&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://www.maclife.de/&#039; target=&quot;_blank&quot;&gt;&lt;!-- s9ymdb:156 --&gt;&lt;img width=&quot;300&quot; height=&quot;69&quot; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://blog.proculo.de/uploads/CHBCC/MacLife.png&quot; alt=&quot;Mac Life&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;strong&gt;Mac Life magazine (3 one-year subscriptions)&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;In my opinion, that is one fantastic line-up of prizes - especially for developers. They will be distributed as follows among the best-ranking participants:&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;First prize&lt;/strong&gt;: RapidWeaver, LittleSnapper, Lighthouse Keeper, Code Collector Pro, Decloner, Posterino, Versions, TimeBoxed, CoverSutra, Changes, Mental Case, Mac Life subscription&lt;br /&gt;
&lt;strong&gt;Second prize&lt;/strong&gt;: RapidWeaver, LittleSnapper, Decloner, Posterino, Versions, TimeBoxed, CoverSutra, Changes, Mac Life subscription&lt;br /&gt;
&lt;strong&gt;Third prize&lt;/strong&gt;: RapidWeaver, LittleSnapper, Decloner, Posterino, Versions, TimeBoxed, CoverSutra, Mac Life subscription&lt;br /&gt;
&lt;strong&gt;Fourth and fifth prize&lt;/strong&gt;: RapidWeaver, LittleSnapper, Decloner, Posterino, TimeBoxed&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Including the Mac Life subscriptions, the amount of all the prizes comes to over 1,000 . I&#039;d like to thank all of the sponsors for their generous offers and hope that all those who attend next week&#039;s meeting are going to enjoy the competition. I&#039;m looking forward to seeing what you guys will come up with.&lt;/p&gt;&lt;br /&gt;
 
    </description>

    <dc:publisher>Feelin' Fine</dc:publisher>
    <dc:creator>alexander.repty@mac.com (Alexander Repty)</dc:creator>
    <dc:subject>
    Development, </dc:subject>
    <dc:date>2009-08-07T11:56:40Z</dc:date>
    <wfw:comment>http://blog.proculo.de/wfwcomment.php?cid=172</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.proculo.de/rss.php?version=1.0&amp;type=comments&amp;cid=172</wfw:commentRss>
    
    
</item>
<item rdf:about="http://blog.proculo.de/archives/171-guid.html">
    <title>I got me a Twitshirt!</title>
    <link>http://blog.proculo.de/archives/171-I-got-me-a-Twitshirt!.html</link>
    <description>
    It has this &lt;a href=&quot;https://twitter.com/mattgemmell/status/2277421425&quot;&gt;great quote&lt;/a&gt; by &lt;a href=&quot;https://twitter.com/mattgemmell&quot;&gt;Matt Legend Gemmell&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;a  class=&#039;serendipity_image_link&#039;  rel=&#039;lightbox&#039; href=&#039;http://blog.proculo.de/uploads/Foto28.jpg&#039;&gt;&lt;!-- s9ymdb:150 --&gt;&lt;img width=&quot;110&quot; height=&quot;83&quot; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://blog.proculo.de/uploads/Foto28.serendipityThumb.jpg&quot; alt=&quot;&quot;  /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
By the way, I&#039;m &lt;a href=&quot;http://twitter.com/arepty&quot;&gt;@arepty on Twitter&lt;/a&gt;. 
    </description>

    <dc:publisher>Feelin' Fine</dc:publisher>
    <dc:creator>alexander.repty@mac.com (Alexander Repty)</dc:creator>
    <dc:subject>
    Mac stuff, </dc:subject>
    <dc:date>2009-07-04T11:12:22Z</dc:date>
    <wfw:comment>http://blog.proculo.de/wfwcomment.php?cid=171</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.proculo.de/rss.php?version=1.0&amp;type=comments&amp;cid=171</wfw:commentRss>
    
    
</item>
<item rdf:about="http://blog.proculo.de/archives/170-guid.html">
    <title>NSConference</title>
    <link>http://blog.proculo.de/archives/170-NSConference.html</link>
    <description>
    Last week, I made a short trip to the UK for the first ever &lt;a href=&quot;http://www.nsconference.com/&quot; title=&quot;NSConference&quot;&gt;NSConference&lt;/a&gt;, organised by &lt;a href=&quot;http://www.mac-developer-network.com/&quot; title=&quot;Steve &#039;Scotty&#039; Scott&quot;&gt;Steve &quot;Scotty&quot; Scott&lt;/a&gt; and &lt;a href=&quot;http://www.timisted.net/blog/&quot; title=&quot;Tim Isted&quot;&gt;Tim Isted&lt;/a&gt;. With a list of speakers including well-known developers such as &lt;a href=&quot;http://mattgemmell.com/&quot; title=&quot;Matt Legend Gemmell&quot;&gt;Matt Legend Gemmell&lt;/a&gt;, &lt;a href=&quot;http://www.zarrastudios.com/ZDS/Home/Home.html&quot; title=&quot;Marcus Zarra&quot;&gt;Marcus Zarra&lt;/a&gt;, &lt;a href=&quot;http://www.algorithm.com.au/&quot; title=&quot;André Pang&quot;&gt;André Pang&lt;/a&gt;, &lt;a href=&quot;http://www.atomicwang.org/motherfucker/Index/Index.html&quot; title=&quot;Mike Lee&quot;&gt;Mike Lee&lt;/a&gt; and a bunch more, I was sure that attending would be worth the time, money and effort.&lt;br /&gt;
&lt;br /&gt;
Fortunately, I arrived on Wednesday already, so I could participate in the big get-together at the bar that night. A lot of people who arrived early, too, had a great time getting to know each other, drinking beer and cider and generally talking about Mac development related stuff. Getting to know a bunch of people who I just knew from Twitter made this evening a blast.&lt;br /&gt;
&lt;br /&gt;
Obviously, a night such as that one had its drawbacks - namely, alcohol consumption. Too much of it for a clear head on Thursday morning, anyway. About three cups of coffee, a great breakfast, two paracetamol and a Red Bull later, I was back on my feet and excited about the sessions that the day would offer. And I should not be disappointed. All the speakers knew their stuff really well and presented us with great material and inspiration to start working on something that would utlize our new-found knowledge. Especially &lt;a href=&quot;http://www.fscript.org/prof/prof.htm&quot; title=&quot;Philippe Mougin&quot;&gt;Philippe Mougin&lt;/a&gt; seemed to have hit a nail with his talk about &lt;a href=&quot;http://www.fscript.org/&quot; title=&quot;F-Script&quot;&gt;F-Script&lt;/a&gt;, as everyone seemed to be eager to use it right away and find out more about their and Apple&#039;s applications.&lt;br /&gt;
&lt;br /&gt;
Thursday night saw the NSConference banquet taking place, which was a great dinner along with the chance to meet even more fellow developers and have some great conversations. Also, even more beer and cider, although I managed to drink in moderation and avoid taking even more medication the next morning.&lt;br /&gt;
&lt;br /&gt;
After four more great sessions and a somewhat decent lunch, we got to be witnesses of the first ever Cocoa Faceoff, which pitted the speakers from America against those from Europe with each team joined by two delegates. Both teams had 30 minutes to design a Cocoa application, along with an iPhone version for conference organisers. By the end of the time, the teams should present their idea to the audience which would judge these applications. Scotty made promises of glory for the winning team and shame for the losers - while seeming completely impartial (*cough*).&lt;br /&gt;
&lt;br /&gt;
Tim and Scotty would grab each speaker out of their group for a few minutes, so that they could provide a quick tip to the remaining delegates. This proved to be a lot of entertainment, although it resulted in Xcode being unusable at some point and almost got the Mac Pro destroyed.&lt;br /&gt;
&lt;br /&gt;
Both teams presented their application ideas to the cheers of the audience, and Europe took the win, with a barely noticeable higher noise level than the American team achieved.&lt;br /&gt;
&lt;br /&gt;
With this, the first ever UK Mac developer conference came to a close, and all of us could go home and look back on a few days full of great talks, informative conversations and a lot of fun. I couldn&#039;t find one person who didn&#039;t enjoy the conference or didn&#039;t think they walked away with some very valuable knowledge.&lt;br /&gt;
&lt;br /&gt;
All that said, I&#039;m looking forward to NSConference 2.0 next year.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.flickr.com/photos/alexrepty/sets/72157617078961142/&quot; title=&quot;iPhone pictures of NSConference&quot;&gt;I also posted some pictures on Flickr&lt;/a&gt;. 
    </description>

    <dc:publisher>Feelin' Fine</dc:publisher>
    <dc:creator>alexander.repty@mac.com (Alexander Repty)</dc:creator>
    <dc:subject>
    Development, </dc:subject>
    <dc:date>2009-04-20T10:04:54Z</dc:date>
    <wfw:comment>http://blog.proculo.de/wfwcomment.php?cid=170</wfw:comment>
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://blog.proculo.de/rss.php?version=1.0&amp;type=comments&amp;cid=170</wfw:commentRss>
    
    
</item>
<item rdf:about="http://blog.proculo.de/archives/169-guid.html">
    <title>Debugging Unrecognized Selectors</title>
    <link>http://blog.proculo.de/archives/169-Debugging-Unrecognized-Selectors.html</link>
    <description>
    In the past few weeks, I have spent quite some time working on an iPhone application for a client. It is a port of a J2ME project, and a rather big one at that. Since I&#039;ve only been working on some parts of the application, I wasn&#039;t really interested in using my time to fix all the compile warnings that I encountered and tried to concentrate only on the features that I had to add.&lt;br /&gt;
&lt;br /&gt;
From time to time the application would crash with error messages such as this one:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;2009-01-29 13:32:56.306 Debugging[28349:20b] -[NSCFString doSomething]: unrecognized selector sent to instance 0x3030&lt;br /&gt;
2009-01-29 13:32:56.307 Debugging[28349:20b] Terminating app due to uncaught exception &#039;NSInvalidArgumentException&#039;, reason: &#039;*** -[NSCFString doSomething]: unrecognized selector sent to instance 0x3030&#039;&lt;br /&gt;
&lt;/blockquote &gt;&lt;br /&gt;
&lt;br /&gt;
It is usually rather difficult to trace the origin of this exception using the debugger. You can of course try to search your code for the name of the selector in question, or you can look through your compiler warnings. In a fairly large project, however, the right spot in your code may not be easy to find. &lt;br /&gt;&lt;a href=&quot;http://blog.proculo.de/archives/169-Debugging-Unrecognized-Selectors.html#extended&quot;&gt;Continue reading &quot;Debugging Unrecognized Selectors&quot;&lt;/a&gt;
    </description>

    <dc:publisher>Feelin' Fine</dc:publisher>
    <dc:creator>alexander.repty@mac.com (Alexander Repty)</dc:creator>
    <dc:subject>
    Development, </dc:subject>
    <dc:date>2009-01-29T12:24:11Z</dc:date>
    <wfw:comment>http://blog.proculo.de/wfwcomment.php?cid=169</wfw:comment>
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://blog.proculo.de/rss.php?version=1.0&amp;type=comments&amp;cid=169</wfw:commentRss>
    
    
</item>
<item rdf:about="http://blog.proculo.de/archives/168-guid.html">
    <title>Lab Tick 0.9.2 Released</title>
    <link>http://blog.proculo.de/archives/168-Lab-Tick-0.9.2-Released.html</link>
    <description>
    I have released &lt;a href=&quot;http://labtick.proculo.de/&quot;&gt;Lab Tick 0.9.2&lt;/a&gt; today. This minor release includes one serious bug fix and a number of small improvements:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
&lt;li&gt;Fixed a power management issue which caused the backlight to not come back on after being idle.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Added an option to permanently suppress the donation window for contributors.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;A number of minor bug fixes and improvements.&lt;/li&gt;&lt;br /&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
As always, Lab Tick is provided free of charge, although &lt;a href=&quot;http://labtick.proculo.de/donate.html&quot;&gt;donations are encouraged&lt;/a&gt;. Enjoy the update and let me know if you have any issues. 
    </description>

    <dc:publisher>Feelin' Fine</dc:publisher>
    <dc:creator>alexander.repty@mac.com (Alexander Repty)</dc:creator>
    <dc:subject>
    Lab Tick, </dc:subject>
    <dc:date>2008-12-08T14:25:06Z</dc:date>
    <wfw:comment>http://blog.proculo.de/wfwcomment.php?cid=168</wfw:comment>
        <slash:comments>6</slash:comments>
        <wfw:commentRss>http://blog.proculo.de/rss.php?version=1.0&amp;type=comments&amp;cid=168</wfw:commentRss>
    
    
</item>
<item rdf:about="http://blog.proculo.de/archives/166-guid.html">
    <title>Preparing for 1.0</title>
    <link>http://blog.proculo.de/archives/166-Preparing-for-1.0.html</link>
    <description>
    In the past two years, &lt;a href=&quot;http://labtick.proculo.de/&quot;&gt;Lab Tick&lt;/a&gt; has matured from a relatively simple slider in a window to a complex application with a bunch of user-configurable preferences and nice features.&lt;br /&gt;
&lt;br /&gt;
The following screen shots will give you an idea of what Lab Tick used to look like in the past. The first image shows version 0.2, one of the very first releases. In version 0.4, I started using a preferences window for some of the very first basic user-configurable behaviour.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;&lt;a href=&quot;http://blog.proculo.de/archives/166-Preparing-for-1.0.html#extended&quot;&gt;Continue reading &quot;Preparing for 1.0&quot;&lt;/a&gt;
    </description>

    <dc:publisher>Feelin' Fine</dc:publisher>
    <dc:creator>alexander.repty@mac.com (Alexander Repty)</dc:creator>
    <dc:subject>
    Lab Tick, </dc:subject>
    <dc:date>2008-11-02T09:35:11Z</dc:date>
    <wfw:comment>http://blog.proculo.de/wfwcomment.php?cid=166</wfw:comment>
        <slash:comments>9</slash:comments>
        <wfw:commentRss>http://blog.proculo.de/rss.php?version=1.0&amp;type=comments&amp;cid=166</wfw:commentRss>
    
    
</item>

</rdf:RDF>
