<?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>Micro-ISV Insights Blog &#187; Programming</title>
	<atom:link href="https://www.dextronet.com/micro-isv-insights/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.dextronet.com/micro-isv-insights</link>
	<description>A blog for mISVs, startup maniacs, and everyone in the software business.</description>
	<lastBuildDate>Fri, 31 Jan 2014 18:30:24 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
<meta xmlns="http://www.w3.org/1999/xhtml" name="robots" content="noindex,follow" />
		<item>
		<title>Managing Virtual Machines Efficiently in VirtualBox</title>
		<link>https://www.dextronet.com/micro-isv-insights/managing-virtual-machines-efficiently-in-virtualbox/</link>
		<comments>https://www.dextronet.com/micro-isv-insights/managing-virtual-machines-efficiently-in-virtualbox/#comments</comments>
		<pubDate>Thu, 21 Mar 2013 13:46:25 +0000</pubDate>
		<dc:creator>Michal Novak</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[software testing]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[virtual machine]]></category>
		<category><![CDATA[virtual machine testing]]></category>
		<category><![CDATA[virtual machines with office versions]]></category>
		<category><![CDATA[virtualbox]]></category>
		<category><![CDATA[vm]]></category>

		<guid isPermaLink="false">http://www.dextronet.com/micro-isv-insights/?p=659</guid>
		<description><![CDATA[Need to test a software application in different environments? Managing virtual machines can be extremely frustrating - unless you know how to do it in a smart way.<p><a href="https://www.dextronet.com/micro-isv-insights/managing-virtual-machines-efficiently-in-virtualbox/">Managing Virtual Machines Efficiently in VirtualBox</a> is a post from: <a href="https://www.dextronet.com/micro-isv-insights">Micro-ISV Insights Blog</a></p>
]]></description>
				<content:encoded><![CDATA[<div class='dd_post_share'><div class='dd_buttons'><div class='dd_button'><div class='dd-google1-ajax-load dd-google1-659'></div><g:plusone size='tall' href='https://www.dextronet.com/micro-isv-insights/managing-virtual-machines-efficiently-in-virtualbox/'></g:plusone></div><div class='dd_button'><div class='dd-twitter-ajax-load dd-twitter-659'></div><a href="http://twitter.com/share" class="twitter-share-button" data-url="https://www.dextronet.com/micro-isv-insights/managing-virtual-machines-efficiently-in-virtualbox/" data-count="vertical" data-text="Managing Virtual Machines Efficiently in VirtualBox" data-via="" ></a></div><div class='dd_button'><script src="http://connect.facebook.net//all.js#xfbml=1"></script><fb:like href="https%3A%2F%2Fwww.dextronet.com%2Fmicro-isv-insights%2Fmanaging-virtual-machines-efficiently-in-virtualbox%2F"    layout="box_count" width="50"  ></fb:like></div><div class='dd_button'><div class='dd-linkedin-ajax-load dd-linkedin-659'></div><script type='in/share' data-url='https://www.dextronet.com/micro-isv-insights/managing-virtual-machines-efficiently-in-virtualbox/' data-counter='top'></script></div><div class='dd_button'><div class='dd-dzone-ajax-load dd-dzone-659'></div><iframe class='DD_DZONE_AJAX_659' src='' height='0' width='0' scrolling='no' frameborder='0'></iframe></div><div class='dd_button'><div class='dd_delicious_normal_image dd_delicious'><a href='http://delicious.com/save' onclick="window.open('http://delicious.com/save?v=5&amp;noui&amp;jump=close&amp;url='+encodeURIComponent('https://www.dextronet.com/micro-isv-insights/managing-virtual-machines-efficiently-in-virtualbox/')+'&amp;title='+encodeURIComponent('Managing Virtual Machines Efficiently in VirtualBox'),'delicious', 'toolbar=no,width=550,height=550'); return false;"><span id='DD_DELICIOUS_AJAX_659'></span></a></div></div></div><div style='clear:both'></div></div><div style='clear:both'></div><p>Testing your software on different system configurations and versions of operating systems is a good way to improve quality of your application. But how to do this in practice?</p>
<p>Installing multiple operating systems on your computer might solve the issue but you won&#8217;t like it. It will cut your hard drive into multiple partitions and eat free space from the partition used by your primary system. Also managing such setup is not easy. Each OS will update differently. You will need to install required applications as many times as many operating systems you will install.</p>
<p>In addition, this becomes more difficult if your software depends on another product. Which of course has also different versions and does not offer portable deployment. What than?</p>
<p>Fortunately, Virtual Machines has been invented. However, managing them in efficient way might be very tricky.</p>
<p><em>This article will describe my current setup of virtual machines in VirtualBox and best practices which I have came up with.</em></p>
<p>As a developer you will probably need to work sometimes with different systems to test something, debug something or check something. For this purposes, I recommend you to use VirtualBox. I won&#8217;t describe how to create your first Virtual Machine (VM) as I expect you are already familiar with it. This article is for those, who are now struggling with their VMs and ask how not to make mess of them.</p>
<p>In short:</p>
<ol>
<li>Learn how to use snapshots, use them a lot.</li>
<li>Think in advance (this article is good way to start).</li>
<li>Learn how to use clones.</li>
</ol>
<h2>Snapshots</h2>
<p>What are snapshots? Snapshot is a saved state of your virtual machine to which you can revert any time. It&#8217;s like restore points in Windows but on a very base level – on VM level. You can take snapshot from powered off system as well as from running or paused system. Basically, it will save current HDD state, RAM, processor state, etc. of your virtual machine. This can be very useful.</p>
<p>After snapshot is taken, any changes in VM are recorded as difference to last snapshot. The result is that no data are duplicated after taking a snapshot. This is an important feature to keep in mind.</p>
<p>Snapshots are composed into a tree. Each snapshots has parent snapshot set, except for the first snapshot which is the root of the tree. What it means? When you install/configure/do something in your Virtual Machine and take snapshot of that it will be present in all derived snapshots. That is another important feature worth mentioning.</p>
<p><b>Best practices for snapshots:</b></p>
<ul>
<li>Again, use snapshots a lot.</li>
<li>Prefer snapshots of powered off system to paused or running system. Even though it&#8217;s inconvenient to setup it will save you some hard drive space.</li>
<li>Fill in descriptive snapshot names and description. Really, do it. It&#8217;s important not to lost track of changes made by a snapshot.</li>
</ul>
<h2>Thinking in advance</h2>
<p>This is closely related with the previous section. Try to think of all supplementary software or configuration you will need in future while working with your virtual machine. If you install it in some base snapshot, you won&#8217;t need to install it multiple times again, which is both annoying, time consuming and space consuming.</p>
<p>By supplementary software, I mean all useful applications where you don&#8217;t need to track their version. It might be 7-zip, Java, PDF viewer, text editor, Total Commander, or even IDEs.</p>
<p>If you forgot to install into the common snapshot some software you will need, you have two options:</p>
<ol>
<li>Install it separately on all derived snapshots (which will make you swear).</li>
<li>Remove all derived snapshots and correct your base snapshot, than recover deleted snapshots by manually making changes again (will will make you swear even more, and maybe destroy things in reach).</li>
</ol>
<p>Therefore think twice before branching snapshots.</p>
<p><b>Best practices for thinking in advance</b>:</p>
<ol>
<li>Install all supplementary software at base snapshot.</li>
<li>Consider using <a href="http://ninite.com/">Ninite</a>. It will install most common applications for you, and you won&#8217;t need to go through every single installer. It will save you a lot of time.</li>
</ol>
<h2>Clones</h2>
<p>Cloning your virtual machine will result in a copy of selected virtual machine at current state or selected snapshot. There are two types of clones, primarily the latter is similar to snapshots:</p>
<ul>
<li>Full clone</li>
<li>Linked clone</li>
</ul>
<p><strong>Full Clone</strong> will copy all the virtual machine data and make a new machine based on this copy. Therefore full-cloning will take up as much space as the base virtual machine takes. All virtual machine files are duplicated.</p>
<p><strong>Linked Clone</strong> will create a new virtual machine, but virtual hard drive won&#8217;t be copied. Instead, a new hard drive will be made and will link to the base virtual machine hard drive in given snapshot. Linked clones are therefore space-efficient. It&#8217;s like making snapshots but with new virtual machine being created.</p>
<p><strong>Best practices for Clones:</strong><br />
Prefer linked clones to full clones (it will save you hard drive space).</p>
<ol>
<li>Understand differences between clone types</li>
<li>Prefer linked clones to full clones (it will save you HDD space).</li>
</ol>
<h2>Example</h2>
<p>Putting all the advice together, I will show you an example how to manage virtual machines:</p>
<p>In this example, let&#8217;s assume we need to test an Office Add-In which would be compatible with all versions since Office 2003. That counts 6 versions (2003, 2007, 2010 32-bit, 2010 64-bit, 2013 32-bit and 2013 64-bit). We do not have any VMs installed yet.</p>
<p><b>Creating base virtual machine</b></p>
<ol>
<li>Create new virtual machine called “Windows XP Sandbox”.</li>
<li>Install operating system to the machine.</li>
<li>Log in for the first time and do not install any updates.</li>
<li>Activate operating system.</li>
<li>Configure UAC (turn off most probably).</li>
<li>Configure desktop icons.</li>
<li>Configure task bar (you might want to turn on Quick Launch).</li>
<li>Configure your mouse and keyboard (you might want to turn off mouse acceleration).</li>
<li>I recommend you to turn off system restore at this point.</li>
<li>Turn on Shared Clipboard and Bidirectional Drag&#8217;n'Drop. Even though Guest Additions are required for this features to work, the configuration will be stored in snapshot and you won&#8217;t have to think about enabling this features later.</li>
<li>Also configure Shared folders ASAP.</li>
<li>Clean up hard drive from temporary files.</li>
<li>Unmount all mounted CD/DVD images.</li>
<li>Turn off the machine and take first snapshot of the machine called “Raw Install”.</li>
<li>Run machine and install the VirtualBox Guest Additions. Still do not install any updates. Restart and adjust resolution, than turn off VM.</li>
<li>Clean up hard drive from temporary files.</li>
<li>You might want to place shortcuts to shared folders to your desktop.</li>
<li>Unmount all mounted CD/DVD images.</li>
<li>Take second snapshot called “with Guest Additions”.</li>
<li>Run machine, install all available system updates and clean up hard drive.</li>
<li>I also recommend turning automatic updates off. Otherwise they will be bugging you every time you start VM after some time it has been inactive.</li>
<li>Unmount all mounted CD/DVD images.</li>
<li>Turn VM off and take third snapshot called “Updated Install”.</li>
<li>Run machine, install supplementary software (eg. using <a href="http://ninite.com/">Ninite</a>), clean up hard drive and turn off.</li>
<li>Take fourth snapshot called “with Apps”. I recommend to include installed apps into snapshot’s description.</li>
</ol>
<p>This machine represents “virgin” installation of operating system with supplementary software. You might reuse it any time later. I think you have the idea.</p>
<p><strong>Installing Office VMs</strong></p>
<p>For each Office version:</p>
<ol>
<li>Create linked clone of the base virtual machine created in previous section and name it “Windows XP Office [version]”.</li>
<li>Run machine and install given Office version and turn off.</li>
<li>Finally, take snapshot called “with Office [version]”.</li>
</ol>
<h2>Conclusion</h2>
<p>I hope you found this article helpful and you got the idea. Management of your virtual machines should be now easier and less frustrating.</p>
<p>Some final notes:</p>
<ul>
<li>Yes, you will need one base virtual machine for each OS you want to play with.</li>
<li>I’m not sure if installation of your IDE should be included in base snapshots or not. IDE is space consuming and you won’t need it in most of the cases.</li>
<li>If you use shared folders, share them in base snapshots as this information is also stored in snapshots.</li>
</ul>
<h3 class='related_post_title'>Related Posts:</h3>
<ul class='related_post'>
<li><a href="http://www.dextronet.com/micro-isv-insights/are-you-a-zen-coder-or-distraction-junkie/" title="Are you a Zen Coder or Distraction-Junkie?">Are you a Zen Coder or Distraction-Junkie?</a></li>
<li><a href="http://www.dextronet.com/micro-isv-insights/30-books-everyone-in-software-business-should-read-and-why/" title="30 books everyone in software business should read (and why)">30 books everyone in software business should read (and why)</a></li>
<li><a href="http://www.dextronet.com/micro-isv-insights/interview-with-embacardo-about-delphi-firemonkey-and-misv-business/" title="Interview with Embarcadero about FireMonkey, mISV business and Delphi">Interview with Embarcadero about FireMonkey, mISV business and Delphi</a></li>
</ul>
<script type="text/javascript"> jQuery(document).ready(function($) { window.setTimeout('loadGoogle1_659()',1000);window.setTimeout('loadTwitter_659()',1000);window.setTimeout('loadLinkedin_659()',1000);window.setTimeout('loadDzone_659()',1000);window.setTimeout('loadDelicious_659()',1000); }); </script><script type="text/javascript"> function loadGoogle1_659(){ jQuery(document).ready(function($) { $('.dd-google1-659').remove();$.getScript('https://apis.google.com/js/plusone.js'); }); } function loadTwitter_659(){ jQuery(document).ready(function($) { $('.dd-twitter-659').remove();$.getScript('http://platform.twitter.com/widgets.js'); }); } function loadLinkedin_659(){ jQuery(document).ready(function($) { $('.dd-linkedin-659').remove();$.getScript('http://platform.linkedin.com/in.js'); }); } function loadDzone_659(){ jQuery(document).ready(function($) { $('.dd-dzone-659').remove();$('.DD_DZONE_AJAX_659').attr('width','50');$('.DD_DZONE_AJAX_659').attr('height','70');$('.DD_DZONE_AJAX_659').attr('src','http://widgets.dzone.com/links/widgets/zoneit.html?url=https%3A%2F%2Fwww.dextronet.com%2Fmicro-isv-insights%2Fmanaging-virtual-machines-efficiently-in-virtualbox%2F&title=Managing%20Virtual%20Machines%20Efficiently%20in%20VirtualBox&t=1'); }); } function loadDelicious_659(){ jQuery(document).ready(function($) { $('.dd-delicious-659').remove();$.getJSON('http://feeds.delicious.com/v2/json/urlinfo/data?url=https://www.dextronet.com/micro-isv-insights/managing-virtual-machines-efficiently-in-virtualbox/&amp;callback=?',function(data) {var msg ='';var count = 0;if (data.length > 0) {count = data[0].total_posts;if(count ==0){msg = '0';}else if(count ==1){msg = '1';}else{msg = count}}else{msg = '0';}$('#DD_DELICIOUS_AJAX_659').text(msg);}); }); }</script><!-- Social Buttons Generated by Digg Digg plugin v4.5.3.4, 
    Author : Yong Mook Kim
    Website : http://www.diggdigg2u.com --><p><a href="https://www.dextronet.com/micro-isv-insights/managing-virtual-machines-efficiently-in-virtualbox/">Managing Virtual Machines Efficiently in VirtualBox</a> is a post from: <a href="https://www.dextronet.com/micro-isv-insights">Micro-ISV Insights Blog</a></p>
]]></content:encoded>
			<wfw:commentRss>https://www.dextronet.com/micro-isv-insights/managing-virtual-machines-efficiently-in-virtualbox/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Are you a Zen Coder or Distraction-Junkie?</title>
		<link>https://www.dextronet.com/micro-isv-insights/are-you-a-zen-coder-or-distraction-junkie/</link>
		<comments>https://www.dextronet.com/micro-isv-insights/are-you-a-zen-coder-or-distraction-junkie/#comments</comments>
		<pubDate>Sun, 12 Feb 2012 07:39:49 +0000</pubDate>
		<dc:creator>Jiri Novotny</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[distractions]]></category>
		<category><![CDATA[goals]]></category>
		<category><![CDATA[GTD]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[success]]></category>
		<category><![CDATA[time management]]></category>
		<category><![CDATA[work environment]]></category>
		<category><![CDATA[work-flow]]></category>
		<category><![CDATA[zen]]></category>
		<category><![CDATA[zen coder]]></category>

		<guid isPermaLink="false">http://www.dextronet.com/micro-isv-insights/?p=631</guid>
		<description><![CDATA[What you do when compiling can ruin your life. And not just when compiling.<p><a href="https://www.dextronet.com/micro-isv-insights/are-you-a-zen-coder-or-distraction-junkie/">Are you a Zen Coder or Distraction-Junkie?</a> is a post from: <a href="https://www.dextronet.com/micro-isv-insights">Micro-ISV Insights Blog</a></p>
]]></description>
				<content:encoded><![CDATA[<div class='dd_post_share'><div class='dd_buttons'><div class='dd_button'><div class='dd-google1-ajax-load dd-google1-631'></div><g:plusone size='tall' href='https://www.dextronet.com/micro-isv-insights/are-you-a-zen-coder-or-distraction-junkie/'></g:plusone></div><div class='dd_button'><div class='dd-twitter-ajax-load dd-twitter-631'></div><a href="http://twitter.com/share" class="twitter-share-button" data-url="https://www.dextronet.com/micro-isv-insights/are-you-a-zen-coder-or-distraction-junkie/" data-count="vertical" data-text="Are you a Zen Coder or Distraction-Junkie?" data-via="" ></a></div><div class='dd_button'><script src="http://connect.facebook.net//all.js#xfbml=1"></script><fb:like href="https%3A%2F%2Fwww.dextronet.com%2Fmicro-isv-insights%2Fare-you-a-zen-coder-or-distraction-junkie%2F"    layout="box_count" width="50"  ></fb:like></div><div class='dd_button'><div class='dd-linkedin-ajax-load dd-linkedin-631'></div><script type='in/share' data-url='https://www.dextronet.com/micro-isv-insights/are-you-a-zen-coder-or-distraction-junkie/' data-counter='top'></script></div><div class='dd_button'><div class='dd-dzone-ajax-load dd-dzone-631'></div><iframe class='DD_DZONE_AJAX_631' src='' height='0' width='0' scrolling='no' frameborder='0'></iframe></div><div class='dd_button'><div class='dd_delicious_normal_image dd_delicious'><a href='http://delicious.com/save' onclick="window.open('http://delicious.com/save?v=5&amp;noui&amp;jump=close&amp;url='+encodeURIComponent('https://www.dextronet.com/micro-isv-insights/are-you-a-zen-coder-or-distraction-junkie/')+'&amp;title='+encodeURIComponent('Are you a Zen Coder or Distraction-Junkie?'),'delicious', 'toolbar=no,width=550,height=550'); return false;"><span id='DD_DELICIOUS_AJAX_631'></span></a></div></div></div><div style='clear:both'></div></div><div style='clear:both'></div><p>I just posted a new must-read guest article &#8220;<strong><a href="http://www.componentowl.com/blog/2012/02/zen-coder-vs-distraction-junkie/">Are you a Zen Coder or Distraction-Junkie?</a></strong>&#8221; on Component Owl blog. </p>
<p>It&#8217;s not just about coders or programmers; and it&#8217;s not just about productivity and time management. It summarizes a lot of things I&#8217;ve learned by trial-and-error in my career.</p>
<p>What you do when compiling can ruin your life. And not just when compiling.</p>
<p>Go read it now &#8211; &#8220;<strong><a href="http://www.componentowl.com/blog/2012/02/zen-coder-vs-distraction-junkie/">Are you a Zen Coder or Distraction-Junkie?</a></strong>&#8221; &#8211; There are pictures! ;-)<br />
<h3 class='related_post_title'>Related Posts:</h3>
<ul class='related_post'>
<li><a href="http://www.dextronet.com/micro-isv-insights/managing-virtual-machines-efficiently-in-virtualbox/" title="Managing Virtual Machines Efficiently in VirtualBox">Managing Virtual Machines Efficiently in VirtualBox</a></li>
<li><a href="http://www.dextronet.com/micro-isv-insights/30-books-everyone-in-software-business-should-read-and-why/" title="30 books everyone in software business should read (and why)">30 books everyone in software business should read (and why)</a></li>
<li><a href="http://www.dextronet.com/micro-isv-insights/interview-with-embacardo-about-delphi-firemonkey-and-misv-business/" title="Interview with Embarcadero about FireMonkey, mISV business and Delphi">Interview with Embarcadero about FireMonkey, mISV business and Delphi</a></li>
</ul>
<script type="text/javascript"> jQuery(document).ready(function($) { window.setTimeout('loadGoogle1_631()',1000);window.setTimeout('loadTwitter_631()',1000);window.setTimeout('loadLinkedin_631()',1000);window.setTimeout('loadDzone_631()',1000);window.setTimeout('loadDelicious_631()',1000); }); </script><script type="text/javascript"> function loadGoogle1_631(){ jQuery(document).ready(function($) { $('.dd-google1-631').remove();$.getScript('https://apis.google.com/js/plusone.js'); }); } function loadTwitter_631(){ jQuery(document).ready(function($) { $('.dd-twitter-631').remove();$.getScript('http://platform.twitter.com/widgets.js'); }); } function loadLinkedin_631(){ jQuery(document).ready(function($) { $('.dd-linkedin-631').remove();$.getScript('http://platform.linkedin.com/in.js'); }); } function loadDzone_631(){ jQuery(document).ready(function($) { $('.dd-dzone-631').remove();$('.DD_DZONE_AJAX_631').attr('width','50');$('.DD_DZONE_AJAX_631').attr('height','70');$('.DD_DZONE_AJAX_631').attr('src','http://widgets.dzone.com/links/widgets/zoneit.html?url=https%3A%2F%2Fwww.dextronet.com%2Fmicro-isv-insights%2Fare-you-a-zen-coder-or-distraction-junkie%2F&title=Are%20you%20a%20Zen%20Coder%20or%20Distraction-Junkie%3F&t=1'); }); } function loadDelicious_631(){ jQuery(document).ready(function($) { $('.dd-delicious-631').remove();$.getJSON('http://feeds.delicious.com/v2/json/urlinfo/data?url=https://www.dextronet.com/micro-isv-insights/are-you-a-zen-coder-or-distraction-junkie/&amp;callback=?',function(data) {var msg ='';var count = 0;if (data.length > 0) {count = data[0].total_posts;if(count ==0){msg = '0';}else if(count ==1){msg = '1';}else{msg = count}}else{msg = '0';}$('#DD_DELICIOUS_AJAX_631').text(msg);}); }); }</script><!-- Social Buttons Generated by Digg Digg plugin v4.5.3.4, 
    Author : Yong Mook Kim
    Website : http://www.diggdigg2u.com --><p><a href="https://www.dextronet.com/micro-isv-insights/are-you-a-zen-coder-or-distraction-junkie/">Are you a Zen Coder or Distraction-Junkie?</a> is a post from: <a href="https://www.dextronet.com/micro-isv-insights">Micro-ISV Insights Blog</a></p>
]]></content:encoded>
			<wfw:commentRss>https://www.dextronet.com/micro-isv-insights/are-you-a-zen-coder-or-distraction-junkie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interview with Embarcadero about FireMonkey, mISV business and Delphi</title>
		<link>https://www.dextronet.com/micro-isv-insights/interview-with-embacardo-about-delphi-firemonkey-and-misv-business/</link>
		<comments>https://www.dextronet.com/micro-isv-insights/interview-with-embacardo-about-delphi-firemonkey-and-misv-business/#comments</comments>
		<pubDate>Fri, 14 Oct 2011 13:48:08 +0000</pubDate>
		<dc:creator>Jiri Novotny</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[cross-platform]]></category>
		<category><![CDATA[delphi]]></category>
		<category><![CDATA[delphi prism]]></category>
		<category><![CDATA[embarcadero]]></category>
		<category><![CDATA[firemonkey]]></category>
		<category><![CDATA[interview]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[misv business]]></category>
		<category><![CDATA[multi-platform]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rad]]></category>

		<guid isPermaLink="false">http://www.dextronet.com/micro-isv-insights/?p=441</guid>
		<description><![CDATA[This is my recent interview with Embarcadero. While we don&#8217;t use Delphi, their technologies are probably the most interesting alternative to Microsoft .NET technologies, and Delphi Prism can be used even inside Visual Studio. Their hot new multi-platform FireMonkey technology is very interesting as well. I&#8217;ll be asking some questions related especially to mISV business, [...]<p><a href="https://www.dextronet.com/micro-isv-insights/interview-with-embacardo-about-delphi-firemonkey-and-misv-business/">Interview with Embarcadero about FireMonkey, mISV business and Delphi</a> is a post from: <a href="https://www.dextronet.com/micro-isv-insights">Micro-ISV Insights Blog</a></p>
]]></description>
				<content:encoded><![CDATA[<div class='dd_post_share'><div class='dd_buttons'><div class='dd_button'><div class='dd-google1-ajax-load dd-google1-441'></div><g:plusone size='tall' href='https://www.dextronet.com/micro-isv-insights/interview-with-embacardo-about-delphi-firemonkey-and-misv-business/'></g:plusone></div><div class='dd_button'><div class='dd-twitter-ajax-load dd-twitter-441'></div><a href="http://twitter.com/share" class="twitter-share-button" data-url="https://www.dextronet.com/micro-isv-insights/interview-with-embacardo-about-delphi-firemonkey-and-misv-business/" data-count="vertical" data-text="Interview with Embarcadero about FireMonkey, mISV business and Delphi" data-via="" ></a></div><div class='dd_button'><script src="http://connect.facebook.net//all.js#xfbml=1"></script><fb:like href="https%3A%2F%2Fwww.dextronet.com%2Fmicro-isv-insights%2Finterview-with-embacardo-about-delphi-firemonkey-and-misv-business%2F"    layout="box_count" width="50"  ></fb:like></div><div class='dd_button'><div class='dd-linkedin-ajax-load dd-linkedin-441'></div><script type='in/share' data-url='https://www.dextronet.com/micro-isv-insights/interview-with-embacardo-about-delphi-firemonkey-and-misv-business/' data-counter='top'></script></div><div class='dd_button'><div class='dd-dzone-ajax-load dd-dzone-441'></div><iframe class='DD_DZONE_AJAX_441' src='' height='0' width='0' scrolling='no' frameborder='0'></iframe></div><div class='dd_button'><div class='dd_delicious_normal_image dd_delicious'><a href='http://delicious.com/save' onclick="window.open('http://delicious.com/save?v=5&amp;noui&amp;jump=close&amp;url='+encodeURIComponent('https://www.dextronet.com/micro-isv-insights/interview-with-embacardo-about-delphi-firemonkey-and-misv-business/')+'&amp;title='+encodeURIComponent('Interview with Embarcadero about FireMonkey, mISV business and Delphi'),'delicious', 'toolbar=no,width=550,height=550'); return false;"><span id='DD_DELICIOUS_AJAX_441'></span></a></div></div></div><div style='clear:both'></div></div><div style='clear:both'></div><p>This is my recent interview with Embarcadero. While we don&#8217;t use Delphi, their technologies are probably the most interesting alternative to Microsoft .NET technologies, and Delphi Prism can be used even inside Visual Studio. Their hot new multi-platform FireMonkey technology is very interesting as well. </p>
<p>I&#8217;ll be asking some questions related especially to mISV business, too.</p>
<p><strong>Could you please quickly introduce yourself?</strong></p>
<p>I’m Andreano Lanusse, Technical Lead Evangelist for Embarcadero’s Developer Relations organization. I spend a great deal of my time with developers, both onsite and at conferences and user groups, to ensure the company’s tools meet the expectations of customers. Prior to Embarcadero, I worked at Borland for thirteen years in numerous roles, including support coordinator, engineer and product manager. I also worked as a principal consultant for Borland Consulting Services on the development and management of critical applications. I hold a bachelor degree in business administration from Sumare Institute (Brazil) and an MBA in project management from FGV (Brazil). I’m also certified in Product Management from UC Berkeley, have Borland and Microsoft Certifications, and I am a Scrum Master.</p>
<p><strong>Your new FireMonkey technology allows developers to create multi-platform apps. Do these applications look exactly the same on Windows, Mac and iOS?<br />
</strong></p>
<p>It is the choice of the developer and what they are aiming for. FireMonkey is designed to be a rich platform and applications can look fully native on each platform.  Or applications can take advantage of FireMonkey’s capabilities to deliver fully custom experiences and the same custom appearance on all platforms. </p>
<p>The exception is platform specific characteristics such as menus, common dialogs, etc – for example Mac menus are part of the desktop whereas Windows menus are part of the app, and iOS does not have menus – in these cases FireMonkey always yields to what’s correct for the particular platform. </p>
<p>FireMonkey applications use the GPU to render user interfaces using FireMonkey’s scalable vector powered “style engine” and FireMonkey’s 3D forms. These capabilities allow developers to build “rich” applications with GPU powered effects, transitions, animation, and image processing.</p>
<p><strong>Is it usually necessary to write any platform-specific code when developing FireMonkey-based applications?</strong></p>
<p>It’s usually unnecessary to write platform specific code, but you may need to if there is a platform specific API or library that you wish to use that is not available or is different on other platforms.</p>
<p><strong>The difference between FireMonkey and native Delphi is probably larger than between .NET WinForms and WPF. Would you agree?</strong></p>
<p>Yes, I would say so. Certainly FireMonkey’s multiplatform support is a significant distinction compared to VCL. But, FireMonkey is “native” Delphi. FireMonkey, like VCL, is not a JIT or dynamic language platform. FireMonkey is not aiming to be an entertainment or media platform – it is designed to bring “rich” content and user experiences to business and industry application solutions. But where VCL is a Windows only, FireMonkey is designed to run Windows, Mac, and Mobile devices.</p>
<p><strong>Delphi Prism is a plugin for Visual Studio, which allows you to use Delphi syntax in the .NET environment. What cool things can you do with Delphi Prism that are difficult to do with VB.net/C#?</strong></p>
<p>Like Visual Studio&#8217;s VB.NET and C#, Prism supports all Microsoft .NET Technologies and Windows platforms, but Prism also supports Mono and MonoTouch platforms on Linux, Mac, and Mobile devices. Our partner RemObjects will soon be offering a Prism language compatible compiler that outputs Java byte code. The Prism language has advanced language capabilities not available in VB.net or C# such as deep integration of parallelism into the language, full language integration of nullable types and Aspect Oriented Extensions via Cirrus support.</p>
<p><strong>What are the coolest things that one can do with Delphi XE that are not easy to do with C# or VB.net? I&#8217;m specifically asking about Delphi XE here, because if I get this right, Delphi Prism can do *everything* that C# and VB.net does (and more).</strong></p>
<p>Build applications for all versions of Windows, which support keyboard, touch, gestures, styles, mouse, etc., based on visual development.</p>
<p><strong>Do you believe native applications will become fashionable again, and that mobile applications will drastically slow? Why or why not?<br />
</strong></p>
<p>Native applications have never been out of fashion. Look at Microsoft Windows, Office and games – they are native. Or, look at the iPhone apps – they are also all native and running in mobile devices. The Mac is growing, but lacks the applications necessary to support the users. Windows is a winner in this area, since there are already millions of applications available. The mobile application market is only in its early stages and there is still so much to explore in this area. Five years ago, we couldn’t imagine what we are doing with phones today and, next year, new devices will come out doing things we could not imagine. New devices, social networks and consumer behavior will drive the future of mobile apps.</p>
<p><strong>Do you think that it is still usually unnecessary to think about mobile apps, companion web-apps or multi-platform applications, when running a mISV business with a native desktop app being the main product?</strong></p>
<p>No. Today, end-users make decisions from anywhere, and access to the data is key part of their decisions. If a mISV doesn’t provide an interface, they are quite simply out of the game. Interfaces could be a mobile app, web interface or multi-platform app. The important thing is to allow the end-user to access the data.</p>
<p>In RAD Studio XE2, you can use DataSnap to write and expose business logics through Server Methods, enabling iOS, BlackBerry, PHP, Delphi, C++, .NET and JavaScript applications to call and interact with the server methods. Using this architecture, you don’t write the business logics for each client, you just write the client UI and interact with the business logics on the DataSnap Servers.</p>
<p><strong>Could you name some of the biggest challenges presented by interface guidelines, and how developers can overcome them?<br />
</strong></p>
<p>I don’t see specific challenges related to interface guidelines, the challenge today is to support so many different devices: PC, iPhone, Android, HP WebOS, Web, etc. Users do not exclusively sit in front of desktops anymore; they use all kinds of devices to communicate. The need to support multiple devices became a challenge for developers, since it forced them to use different IDEs and languages. Today with FireMonkey, we allow developers to create business application for Windows, Mac and IOS very easily, and in RAD Studio XE2, they are able to create web-applications optimized for iOS and Android.</p>
<p><strong>Do you think that violating the interface guidelines can sometimes be a good thing? Could you give us an example?<br />
</strong></p>
<p>Yes, in order to improve the user experience, sometimes it is necessary to violate the interface guidelines. As example, a Windows request to support 800&#215;600 as minimum resolution. You can organize and provide more information in a 1024&#215;768, improving the user experience. In fact, the majority of developers today use 1280&#215;800 and higher.</p>
<p><strong>And the last question &#8211; what do you have to offer to mISVs and hobbyist programmers?<br />
</strong></p>
<p>We provide the fastest IDE in the market – the Delphi language, which is easy to learn and use. We also provide the C++Builder IDE for C++ development. Both IDEs are based on the component development, drag and drop, easy to deploy, maintain and run.</p>
<p>We offer the Delphi and C++Builder Starter Edition for mISVs and hobbyists. This version includes a streamlined IDE with a code editor, ultra-fast Delphi compiler, and integrated debugger. It also offers two-way visual designers to speed development, hundreds of visual components, and InterBase Express for connectivity with the InterBase database.</p>
<p>Getting started on realizing a product vision or getting a startup off the ground can be difficult without seed capital or sales revenue. Outfitting developers with professional level tools can be cost prohibitive before they have product to sell. So the Starter Editions have an “indy“ license, which allows developers to build software for themselves, non-profit organizations, friends and so on. If their revenue level reaches a certain point, they can upgrade to a specially priced Professional Edition license. </p>
<p><em>About Andreano Lanusse</em><br />
Andreano Lanusse is a software development expert who is enthusiastic about the industry. At Embarcadero, he is focused on helping to make sure the products being developed meet the expectations of Embarcadero&#8217;s customers, as well as defining market strategies for Latin America. You can find his blog at: <a href="http://blogs.embarcadero.com/andreanolanusse" target="_blank">http://blogs.embarcadero.com/andreanolanusse</a></p>
<h3 class='related_post_title'>Related Posts:</h3>
<ul class='related_post'>
<li><a href="http://www.dextronet.com/micro-isv-insights/managing-virtual-machines-efficiently-in-virtualbox/" title="Managing Virtual Machines Efficiently in VirtualBox">Managing Virtual Machines Efficiently in VirtualBox</a></li>
<li><a href="http://www.dextronet.com/micro-isv-insights/are-you-a-zen-coder-or-distraction-junkie/" title="Are you a Zen Coder or Distraction-Junkie?">Are you a Zen Coder or Distraction-Junkie?</a></li>
<li><a href="http://www.dextronet.com/micro-isv-insights/30-books-everyone-in-software-business-should-read-and-why/" title="30 books everyone in software business should read (and why)">30 books everyone in software business should read (and why)</a></li>
<li><a href="http://www.dextronet.com/micro-isv-insights/collecting-charity-donations-on-your-order-page/" title="Collecting charity donations on your order page">Collecting charity donations on your order page</a></li>
</ul>
<script type="text/javascript"> jQuery(document).ready(function($) { window.setTimeout('loadGoogle1_441()',1000);window.setTimeout('loadTwitter_441()',1000);window.setTimeout('loadLinkedin_441()',1000);window.setTimeout('loadDzone_441()',1000);window.setTimeout('loadDelicious_441()',1000); }); </script><script type="text/javascript"> function loadGoogle1_441(){ jQuery(document).ready(function($) { $('.dd-google1-441').remove();$.getScript('https://apis.google.com/js/plusone.js'); }); } function loadTwitter_441(){ jQuery(document).ready(function($) { $('.dd-twitter-441').remove();$.getScript('http://platform.twitter.com/widgets.js'); }); } function loadLinkedin_441(){ jQuery(document).ready(function($) { $('.dd-linkedin-441').remove();$.getScript('http://platform.linkedin.com/in.js'); }); } function loadDzone_441(){ jQuery(document).ready(function($) { $('.dd-dzone-441').remove();$('.DD_DZONE_AJAX_441').attr('width','50');$('.DD_DZONE_AJAX_441').attr('height','70');$('.DD_DZONE_AJAX_441').attr('src','http://widgets.dzone.com/links/widgets/zoneit.html?url=https%3A%2F%2Fwww.dextronet.com%2Fmicro-isv-insights%2Finterview-with-embacardo-about-delphi-firemonkey-and-misv-business%2F&title=Interview%20with%20Embarcadero%20about%20FireMonkey%2C%20mISV%20business%20and%20Delphi&t=1'); }); } function loadDelicious_441(){ jQuery(document).ready(function($) { $('.dd-delicious-441').remove();$.getJSON('http://feeds.delicious.com/v2/json/urlinfo/data?url=https://www.dextronet.com/micro-isv-insights/interview-with-embacardo-about-delphi-firemonkey-and-misv-business/&amp;callback=?',function(data) {var msg ='';var count = 0;if (data.length > 0) {count = data[0].total_posts;if(count ==0){msg = '0';}else if(count ==1){msg = '1';}else{msg = count}}else{msg = '0';}$('#DD_DELICIOUS_AJAX_441').text(msg);}); }); }</script><!-- Social Buttons Generated by Digg Digg plugin v4.5.3.4, 
    Author : Yong Mook Kim
    Website : http://www.diggdigg2u.com --><p><a href="https://www.dextronet.com/micro-isv-insights/interview-with-embacardo-about-delphi-firemonkey-and-misv-business/">Interview with Embarcadero about FireMonkey, mISV business and Delphi</a> is a post from: <a href="https://www.dextronet.com/micro-isv-insights">Micro-ISV Insights Blog</a></p>
]]></content:encoded>
			<wfw:commentRss>https://www.dextronet.com/micro-isv-insights/interview-with-embacardo-about-delphi-firemonkey-and-misv-business/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
