<?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>FlickDotNet.de - Holger&#039;s Take on Software Development</title>
	<atom:link href="http://www.flickdotnet.de/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.flickdotnet.de</link>
	<description>Opinions, Reviews, Tutorials for Software Developers - Apple iOS, Microsoft .NET and Delphi</description>
	<lastBuildDate>Tue, 26 Jul 2011 17:32:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Visual Studio LightSwitch 2011 released!</title>
		<link>http://www.flickdotnet.de/index.php/2011/07/visual-studio-lightswitch-2011-released/</link>
		<comments>http://www.flickdotnet.de/index.php/2011/07/visual-studio-lightswitch-2011-released/#comments</comments>
		<pubDate>Tue, 26 Jul 2011 17:32:04 +0000</pubDate>
		<dc:creator>holger</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[DelphiExperts]]></category>
		<category><![CDATA[Developer Experts]]></category>
		<category><![CDATA[Prism]]></category>

		<guid isPermaLink="false">http://www.flickdotnet.de/?p=365</guid>
		<description><![CDATA[Just a quick note&#8230; Visual Studio LightSwitch 2011 has been released officially! I have been using Beta 2 on a regular basis and it was already as stable and reliable as a full product. I am expecting the RTM version to be even better and to offer even more great features. LightSwitch is a great [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick note&#8230; Visual Studio LightSwitch 2011 has been released officially! I have been using Beta 2 on a regular basis and it was already as stable and reliable as a full product. I am expecting the RTM version to be even better and to offer even more great features.</p>
<p>LightSwitch is a great tool to build business applications as it allows you to build a conceptual data model and a user interface. All the in-between plumbing is being taken care of by LightSwitch. A prototype is built pretty quickly and the framework allows for a great deal of customization if one wants to. You can write code at all sort of places so that you do not even recognize that it is a LightSwitch app.</p>
<p>And the best thing&#8230; you develop one app and you can deploy it to the web, to the desktop and into the cloud!</p>
<p>Go here for more information: <a href="http://www.microsoft.com/visualstudio/en-us/lightswitch">http://www.microsoft.com/visualstudio/en-us/lightswitch</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flickdotnet.de/index.php/2011/07/visual-studio-lightswitch-2011-released/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Busy, busy, busy &#8230; and then there is Visual Studio LightSwitch</title>
		<link>http://www.flickdotnet.de/index.php/2011/07/busy-busy-busy-and-then-there-is-visual-studio-lightswitch/</link>
		<comments>http://www.flickdotnet.de/index.php/2011/07/busy-busy-busy-and-then-there-is-visual-studio-lightswitch/#comments</comments>
		<pubDate>Tue, 05 Jul 2011 19:56:47 +0000</pubDate>
		<dc:creator>holger</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.flickdotnet.de/?p=362</guid>
		<description><![CDATA[Sorry, that there are no new posts on this blog recently. I am in the process of writing my Phd. thesis and it keeps me completely busy. I hardly have time for anything else. However, I recently stumbled upon Visual Studio LightSwitch and it is simply amazing. It is the coolest framework I have seen [...]]]></description>
			<content:encoded><![CDATA[<p>Sorry, that there are no new posts on this blog recently. I am in the process of writing my Phd. thesis and it keeps me completely busy. I hardly have time for anything else. However, I recently stumbled upon Visual Studio LightSwitch and it is simply amazing. </p>
<p>It is the coolest framework I have seen in a long time. All the ideas that start piling up in my head&#8230; but it all has to wait until I finished my thesis. I am pretty sure though, that my blog focus will move to LightSwitch very quickly when I start working in the IT industry full-time again&#8230; </p>
<p>Stay tuned!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flickdotnet.de/index.php/2011/07/busy-busy-busy-and-then-there-is-visual-studio-lightswitch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Computer Programming: Are we moving backwards?</title>
		<link>http://www.flickdotnet.de/index.php/2011/04/computer-programming-are-we-moving-backwards/</link>
		<comments>http://www.flickdotnet.de/index.php/2011/04/computer-programming-are-we-moving-backwards/#comments</comments>
		<pubDate>Thu, 07 Apr 2011 10:13:42 +0000</pubDate>
		<dc:creator>holger</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.flickdotnet.de/?p=358</guid>
		<description><![CDATA[I just read a paper written by Per Brinch Hansen. He is most commonly known in the IT world for his papers on concurrent programming theory. Actually, I wanted to formally read into Remote Procedure Calls and that is how I found his theories. Interestingly, he wrote in 1993 to C.A.R. Hoare: The 1980s will [...]]]></description>
			<content:encoded><![CDATA[<p>I just read a paper written by Per Brinch Hansen. He is most commonly known in the IT world for his papers on concurrent programming theory. Actually, I wanted to formally read into Remote Procedure Calls and that is how I found his theories.</p>
<p>
Interestingly, he wrote in 1993 to C.A.R. Hoare:
</p>
<blockquote><p>The 1980s will probably be remembered as the decade in which programmers took a gigantic step backwards by switching from secure Pascal-like languages to insecure C-like languages. I have<br />
no rational explanation for this trend. But it seems to me that if computer programmers cannot even agree that security is an essential requirement of any programming language, then we have<br />
not yet established a discipline of computing based on commonly accepted principles.
</p></blockquote>
<p>
I had this very discussion underlining his statement just a few days ago, why new programming languages tend to get rid of some principles that have proven worthy due to common practise. Apple uses Objective-C as their primary language for iOS development. A lot of frameworks require C or C++ knowledge and are not completely available in Objective-C. Also, C# is mixing method declaration with method implementation in the same file, even in the same &#8220;scope&#8221; as you do not even declare and implement in separate regions.</p>
<p>Sadly, Mr Hansen seems to have been right as the most-common mobile platforms require Java or C-languages for development. However, Pascal syntax is still rather common for writing pseudo-code.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flickdotnet.de/index.php/2011/04/computer-programming-are-we-moving-backwards/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Making Apps Developer Days by Developer Experts and MacWelt</title>
		<link>http://www.flickdotnet.de/index.php/2010/10/making-apps-developer-days-developer-experts-and-macwelt/</link>
		<comments>http://www.flickdotnet.de/index.php/2010/10/making-apps-developer-days-developer-experts-and-macwelt/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 15:46:48 +0000</pubDate>
		<dc:creator>holger</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[DelphiExperts]]></category>
		<category><![CDATA[Developer Experts]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Xcode]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.flickdotnet.de/?p=348</guid>
		<description><![CDATA[With regard to my recent posts I would like to point out two events that will be held in Germany in November. Both events focus on development for iOS 4 and are scheduled as a two-day workshop. Day 1 will give an introduction to iOS 4 development, Objective-C in particular, and the development tools needed [...]]]></description>
			<content:encoded><![CDATA[<p>With regard to my recent posts I would like to point out two events that will be held in Germany in November. Both events focus on development for iOS 4 and are scheduled as a two-day workshop.</p>
<p>Day 1 will give an introduction to iOS 4 development, Objective-C in particular, and the development tools needed to write apps. Whereas day 2 will be more hands-on and will give attendees the chance to start with a small demo project with guidance from Daniel Magin and Olaf Monien.</p>
<p>I have been invited to take part and will be presenting some content as well. As my current work at University includes app development with iOS 4, my main focus will be to give practical advise and some in-depth analysis on various topics. When time allows, I might just show some code snippets from apps that are in the AppStore already. <img src='http://www.flickdotnet.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Hopefully, it will allow attendees to take the initial hurdles with Objective-C easier.  </p>
<p>If you are interested click <a href="http://tinyurl.com/2aw6lym">here</a> to view the complete agenda.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flickdotnet.de/index.php/2010/10/making-apps-developer-days-developer-experts-and-macwelt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iOS: Does this property or method retain my object instance?</title>
		<link>http://www.flickdotnet.de/index.php/2010/10/ios-dretain/</link>
		<comments>http://www.flickdotnet.de/index.php/2010/10/ios-dretain/#comments</comments>
		<pubDate>Fri, 22 Oct 2010 15:30:04 +0000</pubDate>
		<dc:creator>holger</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Xcode]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.flickdotnet.de/?p=337</guid>
		<description><![CDATA[I already mentioned in earlier posts that it is quite tricky when beginning with iOS to decide whether one has to release an object instance or not. Sure, we have the golden rule number one: If I use alloc, copy or new to create an object instance, I own it and need to call release [...]]]></description>
			<content:encoded><![CDATA[<p>I already mentioned in earlier posts that it is quite tricky when beginning with iOS to decide whether one has to release an object instance or not.<br />
Sure, we have the golden rule number one:</p>
<blockquote><p>If I use <code>alloc</code>, <code>copy</code> or <code>new</code> to create an object instance, I own it and need to call <code>release</code> as soon as I do not need it anymore (or <code>autorelease</code>).</p></blockquote>
<p>This sounds simple, but people often state</p>
<blockquote><p>After calling <code>release</code>, the object is being removed from memory, so I cannot call <code>release</code> unless I am certain nobody is using it anymore.</p></blockquote>
<p>Sadly, that statement is simply wrong. On the one hand you should never even think about when an object is being removed from memory when coding in Objective-C with iOS in the first place. However, on the other hand you never need to consider &#8216;other parties&#8217; when releasing or retaining. If another party needs the object instance it will have called <code>retain</code> for certain which means that the object is not being removed when you call <code>release</code> in your code. If the other party did not call <code>retain</code>, their programming is flawed, but you can never assume that and keep your object instances around without calling <code>release</code>.</p>
<p>So, getting back at the inititial question how to decide if another method or property does call <code>retain</code> or not. It is quite easy to see if you know where to look. Apple delivers the complete source code for the headers with iOS. Yes, source code. But think again. I said &#8216;header files&#8217;. No implementation is given away, just the specification of the classes etc. which you find in the header file.</p>
<p>Xcode has a wonderful means to get you exactly to the right location in a header file that yields the result. You can also use the quick help feature which also lists the declaration of a property, but lacks the retain-information for methods. </p>
<p>Let us look at two examples.</p>
<pre class="brush: objc;">
  // example 1
  self.navigationItem.backBarButtonItem = backButton;

  // example 2
  NSMutableArray *names = [[NSMutableArray alloc] init];
  NSString *captain = [[NSString alloc] initWithString:@&quot;Jean-Luc&quot;];
  [names addObject:captain];
  [captain release];

  // sometime later

  [names release];
</pre>
<p>Example 1 is pretty brief as I talked about it in my last blog post with regard to the <code>navigationItem</code>. I am not going into any release or retain-discussions here. However, what does the assignment do exactly?<br />
Type the code into Xcode and hold down the Option-key and double-click <code>backBarButtonItem</code>.<br />
You will get the following hint:<br />
<img src="http://www.flickdotnet.de/wp-content/uploads/2010/10/Quickhelp.png" alt="" title="Quickhelp" width="530" height="165" class="alignleft size-full wp-image-339" /><br />
This is all you need. It clearly gives you the information that you need to pass an instance of  <code>UIBarButtonItem</code> and that the object is going to be retained. Time needed to assure yourself? 1 second. Xcode is very good in that regard. </p>
<p>Of course, you can also hold down the Command-key and double-click <code>backBarButtonItem</code>. This will not show you any help document, but will prompt you to select if you want more information about the property declaration or the setter method of the poperty. If you try both options you will find out that both lead to the same line of code in the  declaration as the property is synthesized and no custom set-method has been specified. You will navigate to source code of the header declaration of <code>UINavigationBar</code>. The property is declared as follows.</p>
<pre class="brush: objc;">
  @property (nonatomic,retain)
       UIBarButtonItem *backBarButtonItem;
</pre>
<p>Yet again, the same information we got from the quick help. Many roads lead to Rome it seems.</p>
<p>Thus, remember to make use of the navigation features of Xcode. Command-double-click takes you to the source. Option-double-clicking a property or method shows a quick help window. Very helpful. I wish there was a way to invoke that while watching &#8216;Lost&#8217; now and then.</p>
<p>Finally, let us inspect example number 2. It comes naturally to us to release objects that we add to an <code>NSArray</code> as we learned that <code>addObject:</code> does indeed retain object instances. Where can we find that info? Sadly, neither the quick help nor the detailed help for <code>addObject:</code>which you can invoke with a Command-Option-double click gives any hints if retain is being called. You need to have a look at a guide called &#8220;Collections Programming Topics&#8221; in the help. You can retrieve this guide in PDF format as well, which is great. There you can find the following statement in the section about arrays:</p>
<blockquote><p>In a managed memory environment, an object receives a retain message when it’s added; in a garbage collected environment, it is strongly referenced. When an array is deallocated in a managed memory environment, each element is sent a release message.</p></blockquote>
<p>Phew. It is documented, but it is very hard to find. It would be great if we could find a comment in the header file or some information in the help for <code>addObject:</code>. The documentation of iOS is very detailed and easy to navigate. But in this instance there is desperate need for improvement.</p>
<p>Thus, summing up our example number 2, we can release <code>captain</code> after adding the object instance to the array as the array owns it now and we may let go if we do not need it anymore.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flickdotnet.de/index.php/2010/10/ios-dretain/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Customizing an UINavigationController with title, prompt and buttons (in code)</title>
		<link>http://www.flickdotnet.de/index.php/2010/10/customizing-an-uinavigationcontroller-with-title-prompt-and-buttons-in-code/</link>
		<comments>http://www.flickdotnet.de/index.php/2010/10/customizing-an-uinavigationcontroller-with-title-prompt-and-buttons-in-code/#comments</comments>
		<pubDate>Thu, 21 Oct 2010 15:00:02 +0000</pubDate>
		<dc:creator>holger</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.flickdotnet.de/?p=313</guid>
		<description><![CDATA[In the last few weeks I have seen quite a lot of different implementations how to customize the UINavigationController. When you are new to a programming language you tend to use snippets from newsgroups and blogs and often you forget to actually think about the semantics of the code. The UINavigationController examples have a huge [...]]]></description>
			<content:encoded><![CDATA[<p>In the last few weeks I have seen quite a lot of different implementations how to customize the <code>UINavigationController</code>. When you are new to a programming language you tend to use snippets from newsgroups and blogs and often you forget to actually think about the semantics of the code. The <code>UINavigationController</code> examples have a huge spectrum from being correct to awfully wrong.</p>
<p>With this blog post there will hopefully be one more correct entry on that subject. I will add some additional words with regard to memory management as well. Especially for Delphi programmers the memory management approach of iOS feels somewhat strange and takes quite some time to get used to. In my sessions I always say that there are 5 basic principles one has to consider when starting to write applications for the iPhone or iPad. Three of those five are &#8220;Patience&#8221;.</p>
<p>A <code>UINavigationController</code> can be customized that it shows the title of the current view with an optional additional prompt. Furthermore, there may be one button on the right side and one on the left. The button on the left side is mostly shown as an arrow that allows the user to navigate back to the previous view. In order to access these items you may use the property called <code>navigationItem</code>.</p>
<p>The following example sets the title of the current view that has just been loaded completely into memory. Is is not necessarily being shown yet. If you want to make sure that the title gets updated whenever the view does appear on screen, you have to use the corresponding event. That is common mistake number one. A view (or the corresponding view controller) may be only loaded once, but it can appear over and over again showing different (or the same) things.</p>
<pre class="brush: objc;">
// Implement viewDidLoad to do additional setup
// after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];

    self.navigationItem.title = @&quot;Details&quot;;
}
</pre>
<p>Do not forget to call the <code>viewDidLoad</code>-event of the super-class. Furthermore, if you try this example, make sure that the <code>UIViewController</code> you implement it in, actually is being handled by a <code>UINavigationController</code>. If you insert this code into a view controller that is not owned by a navigation controller, <code>self.navigationItem</code> will yield <code>nil</code>. </p>
<p>Of course, you might consider using <code>setTitle:</code> instead of using the dot-syntax. The dot-syntax is well-known from other languages, but it also has significant side-effects in the Objective-C language. However, this is the non-dot-version of the code from above:</p>
<pre class="brush: objc;">
// Implement viewDidLoad to do additional setup
// after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];

    [self.navigationItem setTitle:@&quot;Details&quot;];
}
</pre>
<p>This code will not crash if <code>self.navigationItem</code> is <code>nil</code>, because trying to send a message (aka calling a method) to <code>nil</code> will simply lead to nothing being executed. If this is a good thing and the view will still be able to show the information needed is another topic, but at least your app will not crash!</p>
<p>Setting up the prompt is just the same. Use the property named <code>prompt</code> or send the message <code>setPrompt:</code> to the <code>navigationItem</code>:</p>
<pre class="brush: objc;">
// Implement viewDidLoad to do additional setup
// after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];

    [self.navigationItem setPrompt:&quot;Please keep the &quot;
      &quot;following information confidential.&quot;];
    [self.navigationItem setTitle:@&quot;Details&quot;];
}
</pre>
<p>The buttons are the trickiest part for most developers. Just put one thing in your mind at first: </p>
<ul>
<li><code>navigationItem</code> has three properties that take care of positioning buttons. One is <code>leftBarButtonItem</code> the other is <code>rightBarButtonItem</code>. Finally, and that one is always forgotten, there is <code>backBarButtonItem</code>.</li>
<li>Second, you can only have one button on the left. If you define a back button, you cannot have another one on the left side. Period. If you define both only one will be shown and accessible to the user. The <code>backBarButtonItem</code> is always drawn with an arrow on the left side. You do not have to pay any special attention to that &#8211; iOS handles the drawing for you. If you use <code>leftBarButtonItem</code>, there will be no arrow. </li>
<li>Third, you define the back button in the view controller that shows the depending view (so-called detail view). Thinking of the mail application, the view controller that shows all your mails in a list defines the back button for the view that displays the content of one mail. About 80% of all blog posts miss to mention this tiny little detail. You always find it in the comments or further down in a thread to a specific question. That is a true time waster for beginners. However, it makes sense as the caption of the back button mostly depends on information of the view that is being left. Thus, only that view controller has the necessary data to set it.</li>
<li>Fourth, if you assign a customized button to the property of the navigation controller, this object instance is being retained. This means there is no need to use the autorelease pool when designing your custom buttons. You can simply release your button after assigning is to the property. You are done with it, so release it. Why use the autorelease pool? Almost all code snippets I found on the web use <code>autorelease</code>. There is never a reason given why the author used it. I can only conclude that he or she never really understood what the property assignment to the <code>navigationItem</code> actually does. It does retain, thus you can release the button. You do not need the reference anymore. You explicitly state a method that is being called if your button is touched. You do not need to remember the object reference yourself as the event passes the object instance of the button to you. Even then, you seldom need it. I can only think of one example for which I need the object instance of the button and that is to change is color after the touch. Well, then you can use the <code>sender</code> of the event and do not need to carry it around in your view controller. Be brave, release it, the navigation controller will take good care of it.</li>
</ul>
<p>If we keep those four aspects in mind, this leads us to the following code snippet for a custom back button:</p>
<pre class="brush: objc;">
    UIBarButtonItem *btnBack = [[UIBarButtonItem alloc] initWithTitle:@&quot;Sign off&quot;
                   style:UIBarButtonItemStylePlain
                   target:nil action:nil];
    self.navigationItem.backBarButtonItem = btnBack; // object is being retained
    [btnBack release]; // release it
</pre>
<p>Remember that this button will show if the view controller you set it in pushes a new view onto the navigation controller.</p>
<p>If I had a quarter for every time the autorelease pool is used for no good reason or memory is even being leaked, i.e. the <code>release</code> is not being called, I would be a very rich man &#8230;</p>
<p>Here you see two screenshots from an example I wrote which customizes all the parts discussed here.</p>
<p><img src="http://www.flickdotnet.de/wp-content/uploads/2010/10/Navigation.png" alt="" title="Navigation" width="414" height="770" class="alignnone size-full wp-image-332" /><br />
<img src="http://www.flickdotnet.de/wp-content/uploads/2010/10/Navigation2.png" alt="" title="Navigation" width="414" height="770" class="alignnone size-full wp-image-332" /></p>
<p>Hopefully, this very detailed post will help more developers understand the inner-workings of using multiple views in their iOS applications.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flickdotnet.de/index.php/2010/10/customizing-an-uinavigationcontroller-with-title-prompt-and-buttons-in-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ANN: Developer Experts App for iPhone and iPad</title>
		<link>http://www.flickdotnet.de/index.php/2010/09/ann-developer-experts-app-for-iphone-and-ipad/</link>
		<comments>http://www.flickdotnet.de/index.php/2010/09/ann-developer-experts-app-for-iphone-and-ipad/#comments</comments>
		<pubDate>Sat, 25 Sep 2010 14:43:05 +0000</pubDate>
		<dc:creator>holger</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[DelphiExperts]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Developer Experts]]></category>

		<guid isPermaLink="false">http://www.flickdotnet.de/?p=298</guid>
		<description><![CDATA[We released yet another (free) application in the AppStore: The Developer Experts App. The app will keep you informed about all Developer Experts events and will allow you to purchase additional course materials in the near future. However, update 1 will introduce Push Notifications so that you will be pinged whenever something interesting happens in [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">We released yet another (free) application in the AppStore: <strong>The Developer Experts App</strong>. The app will keep you informed about all Developer Experts events and will allow you to purchase additional course materials in the near future.</p>
<p style="text-align: left;">However, update 1 will introduce Push Notifications so that you will be pinged whenever something interesting happens in the world of Developer Experts. Push Notifications will notify you about upcoming events and current releases in the world of Delphi, .NET and Objective-C.</p>
<p style="text-align: left;">Just go to the AppStore and search for &#8216;Developer Experts&#8217;. US-based customers may click the AppStore logo to go to the app:<br />
<span class="apps"><a id="Bild" href="http://www.flickdotnet.de/wp-content/plugins/appstore/AppStore.php?appid=391265334" target="_blank"><img id="Image" align="left" src="http://www.flickdotnet.de/wp-content/plugins/appstore/cache/391265334.png" alt="Developer Experts - Stay up to date (AppStore Link) " /></a> <span id="Titel">Developer Experts - Stay up to date</span><br /> <span id="Hersteller">Hersteller: </span> <a href="" target="_blank">Holger Flick</a><br /> <span id="Freigabe">Freigabe: </span>4+<br /> <span id="Preis">Preis: </span>Kostenlos <span id="Download"></span><a href="http://www.flickdotnet.de/wp-content/plugins/appstore/AppStore.php?appid=391265334" rel="nofollow" target="_blank" >Download</a></span><div style="clear: both"></div><br />
<img class="size-medium wp-image-304 aligncenter" title="appstore" src="http://www.flickdotnet.de/wp-content/uploads/2010/09/appstore.png" border="0" alt="" width="159" height="55" />
</p>
<p style="text-align: left;"><img class="alignnone size-full wp-image-300" title="devexapp" src="../wp-content/uploads/2010/09/devexapp.png" alt="" width="386" height="742" border="0"/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flickdotnet.de/index.php/2010/09/ann-developer-experts-app-for-iphone-and-ipad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iOS: Activating InApp Purchases and the issue with invalid Product IDs</title>
		<link>http://www.flickdotnet.de/index.php/2010/08/ios-activating-inapp-purchases-and-the-issue-with-invalid-product-ids/</link>
		<comments>http://www.flickdotnet.de/index.php/2010/08/ios-activating-inapp-purchases-and-the-issue-with-invalid-product-ids/#comments</comments>
		<pubDate>Sun, 29 Aug 2010 08:43:35 +0000</pubDate>
		<dc:creator>holger</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Xcode]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[InApp Purchase]]></category>

		<guid isPermaLink="false">http://www.flickdotnet.de/?p=293</guid>
		<description><![CDATA[It is being discussed quite a lot on the internet that it is very difficult to get started to develop applications with InApp Purchases. Most of the times developers report that the SKProductsRequest does not yield any result or reports the Product ID of the feature as invalid. To make this post brief: most of [...]]]></description>
			<content:encoded><![CDATA[<p>It is being discussed quite a lot on the internet that it is very difficult to get started to develop applications with InApp Purchases. Most of the times developers report that the SKProductsRequest does not yield any result or reports the Product ID of the feature as invalid.</p>
<p>To make this post brief: most of the issues discussed do not exist if you follow the step-by-step guide 100%. However, I got hit by an issue that none of the post addressed:</p>
<ul>
<li>my product called EniRemote is already in the store, it has no InApp Purchases</li>
<li>I want to use InApp Purchases for the update</li>
<li>on my device that is also used for development, I have EniRemote installed, however, the AppStore version, not the developer version</li>
</ul>
<p>I followed Apple&#8217;s documentation 100%. However, all my IDs were still reported as &#8216;invalid&#8217;. Where did I mess up? First, I waited a couple of hours as a lot of developers claim it takes about 12-24 hours for the AppStore to update. I tried again this morning, the issue prevailed.</p>
<p>Then I remembered that my device had the AppStore version installed. I was able to deploy my app to the device without any issues. It also ran in development mode, however, the application always ran in an environment that was created by the AppStore version. Thus, it always must have queries the live-store, not the sandbox.</p>
<p>How did I fix this? Very easy! I removed the app from my device and deployed it again by debugging it in Xcode. My Product IDs were immediately listed as valid and I can use In-App purchases.</p>
<p>Thus, when using InApp features, make sure that you do only use app environments that have been created by Xcode and not the AppStore. It will not work unless you delete any &#8216;live-version&#8217; of the app that has been downloaded from the AppStore first.</p>
<p>I really hope this will help some folks to save some time!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flickdotnet.de/index.php/2010/08/ios-activating-inapp-purchases-and-the-issue-with-invalid-product-ids/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to set up EniRemote</title>
		<link>http://www.flickdotnet.de/index.php/2010/08/how-to-set-up-eniremote/</link>
		<comments>http://www.flickdotnet.de/index.php/2010/08/how-to-set-up-eniremote/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 18:19:26 +0000</pubDate>
		<dc:creator>holger</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Xcode]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[EniRemote]]></category>

		<guid isPermaLink="false">http://www.flickdotnet.de/?p=288</guid>
		<description><![CDATA[A few people complained that EniRemote would not work properly. Please be aware that you have to set up the App before you can use it. In order to connect to your Dreambox, EniRemote needs the IP and credentials. You have to use the Settings application on your iPad and select EniRemote on the left [...]]]></description>
			<content:encoded><![CDATA[<p>A few people complained that EniRemote would not work properly. Please be aware that you have to set up the App before you can use it. In order to connect to your Dreambox, EniRemote needs the IP and credentials.</p>
<p>You have to use the Settings application on your iPad and select EniRemote on the left side to enter that information:</p>
<p><a href="http://www.flickdotnet.de/wp-content/uploads/2010/08/settings.png"><img class="alignnone size-medium wp-image-289" title="Settings for EniRemote" src="http://www.flickdotnet.de/wp-content/uploads/2010/08/settings-300x180.png" alt="" width="300" height="180" /></a></p>
<p>SSL encryption is not supported.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flickdotnet.de/index.php/2010/08/how-to-set-up-eniremote/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EniRemote released in AppStore</title>
		<link>http://www.flickdotnet.de/index.php/2010/08/eniremote-released-in-appstore/</link>
		<comments>http://www.flickdotnet.de/index.php/2010/08/eniremote-released-in-appstore/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 18:13:53 +0000</pubDate>
		<dc:creator>holger</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Xcode]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[EniRemote]]></category>

		<guid isPermaLink="false">http://www.flickdotnet.de/?p=286</guid>
		<description><![CDATA[EniRemote for iPad has been released in Apple&#8217;s AppStore! Right now it is not available in all countries yet, but it will be released in all countries. The App is free for a limited time. If you have an iPad and a Dreambox running with the Gemini Image, be sure to check it out. Here [...]]]></description>
			<content:encoded><![CDATA[<p>EniRemote for iPad has been released in Apple&#8217;s AppStore!</p>
<p>Right now it is not available in all countries yet, but it will be released in all countries. The App is free for a limited time.</p>
<p>If you have an iPad and a Dreambox running with the Gemini Image, be sure to check it out.</p>
<p>Here is the link for the US AppStore:</p>
<p><a href="http://itunes.apple.com/app/eniremote/id386161917?mt=8#">http://itunes.apple.com/app/eniremote/id386161917?mt=8#</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flickdotnet.de/index.php/2010/08/eniremote-released-in-appstore/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Announcing EniRemote for iPad, a remote for any DreamBox set-top box with Gemini Image (Enigma2) &#8230;and a hint for Delphi programmers</title>
		<link>http://www.flickdotnet.de/index.php/2010/08/announcing-eniremote-for-ipad-a-remote-for-any-dreambox-set-top-box-with-gemini-image-enigma2-and-a-hint-for-delphi-programmers/</link>
		<comments>http://www.flickdotnet.de/index.php/2010/08/announcing-eniremote-for-ipad-a-remote-for-any-dreambox-set-top-box-with-gemini-image-enigma2-and-a-hint-for-delphi-programmers/#comments</comments>
		<pubDate>Thu, 12 Aug 2010 17:48:56 +0000</pubDate>
		<dc:creator>holger</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[DelphiExperts]]></category>
		<category><![CDATA[Xcode]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[EniRemote]]></category>

		<guid isPermaLink="false">http://www.flickdotnet.de/?p=276</guid>
		<description><![CDATA[Finally, I am able to announce my first iPad project written in Objective-C and Xcode, written in association with DeveloperExperts, LLC. One can hardly believe how hard-felt the &#8220;finally&#8221; is. I have been programming since 1988 and Objective-C has been the toughest programming language yet. My biggest issue was getting used to the strange way [...]]]></description>
			<content:encoded><![CDATA[<p>Finally, I am able to announce my first iPad project written in Objective-C and Xcode, written in association with DeveloperExperts, LLC. One can hardly believe how hard-felt the &#8220;finally&#8221; is. I have been programming since 1988 and Objective-C has been the toughest programming language yet. My biggest issue was getting used to the strange way how memory allocation and deallocation is handled. It might be me, but it took quite some getting used to. Actually, I undertook my first steps in Objective-C in 2008. However, I really got into it after the seminar I attended in April 2010. Evan Doll, Daniel Magin and Olaf Monien held a workshop with the basics about iPhone-App Development (Making Apps).</p>
<p>Thus, before I introduce you all to my latest app, let me highly recommend their workshop that will take place in <a href="http://www.amiando.com/delphitageBerlin1.html">September in Berlin, Germany</a>. Why did I blog about it here? It is a special workshop for people who have programming skills in Delphi already and want to start with the iPhone/iPad as well. Again, I can only underline how good this workshop is to get started building mobile applications on Apple&#8217;s mobile iOS platform. Furthermore, there is a whole day dedicated to Delphi and the German Delphi days two days later. If that is not a reason for booking a trip&#8230; so, hurry, before all places are taken!</p>
<p>Now back to EniRemote. The application is still being reviewed by Apple while I am writing this. However, I have a team of about 10 beta testers that already had access to the application and judged that it was ready for general distribution. Thanks guys! Sadly, the application that will be published in the App Store is already one week old and is lacking some feature improvements that I already made this week.</p>
<p>As I already said, EniRemote allows you to control your DreamBox from anywhere as long as you connect to it via HTTP. It currently does not support SSL in order to circumvent any encryption/export restrictions that might exist. The phrase &#8216;control your DreamBox&#8217; has many interpretations. Firstly, you have a huge remote control-like view that allows you to mimic any of the keys you can press on your physical remote control. This alone is a huge improvement for me as the DreamBox 800 PVR HD has a very picky remote sensor &#8230;</p>
<p><img class="aligncenter size-full wp-image-277" title="Landscape orientation of Remote Control view" src="http://www.flickdotnet.de/wp-content/uploads/2010/08/remote-land.png" alt="" width="500" height="384" /></p>
<p>Furthermore, the app allows easy zapping and browsing of service EPGs. Even the picons of the channels in different bouquets are downloaded from the box and cached on the iPad device. We do not ship any of the channel icons with the application. Please not that all logos displayed in the screenshots belong to their copyrightholders and these images are shown as an example to illustrate the functionality of the application. I use the Picon Icon Set by LicherPils which is being published on the I-Have-A-DreamBox boards. Right now the bouquets are fully controlled by the box settings. We are planning however to offer a favorite list of channels that can be assembled on the iPad and needs no change of any settings on the box.</p>
<p><a href="http://www.flickdotnet.de/wp-content/uploads/2010/08/channels.png"><img class="aligncenter size-full wp-image-278" title="Services of one bouquet" src="http://www.flickdotnet.de/wp-content/uploads/2010/08/channels.png" alt="" width="500" height="384" /></a></p>
<p><a href="http://www.flickdotnet.de/wp-content/uploads/2010/08/example-epg.png"><img class="aligncenter size-full wp-image-280" title="Episode guide loaded from box." src="http://www.flickdotnet.de/wp-content/uploads/2010/08/example-epg.png" alt="" width="500" height="666" /></a></p>
<p>Recordings are also being displayed and you can take a screenshot if the grab plugin is installed on your box.</p>
<p>We do not support timers as of yet, but work has started to offer that feature. Furthermore, the next release will offer support to connect to more than one box. You will be able to create box settings profiles.</p>
<p>Maybe you own a DreamBox and will give the app a shot as soon as it will be released in the AppStore.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flickdotnet.de/index.php/2010/08/announcing-eniremote-for-ipad-a-remote-for-any-dreambox-set-top-box-with-gemini-image-enigma2-and-a-hint-for-delphi-programmers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Looking at DevExpress DXperience 2010.1 (beta)</title>
		<link>http://www.flickdotnet.de/index.php/2010/05/looking-at-devexpress-dxperience-20101-beta/</link>
		<comments>http://www.flickdotnet.de/index.php/2010/05/looking-at-devexpress-dxperience-20101-beta/#comments</comments>
		<pubDate>Thu, 06 May 2010 17:59:22 +0000</pubDate>
		<dc:creator>holger</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Prism]]></category>

		<guid isPermaLink="false">http://www.flickdotnet.de/?p=271</guid>
		<description><![CDATA[I am eagerly awaiting DevExpress to release DXperience 2010.1. As a subscriber to their technologies you can access a preview version of their product and I just noticed that the Release Candidate is available. Why am I so excited? Let me just give you a couple of reasons from what I saw with the beta [...]]]></description>
			<content:encoded><![CDATA[<p>I am eagerly awaiting  DevExpress to release DXperience 2010.1. As a subscriber to their technologies you can access a preview version of their product and I just noticed that the Release Candidate is available.<br />
Why am I so excited? Let me just give you a couple of reasons from what I saw with the beta version already:</p>
<ul>
<li><strong>The new installer</strong> gets you set up right away without any hussle. Furthermore, even the registration process is handled very easily. You do not have to fiddle with any long key strings. You simply enter your user credentials and setup will select your products. VS2008 and VS2010 can be used side by side and the installer registers all the components in both IDEs &#8211; if you wish to.</li>
<li><strong>Uninstall is just as easy and leaves no baggage behind</strong>. I think everybody who ever used a 3rd party component set knows what I am getting at&#8230;</li>
<li><strong>One installer, all the products</strong>. I just love to only have to download one file, run one installer and also only to have to enter my user credentials once. A real time-saver. You have all the components for the different frameworks and also the IDE tools. Best, if you do not like it that way, DevExpress offers individual downloads as well.</li>
<li><strong>Full integration into VS 2010</strong>. The new Visual Studio has been released recently and I can make full use of it with all the controls I need. In particular all the designers and little IDE helpers work for the full development experience. </li>
<li><strong>VS is using WPF now</strong>. DevExpress offers huge improvements in that area. The new WPF controls and the added features to the already existing WPF control set made me realize how useful the subscription is in order to stay up-to-date and be able to deliver new, innovative technologies to my customers.</li>
<li><strong>ASP.NET MVC support</strong>. Heck, I have been waiting for that. I love the MVC approach for web applications and I truly did not develop any bigger projects with MVC as I was missing the variety for controls I could use. Yes, there are JavaScript libraries, but I did not have enough time to learn yet another language</li>
<li><strong>Grids, Layout Controls and Charts</strong>. All my apps rely heavily on displaying and editing of data (I mean, most apps do). The component set offers me a very good toolset, not only to allow the user to browse data, but also to edit data. 2010.1 really took yet another giant leap forward in that area as all basic components like textedit, button edit etc. are available in WPF now as well.</li>
</ul>
<p>I could go on and on, but those are my favorite aspects I am very excited about.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flickdotnet.de/index.php/2010/05/looking-at-devexpress-dxperience-20101-beta/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Localization Nightmares&#8230;or why having all languages in one version of RAD Studio is just awesome</title>
		<link>http://www.flickdotnet.de/index.php/2010/05/localization-nightmaresor-why-having-all-languages-in-one-version-of-rad-studio-is-just-awesome/</link>
		<comments>http://www.flickdotnet.de/index.php/2010/05/localization-nightmaresor-why-having-all-languages-in-one-version-of-rad-studio-is-just-awesome/#comments</comments>
		<pubDate>Tue, 04 May 2010 17:19:47 +0000</pubDate>
		<dc:creator>holger</dc:creator>
				<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.flickdotnet.de/?p=269</guid>
		<description><![CDATA[Let me give you an example why the decision by Embarcadero to deliver all languages with the very same DVD or download is one of the most overlooked features. I am a big big fan of strategy games on the PC platform. Thus, I bought Anno 1404, definitely a purchase I never regret as the [...]]]></description>
			<content:encoded><![CDATA[<p>Let me give you an example why the decision by Embarcadero to deliver all languages with the very same DVD or download is one of the most overlooked features.</p>
<p>I am a big big fan of strategy games on the PC platform. Thus, I bought Anno 1404, definitely a purchase I never regret as the game is truly the best real-time strategy game I ever played so far. I bought it from a vendor at Ebay as he had the best price. The language of the product was German. I played all campains and recently an Add-On for the game has been released. I bought that as well at a very good price, but did not pay attention to the language of the game. It was localized in English. I tried to install it, but I got immediately the error message that the game was in German and that it was impossible to add the new features to the German version. Understandable, but why have separate DVDs for seperate countries?</p>
<p>RAD Studio is so much better in this regard, because you simply cannot buy the wrong product. You get all the languages and you can even switch between different languages without having to install it again! All the patches are multi-language as well. What is the down-side? One might say that it takes longer for a product to be released but I know from first-hand experience that localization can be done right from the start and thus there will be no delays.</p>
<p>Having separate products with different languages truly is something that is not good for the customer.  Just thinking of Microsoft Office e.g. where the different localizations offer different difctionaries and it becomes really tough which language to install and also which patch to apply as there are more than one, one for every localization.</p>
<p>Thus, once again, this makes the flexible localization one of the most underrated features of RAD Studio.</p>
<p>Oh, yes, I had to order another Anno 1404 &#8212; this time in English.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flickdotnet.de/index.php/2010/05/localization-nightmaresor-why-having-all-languages-in-one-version-of-rad-studio-is-just-awesome/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NSString: Using stringWithFormat and left pad integers with zeros</title>
		<link>http://www.flickdotnet.de/index.php/2010/04/nsstring-using-stringwithformat-and-left-pad-integers-with-zeros/</link>
		<comments>http://www.flickdotnet.de/index.php/2010/04/nsstring-using-stringwithformat-and-left-pad-integers-with-zeros/#comments</comments>
		<pubDate>Wed, 21 Apr 2010 04:41:07 +0000</pubDate>
		<dc:creator>holger</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.flickdotnet.de/?p=257</guid>
		<description><![CDATA[Today, I wanted to display a time-value of 9 minutes and 3 seconds like this: 09:03 Thus, I typed this snippet into my Objective-C code: labelTimer.text = [NSString stringWithFormat:@"%2d:%2d", minutes, seconds ]; [/code] This did not yield the result I wanted. The numbers were padded with spaces, not zeros. Sadly, Apple left out the options [...]]]></description>
			<content:encoded><![CDATA[<p>Today, I wanted to display a time-value of 9 minutes and 3 seconds like this: <tt>09:03</tt></p>
<p>Thus, I typed this snippet into my Objective-C code:<br />
<code><br />
labelTimer.text = [NSString stringWithFormat:@"%2d:%2d", minutes, seconds ];<br />
[/code]</p>
<p>This did not yield the result I wanted. The numbers were padded with spaces, not zeros. Sadly, Apple left out the options for the different format specifiers like f, d, @ ... completely. You have to rely on old C skills in order to know how to pad with zeros or format decimal numbers the way you want. As a side-note, if you have a float and want to format it with 2 decimals, use <tt>%.2f</tt>. In order to pad zeros, you have to use <tt>%02d</tt> in this case, which leads to the following snippet in Objective-C code:</p>
<p></code><code><br />
labelTimer.text = [NSString stringWithFormat:@"%02d:%02d", minutes, seconds ];<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flickdotnet.de/index.php/2010/04/nsstring-using-stringwithformat-and-left-pad-integers-with-zeros/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>libxml: Memory Management and leaks in Frameworks you consider &#8216;safe&#8217;</title>
		<link>http://www.flickdotnet.de/index.php/2010/04/libxml-memory-management-and-leaks-in-frameworks-you-consider-safe/</link>
		<comments>http://www.flickdotnet.de/index.php/2010/04/libxml-memory-management-and-leaks-in-frameworks-you-consider-safe/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 03:39:25 +0000</pubDate>
		<dc:creator>holger</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.flickdotnet.de/?p=255</guid>
		<description><![CDATA[If you have ever written code in Java or .NET, you will truly learn to appreciate the garbage collection, i.e. objects that are no longer referenced are being freed from memory. Automatically no less. A lot of people do not like it for reasons of their own and I do not want to get into [...]]]></description>
			<content:encoded><![CDATA[<p>If you have ever written code in Java or .NET, you will truly learn to appreciate the garbage collection, i.e. objects that are no longer referenced are being freed from memory. Automatically no less.</p>
<p>A lot of people do not like it for reasons of their own and I do <strong>not</strong> want to get into those.</p>
<p>What I do want to discuss is that in an environment in which you are responsible to allocate and free memory yourself (like Delphi, C++, Objective-C), you might stumble about issues with frameworks or base classes you use.</p>
<p>In my case it was the libxml part of the iPhone OS which allows you to parse XML documents. (I even now of Delphi developers using this library to parse large documents). Its biggest advantage is that the xml document is not read in one go but step-by-step in chunks. The developer can hook into it with an event-driven approach and can thus interpret the file. However, during the parse operation the library tends to produce memory leaks that cost me two hours of debugging.</p>
<p>With iPhone applications it is very simple: the iPhone is a mobile device with limited memory. If you produce too many leaks in a certain amount of time, you will not have many customers using your application as it might crash frequently (it might not even be accepted if you want to deploy to the Apple AppStore due to this fact). This makes you very aware of producing code that produces absolutely no memory leaks of any sort. Apple delivers Instruments so that you can debug your code for memory leaks. As I was not familiar with the tool, I did not realize at first that the leak did occur in the library and not in or because of code I had written.</p>
<p>Now comes the important part: formulate a rule. I do not want to waste another minute because of issues that are in 3rd party code. However, it is not as easy, because it might not be the 3rd party library but you not handing over the data to the library correctly (especially when dealing with different languages and use DLLs e.g.). To state the rule &#8216;Always check the call stack where the leak originates.&#8217; will not suffice. An example for this is that you allocate memory for an object instance and then hand a reference to this instance to a function or method. The method allocates memory again and returns another reference instead of using the one you provided. In that case you are responsible for the leak. Documentation needs to be clear in cases like this.</p>
<p>I think that fact is the biggest pro for garbage collection. Some people might call it lazy, but I prefer it considering how much time I spent when writing iPhone applications thinking  of proper memory management. iPhone OS comes with strict guidelines how to name methods so that you know if the caller or the function is responsible to allocate and free the memory which makes it easier, but it is still difficult enough.</p>
<p>As a final point, please be aware that my googling and analysis really points to a method in the parser of libxml leaking some bytes when parsing a document. In case you develop an iPhone app and use libxml, do not worry about the leaks that Instruments shows you that derive from a call to the parse mehod of the xml parser &#8212; not your fault.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flickdotnet.de/index.php/2010/04/libxml-memory-management-and-leaks-in-frameworks-you-consider-safe/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>A note on being published on DelphiFeeds.com</title>
		<link>http://www.flickdotnet.de/index.php/2010/03/a-note-on-being-published-on-delphifeedscom/</link>
		<comments>http://www.flickdotnet.de/index.php/2010/03/a-note-on-being-published-on-delphifeedscom/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 23:00:13 +0000</pubDate>
		<dc:creator>holger</dc:creator>
				<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.flickdotnet.de/?p=253</guid>
		<description><![CDATA[I would like to point the following out as some people asked why I was still categorizing my last two posts for Delphi as well. The next couple of posts will be using RemObjects SDK and RemObjects DataAbstract with .NET to deliver data for an iPhone application. The two previous posts are needed in order [...]]]></description>
			<content:encoded><![CDATA[<p>I would like to point the following out as some people asked why I was still categorizing my last two posts for Delphi as well.</p>
<p>The next couple of posts will be using RemObjects SDK and RemObjects DataAbstract with .NET to deliver data for an iPhone application. The two previous posts are needed in order to understand my train of thoughts. I will mark these posts with the Delphi category, i.e. they will be fed to DelphiFeeds.com. However, if I will write general posts about general development tasks with Xcode and other iPhone-specific tools, be they interesting for Delphi developers who want to learn about iPhone Development as well or not, I will NOT mark them with the Delphi category.</p>
<p>Thus, if you want to read all my posts, please use the complete feed of my blog and not only the Delphi one that DelphiFeeds.com does consume.</p>
<p>I want to make sure that the Delphi community will only read about Delphi-related topics on DelphiFeeds.com and thus I will make sure that general iPhone issues will not appear there.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flickdotnet.de/index.php/2010/03/a-note-on-being-published-on-delphifeedscom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programming on the Mac/iPhone</title>
		<link>http://www.flickdotnet.de/index.php/2010/03/programming-on-the-maciphone/</link>
		<comments>http://www.flickdotnet.de/index.php/2010/03/programming-on-the-maciphone/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 15:15:22 +0000</pubDate>
		<dc:creator>holger</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Xcode]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.flickdotnet.de/?p=239</guid>
		<description><![CDATA[In my last post I spilled where my major focus lies right now. I am looking at something completely different: not a new language, but a new language, with new tools on a different platform. And believe me, it is different. Why different? Well, not only is the syntax of the programming language on Mac [...]]]></description>
			<content:encoded><![CDATA[<p>In my last post I spilled where my major focus lies right now. I am looking at something completely different: not a new language, but a new language, with new tools on a different platform. And believe me, it is different.</p>
<p>Why different? Well, not only is the syntax of the programming language on Mac very odd getting used to for a Delphi or C# developer, but even more using the computer is also needing some time getting used to. Shortcuts are different, there are way less visible shortcuts than on a Windows system and the general approach how to get things done is very much different. With regard to the shortcuts it is sometimes a real pain to find them and they often differ from application to application. Mac OS is very much designed for mouse users, it seems, and keyboard enthusiasts will have to read the docs carefully. A lot of people claim that it is easier and more intuitive to get started, especially if you have not used Windows before. I would not sign that statement as Mac OS has also quite some oddities just as Windows has. Just yesterday, I dragged a file onto my desktop which did not show. When I dragged it again, Mac OS told me the file was already there and if I wanted to overwrite it. Thus, it is not without flaws either. And ever since Windows 7 one can completely forget the generalization &#8220;Mac is more stable than Windows&#8221;. My Windows systems are just as stable. However, I am derailing from my train of thoughts&#8230;</p>
<p>&#8220;How would one get started to code on the Mac or code applications for the iPhone?&#8221; was the question I had to get an answer to. Firstly, give yourself time to get used to the system.  Do not try to start developing right away. It will not work. Believe me. I tried. Give it some time. Fiddle around with a Mac system at least for 1 or 2 moths before you start developing. You need to get some insight in how the system works, how applications are assembled etc. This will not happen in a week and you definitely cannot read it in a book and hope to get the same understanding as learning by doing. Of course, a book to get started with Mac OS can help. Maybe, you are as lucky as me and have some hardcore Apple Affiliates at your workplace you can nag all day long&#8230; They will forgive you for the frequent interruptions sooner or later (thanks, Volker&#8230; <img src='http://www.flickdotnet.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  ).</p>
<p>Secondly, get the tools for the job. With Apple it is very easy to get the right tools in order to develop Applications for the platform as the company publishes the development environment with the operating system itself. Be sure to have a look at your Leopard DVD and install the additional features. Besides, you will miss the command-line tools after a month or so anyways and they are there as well.</p>
<p>The main development environment is called Xcode and if you ever dare to load one of the sample projects you will be overmanned. Yes, you will. There is no way around it. The code simply hits you and it might result in an abrupt thought that may say something like &#8220;How did I ever think to develop for this platform in that language?&#8221; &#8212; It definitely feels like that at first.</p>
<p>Thus, get a book. Or get two actually. One is free, the other is not. I started learning the language with a book that is just about the language. Not about any platform. Just the language. The book is called &#8216;Programming in Objective-C 2.0&#8242; bz Stephen Kochan and it gives you a very good introduction and gets you used to the funny syntax. Funny is an adjective every Delphi developer I know has used so far for that particular syntax.</p>
<p>For me it was very clear that I wanted to develop applications for the iPod Touch and iPhone. Thus, book number two. Apple has a huge archive of free documentation that comes in a very printer-friendly PDF format. The PDFs are seperated by certain topics, not just a simple reference that has been generated from source files or generated in some other way. It is like a big library at your fingertips. I read quite a few of them and they are very good to read and contain lots of useful information. Access is granted if you join the iPhone Developer Program. Unlike frequent misinformation about this topic, joining this program is free of charge. You get all the documentation and all the programming tools for free. No charge. Not once, not yearly. The only thing you are being charged for on a yearly basis is the ability to deploy to physical devices. There are several different subscription packages available, but in order to get started, you can use the free account. The software development kit (SDK) even comes with an iPhone simulator that allows you to test your application like it was running on an actual physical device. There are only a few restrictions that make using a physical device a necessity. But believe me, these will not affect you in the first couple of weeks of developing applications.</p>
<p>When you got your login details, you can use your iTunes Account as a sidenote, you can download the SDK which includes all the tools you need. Furthermore, during the download I had lots of time to read as the SDK is huge and take a long time to download through my pitiful bandwidth of 2MBits.</p>
<p>After the download, installation is only a double-click away and takes from 10 to 30 minutes. Be sure to drag Xcode into the dock &#8211; you will need it all the time.</p>
<p>But how to get started? Well, Daniel Magin suggested a book to me and that really got me started:</p>
<ul>
<li> iPhone SDK 3 (Visual QuickStart Guides) by Duncan Campbell</li>
</ul>
<p>It gives an introduction with use-cases to the most important classes that you need to use in any project and it also describes all the visual components hands-on. After reading this book &#8211; it is not that big, so I did read it completely -  you are able to write little apps and are ready to dive into the details. Oh, and be sure to download the free bonus chapters of that book. I did that with two books from Apress from the same group of authors:</p>
<ul>
<li>Beginning iPhone 3 Development: Exploring the iPhone SDK by Dave Mark and Jeff Lamarche</li>
<li>More iPhone 3 Development: Tackling iPhone SDK 3</li>
</ul>
<p>Those will keep you busy, but afterwards you will be ready to write applications for the iPhone for sure. Patience is most important while typing the new language. Furthermore, Xcode is very different when entering source code. If it felt strange using Visual Studio when being used to Delphi, it is like that&#8230;</p>
<p>For the German audience one additional hint. The German Mac keyboard is a bit odd as it has not all keys printed completely. E.g. the {} and [] are nowhere to be found. I have no idea why the German Apple keyboards are built that way. Furthermore, typing source code on a German keyboard is very clumsy. Due to that,  I have coding-keyboard with US typeface, so that I can type source code more easily. It helps quite a lot.</p>
<p>Next time I will introduce you to some architectural ideas and implementations I am dealing with right now. I have some applications that need to work on a Windows Desktop as well as offer access using the iPhone. Furthermore, a web application is not an option  I consider for the iPhone. The usability employing a native iPhone application is just so much better in my opinion.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flickdotnet.de/index.php/2010/03/programming-on-the-maciphone/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Waking up &#8212; what I&#8217;ve been up to</title>
		<link>http://www.flickdotnet.de/index.php/2010/03/waking-up-what-ive-been-up-to/</link>
		<comments>http://www.flickdotnet.de/index.php/2010/03/waking-up-what-ive-been-up-to/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 17:35:18 +0000</pubDate>
		<dc:creator>holger</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Prism]]></category>

		<guid isPermaLink="false">http://www.flickdotnet.de/?p=232</guid>
		<description><![CDATA[I neglected this blog in the last couple of months, but &#8230; I am still up and about. Actually, I have been rather busy and the blog has not been on the top of my todo list to be rather honest. However, this is going to change in the next couple of weeks as I [...]]]></description>
			<content:encoded><![CDATA[<p>I neglected this blog in the last couple of months, but &#8230; I am still up and about. Actually, I have been rather busy and the blog has not been on the top of my todo list to be rather honest.</p>
<p>However, this is going to change in the next couple of weeks as I am finally ready to blog about some interesting, new, innovative things that have come my way the last couple of weeks.</p>
<p>I think it is normal that from time after time you have to catch up with all the technologies that are out there and have to find your way and decide which path to take. In the last months rather than weeks, I have been reading up on software development in general, new programming languages and frameworks in these languages.</p>
<p>For example, I finally caught up with C# and all the new aspects of its new version that is being released with .NET 4 (or Visual Studio 2010 &#8212; not sure about the release cycle). The language becomes more and more handy and is filled with quite some magic to make the life of the programmer a lot easier. However, one thing that still is not solved, even in its 4th incarnation, is the missing separation of specification and implementation. Being used to Pascal or Delphi, it is really tough not having a class definition on top and the concrete implementation at the bottom. Also the possibility to define properties and fields &#8220;anywhere&#8221; in a class makes C# a bit harder to read at first. I am not going to dive into the &#8216;braces debate&#8217; as I think that it is a bit too geeky and completely insignificant. I do not care if I use &#8216;begin&#8217; or &#8216;{&#8216;. The readability, however, is important.</p>
<p>From C# I went over to frameworks that .NET offers these days. Be it ASP.NET, MVC, LINQ, Entity Framework, WCF, WPF &#8212; I looked at them all with different levels of granularity. WPF I only touched the shell, as my design skills are rather limited. I understand how everything fits together now, though, and I think that must suffice. One has to emphasize the great options the developers have to bind data to the graphical user interface using WPF.</p>
<p>WCF &#8211; knowing Indy due to Delphi quite well &#8211; is also something that triggered my interest. However, there is one component set available, for free no less, that I never saw the need to jump into it deeper than knowing what is available and how one specifies services etc. Thanks go to Hadi Hariri, for writing some great articles to get you started!</p>
<p>EF &#8211; probably the greatest disappointment for me. I did not have the nerves to look at the release candidates or Community Technology Previews that are available for the second installment. The first version did not perform to my liking. I will clearly state that it is mostly not the problem of the product, but I guess think differently and I was not able to transfer my ER-models from my head into the framework. Especially reflexive associations gave me headaches. I never got the result I was looking for.</p>
<p>EF not being what I hoped it was, I looked at Linq to SQL. This required me to learn Linq first as the specializations of Linq &#8211; obviously &#8211; require a deeper understanding of the base. So, I read into Linq and soon realized that LinqToXml would make my developer days so much more easier. LinqToXml quickly became THE toolset to read and write XML. I can say without hesitation that ever since reading and learning about LinqToXml, I use nothing else when XML is involved and I have the .NET framework available. Especially the performance on huge files of it is breathtaking. As I understood that I went over to LinqToSql. Definitely a tool one can use to write great database apps in .NET, however, spoiled developer-me, who was used to ECO, still was not satisfied. Oh, ECO, yes, I still use it and I will mention it later in this post. I want to point out though that I was able to realize a small project with LinqToSql, which I never was able to do with EF. Yes, I know, it must have been me &#8212; still, I prefer LinqToSql to EF 1.0.</p>
<p>I just realized I only mentioned LinqToXml. The simplest incarnation of Linq, which is LinqToObjects, is absolutely not missing in any of my projects. At this point I want to mention that I use Linq in C# and Delphi Prism all the same. Remember, .NET is language-agnostic. Thus, Delphi Prism or C#. Both are becoming a bliss to use with LinqToObjects as soon as lists or any other in-memory data structure is involved.</p>
<p>Good. That were the desktop app frameworks I looked at. I also looked at ASP.NET and its &#8216;spin-off&#8217; MVC, which stands for Model-View-Controller. I like the idea behind it. Actually, I like Ruby on Rails for the same reason. But, I miss the server-controls and I absolutely loathe scripting Java Script to do AJAX in web applications. Thus, MVC never grew on me. Even with all the frameworks that are available&#8230; I still never got the hang of it.</p>
<p>As I talked to a buddy from the Delphi Community, he told me he had absolutely no idea what to look at first and how to prioritize. Thus, here is my own list, how I would prioritize things. I assume that you did look at .NET in general already and thus do not need to get started with that, because that would be my number one priority right now. I still do native programming &#8211; which reminds me to ask: Why is one old-fashioned coding native? The whole iPhone SDK is a native framework&#8230; thus, it is still an up-to-date topic and not to be neglected&#8230;.</p>
<p>Thus, here the priorities for the technologies mentioned above:</p>
<ol>
<li>Linq
<ul>
<li>Linq to Objects</li>
<li>Linq to XML</li>
<li>Linq to SQL</li>
</ul>
</li>
<li>WPF</li>
<li>WCF</li>
<li>EF with version 2 just being around the corner</li>
</ol>
<p>This concludes the list of Microsoft technologies of the .NET framework I looked at. Did I stop there? No. If you had asked me three years ago, I never would have thought it possible, but I went over to a different platform. Yes, really.</p>
<p>Apple &#8211; or MacOS.</p>
<p>Ever since I held an iPod Touch in my hands it became very clear to me I wanted to be able to develop applications for these devices. But more about that and how I can connect the Objective-C applications with my .NET applications in the next blog post which will most likely not take as long to write as this one&#8230; almost a year&#8230; wow.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flickdotnet.de/index.php/2010/03/waking-up-what-ive-been-up-to/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DelphiExperts: Delphi Prism Roadshow &#8211; Building Web Applications using ASP.NET</title>
		<link>http://www.flickdotnet.de/index.php/2009/07/delphiexperts-delphi-prism-roadshow-building-web-applications-using-aspnet/</link>
		<comments>http://www.flickdotnet.de/index.php/2009/07/delphiexperts-delphi-prism-roadshow-building-web-applications-using-aspnet/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 15:07:00 +0000</pubDate>
		<dc:creator>holger</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[DelphiExperts]]></category>
		<category><![CDATA[Prism]]></category>

		<guid isPermaLink="false">http://www.flickdotnet.de/?p=221</guid>
		<description><![CDATA[DelphiExperts invites you to a day where you can get state of the art developer know-how about developing Web Applications using Delphi Prism. The roadshow will be held in German language and thus I will post the announcement in German as well. Speakers for the day will be Olaf Monien and Daniel Magin. Möchten Sie [...]]]></description>
			<content:encoded><![CDATA[<p>DelphiExperts invites you to a day where you can get state of the art developer know-how about developing Web Applications using Delphi Prism. The roadshow will be held in German language and thus I will post the announcement in German as well. Speakers for the day will be Olaf Monien and Daniel Magin.</p>
<p><strong>Möchten Sie Webanwendungen (oder auch Websites) mit ASP.NET erstellen? Sie möchten dies mit Delphi tun?</strong></p>
<p>Kommen Sie auf die <a href="http://www.delphiexperts.net/delphiexperts-day-duesseldorf-27-07-2009/" target="_blank">RoadShow</a> der <a href="http://www.delphiexperts.net/" target="_blank">DelphiExperts</a>!</p>
<p>Wir zeigen Ihnen zunächst was <a href="http://prismwiki.codegear.com/" target="_blank">Delphi Prism</a> ist und wie man damit unter .NET arbeitet, danach erlernen Sie das Erstellen von ASP.NET Anwendungen. Wir werden als ganz konkretes Beispiel einen WebShop ausgehend von einem leeren Projekt aufbauen. Die komplette Themenübersicht finden Sie in den <a href="http://www.delphiexperts.net/delphiexperts-day-duesseldorf-27-07-2009/" target="_blank">Anmeldedetails</a>.</p>
<p><strong>Wann:</strong> Montag, 27.07.2009, 09.00 – 17:00 Uhr<br />
<strong>Wo:</strong> Düsseldorf, Intercity Hotel, Graf-Adolf-Straße 81-87</p>
<p><a href="http://www.delphiexperts.net/delphiexperts-day-duesseldorf-27-07-2009/" target="_blank"><img class="alignnone" style="border: 0pt none;" title="DelphiExperts Roadshow" src="http://www.monien.net/blog/wp-content/uploads/2009/07/image1.png" alt="" width="544" height="75" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flickdotnet.de/index.php/2009/07/delphiexperts-delphi-prism-roadshow-building-web-applications-using-aspnet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Battlestar Galactica (or time well-spent for the relaxing developer)</title>
		<link>http://www.flickdotnet.de/index.php/2009/06/battlestar-galactica-or-time-well-spent-for-the-relaxing-developer/</link>
		<comments>http://www.flickdotnet.de/index.php/2009/06/battlestar-galactica-or-time-well-spent-for-the-relaxing-developer/#comments</comments>
		<pubDate>Sat, 20 Jun 2009 11:06:07 +0000</pubDate>
		<dc:creator>holger</dc:creator>
				<category><![CDATA[TV]]></category>

		<guid isPermaLink="false">http://www.flickdotnet.de/?p=219</guid>
		<description><![CDATA[(This post contains NO spoilers. You may read if you have not watched the complete series yet) I hardly post about non-technical topics. However, having been a scifi fan my whole life this series is the first one I mention on my blog. Yes, even though I watched all there is to watch from Star [...]]]></description>
			<content:encoded><![CDATA[<p>(This post contains NO spoilers. You may read if you have not watched the complete series yet)</p>
<p>I hardly post about non-technical topics. However, having been a scifi fan my whole life this series is the first one I mention on my blog. Yes, even though I watched all there is to watch from Star Trek, Galactica is the first series I mention.</p>
<p>Why? Because it was fracking excellent! I watched it on DVD and I could hardly stop watching the &#8220;Final Season&#8221; or &#8220;Season 4.5&#8243;. Actually, it took me a working week to watch it. It is only 10 episodes, but still.</p>
<p>To be honest, the series did not catch my interest that much after the first couple of episodes. I even dropped watching it for over a year and had to catch up to the TV broadcasts. However, it was so worth it. As I mentioned, I watched Star Trek &#8211; most episodes multiple times. What I missed all the time with Star Trek, The Next Generation and all the following series is a proper story arc that was being ended to basically tell me: It was worth watching all the other episodes, because every single episode delivered parts of the big puzzle. Deep Space Nine had a huge story arc you might say, but it was not as fine-tuned as the one from BSG. Thinking about it, even the first couple of episodes gave hints about the ending. Sometimes the obvious did happen in the series, but the ending came as a total surprise to me. A well-thought through surprise I might add. I can hardly understand why the reviews on TV.com are only average for the last couple of episodes. Ironically, one of the major players in the Star Trek franchise is one of the bright minds behind BSG. It was just perfect as all the story arcs that I could identify while watching the series got resolved. I cannot get into the ending as I would spoil the story for a lot of people, but the only reason I can come up with for the bad reviews is that the people have not been open-minded enough or simply were hoping for a more action-filled ending. It is well-balanced &#8230; thankfully.</p>
<p>The question that I keep asking myself now is: What will the next episode be about? In November there will be one final TV movie. I fear, this will only harm the perfect ending that has been reached now.</p>
<p>And finally, something I have absolutely no interest in: Caprica. I watched the trailer and I simply do not care at all about the series. To be brutally honest, I do not get from the trailer what the series is supposed to be about. Oh well&#8230;</p>
<p>&#8230;back to technical posts <img src='http://www.flickdotnet.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.flickdotnet.de/index.php/2009/06/battlestar-galactica-or-time-well-spent-for-the-relaxing-developer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

