<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Citrix Blogger</title>
	
	<link>http://citrixblogger.org</link>
	<description />
	<lastBuildDate>Fri, 25 May 2012 01:45:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain="citrixblogger.org" port="80" path="/?rsscloud=notify" registerProcedure="" protocol="http-post" />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Citrix Blogger</title>
		<link>http://citrixblogger.org</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://citrixblogger.org/osd.xml" title="Citrix Blogger" />
	
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/CitrixBlogger" /><feedburner:info uri="citrixblogger" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://citrixblogger.org/?pushpress=hub" /><feedburner:emailServiceId>CitrixBlogger</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>More Free Samples</title>
		<link>http://feedproxy.google.com/~r/CitrixBlogger/~3/AgLeM3flGEc/</link>
		<comments>http://citrixblogger.org/2012/03/30/more-free-samples/#comments</comments>
		<pubDate>Fri, 30 Mar 2012 02:06:51 +0000</pubDate>
		<dc:creator>jeffreymuir</dc:creator>
				<category><![CDATA[Citrix Mobility Pack]]></category>
		<category><![CDATA[Citrix SDK]]></category>
		<category><![CDATA[XAMA]]></category>
		<category><![CDATA[XAMA SDK]]></category>
		<category><![CDATA[XAMA SDK documentation]]></category>
		<category><![CDATA[XAMA SDK Samples]]></category>

		<guid isPermaLink="false">http://citrixblogger.org/?p=807</guid>
		<description><![CDATA[When we shipped the XenApp 6.5 Mobility Application SDK (XAMA SDK for short) last December, it included documentation and samples.  Unfortunately the documentation and samples were not tied together on the web pages and it was not obvious that the &#8230; <a href="http://citrixblogger.org/2012/03/30/more-free-samples/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=citrixblogger.org&#038;blog=2497089&#038;post=807&#038;subd=citrixblogger&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a style="color:#df0000;line-height:23px;font-size:14px;" href="http://citrixblogger.files.wordpress.com/2012/03/freesamples.jpg"><img class="size-full wp-image-808 alignleft" style="border-style:initial;border-color:initial;" title="freesamples" src="http://citrixblogger.files.wordpress.com/2012/03/freesamples.jpg?w=500" alt=""   /></a></p>
<p>When we shipped the XenApp 6.5 Mobility Application SDK (XAMA SDK for short) last December, it included documentation and samples.  Unfortunately the documentation and samples were not tied together on the web pages and it was not obvious that the samples were there.</p>
<p><a style="line-height:23px;font-size:14px;" href="http://citrixblogger.files.wordpress.com/2012/03/freesamples.jpg"><br />
</a></p>
<p>This has changed this week.</p>
<p><span id="more-807"></span>The SDK team have updated the web documentation to include the samples and make it possible to download them.  But wait, there is more.  Not only are the original samples included but we also have new samples for C# and WinForm-based programs.</p>
<p>The official SDK documentation location is <a title="Citrix XAMA SDK documentation" href="http://citrix.com/mobilitysdk/docs" target="_blank">http://citrix.com/mobilitysdk/docs</a>.</p>
<p>Our recent plans have revolved around updating the documentation more often and making all of it online instead of waiting for the next shipping SDK version.  This means that the existing PDF document will be replaced with the online docs.</p>
<p>It has been quite an experience to embrace doxygen as the primary tool for generating the SDK documentation.  It was the right choice and we have not exhausted the possible uses for it.  Most recently I have been exploring what it would take to support other written languages with Japanese being the highest priority.</p>
<p>If you are itching to get straight to the samples, the link is <a title="XAMA SDK samples" href="http://citrix.com/mobilitysdk/docs/cmpsamples.html" target="_blank">http://citrix.com/mobilitysdk/docs/cmpsamples.html</a>.  If you just want to download the entire samples in one go, <a title="Samples download" href="http://citrix.com/mobilitysdk/docs/downloads/CmpSdkSamples.zip" target="_blank">get the lot</a>.</p>
<p>We spent a fair amount of time creating new samples and also revamping the ones we had.  Overall the samples are easier to read and make it more obvious how they work.</p>
<p>In case you have not heard, our Mobility Pack is going to be supported by XenDesktop in the not too distant future.  This will make it possible to support a whole new user base with the same set of API.</p>
<p>Interest in the SDK is growing and it is exciting to see developers think of new uses for their customers.  We are still in the early adopter stage but things are moving ahead much faster than what I expected.  We only shipped about three months ago.</p>
<p>To me, the most positive feedback comes from developers who want more.  It means that we still have a bright future for more advanced versions.  The process of an evolving product helps to secure a position in the market.</p>
<p>So, do not forget to collect <a title="Your free samples" href="http://citrix.com/mobilitysdk/docs/downloads.html" target="_blank">your free samples</a>.  Be the first of your peers.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/citrixblogger.wordpress.com/807/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/citrixblogger.wordpress.com/807/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/citrixblogger.wordpress.com/807/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/citrixblogger.wordpress.com/807/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/citrixblogger.wordpress.com/807/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/citrixblogger.wordpress.com/807/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/citrixblogger.wordpress.com/807/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/citrixblogger.wordpress.com/807/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/citrixblogger.wordpress.com/807/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/citrixblogger.wordpress.com/807/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/citrixblogger.wordpress.com/807/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/citrixblogger.wordpress.com/807/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/citrixblogger.wordpress.com/807/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/citrixblogger.wordpress.com/807/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=citrixblogger.org&#038;blog=2497089&#038;post=807&#038;subd=citrixblogger&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://citrixblogger.org/2012/03/30/more-free-samples/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1819c1cbcd8cd90eca1efeae64e998be?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">jeffreymuir</media:title>
		</media:content>

		<media:content url="http://citrixblogger.files.wordpress.com/2012/03/freesamples.jpg" medium="image">
			<media:title type="html">freesamples</media:title>
		</media:content>
	<feedburner:origLink>http://citrixblogger.org/2012/03/30/more-free-samples/</feedburner:origLink></item>
		<item>
		<title>XAMA SDK Error Codes</title>
		<link>http://feedproxy.google.com/~r/CitrixBlogger/~3/9QJtldi9jsY/</link>
		<comments>http://citrixblogger.org/2012/03/05/xama-sdk-error-codes/#comments</comments>
		<pubDate>Mon, 05 Mar 2012 04:55:03 +0000</pubDate>
		<dc:creator>jeffreymuir</dc:creator>
				<category><![CDATA[Citrix SDK]]></category>
		<category><![CDATA[XAMA SDK]]></category>
		<category><![CDATA[error codes]]></category>
		<category><![CDATA[Mobillity]]></category>
		<category><![CDATA[XenApp]]></category>

		<guid isPermaLink="false">http://citrixblogger.org/?p=795</guid>
		<description><![CDATA[During the initial development of XenApp Mobile Pack, certain choices were made for the status/error codes.  This all made sense during that time but certain topics have come up since then which requires attention.  Nothing serious, but rather more of &#8230; <a href="http://citrixblogger.org/2012/03/05/xama-sdk-error-codes/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=citrixblogger.org&#038;blog=2497089&#038;post=795&#038;subd=citrixblogger&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:center;"><a style="color:#df0000;line-height:23px;font-size:14px;" href="http://citrixblogger.files.wordpress.com/2012/03/21.png"><br />
<img class="aligncenter  wp-image-796" style="border-color:initial;border-style:initial;" title="ErrorCode" src="http://citrixblogger.files.wordpress.com/2012/03/21.png?w=192&h=192" alt="" width="192" height="192" /></a></p>
<p>During the initial development of XenApp Mobile Pack, certain choices were made for the status/error codes.  This all made sense during that time but certain topics have come up since then which requires attention.  Nothing serious, but rather more of an indication that things need to be better explained.</p>
<p><span id="more-795"></span>Chain of thought:</p>
<ul>
<li>Most of the XAMA API return CMPRESULT</li>
<li>CMPRESULT is a 32-bit signed number</li>
<li>CMPRESULT is directly related to CMP_ERROR_ID</li>
<li>CMP_ERROR_ID is an enumeration in the cmpenum.h include file in the SDK</li>
<li>Each CMP_RESULT_ID entry uses the STATUS_CODE macro to build the status code (error code)</li>
<li>The macro takes two parameters: the component id, and the error number</li>
<li>The two numbers are 16-bit each and combine to form the 32-bit status code (the component id is the high word and the error number is the low word).</li>
<li>When the error number(low word) is zero, it is considered a successful operation.  Having a non-zero status code could mean that it was successful.  It is necessary to mask the high word to determine success.</li>
</ul>
<p>The pattern is similar to how Microsoft has documented its Windows API return codes.  The major difference is that the codes between Windows and XAMA API do not correspond.  Said another way, the status codes for XAMA cannot be used against Windows status codes.</p>
<p>Even though there was some overlap between Windows and XAMA, there were several areas that only XAMA had status codes.  It was necessary to use our own status codes.  This is a good strategy in order to support as many different receivers as possible.  Since our status codes have a well known limit of codes, all our server and Receiver code can act separate from the platform they run on.  The MRVC channel exchanges these status codes and it would not have made to leave it open to unlimited error code pattern.  That is probably a bit too much detail.</p>
<p>One of the goals of this post is to include a document for the current XAMA API  <a href="http://citrixblogger.files.wordpress.com/2012/03/cmpstatuscodes.pdf">StatusCodes</a></p>
<p>This PDF includes all the current status codes with the hexadecimal values and a brief description.  Based on a few different events inside and outside Citrix, it has become clear that mapping the hex code to an error message is very valuable.  Until it is more automated, this chart should help to find a match.</p>
<p>The most common errors report to me are 0&#215;120008 and 0x002C.  These translate into CMP_ERROR_GVCH_NOT_CONNECTED_STATE (0&#215;120008) and CMP_ERROR_CLIENT_DRIVE_UNAVAILABLE (0x002C).</p>
<p>GVCH stands for Generic Virtual Channel.  This error just means that there is no connection to the mobile device using MRVC (Mobile Receiver Virtual Channel).  There are a number of likely causes:</p>
<ol>
<li>The Mobile Receiver version does not support XAMP/XAMA with MRVC.</li>
<li>The session is currently disconnected</li>
<li>The Mobile Receiver might have MRVC support turned off. (currently not a problem but could be in the future)</li>
</ol>
<p>As for CMP_ERROR_CLIENT_DRIVE_UNAVAILABLE, the most common reason is that Android Receiver has Client Drive Mapping (CDM) turned off.  It is necessary to edit the settings on the Android Receiver to all read or full access to the SD card.  This error should only appear if there is an attempt to take a picture with the API and CDM is not enabled on both sides.  Since it is the default to turn CDM off on Android Receiver, that is why this error has happened so often.</p>
<p>We are in the process of updating the documentation to better explain the status codes and include the hex values.  This upgrade to online documentation should come in the following weeks if not sooner.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/citrixblogger.wordpress.com/795/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/citrixblogger.wordpress.com/795/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/citrixblogger.wordpress.com/795/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/citrixblogger.wordpress.com/795/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/citrixblogger.wordpress.com/795/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/citrixblogger.wordpress.com/795/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/citrixblogger.wordpress.com/795/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/citrixblogger.wordpress.com/795/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/citrixblogger.wordpress.com/795/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/citrixblogger.wordpress.com/795/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/citrixblogger.wordpress.com/795/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/citrixblogger.wordpress.com/795/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/citrixblogger.wordpress.com/795/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/citrixblogger.wordpress.com/795/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=citrixblogger.org&#038;blog=2497089&#038;post=795&#038;subd=citrixblogger&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://citrixblogger.org/2012/03/05/xama-sdk-error-codes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1819c1cbcd8cd90eca1efeae64e998be?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">jeffreymuir</media:title>
		</media:content>

		<media:content url="http://citrixblogger.files.wordpress.com/2012/03/21.png" medium="image">
			<media:title type="html">ErrorCode</media:title>
		</media:content>
	<feedburner:origLink>http://citrixblogger.org/2012/03/05/xama-sdk-error-codes/</feedburner:origLink></item>
		<item>
		<title>XAMA SDK Functional Groups</title>
		<link>http://feedproxy.google.com/~r/CitrixBlogger/~3/hF06OHXrBGc/</link>
		<comments>http://citrixblogger.org/2012/02/15/xama-sdk-functional-groups/#comments</comments>
		<pubDate>Wed, 15 Feb 2012 00:09:58 +0000</pubDate>
		<dc:creator>jeffreymuir</dc:creator>
				<category><![CDATA[Citrix Mobility Pack]]></category>
		<category><![CDATA[Citrix SDK]]></category>
		<category><![CDATA[XAMA]]></category>
		<category><![CDATA[functional groups]]></category>
		<category><![CDATA[XAMA SDK]]></category>

		<guid isPermaLink="false">http://citrixblogger.org/?p=780</guid>
		<description><![CDATA[When something new is created, it is often difficult to capture its essence in words.  If not that, then it is hard to know where to start.  Sometimes it is much easier to create with the hope that the explanation &#8230; <a href="http://citrixblogger.org/2012/02/15/xama-sdk-functional-groups/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=citrixblogger.org&#038;blog=2497089&#038;post=780&#038;subd=citrixblogger&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://citrixblogger.files.wordpress.com/2012/02/bee_hive_yellow.jpg"><img class="aligncenter size-full wp-image-782" title="bee_hive_yellow" src="http://citrixblogger.files.wordpress.com/2012/02/bee_hive_yellow-e1329206051659.jpg?w=500" alt=""   /></a></p>
<p>When something new is created, it is often difficult to capture its essence in words.  If not that, then it is hard to know where to start.  Sometimes it is much easier to create with the hope that the explanation will happen later.</p>
<p>Later is now.  In the coming weeks we will be providing new documentation and samples.  We are also providing our first videos for the SDK.  This is a new business model for us and we are working hard to make sure that the SDK is accepted and used in businesses.</p>
<p>Today I am going to cover the SDK functional groups.  The hope is that describing the functionality in groups will make it easier to understand what the API can do overall.  The first stop is the documentation on the web.  Please take a moment to look at the <a title="XAMA SDK Function Groups" href="http://www.citrixcloud.net/mobilesdk/_func_group.html" target="_blank">functional groups</a>.  This documentation page was only meant for C/C++ but the ideas could be mapped to COM and C# as well.</p>
<p><span id="more-780"></span></p>
<p>Here is a quick summary of the groups:</p>
<p>Overview of Functional Groups</p>
<ul type="disc">
<li>Button</li>
<li>Camera</li>
<li>Capability</li>
<li>Channel</li>
<li>Conversion</li>
<li>Device</li>
<li>Display
<ul type="circle">
<li>Orientation</li>
<li>Scroll Mode</li>
<li>Settings</li>
<li>Viewport</li>
</ul>
</li>
<li>Event</li>
<li>Init/Uninit</li>
<li>Keyboard</li>
<li>Location</li>
<li>Notification</li>
<li>Open/Close</li>
<li>Phone</li>
<li>Picker</li>
<li>Process</li>
<li>Receiver Controls</li>
<li>Session</li>
<li>SMS</li>
<li>Version</li>
</ul>
<p>These functional names are not quite enough to demonstrate what can be done.</p>
<p>Here is a quick tour.  More detail to follow in future posts.</p>
<h4>Button</h4>
<p>The ability to hook certain device buttons (Back button on Android) in order to catch button events and handle them in the application instead of on the mobile device.</p>
<h4>Camera</h4>
<p>Support for being able to take a picture from the application on XenApp using the mobile device.</p>
<h4>Capability</h4>
<p>Collection of API which allows for determining agreed up features between the server and Receiver.</p>
<h4>Channel</h4>
<p>Determines the state of the virtual channel used for the Mobility Pack.</p>
<h4>Conversion</h4>
<p>Conversion routines between different string types (UTF-8, UTF-16, BSTR, Multistring).</p>
<h4>Device</h4>
<p>Determine various mobile device settings to better help understanding what support is available.</p>
<h4>Display</h4>
<p>Collection of API related to the display.  There are four sub groups: Orientation, Scroll Mode, Settings, and Viewport.</p>
<h5>Orientation</h5>
<p>Get and set the application orientation relative to the device.</p>
<h5>Scroll Mode</h5>
<p>Controls how touch events interact with the application.</p>
<h5>Settings</h5>
<p>Determines the display settings for the mobile device.  Includes things like resolution and PPI.</p>
<h5>Viewport</h5>
<p>Get and set the viewport location for the application.  Useful for selecting content to view on a larger application.  Also good for knowing how big the Receiver display area actually is.</p>
<h4>Events</h4>
<p>Allows for enabling and disabling notification of certain events.</p>
<h4>Init/Uninit</h4>
<p>Initializes and uninitializes COM for the sake of Citrix Mobility Pack.</p>
<h4>Keyboard</h4>
<p>Show and hide the display keyboard.  The on screen keyboard is needed for inputting text into the applications.</p>
<h4>Location</h4>
<p>Get location of the mobile device for use with the application.  This is protected with security measures so that privacy is preserved.</p>
<h4>Notification</h4>
<p>Allows notifying the user of events.  The notification can trigger four different techniques: sound, light, vibrate, and text.</p>
<h4>Open/Close</h4>
<p>Open and Close make it possible to treat the CMP interface like a handle used by file open and close.  All operations require a handle to work.  This is not true of COM or C# since they are based on an object model.</p>
<h4>Phone</h4>
<p>Allows making a phone call using a given phone number.</p>
<h4>Picker</h4>
<p>Local mobile device selection process for a list of entries.  The application submits the request for the user to select one item.  The mobile device displays the list and the user picks one thing.</p>
<h4>Process</h4>
<p>Detect and register processes as being aware of Citrix Mobility Pack.  This is most useful for applications that create child processes and do not want the automatic Citrix code displaying the keyboard or using the picker automatically.    In most cases, it will not be necessary to use APIs from this group.</p>
<h4>Receiver Controls</h4>
<p>Enables and disables the Receiver controls.  The Receiver controls are usually enabled and display options for controlling the Receiver (like keyboard popup). On some Receivers, the controls are available on the screen which takes away from the application experience.</p>
<h4>Session</h4>
<p>Get the state of the session and set some of the session options.</p>
<h4>SMS</h4>
<p>Send a SMS message.</p>
<h4>Version</h4>
<p>Determine the version of the SDK and supporting DLL files.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/citrixblogger.wordpress.com/780/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/citrixblogger.wordpress.com/780/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/citrixblogger.wordpress.com/780/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/citrixblogger.wordpress.com/780/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/citrixblogger.wordpress.com/780/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/citrixblogger.wordpress.com/780/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/citrixblogger.wordpress.com/780/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/citrixblogger.wordpress.com/780/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/citrixblogger.wordpress.com/780/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/citrixblogger.wordpress.com/780/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/citrixblogger.wordpress.com/780/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/citrixblogger.wordpress.com/780/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/citrixblogger.wordpress.com/780/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/citrixblogger.wordpress.com/780/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=citrixblogger.org&#038;blog=2497089&#038;post=780&#038;subd=citrixblogger&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://citrixblogger.org/2012/02/15/xama-sdk-functional-groups/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1819c1cbcd8cd90eca1efeae64e998be?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">jeffreymuir</media:title>
		</media:content>

		<media:content url="http://citrixblogger.files.wordpress.com/2012/02/bee_hive_yellow-e1329206051659.jpg" medium="image">
			<media:title type="html">bee_hive_yellow</media:title>
		</media:content>
	<feedburner:origLink>http://citrixblogger.org/2012/02/15/xama-sdk-functional-groups/</feedburner:origLink></item>
		<item>
		<title>XAMA SDK Online Documentation</title>
		<link>http://feedproxy.google.com/~r/CitrixBlogger/~3/W8nNZh2IObA/</link>
		<comments>http://citrixblogger.org/2011/12/21/xama-sdk-online-documentation/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 04:11:18 +0000</pubDate>
		<dc:creator>jeffreymuir</dc:creator>
				<category><![CDATA[XAMA SDK]]></category>
		<category><![CDATA[Documentation]]></category>
		<category><![CDATA[doxygen]]></category>
		<category><![CDATA[sdk documentation]]></category>

		<guid isPermaLink="false">http://citrixblogger.org/?p=774</guid>
		<description><![CDATA[XAMA SDK documentation is now available online at http://www.citrixcloud.net/mobilesdk/index.html. The documentation was generated from the source code using doxygen.  Because of this, the information is more up to date than typical SDK documents.  Three interfaces are covered. C/C++ XAMA API COM &#8230; <a href="http://citrixblogger.org/2011/12/21/xama-sdk-online-documentation/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=citrixblogger.org&#038;blog=2497089&#038;post=774&#038;subd=citrixblogger&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a title="XAMA SDK Online Docs" href="http://www.citrixcloud.net/mobilesdk/index.html" target="_blank"><img class="aligncenter size-full wp-image-775" title="XAMAWelcome" src="http://citrixblogger.files.wordpress.com/2011/12/xamawelcome.png?w=500&h=378" alt="" width="500" height="378" /></a></p>
<p>XAMA SDK documentation is now available online at <a href="http://www.citrixcloud.net/mobilesdk/index.html">http://www.citrixcloud.net/mobilesdk/index.html</a>. The documentation was generated from the source code using doxygen.  Because of this, the information is more up to date than typical SDK documents.  Three interfaces are covered.<span id="more-774"></span></p>
<ol>
<li>C/C++ XAMA API</li>
<li>COM XAMA Interfaces</li>
<li>C# XAMA API</li>
</ol>
<p>Since COM and .NET are supported, it actually means more languages would work besides C/C++/C#.  However, we have not tested other combinations.</p>
<p>Looking through the API online is the easiest way to get an idea of how the API are called.  For example, take a look at <a title="CMPTakePicture" href="http://www.citrixcloud.net/mobilesdk/cmpapi_8cpp.html#af85831c6faa5f1cf3cb989733b9fba21" target="_blank">CMPTakePicture</a> for C/C++.  Given this knowledge along with the takepicture sample, it would be possible to build a program that uses the camera pretty fast on XenApp.</p>
<p>As a side note, one of the interesting use cases is being able to transfer photos right after they are taken to the server.  The access is protected over the ICA link and the copy process uses client drive access.  In other words, it is fully under the control of the program how the picture data is copied once it is taken.  There are security and privacy concerns so some rules are in effect.  First, the user has to enable access to the SD card to Receiver.  Second, the administrator has to enable transferring data with CDM (Client Drive Mapping).  Third, the user selects when the picture is taken manually.  The server cannot say when the actual picture is taken but can only set the stage for getting ready for it.  This tangent is hopefully interesting for those of you that want to play with the SDK.  Personally I find the take picture API very interesting with quite a bit of potential.</p>
<p>Back on track now.  One last thing to clarify.  In order to get this same information in case you do not have an internet connection, just use a web browser to open &#8220;c:\program files (x86)\citrix\mobilitysdk\doc\html\index.html&#8221; assuming that you installed to the default path on an x64 system.  On IE, it will give a popup warning against running scripts.  Let the scripts run since it will create the navigation pane.  There is no ActiveX in the SDK.</p>
<p>It has been a real challenge to produce the SDK documentation this way and there is certainly room for improvement.  This is the first time I have used doxygen for so much.  It is an incredibly powerful tool and hopefully the SDK will use more of its features in the future.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/citrixblogger.wordpress.com/774/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/citrixblogger.wordpress.com/774/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/citrixblogger.wordpress.com/774/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/citrixblogger.wordpress.com/774/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/citrixblogger.wordpress.com/774/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/citrixblogger.wordpress.com/774/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/citrixblogger.wordpress.com/774/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/citrixblogger.wordpress.com/774/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/citrixblogger.wordpress.com/774/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/citrixblogger.wordpress.com/774/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/citrixblogger.wordpress.com/774/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/citrixblogger.wordpress.com/774/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/citrixblogger.wordpress.com/774/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/citrixblogger.wordpress.com/774/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=citrixblogger.org&#038;blog=2497089&#038;post=774&#038;subd=citrixblogger&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://citrixblogger.org/2011/12/21/xama-sdk-online-documentation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1819c1cbcd8cd90eca1efeae64e998be?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">jeffreymuir</media:title>
		</media:content>

		<media:content url="http://citrixblogger.files.wordpress.com/2011/12/xamawelcome.png" medium="image">
			<media:title type="html">XAMAWelcome</media:title>
		</media:content>
	<feedburner:origLink>http://citrixblogger.org/2011/12/21/xama-sdk-online-documentation/</feedburner:origLink></item>
		<item>
		<title>Help with Citrix XAMA SDK on Forum and Email</title>
		<link>http://feedproxy.google.com/~r/CitrixBlogger/~3/RruKbj3rsxs/</link>
		<comments>http://citrixblogger.org/2011/12/20/help-with-citrix-xama-sdk-on-forum-and-email/#comments</comments>
		<pubDate>Tue, 20 Dec 2011 03:00:08 +0000</pubDate>
		<dc:creator>jeffreymuir</dc:creator>
				<category><![CDATA[Citrix SDK]]></category>
		<category><![CDATA[XAMA SDK]]></category>
		<category><![CDATA[citrix forum]]></category>
		<category><![CDATA[early adopter]]></category>
		<category><![CDATA[XenApp]]></category>

		<guid isPermaLink="false">http://citrixblogger.org/?p=770</guid>
		<description><![CDATA[Since we just announced XAMP and XAMA just a few days ago, and it also very close to the holidays, it is not expected that many people will get a chance to try these solutions before January. However, to anticipate &#8230; <a href="http://citrixblogger.org/2011/12/20/help-with-citrix-xama-sdk-on-forum-and-email/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=citrixblogger.org&#038;blog=2497089&#038;post=770&#038;subd=citrixblogger&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Since we just announced XAMP and XAMA just a few days ago, and it also very close to the holidays, it is not expected that many people will get a chance to try these solutions before January.</p>
<p>However, to anticipate potential questions, there is a solution regardless of when the questions are asked.</p>
<p>First of all, there is a <a title="XAMA SDK Forum" href="http://forums.citrix.com/forum.jspa?forumID=1366&amp;start=0">Citrix forum dedicated to the XAMA SDK</a>.  There has not yet been much traffic here yet but we have had a few questions.  The forum is the place to go when you have an issue with getting the SDK to work.   So far we have covered some of the issues that happen when you first start and also how to debug.  Thanks go out to <a title="Jason Conger site" href="http://www.jasonconger.com/" target="_blank">Jason Conger</a> for being an early adopter.   Just remember that we are instantly notified of any new request and do our best to answer the question within a day.</p>
<p>Another path is to use our direct email account.  The group that worked on the Mobility Pack has a group email alias.  This address is mobilitysdk (at) citrix.com.  As usual, substitute &#8220;(at)&#8221; with @.  I wrote it this way in the vain attempt to hide the email address from automated programs.</p>
<p>The email address is direct and instant and is directed to several people in Citrix.    It probably comes down to preference whether you want to use the forum or email.  Either way, you will get the help you need with the XAMA SDK.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/citrixblogger.wordpress.com/770/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/citrixblogger.wordpress.com/770/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/citrixblogger.wordpress.com/770/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/citrixblogger.wordpress.com/770/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/citrixblogger.wordpress.com/770/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/citrixblogger.wordpress.com/770/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/citrixblogger.wordpress.com/770/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/citrixblogger.wordpress.com/770/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/citrixblogger.wordpress.com/770/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/citrixblogger.wordpress.com/770/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/citrixblogger.wordpress.com/770/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/citrixblogger.wordpress.com/770/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/citrixblogger.wordpress.com/770/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/citrixblogger.wordpress.com/770/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=citrixblogger.org&#038;blog=2497089&#038;post=770&#038;subd=citrixblogger&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://citrixblogger.org/2011/12/20/help-with-citrix-xama-sdk-on-forum-and-email/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1819c1cbcd8cd90eca1efeae64e998be?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">jeffreymuir</media:title>
		</media:content>
	<feedburner:origLink>http://citrixblogger.org/2011/12/20/help-with-citrix-xama-sdk-on-forum-and-email/</feedburner:origLink></item>
		<item>
		<title>Debugging XAMA SDK Applications</title>
		<link>http://feedproxy.google.com/~r/CitrixBlogger/~3/6EKNPZTtuy4/</link>
		<comments>http://citrixblogger.org/2011/12/19/debugging-xama-sdk-applications/#comments</comments>
		<pubDate>Mon, 19 Dec 2011 07:25:16 +0000</pubDate>
		<dc:creator>jeffreymuir</dc:creator>
				<category><![CDATA[Citrix SDK]]></category>
		<category><![CDATA[XenApp]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[XAMA SDK]]></category>

		<guid isPermaLink="false">http://citrixblogger.org/?p=757</guid>
		<description><![CDATA[When a developer first experiments with mobile phones and tablets, one of the first questions is how it can be debugged.  With PCs it is fairly easy to start a debugger for a program since the environment is well established &#8230; <a href="http://citrixblogger.org/2011/12/19/debugging-xama-sdk-applications/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=citrixblogger.org&#038;blog=2497089&#038;post=757&#038;subd=citrixblogger&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://citrixblogger.files.wordpress.com/2011/12/samplexamacode1.png"><img class="wp-image-759 alignleft" title="sampleXAMACode" src="http://citrixblogger.files.wordpress.com/2011/12/samplexamacode1.png?w=520&h=162" alt="" width="520" height="162" /></a></p>
<p>When a developer first experiments with mobile phones and tablets, one of the first questions is how it can be debugged.  With PCs it is fairly easy to start a debugger for a program since the environment is well established and there is plenty of screen space.  With a phone, the space is very limited.  On top of this, there is very limited input control.  Using touch is very effective for mobile devices but not always that effective for debugging the applications than run on these devices.  There has to be some kind of outside control to make this more effective.</p>
<p>There are some general strategies:</p>
<ol>
<li>Using tracing to log files</li>
<li>Using tracing to remote consoles</li>
<li>Interactive Debugging inside session</li>
<li>Interactive Debugging in another session</li>
</ol>
<p><span id="more-757"></span>Each has merits but each one represents a more difficult layer to achieve.</p>
<h5>Tracing to Log Files</h5>
<p>The pros are that it is really easy to write code to include trace statements.  These trace statements are typically disabled for retail builds.  The tracing usually ends up in a log file with time stamps so that the situation can later be diagnosed.  Typically this would be used with real customer issues that are not under the control of a developer.  The trace statements can be helpful but only if the volume of data is not too large and the trace covers areas that are broken.  It is fairly easy to miss detail with trace statements since it cannot be easily predicted what will be a problem.  If the developer thought it would be a problem, it would already be fixed.</p>
<p>Also, the output file is collected after everything has happened.  There is no chance of gathering more or less data around the time of the event.</p>
<h5>Tracing to Debug Console</h5>
<p>The concept of outputting to a debug console makes the trace more live.  It might be possible to select levels of debug information.  It might also be possible to pick certain categories of trace information.  This makes the log information more selective and the trace information is shown when the events happen.  However, it is still a trace.  There is no option for examining specific execution of lines of code.  There is also no ability to change any variables or set breakpoints.  It is better than a log file trace but still not always enough.</p>
<h5>Interactive Debugging in Same Session</h5>
<p>Most Windows developers use an IDE (Integrated Development Environment) to work with and debug programs.  Working with text traces is often not enough to determine what the problem is.  Modern applications are based on advanced techniques that can only be captured using an application focused on debugging.   Most Windows developers can focus on debugging inside Windows using Visual Studio in the same session.  It is not hard to have a debugger running at the same time as the application.  The application alternates being in the foreground with the debugger based on whether it is running or being debugged.</p>
<p>There is a lot of power behind this model.  It allows for a widespread coverage that is much easier to work with than tracing.  It is possible to pause the program at any time either from breakpoints or pressing the break button.  Once stopped, the variables can be examined and potentially changed.  The call stack can be examined.  Memory can be viewed.  The path of execution can be observed step by step.</p>
<p>However, this model would not suitable to mobile phones.  First of all, the devices are much too small to allow something like Visual Studio to run well.  Second, the controls for Visual Studio are too small on high density pixel devices.</p>
<p>It is possible to use a tablet with Visual Studio but the process is too frustrating to use for too long.  Touching such small elements has the potential for error which sometimes leads to unwanted closures.</p>
<h5>Interactive Debugging in Another Session</h5>
<p>This is the most advanced use case but also the most useful.  Given that we are using a WTS-based server, it is completely valid to use another session.  This strategy is newer than the others and therefore the most unproven.  However, in the workings of supporting mobile devices, sometimes you need to do something  like this.</p>
<p>Here is what I did to get it working:</p>
<ol>
<li>Install Visual Studio 2010 onto the XenApp 6.5 server that has XAMP (XenApp 6.5 Mobility Pack)</li>
<li>Have two different accounts (one user, one administrator)</li>
<li>Login to the administrator and start Visual Studio</li>
<li>Login to the user with a mobile device</li>
<li>Start the application for the user (but do not do anything yet)</li>
<li>As administrator, on the Visual Studio, select Debug/Attach To Process</li>
<li>Click the two checkboxes for showing processes for users and sessions</li>
<li>Sort the process names and find your user program and select it</li>
<li>Attach to the program (the program should continue to run after this happens)</li>
<li>Break into the program and make sure the symbols are set correctly for the program</li>
<li>Set any desired breakpoints</li>
<li>Use the program as a user</li>
</ol>
<p>There are weaknesses with this model (complexity) and it does not cover controlling the application from the beginning.  This could be handled by having a stub code section that waits before launching the main part of the program.</p>
<p>However it does work and gives use two main things:</p>
<ol>
<li>The debugger can be used fully like it was meant to be used on Windows</li>
<li>The application is not affected by the debugger being displayed in the same session.</li>
</ol>
<p>It is important that the administrator has rights to debug any program in the system.  I do not remember doing anything special for this so it should just work.</p>
<p>This gives the application and the debug view different display surfaces.  Best of all, the debugger can use the standard keyboard and mouse.</p>
<p>It is possible to do the other three tactics with mobile applications but each of these have serious limitations.  One strong exception to this is time sensitive activities.  Sometimes debugging slows things down enough that it can affect the outcome.  The most obvious reason is network transactions.  If the requests do not get a response within a certain time, the request will fail.</p>
<p>In this realm, using tracing is actually better.  It is just important to make sure there is enough information in the trace and the trace has an accurate time reference.</p>
<p>Debugging, to me, has always been more of an art than a science.  The situation largely determines how it can be attacked.  Developers have different preferences and obviously this is reflected by what tools they use and how much experience they have fixing problems.  Even though it might be a bit painful to use the most advanced option for debugging mobile device applications with XenApp, it is also the most rewarding way to get results.</p>
<p>I did not mention how to get administrator access to the server.  In my case, I used XenServer to access the console of the server.  From this &#8220;local&#8221; console, I logged on as administrator and started Visual Studio.  I should have also mentioned that XenServer is hosting my copy of XenApp.  As a Citrix developer, using XenServer makes it much easier to try different servers as well as including support servers like AD controller.  Last I heard, XenServer is still available free.</p>
<p>However, it would also be possible to either use ICA or RDP to access the server remotely to run Visual Studio.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/citrixblogger.wordpress.com/757/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/citrixblogger.wordpress.com/757/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/citrixblogger.wordpress.com/757/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/citrixblogger.wordpress.com/757/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/citrixblogger.wordpress.com/757/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/citrixblogger.wordpress.com/757/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/citrixblogger.wordpress.com/757/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/citrixblogger.wordpress.com/757/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/citrixblogger.wordpress.com/757/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/citrixblogger.wordpress.com/757/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/citrixblogger.wordpress.com/757/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/citrixblogger.wordpress.com/757/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/citrixblogger.wordpress.com/757/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/citrixblogger.wordpress.com/757/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=citrixblogger.org&#038;blog=2497089&#038;post=757&#038;subd=citrixblogger&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://citrixblogger.org/2011/12/19/debugging-xama-sdk-applications/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1819c1cbcd8cd90eca1efeae64e998be?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">jeffreymuir</media:title>
		</media:content>

		<media:content url="http://citrixblogger.files.wordpress.com/2011/12/samplexamacode1.png" medium="image">
			<media:title type="html">sampleXAMACode</media:title>
		</media:content>
	<feedburner:origLink>http://citrixblogger.org/2011/12/19/debugging-xama-sdk-applications/</feedburner:origLink></item>
		<item>
		<title>Citrix XenApp Mobile Application SDK Version 1 Available</title>
		<link>http://feedproxy.google.com/~r/CitrixBlogger/~3/_j-ngv82irA/</link>
		<comments>http://citrixblogger.org/2011/12/19/citrix-xenapp-mobile-application-sdk-version-1-available/#comments</comments>
		<pubDate>Mon, 19 Dec 2011 05:36:32 +0000</pubDate>
		<dc:creator>jeffreymuir</dc:creator>
				<category><![CDATA[Citrix]]></category>
		<category><![CDATA[Citrix SDK]]></category>
		<category><![CDATA[XenApp]]></category>
		<category><![CDATA[XAMA SDK]]></category>

		<guid isPermaLink="false">http://citrixblogger.org/?p=752</guid>
		<description><![CDATA[The first version of the Citrix XenApp 6.5 Mobile Application (XAMA) SDK has been published on the Citrix web site as of December 17, 2011.  In order to use the SDK, the XenApp server must have the Citrix XenApp 6.5 &#8230; <a href="http://citrixblogger.org/2011/12/19/citrix-xenapp-mobile-application-sdk-version-1-available/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=citrixblogger.org&#038;blog=2497089&#038;post=752&#038;subd=citrixblogger&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://cdn.ws.citrix.com/wp-content/uploads/2011/10/Avanade.png"><img class="alignnone" title="Avanade XAMA SDK demo app" src="http://cdn.ws.citrix.com/wp-content/uploads/2011/10/Avanade.png" alt="" width="404" height="253" /></a></p>
<p>The first version of the <a title="XAMA SDK" href="https://www.citrix.com/English/ss/downloads/details.asp?downloadId=2317078&amp;productId=186" target="_blank">Citrix XenApp 6.5 Mobile Application (XAMA) SDK</a> has been published on the Citrix web site as of December 17, 2011.  In order to use the SDK, the XenApp server must have the <a title="XAMP" href="http://citrix.com/English/ss/downloads/details.asp?downloadId=2317077&amp;productId=186&amp;c1=sot1349740" target="_blank">Citrix XenApp 6.5 Mobility Pack (XAMP)</a> installed first.  The team has worked for around a year bringing this together.  The overall goal is to make it easy for enterprise Windows developers write software that works well on mobile devices (phones and tablets).</p>
<p><span id="more-752"></span>Currently the <a title="Citrix Android Receiver" href="https://market.android.com/details?id=com.citrix.Receiver&amp;feature=more_from_developer#?t=W251bGwsMSwxLDEwMiwiY29tLmNpdHJpeC5SZWNlaXZlciJd" target="_blank">Android Receiver</a> supports this new programming platform with the iOS Receiver to follow soon.  The main Android Receiver has the required code to support applications using XAMA.</p>
<p>The basic things that would need to be done:</p>
<ol>
<li> Setup a test XenApp 6.5 server</li>
<li> Install the XenApp 6.5 Mobility Pack on the XenApp server</li>
<li>Install XenApp 6.5 Mobility Application SDK on Windows 7 64-bit dev machine</li>
<li>Install Citrix Receiver for Android (minimum 3.0.59 version) on Android device</li>
</ol>
<p>More tips:</p>
<ol>
<li>Select Web Interface for XenApp to test apps/desktops</li>
<li>Use XenServer to host XenApp and other support servers (like AD controller)</li>
<li>Learn about Google Android SDK and hook up the phone/tablet with USB debugging</li>
<li>Use client drive access or Windows Network to exchange files between server and dev machine (Windows Network is faster)</li>
<li>Visual Studio 2010 is best to use with server and dev machine</li>
<li>XAMA SDK is has HTML documentation included in SDK.  Just open the index.html in the doc\html directory with web browser.  Or, go online at <a title="XAMA HTML SDK Docs" href="http://www.citrixcloud.net/mobilesdk/" target="_blank">http://www.citrixcloud.net/mobilesdk/</a>.</li>
</ol>
<p>The primary concept is that the SDK enables Windows applications to be aware of mobile device features.  Once aware, these applications can utilize the features to accomplish things which were not possible before.  Currently the most obvious benefit is being able to customize content to the variable screen sizes and pixel densities.  Long-term, full integration will allow for powerful bonding between server applications and mobile devices.  The best of both worlds will bring a better experience to the users.</p>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/citrixblogger.wordpress.com/752/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/citrixblogger.wordpress.com/752/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/citrixblogger.wordpress.com/752/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/citrixblogger.wordpress.com/752/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/citrixblogger.wordpress.com/752/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/citrixblogger.wordpress.com/752/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/citrixblogger.wordpress.com/752/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/citrixblogger.wordpress.com/752/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/citrixblogger.wordpress.com/752/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/citrixblogger.wordpress.com/752/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/citrixblogger.wordpress.com/752/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/citrixblogger.wordpress.com/752/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/citrixblogger.wordpress.com/752/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/citrixblogger.wordpress.com/752/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=citrixblogger.org&#038;blog=2497089&#038;post=752&#038;subd=citrixblogger&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://citrixblogger.org/2011/12/19/citrix-xenapp-mobile-application-sdk-version-1-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1819c1cbcd8cd90eca1efeae64e998be?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">jeffreymuir</media:title>
		</media:content>

		<media:content url="http://cdn.ws.citrix.com/wp-content/uploads/2011/10/Avanade.png" medium="image">
			<media:title type="html">Avanade XAMA SDK demo app</media:title>
		</media:content>
	<feedburner:origLink>http://citrixblogger.org/2011/12/19/citrix-xenapp-mobile-application-sdk-version-1-available/</feedburner:origLink></item>
		<item>
		<title>XenApp Mobility Pack (XAMP)</title>
		<link>http://feedproxy.google.com/~r/CitrixBlogger/~3/bbf3bHp4aIA/</link>
		<comments>http://citrixblogger.org/2011/11/20/xenapp-mobility-pack-xamp/#comments</comments>
		<pubDate>Sun, 20 Nov 2011 08:50:19 +0000</pubDate>
		<dc:creator>jeffreymuir</dc:creator>
				<category><![CDATA[Citrix SDK]]></category>
		<category><![CDATA[Citrix Tools]]></category>

		<guid isPermaLink="false">http://citrixblogger.org/?p=745</guid>
		<description><![CDATA[Ramping up with XAMP Over the last couple of years, Citrix Labs has been working on a project to make standard Windows applications more usable on mobile devices (phones and tablets).  This started with the development of Project GoldenGate and &#8230; <a href="http://citrixblogger.org/2011/11/20/xenapp-mobility-pack-xamp/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=citrixblogger.org&#038;blog=2497089&#038;post=745&#038;subd=citrixblogger&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h1>Ramping up with XAMP</h1>
<p>Over the last couple of years, Citrix Labs has been working on a project to make standard Windows applications more usable on mobile devices (phones and tablets).  This started with the development of Project GoldenGate and the production of an email client that runs on XenApp but acts like a native mobile device application when run remotely.  In the early demonstrations, it was clear that customers were interested for a few different reasons:</p>
<ul>
<li>The email would be kept in the data center and therefore would be more secure.  If the device was lost or stolen, the information would not be there.</li>
<li>The email application could be maintained inside the organization instead of on different devices at remote locations.</li>
<li>Deploying standard Windows email programs via XenApp is not easy due to user expectations for usability.</li>
</ul>
<p>You can learn more about the latest release of GoldenGate <a title="GoldenGate" href="http://community.citrix.com/display/xa/Project+GoldenGate?focusedCommentId=158568283" target="_blank">here</a>.</p>
<p>Producing this kind of application is important but not the whole story.  There is also a need to make it easy for other software companies to produce software for XenApp and mobile devices.  The intent is to publish a SDK for developers to use to get all the same benefits along with a few new ideas along the way.</p>
<p>To get a first impression of this SDK, please example the doxygen-generated documenation for <a title="XA MA SDK" href="http://www.citrixcloud.net/mobilesdk/index.html" target="_blank">XenApp 6.5 Mobile Application SDK</a>.  This documentation was released during Synergy Barcelona in late October 2011.</p>
<p>The online documentation focuses on the C/C++ interfaces for the SDK.  The internal name for the SDK was Citrix Mobility Pack SDK (CMPSDK).  That is why there are so many references to CMP in the documentation.</p>
<p>The <a title="XA MA SDK announcement" href="http://community.citrix.com/display/xa/XenApp+6.5+Mobile+Application+SDK" target="_blank">announcement for the XA MA SDK</a> includes a video that share the vision for producing these kind of mobile applications.</p>
<p>It is important to keep these kind of things in mind:</p>
<ul>
<li>It is a fairly steep learning curve to pick up knowledge in mobile device platform development.  It is far easier to leverage existing Windows development experience.</li>
<li>The XA Mobility Pack enables several new features from the mobile device including GPS, display metrics, onscreen keyboard, SMS, camera, orientation, mobile device properties,  button redirection, user notification, picker control support.</li>
<li>The SDK works with C/C++/COM/C#</li>
<li>The SDK is used by GoldenGate</li>
</ul>
<div><span class="Apple-style-span" style="font-size:14px;line-height:23px;"><span id="more-745"></span></span></div>
<p>There is another way to talk about this SDK.  What it really means is that the client and server work closer together to produce a more native experience on the mobile device.  It also means that the mobile device gets all the benefits of the data center with the massive storage and the existing Windows infrastructure.  As an example, a Windows program could be written to use the SDK to take a picture on the device and then download the picture to any location inside the company.  There is more to the story than this.  Security is a concern.  So, for example, no automatic picture taking will happen and the server will need access to the mobile device storage through Client Drive Mapping.  However, the point is that with a bit of changes, an existing Windows program could be modified to take advantage of the features on the mobile device.  Another example is a dialing program.  Using our SDK, it is possible to tell the device to start the process of dialing the number.  The user still has to say that it is okay and let the dial happen (for security reasons).  This would make it possible to write a program that could hook into the company database and then provide a list of names based on a search.  Once a person is selected, that number will be sent to the phone so the user can dial it easily without typos or the possibility of errors with the prefix.</p>
<p>Yet another angle brings in GPS data.  The SDK introduces the ability to determine current location.  With this information it would be possible to reconfigure the software to provide different results.  For example, the dialer would know where it is so it can pick the right prefix to dial the number correctly.</p>
<p>For those early developers for this SDK, there is a <a title="SDK Forum" href="http://forums.citrix.com/forum.jspa?forumID=1366" target="_blank">forum</a> setup in Citrix.  The forum is monitored by the people that have been working on it and the associated projects.  The team is keen to help developers and to learn what else developers would like to see.</p>
<p>Just to give you a simple example of code, here is a example of how to dial a number:</p>
<p>//<br />
// Phonecall example:<br />
//<br />
// Uses Citrix Mobility SDK to start a phone call<br />
//<br />
// Copyright (c) Citrix Systems<br />
//</p>
<p>#include &lt;stdio.h&gt;<br />
#include &lt;windows.h&gt;</p>
<p>#include &lt;cmp.h&gt;</p>
<p>// change the phone number to something more appropriate<br />
#define PHONE_NUMBER &#8220;+18005551212&#8243;</p>
<p>// unique number should not be a constant but it is here for an example<br />
#define UNIQUE_CALL_ID 0&#215;87654321</p>
<p>//<br />
// Event callback for phone call started<br />
//<br />
void CMPAPI PhoneCallStarted(HANDLE hCMP, CMPRESULT rc, CMP_UNIQUE_ID PhoneCallId)<br />
{<br />
printf(&#8220;PhoneCallStarted hCMP(%p) rc(0x%X) PhoneCallId(%X)\n&#8221;, hCMP, rc, PhoneCallId);<br />
}</p>
<p>//<br />
// Reports errors if they happen<br />
//<br />
void ReportStatus(LPCSTR text, CMPRESULT rc)<br />
{<br />
// only print if something went wrong<br />
if(CMP_FAILURE(rc))<br />
{<br />
printf(&#8220;%s CMPResult(%08X)\n&#8221;, text, rc);<br />
}</p>
<p>return;<br />
}</p>
<p>//<br />
// main entry point for simple phone call program<br />
//<br />
int __cdecl main(int argc, char **argv)<br />
{<br />
CMPRESULT rc;<br />
HANDLE hCMP = NULL;</p>
<p>// initialize for STA (Single Thread Apartment) in COM<br />
rc = CMPInitialize(FALSE);</p>
<p>ReportStatus(&#8220;CMPInitialize&#8221;, rc);</p>
<p>// Open a handle to the mobile device<br />
rc = CMPOpen(&amp;hCMP);</p>
<p>ReportStatus(&#8220;CMPOpen&#8221;, rc);</p>
<p>if(CMP_SUCCESS(rc))<br />
{<br />
// open the link between the two sides<br />
rc = CMPOpenSession(hCMP);</p>
<p>ReportStatus(&#8220;CMPOpenSession&#8221;, rc);</p>
<p>if(CMP_SUCCESS(rc))<br />
{<br />
// register for event<br />
rc = CMPRegisterForEvent(hCMP, CMP_EVENT_PHONE_CALL_STARTED, (CMP_EVENT_CALLBACK)PhoneCallStarted);</p>
<p>ReportStatus(&#8220;CMPRegisterForEvent CMP_EVENT_PHONE_CALL_STARTED&#8221;, rc);</p>
<p>// Start the phone call process by popping up the dialer with the number already populated<br />
rc = CMPStartCall(hCMP, PHONE_NUMBER, UNIQUE_CALL_ID);</p>
<p>ReportStatus(&#8220;CMPStartCall&#8221;, rc);</p>
<p>// let events come in over the next 30 seconds<br />
//<br />
// if this was a Windows program and we had a message loop, we would not need to do this<br />
for(int i=0; i&lt;30; i++)<br />
{<br />
Sleep(1000);<br />
}</p>
<p>// close our connection<br />
CMPCloseSession(hCMP);<br />
}</p>
<p>// release our handle<br />
CMPClose(hCMP);<br />
}</p>
<p>// uninitialize COM<br />
CMPUninitialize();</p>
<p>}</p>
<p>This shows the typical flow for how to use the SDK.</p>
<ol>
<li>CMPInitialize</li>
<li>CMPOpen</li>
<li>CMPOpenSession</li>
<li>CMP functions (e.g. CMPStartCall)</li>
<li>CMPCloseSession</li>
<li>CMPClose</li>
<li>CMPUninitialize</li>
</ol>
<p>The calls are matched up.  CMPInitialize and CMPUninitialize, CMPOpen and CMPClose, and CMPOpenSession and CMPCloseSession.</p>
<p>CMPInitialize corresponds to initializing a thread for COM.  It should only be done once for a thread and before any COM operations happen.  The SDK uses COM so it needs this to be run.  If COM is already initialized then you can skip this function.</p>
<p>CMPOpen creates the COM object for the SDK.  It is responsible for creating and initializing the COM interface.  CMPOpen does not guarantee a connection to the mobile device.  It will return fine even if the connection is not there.</p>
<p>CMPOpenSession establishes a link between the two sides (server and mobile device).  It will fail if the device is not there.  For any of the functions besides the paired ones already mentioned, require a connection to the mobile device.  If you try to issue a function when it is not connected, it will fail.</p>
<p>The functions in the SDK use a return code called CMPRESULT.  This enumeration is defined in cmpenum.h in the SDK and has this pattern.  If the lower 16-bits (word) are zero, then the command was successful.  The top 16-bits reveal which component generated the result.  The status codes are custom to the SDK to avoid depending on the Windows error codes too much.</p>
<p>To download the SDK that was released with Synergy, get it from <a title="Citrix SDK" href="http://community.citrix.com/p/sdkcentral#xenapp" target="_blank">CDN</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/citrixblogger.wordpress.com/745/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/citrixblogger.wordpress.com/745/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/citrixblogger.wordpress.com/745/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/citrixblogger.wordpress.com/745/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/citrixblogger.wordpress.com/745/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/citrixblogger.wordpress.com/745/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/citrixblogger.wordpress.com/745/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/citrixblogger.wordpress.com/745/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/citrixblogger.wordpress.com/745/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/citrixblogger.wordpress.com/745/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/citrixblogger.wordpress.com/745/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/citrixblogger.wordpress.com/745/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/citrixblogger.wordpress.com/745/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/citrixblogger.wordpress.com/745/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=citrixblogger.org&#038;blog=2497089&#038;post=745&#038;subd=citrixblogger&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://citrixblogger.org/2011/11/20/xenapp-mobility-pack-xamp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1819c1cbcd8cd90eca1efeae64e998be?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">jeffreymuir</media:title>
		</media:content>
	<feedburner:origLink>http://citrixblogger.org/2011/11/20/xenapp-mobility-pack-xamp/</feedburner:origLink></item>
		<item>
		<title>Citrix Software Development Kit for Mobile Devices</title>
		<link>http://feedproxy.google.com/~r/CitrixBlogger/~3/wdWNSvmeDBY/</link>
		<comments>http://citrixblogger.org/2011/07/04/citrix-software-development-kit-for-mobile-devices/#comments</comments>
		<pubDate>Mon, 04 Jul 2011 13:34:36 +0000</pubDate>
		<dc:creator>jeffreymuir</dc:creator>
				<category><![CDATA[Project Candlestick]]></category>
		<category><![CDATA[SDK]]></category>
		<category><![CDATA[Citrix SDK]]></category>

		<guid isPermaLink="false">http://citrixblogger.org/?p=740</guid>
		<description><![CDATA[So many people are using mobile phones and tablets these days and Citrix has invested heavily in producing new Receiver programs for the wide array of hardware devices.  Android and Apple iOS are the most popular but there is work &#8230; <a href="http://citrixblogger.org/2011/07/04/citrix-software-development-kit-for-mobile-devices/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=citrixblogger.org&#038;blog=2497089&#038;post=740&#038;subd=citrixblogger&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://citrixblogger.files.wordpress.com/2011/07/candlestick_enclosed.jpg"><img class="aligncenter size-full wp-image-741" title="candlestick_enclosed" src="http://citrixblogger.files.wordpress.com/2011/07/candlestick_enclosed.jpg?w=500&h=375" alt="" width="500" height="375" /></a></p>
<p>So many people are using mobile phones and tablets these days and Citrix has invested heavily in producing new Receiver programs for the wide array of hardware devices.  Android and Apple iOS are the most popular but there is work being done for upcoming devices from top manufacturers.</p>
<p>While having great Receiver software certainly helps, Citrix has realized that it needs to do more.</p>
<p>The wheels are turning at <a title="Citrix Labs" href="http://community.citrix.com/p/labs#mobile+devices">Citrix Labs</a> to produce a new software development kit.  Unlike previous Citrix SDKs, this one addresses a basic need to utilize mobile device resources with programs running on XenApp.  <span id="more-740"></span></p>
<p>I have been assigned the task of putting this SDK together.  It is based on experience gathered from a number of projects in Citrix including well known projects like <a title="Project Golden Gate" href="http://community.citrix.com/display/xa/Project+GoldenGate">Golden Gate</a>.  We love our project names like most software companies do.  The name of the umbrella project is Project San Francisco.  It includes the sub-project called Project Candlestick.  We also have Lombard, Alcatraz, and Hermes.  Perhaps you sense a theme?  Please excuse Hermes since it was invented independent of San Francisco.</p>
<p>Regardless of all these names, the projects aim to improve the experience with XenApp while using mobile devices.  Each project focuses on a specific topic.</p>
<p>Project Candlestick is all about providing an SDK.  However, it also has to worry about the implementation of the communication between the XenApp server and the Citrix Mobile Receiver.  The current name (which should stick) is the Mobile Receiver Virtual Channel (MRVC).  This new channel has already been seen as part of the<a title="Citrix Labs Android Receiver" href="https://market.android.com/details?id=com.citrix.labs.Receiver"> Citrix Labs Android Receiver</a>.</p>
<p>The message that needs to be conveyed is simple.  Running Windows programs remotely on mobile devices has a number of limitations.  It does not take long to realize that interacting with a legacy program running on XenApp can be very trying.  The new interfaces do not mesh well with the old.  There are a variety of reasons why which I will save up for a future post.</p>
<p>Citrix has always been about keeping things compatible and being able to work with the program from anywhere on any device.  Early on, Citrix realized the power of taking Windows applications to places it would never normally run.</p>
<p>Things have changed a bit.  Introducing Windows programs to a tablet is not just about making it run like a Windows program.  The shift is starting to realize that the Windows program needs to act a lot more like the mobile device platform.</p>
<p>So, what does this mean?  It means that for the first time, Citrix is going to recommend writing software that is specifically aware of mobile devices on the other side.  This simple shift of thinking advocates using the mobile device resources and integrating it with the application running on the host.</p>
<p>Project Golden Gate is the first to take advantage of this idea.  I have tried this internally written program on my Android phone.  It is impressive what it has achieved.  The program feels like a native application but all the information is at work on the XenApp server.  The message is strong and clear.  Why choose the mobile device or the server when you can have both working together?</p>
<p>It is going to be difficult to sell the SDK to developers because it is different from what has come from before.  I see it more as a bridge between the two worlds.  If fact, I see it as a means of creating a hybrid machine based on both.  The interface lives on the device and the core business logic lives on the server.  Different from before, the program looks like it came from the device when really it is leveraging both.</p>
<p>There are a number of things I could share with you.  For now, it is important just to introduce why this new SDK is needed.  The next blog post will cover what this SDK is solving.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/citrixblogger.wordpress.com/740/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/citrixblogger.wordpress.com/740/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/citrixblogger.wordpress.com/740/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/citrixblogger.wordpress.com/740/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/citrixblogger.wordpress.com/740/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/citrixblogger.wordpress.com/740/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/citrixblogger.wordpress.com/740/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/citrixblogger.wordpress.com/740/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/citrixblogger.wordpress.com/740/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/citrixblogger.wordpress.com/740/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/citrixblogger.wordpress.com/740/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/citrixblogger.wordpress.com/740/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/citrixblogger.wordpress.com/740/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/citrixblogger.wordpress.com/740/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=citrixblogger.org&#038;blog=2497089&#038;post=740&#038;subd=citrixblogger&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://citrixblogger.org/2011/07/04/citrix-software-development-kit-for-mobile-devices/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1819c1cbcd8cd90eca1efeae64e998be?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">jeffreymuir</media:title>
		</media:content>

		<media:content url="http://citrixblogger.files.wordpress.com/2011/07/candlestick_enclosed.jpg" medium="image">
			<media:title type="html">candlestick_enclosed</media:title>
		</media:content>
	<feedburner:origLink>http://citrixblogger.org/2011/07/04/citrix-software-development-kit-for-mobile-devices/</feedburner:origLink></item>
		<item>
		<title>Legacy Entrapment</title>
		<link>http://feedproxy.google.com/~r/CitrixBlogger/~3/3foWxyMLTHQ/</link>
		<comments>http://citrixblogger.org/2011/07/03/legacy-entrapment/#comments</comments>
		<pubDate>Sun, 03 Jul 2011 06:57:00 +0000</pubDate>
		<dc:creator>jeffreymuir</dc:creator>
				<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Observations]]></category>
		<category><![CDATA[IE9]]></category>
		<category><![CDATA[Internet Explorer 9]]></category>

		<guid isPermaLink="false">http://citrixblogger.org/?p=733</guid>
		<description><![CDATA[Where does it all begin?  When does a pattern emerge?  How do we decide that one thing is better than another?  Why do we make the choices we do? Obviously we can blame our parents first.  That which we know &#8230; <a href="http://citrixblogger.org/2011/07/03/legacy-entrapment/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=citrixblogger.org&#038;blog=2497089&#038;post=733&#038;subd=citrixblogger&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://citrixblogger.files.wordpress.com/2011/07/lasersystem.jpg"><img class="aligncenter size-full wp-image-734" title="lasersystem" src="http://citrixblogger.files.wordpress.com/2011/07/lasersystem.jpg?w=500&h=284" alt="" width="500" height="284" /></a></p>
<p>Where does it all begin?  When does a pattern emerge?  How do we decide that one thing is better than another?  Why do we make the choices we do?</p>
<p>Obviously we can blame our parents first.  That which we know probably started with them.  Then we can blame the media and the Internet for the remaining bits.  We see, we do.  We like to copy that which we have seen.  If we see someone do something and it worked for them, then it should work for us.</p>
<p>This is the nature of primates.  The roots are deep.  It is hard to ignore those aspects of ourselves.  We see, we do.</p>
<p>Sometimes things are designed to be so easy to do it is hard to avoid them.  Once they are used, it is hard to stop.  Things like telephones and televisions come to mind.  Simplicity attracts use.  Use attracts others.  Soon, a large group of customers are avid fans of that which they use.</p>
<p>Enter the entrapment.  Once a user gets hooked on a way something works, the user expects it to always do certain things.  The momentum of the mind will accept minor deviations in future products but will not tolerate having its basic needs met.<span id="more-733"></span></p>
<p>Think about Internet Explorer.  It first came out in the mid 90s after the huge success of Netscape Navigator.  The first decent version was 3.0 which corresponded with Windows 95.  It was a perfect time to introduce a new program based on browsing the Internet.  The timing was great and so was the way it was delivered.  Instead of selling it as a separate product, it was included with Windows.  This ultimately changed the game and forced Netscape to focus on the server products over time.  Users got IE for free and were able to browse the web with their normal Windows.</p>
<p>Fast forward to 2011 and the introduction of IE 9.  The expectation for IE 9 was high and Microsoft has pushed it extensively.  It is the first Microsoft browser to support HTML 5 and it has things that probably should have been included in previous versions.  It promised to make things much better for the user.</p>
<p>Then something else happened.  First it was my wife.  One of her web sites that she visits stopped working.  It sounded odd.  Web sites usually do not break that way so quickly.  Things were missing and other things did not respond as expected.  It truly was unusable.  Searching for the problem found results with other people having the same problem with the same site (Blogger).  And, much to my surprise, there was no easy fix.  All of the people on the forum discovered that the only way to get it to work again was to go back to IE 8.</p>
<p>Then it became a question of how IE 9 showed up in the first place.  I had assumed that my wife had installed IE 9 to get the latest browser version.  This was untrue.  IE 9 arrived through Windows Updates.  This means that getting IE 9 was relatively automatic and not always easy to understand how to stop.</p>
<p>Users have found that when they get rid of IE 9 it just tries to install itself later on through the update process.  It is necessary to hide the update as well so it will leave you alone.</p>
<p>I probably spent at least an hour finding this out and going back to IE 8.  After the computer was switched to IE 8, everything worked again.  It was refreshing to see it work but also a bit disturbing that it happened in the first place.</p>
<p>Then, within a couple of weeks, two other people in the family reported similar problems with IE 9.  A pattern was emerging.  IE 9 was not that good at supporting what people were used to.   Now it was no longer just a personal experience but a shared experience.  Bottom line, forget IE 9.  Go back to IE 8.</p>
<p>Being that I still develop software, I find this idea a bit offensive.  The latest version is always supposed to be the best.  Anything that worked before should still work.  Expectations are that things should be better and not worse.</p>
<p>And then, I remember something else.  Software companies and developers are always under pressure to meet other non-user demands.  Perhaps there is a major security threat that needs to be addressed.  Perhaps the architect wants a complete re-design.  Maybe the developers just do not care about compatibility.  It could be any of these.  At some point the past is forgotten and the company produces something that it thinks is better but actually it does not work as the previous products worked.  Resistance is quick and continues to the point that could lead to a quick exodus to other products and companies.</p>
<p>Sometimes companies just get cocky.  IBM had the PS/2.  Intel had the Itanium.  Microsoft had Vista.  All of these things were supposed to be so much better.  Each of these had aspects that were great.  Unfortunately, they let people down.  With IBM and Intel, it could be argued that the changes were designed to better control the market.  The problem is that people are already committed to doing things a certain way and drastic changes lead to rebellion.  The common theme is a lack of compatibility leads to greatly reduced acceptance.</p>
<p>People are trapped in the patterns that they do.  It is hard to change based on the momentum of the investments made.  Learning a new story and forgetting the old one can be very painful.  It is made worse when the new story is not compelling enough to change for.</p>
<p>Legacy entrapment means that a develop is trapped into supporting the old ways as well as the new.  There is no easy way to get adoption without it.  The only decent way to have something completely different is to make the old ways look primitive AND be able to do it so much cheaper, simpler, and faster.  Not many people still play music on cassettes.  Not many people walk to their destinations.</p>
<p>To ignore how things work now is a fatal flaw.  We are stuck fully in legacy mode and anything new has to respect that.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/citrixblogger.wordpress.com/733/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/citrixblogger.wordpress.com/733/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/citrixblogger.wordpress.com/733/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/citrixblogger.wordpress.com/733/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/citrixblogger.wordpress.com/733/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/citrixblogger.wordpress.com/733/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/citrixblogger.wordpress.com/733/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/citrixblogger.wordpress.com/733/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/citrixblogger.wordpress.com/733/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/citrixblogger.wordpress.com/733/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/citrixblogger.wordpress.com/733/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/citrixblogger.wordpress.com/733/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/citrixblogger.wordpress.com/733/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/citrixblogger.wordpress.com/733/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=citrixblogger.org&#038;blog=2497089&#038;post=733&#038;subd=citrixblogger&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://citrixblogger.org/2011/07/03/legacy-entrapment/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1819c1cbcd8cd90eca1efeae64e998be?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">jeffreymuir</media:title>
		</media:content>

		<media:content url="http://citrixblogger.files.wordpress.com/2011/07/lasersystem.jpg" medium="image">
			<media:title type="html">lasersystem</media:title>
		</media:content>
	<feedburner:origLink>http://citrixblogger.org/2011/07/03/legacy-entrapment/</feedburner:origLink></item>
	</channel>
</rss>

