<?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:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

    <channel>
    
    <title>Sundog</title>
    <link>http://www.sundoginteractive.com/sunblog/</link>
    <description>Here's what's on the minds of our marketing and technology experts. </description>
    <dc:language>en</dc:language>
    <dc:creator>Terry Luschen</dc:creator>
    <dc:rights>Copyright 2013</dc:rights>
    <dc:date>2013-05-20T11:26:34+00:00</dc:date>
    <admin:generatorAgent rdf:resource="http://www.expressionengine.com/" />
    <image>
		<url>http://www.sundoginteractive.com/images/logo_art.png</url>
		<title>Sundog</title>
		<link>http://www.sundoginteractive.com/sunblog/</link>
		<width>50</width>
		<height>46</height>
		<description>Sundog feed artwork</description>
	</image> 
    

    <feedburner:info uri="sunblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>46.076891</geo:lat><geo:long>-97.355621</geo:long><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Sunblog" /><feedburner:emailServiceId>Sunblog</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><item>
      <title><![CDATA[The Tradeoffs of Saving Files Inside or Outside of Salesforce]]></title>
      <link>http://feedproxy.google.com/~r/Sunblog/~3/86xLYS1Glkw/the-tradeoffs-of-saving-files-inside-or-outside-of-salesforce</link>
      <author>terry.luschen@sundoginteractive.com (Terry Luschen)</author>
      <description>&lt;p&gt;Salesforce has some great features for saving files like PDFs and Microsoft Office documents within Salesforce.&amp;nbsp; Let&amp;#8217;s review those first.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1) Documents Tab&lt;/strong&gt;&lt;br /&gt;
The documents tab is a global place where files can be stored with a folder structure.&amp;nbsp; New folders can be created and files can be placed in those folders so that they are organized.&amp;nbsp; There is also a &amp;#8216;My Personal Documents&amp;#8217; folder where documents that only you should have access to can be stored.&amp;nbsp; These files cannot be tied to individual standard or custom objects.&amp;nbsp; The folders created within the Documents Tab are all at the same level so there is not nesting of folders.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2) Notes &amp;amp; Attachments&lt;/strong&gt;&lt;br /&gt;
In the &amp;#8216;Notes &amp;amp; Attachments&amp;#8217; section of each standard and custom object files can be added.&amp;nbsp; This is an easy way of adding files that do not need any associated metadata, as attachments do not support custom fields.&amp;nbsp; An example requirement would be adding PDFs to a Contract object.&amp;nbsp; This option would be an easy way to do that, as the &amp;#8216;Notes &amp;amp; Attachments&amp;#8217; related list simply needs to be added to the Page Layout for the Contract object.&amp;nbsp; One limit to keep in mind with &amp;#8216;Notes &amp;amp; Attachments&amp;#8217; is that the files cannot be large than 5MB.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3) Salesforce Content&lt;/strong&gt;&lt;br /&gt;
Salesforce Content helps to organize files into libraries.&amp;nbsp; This is very similar to the folder structure that can be created within the Document Tab as listed in #1 above, but, some added benefits of the Salesforce Content structure are&amp;#8230;&lt;br /&gt;
&amp;nbsp; A) The files placed in the library are full-text searchable.&amp;nbsp; So if you place a PDF in the library that has the words &amp;#8216;Model X456Z&amp;#8217; in it, then that text can be found by searching Salesforce or by doing a Salesforce Object Search Language (SOSL) search.&lt;br /&gt;
&amp;nbsp; B) Custom fields can be added to the files so more metadata about the file can be saved.&amp;nbsp; These fields get added to the ContentVersion standard object.&lt;br /&gt;
&amp;nbsp; C) Salesforce Content has made dealing with revisions very easy.&amp;nbsp; Once a file is saved to Salesforce Content, adding a new revision to a file and keeping the old revisions is all handled by the Salesforce user interface. Revisions could not be done with the &amp;#8216;Documents Tab&amp;#8217; or the &amp;#8216;Notes &amp;amp; Attachments&amp;#8217; related list.&amp;nbsp; There will be one row saved to the ContentDocument standard object for each file and one row for each revision of that document will be saved to the ContentVersion standard object.&lt;br /&gt;
&amp;nbsp; D) In Salesforce Content the maximum file size is 2GB, so there basically isn&amp;#8217;t a limit.&amp;nbsp; The time where file size limits will come into play is if you are loading the files through the API or a Visualforce page.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4) Chatter Files&lt;/strong&gt;&lt;br /&gt;
Chatter Files are a recent addition to the Salesforce offerings.&amp;nbsp; Chatter must be enabled for this feature to be available.&amp;nbsp;  You can think of Chatter Files as combining the features of the &amp;#8216;Notes &amp;amp; Attachments&amp;#8217; with &amp;#8216;Salesforce Content&amp;#8217;.&amp;nbsp; Chatter Files are like &amp;#8216;Notes &amp;amp; Attachments&amp;#8217; because the files are tied directly to the standard or custom object.&amp;nbsp; The Chatter Files will show up in the chatter feed since that is where they were originally added, but they also show up in the &amp;#8216;Notes &amp;amp; Attachments&amp;#8217; section as a &amp;#8216;Chatter Feed&amp;#8217; row.&amp;nbsp; The Chatter Files are stored in some hidden libraries within the Salesforce Content so you get most of the great features of Salesforce Content, like full text searching and easy revision creation.&amp;nbsp;  The one feature that is not available with Chatter Files is the addition of custom fields.&amp;nbsp;  This can slightly be worked around if the files are first added to Salesforce Content and then linked to a Chatter feed. That, however, would make some processes more complicated than necessary.&amp;nbsp; If needed, that metadata can be moved up to the standard of custom object as needed.&amp;nbsp;  The last great point about Chatter Files is that they are in Chatter so users can post comments about these files specifically.&amp;nbsp; Cool!&lt;/p&gt;

&lt;p&gt;These are great features and options!&amp;nbsp; Why would you ever decide not to save your files within Salesforce?&amp;nbsp; The main time it makes sense not to save your files within Salesforce is if you are wanting to save a large amount of files and you won&amp;#8217;t have enough storage space in your Salesforce instance. &lt;/p&gt;

&lt;p&gt;There are two types of storage space considerations with Salesforce:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data storage&lt;/strong&gt; - which is the number of rows in the standard and custom objects (which I am not discussing in this blog post).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;File storage&lt;/strong&gt; - the amount of file storage is based off of the number of licenses that have been purchased. For each Salesforce license you get 612MB of file storage space. That may seem like a lot if each user is only uploading his/her own files.&amp;nbsp; But if you have a bunch of files that you need to import from an existing system, this limit can quickly be reached, especially if you do not have many licenses.&lt;/p&gt;

&lt;p&gt;So what should you do if you are running into the file storage space limitation?&lt;/p&gt;

&lt;p&gt;1) Contact Salesforce and ask them how much it will cost for additional storage space.&amp;nbsp; Salesforce wants you to keep your files in their platform so they should work with you to make storing those files cost effective as compared to other options.&lt;/p&gt;

&lt;p&gt;2) If the Salesforce route does not work then you can look at storing the files at another location, either a local resource like a SharePoint server or by turning to another cloud provider like &lt;a href="http://aws.amazon.com/s3/"&gt;Amazon Web Services S3&lt;/a&gt;.&amp;nbsp; With both of these options, and the many others that are out there, you will just save the link to the file in Salesforce.&amp;nbsp;  This can give you the best of both worlds at times as Salesforce offers the great object model and metadata creation capabilities and these other tools provide file storage space at very reasonable costs.&amp;nbsp; &lt;br /&gt;
&amp;nbsp;  - With Amazon Web Services S3 you can hire a company to do a custom integration matching to exactly fit your needs as S3 has an open API that is easy to use.&amp;nbsp; Or you can turn to an AppExchange product like &lt;a href="https://appexchange.salesforce.com/listingDetail?listingId=a0N30000001SWUTEA4"&gt;S-Drive&lt;/a&gt;, which has already done the integration work and will allow you to tie files stored in S3 with standard or custom objects.&lt;/p&gt;

&lt;p&gt;How have you solved this file storage requirement before?&amp;nbsp; I would love to hear your ideas!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=86xLYS1Glkw:yZYbvo_i6A4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=86xLYS1Glkw:yZYbvo_i6A4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=86xLYS1Glkw:yZYbvo_i6A4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=86xLYS1Glkw:yZYbvo_i6A4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?i=86xLYS1Glkw:yZYbvo_i6A4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sunblog/~4/86xLYS1Glkw" height="1" width="1"/&gt;</description>
      <dc:subject><![CDATA[Cloud, Salesforce, Software Development, Software Maintenance,]]></dc:subject>
      <dc:date>2013-05-20T11:26:34+00:00</dc:date>
      <guid isPermaLink="false">http://www.sundoginteractive.com/sunblog/posts/the-tradeoffs-of-saving-files-inside-or-outside-of-salesforce</guid>
    <feedburner:origLink>http://www.sundoginteractive.com/sunblog/posts/the-tradeoffs-of-saving-files-inside-or-outside-of-salesforce</feedburner:origLink></item>

    <item>
      <title><![CDATA[Google I/O Initial Thoughts/Recap]]></title>
      <link>http://feedproxy.google.com/~r/Sunblog/~3/zWAvjK8Fcy0/google-i-o-initial-thoughts-recap</link>
      <author>craig.isakson@sundog.net (Craig Isakson)</author>
      <description>&lt;p&gt;This year’s Google I/O was said to be all about the developer.&amp;nbsp; With no new device announcements as well as no new version of Android announced, this seemed to hold true.&amp;nbsp; After wrapping up yesterday afternoon, I have had a chance to digest a lot of the content that was presented.&amp;nbsp; &lt;/p&gt;

&lt;p&gt;The recurring theme in the sessions I was able to attend really reflected all the effort that Google is putting forward in trying to make developers jobs easier. Not just to build solutions but to build solutions that help take a lot of the complex work out of making these solutions as fast and efficient as possible.&lt;/p&gt;

&lt;p&gt;A High-Level list of some of these additions include:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Android Studio&lt;/strong&gt; – A better and more efficient IDE for developers to write Android applications.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Context Aware Android API’s&lt;/strong&gt; – API’s that allow the developer to easily tap into complex algorithms that determine what a user is currently doing while holding their phone; walking/running, biking, driving, etc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Improved Android Location API&lt;/strong&gt; – Google made the location API much simpler to use as far as using all of the devices censors to really give you the best location indoors and outdoors all while conserving the users battery.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New Chrome Developer Tools&lt;/strong&gt; – New developer tools in Chrome that allow the developer to increase not only their efficiency in writing web applications but also provides tools for a developer to easily improve performance of their web applications.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are just a few of the highlights to show what Google is doing to help the developer which in-turn will help the end user.&lt;/p&gt;

&lt;p&gt;I plan on digging deeper into a number of the topics covered at IO in subsequent blog posts.&amp;nbsp; There were a number of sessions that I was not able to attend due to conflicts and am planning on catching up in the next few days with those sessions I missed on YouTube.&lt;/p&gt;

&lt;p&gt;Were you able to attend Google I/O or watch the keynotes or sessions?&amp;nbsp; If so, what were your thoughts? &lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=zWAvjK8Fcy0:iVoQSc39O98:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=zWAvjK8Fcy0:iVoQSc39O98:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=zWAvjK8Fcy0:iVoQSc39O98:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=zWAvjK8Fcy0:iVoQSc39O98:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?i=zWAvjK8Fcy0:iVoQSc39O98:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sunblog/~4/zWAvjK8Fcy0" height="1" width="1"/&gt;</description>
      <dc:subject><![CDATA[Google, Internet, IT, Mobile, Software Development, Technology, Google I/O,]]></dc:subject>
      <dc:date>2013-05-18T18:23:59+00:00</dc:date>
      <guid isPermaLink="false">http://www.sundoginteractive.com/sunblog/posts/google-i-o-initial-thoughts-recap</guid>
    <feedburner:origLink>http://www.sundoginteractive.com/sunblog/posts/google-i-o-initial-thoughts-recap</feedburner:origLink></item>

    <item>
      <title><![CDATA[Estimating a Software Development Project]]></title>
      <link>http://feedproxy.google.com/~r/Sunblog/~3/baVaf2bJ0Nk/estimating-a-software-development-project</link>
      <author>terry.luschen@sundoginteractive.com (Terry Luschen)</author>
      <description>&lt;p&gt;Situation 1: The client says &amp;#8216;I would like a web site.&amp;nbsp; How much is it going to cost?&amp;#8217;&lt;br /&gt;
Situation 2: The client says &amp;#8216;I would like my opportunities in Salesforce synced with my back-end billing system.&amp;nbsp;  How much is it going to cost?&amp;#8217;&lt;br /&gt;
Situation 3: The client says &amp;#8216;I would like some validations on the data when I save my page.&amp;nbsp; How much is it going to cost?&amp;#8217;&lt;/p&gt;

&lt;p&gt;We have all been in the hot seat when these questions are asked, right?&amp;nbsp; If you guess too high the client may walk away.&amp;nbsp; If you guess too low your hourly rate over the course of the build may be too low to give your company an appropriate profit.&amp;nbsp; What are you going to do?&lt;/p&gt;

&lt;p&gt;With every use case or requirement that is put in front of you the question about cost will come up.&amp;nbsp; Sometimes it will come up within the first few sentences of a conversation.&amp;nbsp; The business person who is asking the question may have a very specific budget in mind and does not want to waste his/her time if the estimate is not in the ballpark.&amp;nbsp; He/she may want that estimate as soon as possible so that the project can be put on the back-burner or another vendor can be brought in to bid if the numbers are not right.&lt;/p&gt;

&lt;p&gt;What is really being asked at this point when the question of cost comes up?&amp;nbsp; From the business side, the business person is always thinking in terms of Return On Investment or ROI.&amp;nbsp; The thinking of the business owner is, &amp;#8220;If I pay $100,000 to do this project, will I get $100,000 back by positive responses such as selling new products or improving back-end processes?&amp;#8221; The business owner doesn&amp;#8217;t really care if it takes the developer X amount of hours to get the project done.&amp;nbsp; The business owner doesn&amp;#8217;t care if it takes a scrum team or waterfall process or 1 project manager or 2 project managers to get the job done.&amp;nbsp; The business owner just needs to make sure that enough functionality gets built at an acceptable cost so that the ROI is appropriate.&amp;nbsp; So the business owner is really saying:&amp;nbsp; &amp;#8220;Can I get this set of features which will give me enough ROI for this amount of money?&amp;#8221;&lt;/p&gt;

&lt;p&gt;Now that we have a sense of what the business owner wants, let&amp;#8217;s take a look at this from the developer&amp;#8217;s side, which is the side of the table I am always sitting on.&amp;nbsp;  First of all, there are three main time periods that I see in the estimation process.&lt;/p&gt;

&lt;p&gt;1) This is the estimate given in that first sales meeting and is sometimes called a &lt;a href="http://project-management-knowledge.com/definitions/s/swag/"&gt;SWAG&lt;/a&gt;.&amp;nbsp; All parties know that this is a guesstimate at the cost and that there should be a large range involved.&amp;nbsp;  This range in the estimate can be as much as doubling the bottom end to get your top end, like $100,000 to $200,000.&lt;/p&gt;

&lt;p&gt;2) High-level discovery estimate.&amp;nbsp; This is the estimate after meeting with the client multiple times and the various key architects in the project have learned about the desired high-level functionality of the resulting software.&amp;nbsp; Hopefully, at this point, the range of the estimate is smaller than the original SWAG.&amp;nbsp;  This should be the case because the &lt;a href="http://www.construx.com/Thought_Leadership/Books/The_Cone_of_Uncertainty/"&gt;Cone of Uncertainty&lt;/a&gt; should be narrower at this point than at the start of the project.&amp;nbsp; Maybe now the top number is only half as much more than the bottom number, so we could end up with a $100,000 to $150,000 range.&amp;nbsp; A way to give a better number than simply a range is to use the &lt;a href="http://project-management-knowledge.com/definitions/t/three-point-estimates/"&gt;Three Points Estimate&lt;/a&gt; option.&lt;/p&gt;

&lt;p&gt;3) If the client is still comfortable with the high-level discovery estimates, then it will come time to do a complete set of user stories, requirements or use cases depending on the development methodology that could be used.&amp;nbsp; I would suggest only doing user stories at this point instead of detailed requirements or use cases because if the projected cost of the project will not earn an appropriate ROI, spending that level of effort to do detailed requirements isn&amp;#8217;t necessary.&amp;nbsp;  After doing this step for each feature in the proposed system you should have an estimated time frame and the priority of each feature.&amp;nbsp;  When those time frames are multiplied out, you should be coming up with a projected burn down chart. Since you will know the number of developers times the length of the project times the amount being charged per hour you will be able to come up with your first detailed estimate. The estimate will become even more clear after the first couple of sprints as you will see evidence of how many story points are being completed in each sprint.&amp;nbsp; If you don&amp;#8217;t happen to do user stories, then some simple multiplying of the number of pages or features by an average amount of time can provide an estimate.&amp;nbsp; So, for a Salesforce web site project that includes 15 web pages, you would need to create 15 Visualforce Pages, 15 Controllers and 15 Test Classes.&amp;nbsp; Multiply those by an average amount of time and you will arrive at an estimate.&lt;/p&gt;

&lt;p&gt;Now that we have our estimate, it will come down to how the contract is going to be written between the business and the developer.&amp;nbsp; Here is the blog post that I wrote earlier about &lt;a href="http://www.sundoginteractive.com/sunblog/posts/fixed-bid-vs.-time-and-materials-pros-and-cons"&gt;Fixed Bid vs. Time and Materials - Pros and Cons&lt;/a&gt;.&amp;nbsp; As I wrote, the main benefit to using fixed bids for the business owner is that he/she knows the features that should be working when the developer is paid.&amp;nbsp; On the developer side there can be a comfort in a fixed bid because it can be easier to plan for that whole project cycle and the money will be paid as long as the features are delivered.&amp;nbsp;  However there is risk on both sides in this approach.&amp;nbsp;  On the business side, it may take the developer significantly less time to develop the needed features so the business may end up overpaying for those features.&amp;nbsp;  On the developer side the risk is that it may take much longer to implement the desired features and then the profit from the project will not be good enough to keep his/her business going as a developer.&lt;/p&gt;

&lt;p&gt;The approach I always suggest is to use an &lt;a href="http://agilemethodology.org/"&gt;Agile&lt;/a&gt; one where the agreement between the business and the developer is on a per sprint basis.&amp;nbsp;  The business agrees to pay the developers for that sprint.&amp;nbsp;  At the end of each sprint the deliverables are reviewed and the business can decide if they are happy with the process or not.&amp;nbsp; At any point in the series of sprints the business can say that enough features have been implemented to achieve the ROI that is desired.&amp;nbsp; Also along the way, since features are re-prioritized with every sprint, the business can keep adjusting to market conditions and the exact desired features for the maximum ROI.&amp;nbsp; &lt;/p&gt;

&lt;p&gt;I have been trying to figure out a way to marry the concept of a fixed bid with fixed time estimates and the Agile methodology, but it is hard to do.&amp;nbsp; I still think the Agile and Scrum structures should be used within the actual project, but there will need to be much more architecture and requirements built up-front in order to minimize the risk for both the business and the developer.&amp;nbsp; In the long run this makes the project more expensive and less flexible, but maybe that is an appropriate trade-off for the risks involved.&amp;nbsp; In any case, for the success of the project, we need to allow the business to swap in similar sized pieces of functionality as priorities change during the life of a project. This keeps the agile/scrum process in play and should not change the contract as long as both sides agree to the new priorities and that the project is of the same size.&amp;nbsp;  Remember, with fixed bids the issue of scope creep becomes very apparent to the developers as a set of features was already defined in the contract.&lt;/p&gt;

&lt;p&gt;How do you see small, medium and large companies working through these estimating steps?&amp;nbsp; I&amp;#8217;d love to hear your ideas.&amp;nbsp; We want to make our business owners happy with their ROI and we want our developers to get some sleep too!&amp;nbsp;  Let&amp;#8217;s help everybody around the table to get on the same page.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=baVaf2bJ0Nk:abzy3Ux9xy8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=baVaf2bJ0Nk:abzy3Ux9xy8:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=baVaf2bJ0Nk:abzy3Ux9xy8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=baVaf2bJ0Nk:abzy3Ux9xy8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?i=baVaf2bJ0Nk:abzy3Ux9xy8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sunblog/~4/baVaf2bJ0Nk" height="1" width="1"/&gt;</description>
      <dc:subject><![CDATA[Cloud, Salesforce, Software Development, Software Maintenance,]]></dc:subject>
      <dc:date>2013-05-18T11:38:49+00:00</dc:date>
      <guid isPermaLink="false">http://www.sundoginteractive.com/sunblog/posts/estimating-a-software-development-project</guid>
    <feedburner:origLink>http://www.sundoginteractive.com/sunblog/posts/estimating-a-software-development-project</feedburner:origLink></item>

    <item>
      <title><![CDATA[Managing Risk in a Company through Social Media]]></title>
      <link>http://feedproxy.google.com/~r/Sunblog/~3/H2ZSOVFLM94/managing-risk-in-a-company-through-social-media</link>
      <author>alyssa.greve@sundoginteractive.com (Alyssa Greve)</author>
      <description>&lt;p&gt;Risk Management is something many companies are exploring today with the ever-changing brand touch points. All mediums from TV, print ads and online ads have risk associated with them and with the growth of social media, risk has become even a larger conversation in corporate offices.&amp;nbsp; One negative comment online can potentially harm the brand. Ultimately, no matter the touch point, it’s important to have a plan in place to reduce risk. It&amp;#8217;s important to keep in mind, companies must be positioned internally to act rapidly and capitalize on the opportunities while managing risks, which can be a balancing act.&lt;/p&gt;

&lt;p&gt;One of the main ways to help reduce risk is managing each one of your brand’s touch points. A brand touch point is where any one of your potential customers, current customers or previous customers, can get a connection with the brand. A company should use these touch points effectively and appropriately while maintaining a consistent tone, feel and voice to each one. This is more than just identifying a strategy but also having the right talent in place to mange these touch points which will contribute to each user experience within those specific channels. In social media, we see additional ways to manage risk through positive customer advocates who can be one of the strongest and most powerful forms on risk management.&lt;/p&gt;

&lt;p&gt;Another way to manage risk is having a Social Media Policy or Online Policy in place for your company. This is a list of guidelines that shares with employees what is expected and shared around the company. One of the most common mistakes I see companies make is not supporting their employees to share about their brand online. A company&amp;#8217;s employees can be some of the best positive advocates. As a company, it’s important to communicate the message to your customers about your products and services and deliver them through the behaviors of your employees. These are the people who represent the brand with each move.&lt;/p&gt;

&lt;p&gt;It’s also important to work within your organization and other departments, such as legal, customer service and safety. It’s best to educate each of these employees within the department to understand the nature of each medium.&amp;nbsp; The internal workflow of an organization will help streamline efforts exposed through social media. Many times, internal workflow can be one of the most time consuming efforts involved in social media strategy and planning.&lt;/p&gt;

&lt;p&gt;I also recommend using a listening tool to monitor conversations about the company&amp;#8217;s brand, industry and competition. This way, companies can prepare and capture conversations that may associate with risk to the brand. These types of tools can also help surface insights to adjust overall strategy and potential leads for the company, which a company may has missed before. &lt;/p&gt;

&lt;p&gt;It’s important to be aware of all the options within each channel and how to use each brand touch point most effectively. As there are negative and risky behaviors to all touch points, it is key to have a plan in place and know how to manage them. When this is done well, the potential for risk will be lowered. If you potentially don’t manage your touch points and have the right people in place to manage them, here is a&lt;a href="http://www.buzzfeed.com/ryanhatesthis/this-is-the-most-epic-brand-meltdown-on-facebook-ever"&gt; little sample&lt;/a&gt; of something that could go wrong.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=H2ZSOVFLM94:hekcp47k120:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=H2ZSOVFLM94:hekcp47k120:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=H2ZSOVFLM94:hekcp47k120:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=H2ZSOVFLM94:hekcp47k120:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?i=H2ZSOVFLM94:hekcp47k120:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sunblog/~4/H2ZSOVFLM94" height="1" width="1"/&gt;</description>
      <dc:subject><![CDATA[Social Media, Viral Marketing,]]></dc:subject>
      <dc:date>2013-05-16T18:01:16+00:00</dc:date>
      <guid isPermaLink="false">http://www.sundoginteractive.com/sunblog/posts/managing-risk-in-a-company-through-social-media</guid>
    <feedburner:origLink>http://www.sundoginteractive.com/sunblog/posts/managing-risk-in-a-company-through-social-media</feedburner:origLink></item>

    <item>
      <title><![CDATA[Google I/O - Rumors/Expectations]]></title>
      <link>http://feedproxy.google.com/~r/Sunblog/~3/KHSV7Z4WwfI/google-i-o-rumors-expectations</link>
      <author>saurabh.tyagi@sundoginteractive.com (Saurabh Tyagi)</author>
      <description>&lt;center&gt;&lt;img src="http://www.sundoginteractive.com/images/uploads/channel_images/googleio20131.png" alt="" height="279" width="499"  /&gt;&lt;/center&gt;

&lt;p&gt;Like any other Google fanboy, I am looking forward to Google I/O this year, which starts on May 15. &lt;br /&gt;
Since I follow tons of tech news websites, I constantly am flooded with rumors of what people are expecting at Google I/O. So, I decided to combine all the rumors and expectations in one place.&lt;/p&gt;

&lt;p&gt;So, here we go&amp;#8230;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nexus 7&lt;/strong&gt;&lt;br /&gt;
People are expecting a new Nexus 7 tablet this year with upgraded specs, but probably at the same price. Rumors are that it will sport a 1920x1200 resolution, 5-megapixel rear camera, faster Qualcomm processor and wireless charging.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Google Play Games&lt;/strong&gt;&lt;br /&gt;
This is new! I just heard that Google has been working on Play Games for some time and might launch it this summer. It supposedly includes multiplayer support, in-game chat, leaderboards, lobbies and achievements. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Google Babel/Hangout&lt;/strong&gt;&lt;br /&gt;
This is one of the features that I desperately want and have been wanting for quite a long time, since I use GTalk, Google Voice and Google+. It would be nice to see all these services combined into one app. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Android 5.0&lt;/strong&gt;&lt;br /&gt;
Another thing that I am excited about! It&amp;#8217;s been quite some time since Google came out with a new OS (well, not &lt;strong&gt;really&lt;/strong&gt; long time) and I am hoping to get my hands on this shiny new OS soon!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Google Glass&lt;/strong&gt;&lt;br /&gt;
Google previewed a developer version of Glass last year. Hopefully, they will make it open for public this year.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nexus 4, 5 and Motorola Phone&lt;/strong&gt;&lt;br /&gt;
Nearly every Google fanboy heard of Google buying out Motorola last year. But what about a Google-Motorola phone? When are they coming out with one? Hopefully this I/O?&lt;/p&gt;

&lt;p&gt;We will just have to wait and see what gets launched and what remains a rumor. Only 2 days left. Be excited.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=KHSV7Z4WwfI:5bmwFS7iCCI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=KHSV7Z4WwfI:5bmwFS7iCCI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=KHSV7Z4WwfI:5bmwFS7iCCI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=KHSV7Z4WwfI:5bmwFS7iCCI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?i=KHSV7Z4WwfI:5bmwFS7iCCI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sunblog/~4/KHSV7Z4WwfI" height="1" width="1"/&gt;</description>
      <dc:subject><![CDATA[Google, Technology, Google I/O,]]></dc:subject>
      <dc:date>2013-05-13T19:17:23+00:00</dc:date>
      <guid isPermaLink="false">http://www.sundoginteractive.com/sunblog/posts/google-i-o-rumors-expectations</guid>
    <feedburner:origLink>http://www.sundoginteractive.com/sunblog/posts/google-i-o-rumors-expectations</feedburner:origLink></item>

    <item>
      <title><![CDATA[HELP! All I see is a black background in my email!]]></title>
      <link>http://feedproxy.google.com/~r/Sunblog/~3/qkZRotmrVCc/help-all-i-see-is-a-black-background-in-my-email</link>
      <author>susanna.oliver@sundoginteractive.com (Susanna Oliver)</author>
      <description>&lt;p&gt;Seeing the unexpected is something email developers get used to. But when you coded a soft blue background and instead are faced with a glaring black background in Outlook, you might be a little alarmed at this unusual interpretation!&lt;/p&gt;

&lt;p&gt;This problem occurs only in Outlook and Lotus Notes because of a bug that mis-interprets the three-digit hexadecimal shorthand color codes on &lt;em&gt;&amp;lt;table&amp;gt;&lt;/em&gt; and &lt;em&gt;&amp;lt;td&amp;gt;&lt;/em&gt; tags.&lt;/p&gt;

&lt;p&gt;Despite the blue and gray hexadecimal colors here, this will show a black background in Lotus Notes and most versions of Outlook:&lt;/p&gt;&lt;div class="codeBlock"&gt;
&lt;p&gt;&amp;lt;table bgcolor=&amp;#8221;#ccf&amp;#8221;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;td bgcolor=&amp;#8221;#eee&amp;#8221;&amp;gt;This is trouble!&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;
The solution is as easy as adding three more digits to the hexadecimal code to make it the complete six digits as follows:&lt;/p&gt;&lt;div class="codeBlock"&gt;
&lt;p&gt;&amp;lt;table bgcolor=&amp;#8221;#ccccff&amp;#8221;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;td bgcolor=&amp;#8221;#eeeeee&amp;#8221;&amp;gt;This is the solution!&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;
Those three digits make the difference between a black background and a pretty blue one. If you weren’t feeling blue before you saw the black background, you probably were after you saw it. But fortunately, there’s an easy solution and count on &lt;em&gt;Sun&lt;/em&gt;dog to bring a little silver lining into your email Outlook. Pun intended.&lt;/p&gt;

&lt;p&gt;Litmus has a &lt;a href="http://litmus.com/blog/background-colors-html-email" target="_blank"&gt;great article on email backgrounds&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=qkZRotmrVCc:Yw7vcLivYxw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=qkZRotmrVCc:Yw7vcLivYxw:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=qkZRotmrVCc:Yw7vcLivYxw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=qkZRotmrVCc:Yw7vcLivYxw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?i=qkZRotmrVCc:Yw7vcLivYxw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sunblog/~4/qkZRotmrVCc" height="1" width="1"/&gt;</description>
      <dc:subject><![CDATA[Email, Mobile, Web Development,]]></dc:subject>
      <dc:date>2013-05-07T17:00:23+00:00</dc:date>
      <guid isPermaLink="false">http://www.sundoginteractive.com/sunblog/posts/help-all-i-see-is-a-black-background-in-my-email</guid>
    <feedburner:origLink>http://www.sundoginteractive.com/sunblog/posts/help-all-i-see-is-a-black-background-in-my-email</feedburner:origLink></item>

    <item>
      <title><![CDATA[Salesforce - How to create onItemClickListener for List Adapter]]></title>
      <link>http://feedproxy.google.com/~r/Sunblog/~3/0v75k32AghQ/salesforce-how-to-create-onitemclicklistener-for-list-adapter</link>
      <author>saurabh.tyagi@sundoginteractive.com (Saurabh Tyagi)</author>
      <description>&lt;div style="width:100%; text-align:center;"&gt;&lt;img src="http://www.sundoginteractive.com/images/uploads/channel_images/logo-salesforce.png" align="center" alt="" height="150"  /&gt;&lt;/div&gt;

&lt;p&gt;As a beginner in Salesforce Mobile App development, I am learning new stuff everyday. Recently I had a situation where I wanted to attach onItemClickListener to items in my list that were fetched dynamically from Salesforce.&lt;br /&gt;
I tried to look for a solution on Google, but 5 pages in I still couldn&amp;#8217;t find the solution.&lt;/p&gt;

&lt;p&gt;Finally, I found what I was looking for &lt;a href="http://android-helper.blogspot.com/2011/04/android-listview-onclick-ample.html"&gt;on a blog.&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;But it still wasn&amp;#8217;t exactly what I wanted. Since I didn&amp;#8217;t have much knowledge about ListView or List Adapters at that time, it took me a little while to make it fit to what I was looking for. So, I decided to write this blog to help out anyone who is in the same situation as I was.&lt;br /&gt;
I assume you have a little knowledge about Salesforce REST API and little Android development knowledge.&lt;/p&gt;

&lt;p&gt;Here&amp;#8217;s a code snippet:&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
&lt;strong style="color:red;"&gt;private&lt;/strong&gt; RestClient &lt;span style="color:blue;"&gt;client&lt;span&gt;;&lt;br /&gt;
&lt;strong style="color:red;"&gt;private&lt;/strong&gt; ArrayAdapter &lt;span style="color:blue;"&gt;listAdapter&lt;/span&gt;;&lt;br /&gt;
&lt;strong style="color:red;"&gt;private&lt;/strong&gt; ListView &lt;span style="color:blue;"&gt;timeList&lt;/span&gt;;&lt;/p&gt;

&lt;p&gt;// onCreate method&lt;/p&gt;

&lt;p&gt;&lt;i&gt;@Override &lt;/i&gt;&lt;br /&gt;
	&lt;strong style="color:red;"&gt;public&lt;/strong&gt; void onResume() &amp;#123;&lt;br /&gt;
		findViewById(R.&lt;span style="color:blue;"&gt;id.root&lt;/span&gt;).setVisibility(View.&lt;span style="color:blue;"&gt;INVISIBLE&lt;/span&gt;);&lt;/p&gt;

&lt;p&gt;		&lt;i&gt;// Create list adapter&lt;/i&gt;&lt;br /&gt;
		&lt;span style="color:blue;"&gt;listAdapter&lt;/span&gt; = new ArrayAdapter&lt;/p&gt;&lt;String&gt;(this, android.R.layout.&lt;span style="color:blue;"&gt;simple_list_item_1&lt;/span&gt;, new ArrayList&lt;String&gt;&lt;p&gt;());&lt;br /&gt;
		&lt;br /&gt;
		&lt;span style="color:blue;"&gt;timeList&lt;/span&gt; = (ListView) findViewById(R.id.&lt;span style="color:blue;"&gt;contacts_list&lt;/span&gt;);&lt;br /&gt;
		&lt;span style="color:blue;"&gt;timeList&lt;/span&gt;.setAdapter(&lt;span style="color:blue;"&gt;listAdapter&lt;/span&gt;);	&lt;br /&gt;
		&lt;span style="color:blue;"&gt;timeList&lt;/span&gt;.setTextFilterEnabled(true);&lt;br /&gt;
		&lt;br /&gt;
		&lt;strong style="color:red;"&gt;super&lt;/strong&gt;.onResume();&lt;br /&gt;
	&amp;#125;&lt;/p&gt;

&lt;p&gt;&lt;i&gt;@Override&lt;/i&gt;&lt;br /&gt;
	&lt;strong style="color:red;"&gt;public&lt;/strong&gt; void onResume(RestClient client) &amp;#123;&lt;br /&gt;
&amp;nbsp;  &amp;nbsp;  &amp;nbsp; &lt;i&gt;// Keeping reference to rest client&lt;/i&gt;&lt;br /&gt;
&amp;nbsp;  &amp;nbsp;  &amp;nbsp; this.&lt;span style="color:blue;"&gt;client&lt;/span&gt; = client; &lt;br /&gt;
		&lt;i&gt;// Show everything&lt;/i&gt;&lt;br /&gt;
		findViewById(R.id.&lt;span style="color:blue;"&gt;root&lt;/span&gt;).setVisibility(View.&lt;span style="color:blue;"&gt;VISIBLE&lt;/span&gt;);&lt;br /&gt;
		try &amp;#123;&lt;br /&gt;
			sendRequest(&lt;span style="color:blue;"&gt;&amp;#8220;SELECT Name, Date__c, FROM MyObject__c WHERE User__c=&amp;#8216;00111222a333444&amp;#8217; ORDER BY Date__c ASC&amp;#8221;&lt;/span&gt;);&lt;br /&gt;
		&amp;#125; catch (UnsupportedEncodingException e) &amp;#123;&lt;br /&gt;
			&lt;br /&gt;
			e.printStackTrace();&lt;br /&gt;
		&amp;#125;&lt;br /&gt;
	&amp;#125;&lt;/p&gt;

&lt;p&gt;&lt;strong style="color:red;"&gt;private&lt;/strong&gt; void sendRequest(String soql) throws UnsupportedEncodingException &amp;#123;&lt;br /&gt;
		RestRequest restRequest = RestRequest.getRequestForQuery(getString(R.string.api_version), soql);&lt;/p&gt;

&lt;p&gt;		&lt;span style="color:blue;"&gt;client&lt;/span&gt;.sendAsync(restRequest, new AsyncRequestCallback() &amp;#123;&lt;br /&gt;
			&lt;i&gt;@Override&lt;/i&gt;&lt;br /&gt;
			&lt;strong style="color:red;"&gt;public&lt;/strong&gt; void onSuccess(RestRequest request, RestResponse result) &amp;#123;&lt;br /&gt;
				try &amp;#123;&lt;br /&gt;
					listAdapter.clear();&lt;br /&gt;
					JSONArray records = result.asJSONObject().getJSONArray(&lt;span style="color:blue;"&gt;&amp;#8220;records&amp;#8221;&lt;/span&gt;);&lt;br /&gt;
					for (int i = 0; i&lt;/p&gt;&lt;p&gt;&lt; records.length(); i++) &amp;#123;&lt;br /&gt;
						String oldDate = records.getJSONObject(i).getString(&lt;span style="color:blue;"&gt;&lt;/p&gt;&lt;p&gt;&amp;#8220;Date__c&amp;#8221;&lt;/span&gt;);&lt;br /&gt;
						String[] formatDate = oldDate.split(&amp;#8221;-&amp;#8221;);&lt;br /&gt;
						String formatMonth = null;&lt;br /&gt;
						&lt;br /&gt;
						if(formatDate[1].contains(&amp;#8220;01&amp;#8221;)) formatMonth = &amp;#8220;January&amp;#8221;;&lt;br /&gt;
						else if(formatDate[1].contains(&amp;#8220;02&amp;#8221;)) formatMonth = &amp;#8220;February&amp;#8221;;&lt;br /&gt;
						else if(formatDate[1].contains(&amp;#8220;03&amp;#8221;)) formatMonth = &amp;#8220;March&amp;#8221;;&lt;br /&gt;
						else if(formatDate[1].contains(&amp;#8220;04&amp;#8221;)) formatMonth = &amp;#8220;April&amp;#8221;;&lt;br /&gt;
						else if(formatDate[1].contains(&amp;#8220;05&amp;#8221;)) formatMonth = &amp;#8220;May&amp;#8221;;&lt;br /&gt;
						else if(formatDate[1].contains(&amp;#8220;06&amp;#8221;)) formatMonth = &amp;#8220;June&amp;#8221;;&lt;br /&gt;
						else if(formatDate[1].contains(&amp;#8220;07&amp;#8221;)) formatMonth = &amp;#8220;July&amp;#8221;;&lt;br /&gt;
						else if(formatDate[1].contains(&amp;#8220;08&amp;#8221;)) formatMonth = &amp;#8220;August&amp;#8221;;&lt;br /&gt;
						else if(formatDate[1].contains(&amp;#8220;09&amp;#8221;)) formatMonth = &amp;#8220;September&amp;#8221;;&lt;br /&gt;
						else if(formatDate[1].contains(&amp;#8220;10&amp;#8221;)) formatMonth = &amp;#8220;October&amp;#8221;;&lt;br /&gt;
						else if(formatDate[1].contains(&amp;#8220;11&amp;#8221;)) formatMonth = &amp;#8220;November&amp;#8221;;&lt;br /&gt;
						else if(formatDate[1].contains(&amp;#8220;12&amp;#8221;)) formatMonth = &amp;#8220;December&amp;#8221;;&lt;br /&gt;
						else formatMonth = &amp;#8220;None&amp;#8221;;&lt;br /&gt;
						&lt;br /&gt;
						String formattedDate = formatMonth + &amp;#8221; &amp;#8221; + formatDate[2] + &amp;#8220;, &amp;#8221; + formatDate[0];&lt;br /&gt;
						&lt;span style="color:blue;"&gt;listAdapter&lt;/span&gt;.add(formattedDate);&lt;br /&gt;
						&lt;br /&gt;
						&lt;span style="color:blue;"&gt;timeList&lt;/span&gt;.setOnItemClickListener(new OnItemClickListener() &amp;#123;&lt;br /&gt;
							&lt;br /&gt;
							&lt;i&gt;@Override&lt;/i&gt;&lt;br /&gt;
							&lt;strong style="color:red;"&gt;public&lt;/strong&gt; void onItemClick(AdapterView&amp;lt;?&amp;gt; arg0,&lt;br /&gt;
									View v, int position, long id) &amp;#123;&lt;br /&gt;
								AlertDialog.Builder adb = new AlertDialog.Builder(&lt;br /&gt;
										MainActivity.this);&lt;br /&gt;
										adb.setTitle(&lt;span style="color:blue;"&gt;&amp;#8220;ListView OnClick&amp;#8221;&lt;/span&gt;);&lt;br /&gt;
										adb.setMessage(&lt;span style="color:blue;"&gt;&amp;#8220;Selected Item is = &amp;#8220;&lt;/span&gt;&lt;br /&gt;
										+ &lt;span style="color:blue;"&gt;timeList&lt;/span&gt;.getItemAtPosition(position));&lt;br /&gt;
										adb.setPositiveButton(&lt;span style="color:blue;"&gt;&amp;#8220;Ok&amp;#8221;&lt;/span&gt;, null);&lt;br /&gt;
										adb.show();&lt;br /&gt;
								&lt;br /&gt;
							&amp;#125;&lt;br /&gt;
						&amp;#125;);&lt;br /&gt;
						&lt;br /&gt;
					&amp;#125;					&lt;br /&gt;
				&amp;#125; catch (Exception e) &amp;#123;&lt;br /&gt;
					onError(e);&lt;br /&gt;
				&amp;#125;&lt;br /&gt;
			&amp;#125;&lt;br /&gt;
			&lt;br /&gt;
			&lt;i&gt;@Override&lt;/i&gt;&lt;br /&gt;
			&lt;strong style="color:red;"&gt;public&lt;/strong&gt; void onError(Exception exception) &amp;#123;&lt;br /&gt;
&amp;nbsp;  &amp;nbsp;  &amp;nbsp;  &amp;nbsp;  &amp;nbsp;   Toast.makeText(MainActivity.this,&lt;br /&gt;
&amp;nbsp;  &amp;nbsp;  &amp;nbsp;  &amp;nbsp;  &amp;nbsp;  &amp;nbsp;  &amp;nbsp;  &amp;nbsp;  &amp;nbsp;  &amp;nbsp;   MainActivity.this.getString(ForceApp.&lt;span style="color:blue;"&gt;APP&lt;/span&gt;.getSalesforceR().stringGenericError(), exception.toString()),&lt;br /&gt;
&amp;nbsp;  &amp;nbsp;  &amp;nbsp;  &amp;nbsp;  &amp;nbsp;  &amp;nbsp;  &amp;nbsp;  &amp;nbsp;  &amp;nbsp;  &amp;nbsp;   Toast.&lt;span style="color:blue;"&gt;LENGTH_LONG&lt;/span&gt;).show();&lt;br /&gt;
			&amp;#125;&lt;br /&gt;
		&amp;#125;);&lt;br /&gt;
	&amp;#125;&lt;/p&gt;



&lt;p&gt;&lt;i&gt;Source:&lt;/i&gt; &lt;a href="http://android-helper.blogspot.com/2011/04/android-listview-onclick-ample.html"&gt;Android Helper Blog&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I hope this helps anyone who is looking for a similar thing. Let me know if you have any questions.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=0v75k32AghQ:Qt2oGKVxVjA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=0v75k32AghQ:Qt2oGKVxVjA:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=0v75k32AghQ:Qt2oGKVxVjA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=0v75k32AghQ:Qt2oGKVxVjA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?i=0v75k32AghQ:Qt2oGKVxVjA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sunblog/~4/0v75k32AghQ" height="1" width="1"/&gt;</description>
      <dc:subject><![CDATA[IT, Mobile, Salesforce, Software Development, Web Development,]]></dc:subject>
      <dc:date>2013-05-06T15:20:43+00:00</dc:date>
      <guid isPermaLink="false">http://www.sundoginteractive.com/sunblog/posts/salesforce-how-to-create-onitemclicklistener-for-list-adapter</guid>
    <feedburner:origLink>http://www.sundoginteractive.com/sunblog/posts/salesforce-how-to-create-onitemclicklistener-for-list-adapter</feedburner:origLink></item>

    <item>
      <title><![CDATA[Five Points to Remember when Sending Emails with Salesforce]]></title>
      <link>http://feedproxy.google.com/~r/Sunblog/~3/njaGOEay3v8/five-points-to-remember-when-sending-emails-with-salesforce</link>
      <author>terry.luschen@sundoginteractive.com (Terry Luschen)</author>
      <description>&lt;p&gt;Email is so important for many of today&amp;#8217;s business processes and marketing concepts. These emails can easily be sent with Salesforce, but it is important to keep in mind the best ways to use emails within Salesforce.&amp;nbsp;  Here are five points that I try to keep in mind when laying out a solution to a set of email requirements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1) Remember your Limits&lt;/strong&gt;&lt;br /&gt;
Salesforce has different limits depending on how the emails are sent.&lt;br /&gt;
A) If emails are sent via APEX you can only send 10 sendEmail methods in one transaction.&amp;nbsp; These APEX emails are usually sent from behind a Visualforce page or from a trigger.&amp;nbsp; &lt;a href="http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_gov_limits.htm"&gt;APEX Governor Limits&lt;/a&gt; &lt;br /&gt;
B) Of these emails sent via APEX there is a limit of 1000 single emails and 1000 mass emails per day to external addresses.&amp;nbsp; &lt;a href="http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_gov_limits.htm"&gt;APEX Governor Limits&lt;/a&gt;&lt;br /&gt;
C) If emails are sent via Workflow rules, then there is a limit of 1000 emails per day per Standard Salesforce license.&amp;nbsp; So if you have 10 Salesforce licenses you can send out 10,000 emails in one day.&amp;nbsp; &lt;a href="https://na4.salesforce.com/help/doc/en/workflow_email_limits.htm"&gt;Workflow Email Limits&lt;/a&gt;&lt;br /&gt;
D) You can send an unlimited number of emails to your internal users.&amp;nbsp; &lt;a href="http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_gov_limits.htm"&gt;APEX Governor Limits&lt;/a&gt;.&amp;nbsp; This is very important to note.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2) List out your Email Options within Salesforce&lt;/strong&gt;&lt;br /&gt;
Within Salesforce there are so many ways to send our emails.&lt;br /&gt;
A) Emails can be sent out with Workflow rules.&lt;br /&gt;
B) Emails can be sent out through the Single or Mass email methods in APEX.&lt;br /&gt;
C) Emails can be sent out by users.&amp;nbsp; Click on the Contacts or Leads tab in in the &amp;#8216;Tools&amp;#8217; section. In the bottom right corner there is a &amp;#8216;Mass Email&amp;#8217; option.&lt;br /&gt;
D) Emails can be sent by integrating with 3rd party providers.&amp;nbsp; See #5 below.&lt;br /&gt;
E) On certain HTML emails Salesforce can track the date it was first opened, the number of times it was opened, and the date it was most recently opened.&amp;nbsp; Make sure you add the HTML Email Status related list to your contact, lead and/or person-account page layouts before sending out your HTML emails.&amp;nbsp;  Here is &lt;a href="https://na9.salesforce.com/help/doc/en/email_track.htm"&gt;that documentation.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3) Read up on all that has been written about Emails with Salesforce.&lt;/strong&gt;&lt;br /&gt;
Email functionality is so integral to getting processes accomplished that there is a lot written up about how to manage them.&amp;nbsp; Doing a simple Google search and reading some detailed blogs like &lt;a href="http://tconsulting.wordpress.com/2010/09/10/what-is-the-best-way-to-mass-email-with-salesforce-com/"&gt;this one&lt;/a&gt; will get you a head start on knowing what road to go down.&amp;nbsp; Also check out threads like this &lt;a href="http://boards.developerforce.com/t5/Apex-Code-Development/Send-Email-Using-Apex-Trigger/td-p/222557"&gt;one&lt;/a&gt; at the Force.com Discussion Boards.&amp;nbsp; There are a lot of great technical details out there to get you started.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4) Know that Salesforce is not a Mass Email tool&lt;/strong&gt;&lt;br /&gt;
Salesforce has email limits for a reason. It is not the tool of choice if you are building your requirements around large email marketing actions.&amp;nbsp; There are a lot of options to get a solid number of emails out of Salesforce, but it must be understood that at some point those limits will be reached.&amp;nbsp; If you are doing a one-day event then maybe you can get Salesforce to bump up your limits for one day, but for mass email requirements that are longer than a day other solutions will need to be researched.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5) What are some of these other options for 3rd party email integration with Salesforce?&lt;/strong&gt;&lt;br /&gt;
Here are some of the other email options that I have come across and I am sure there are many more.&amp;nbsp; &lt;br /&gt;
&lt;a href="http://www.marketo.com"&gt;Marketo&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.constantcontact.com"&gt;Constant Contact&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.exacttarget.com"&gt;Exact Target&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.campaignmonitor.com"&gt;Campaign Monitor&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.mailchimp.com"&gt;Mail Chimp&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.aweber.com"&gt;AWeber Communications&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://aws.amazon.com/ses/"&gt;Amazon Simple Email Service&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Which one you pick will all depend on what type of features you are looking for.&amp;nbsp; Example requirements would be:&amp;nbsp; What type of reporting do you need on your emails?&amp;nbsp; When it was opened?&amp;nbsp; If it was opened?&amp;nbsp; The last time it was opened?&amp;nbsp; How many times it was opened?&amp;nbsp; Are you worried about your emails ending up in the Spam folder?&amp;nbsp; Check out the features and pricing of each of the options listed above and I believe you will find one that will meet your requirements.&lt;/p&gt;

&lt;p&gt;Good luck with your emails!&amp;nbsp; Please comment if you have something to share about emails with Salesforce!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=njaGOEay3v8:em2l1GMcqNI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=njaGOEay3v8:em2l1GMcqNI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=njaGOEay3v8:em2l1GMcqNI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=njaGOEay3v8:em2l1GMcqNI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?i=njaGOEay3v8:em2l1GMcqNI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sunblog/~4/njaGOEay3v8" height="1" width="1"/&gt;</description>
      <dc:subject><![CDATA[Email, Salesforce, Software, Software Development, Software Maintenance,]]></dc:subject>
      <dc:date>2013-05-06T12:52:55+00:00</dc:date>
      <guid isPermaLink="false">http://www.sundoginteractive.com/sunblog/posts/five-points-to-remember-when-sending-emails-with-salesforce</guid>
    <feedburner:origLink>http://www.sundoginteractive.com/sunblog/posts/five-points-to-remember-when-sending-emails-with-salesforce</feedburner:origLink></item>

    <item>
      <title><![CDATA[Customize Link URLs with Responsive Email Design]]></title>
      <link>http://feedproxy.google.com/~r/Sunblog/~3/bpTt8NTy1LI/customize-link-urls-with-responsive-email-design</link>
      <author>susanna.oliver@sundoginteractive.com (Susanna Oliver)</author>
      <description>&lt;h3&gt;Problem&lt;/h3&gt;
&lt;p&gt;What would you do in this situation? You own Company X and you’re preparing to send out an email advertising your new mobile site. You want to highlight some of the mobile features that aren’t available on the full site. Keep in mind this is not a responsive site, but a separate m.companyx.com site. Your copy may read something like this: &lt;em&gt;Check out the new mobile site at &lt;span style="text-decoration:underline"&gt;m.companyx.com&lt;/span&gt; and start exploring our &lt;span style="text-decoration:underline"&gt;products&lt;/span&gt; and &lt;span style="text-decoration:underline"&gt;live updates&lt;/span&gt; on the go.&lt;/em&gt; All three links are mobile specific and would point the user to the mobile site regardless of what platform they accessed the email from. Do you send your desktop users to the mobile site that is obviously not optimized for a huge monitor display? At the same time, you don’t want to compromise your mobile audience that can take advantage of the mobile-specific links. What do you do? &lt;/p&gt;

&lt;p&gt;&lt;small&gt;NOTE: For the purpose of this example, assume that the pages on your mobile site do not necessarily map to a specific page on your desktop site and redirects are not an option.&lt;/small&gt;&lt;/p&gt;

&lt;h3&gt;Solution&lt;/h3&gt;
&lt;p&gt;Good news! You don’t have to choose one of the options. You can have both. Using a little responsive design CSS trickery, you can change the links in the email based on what platform the email is opened on. Or rather, you show and hide the two versions of the link depending on the screen size.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HTML and CSS for Desktop&lt;/strong&gt;&lt;/p&gt;&lt;div class="codeBlock"&gt;
&lt;p&gt;...and &amp;lt;a href=”desktop/news” class=”desktopLink”&amp;gt;live updates&amp;lt;/a&amp;gt; &amp;lt;a href=”mobile/live_updates/current” class=”mobileLink” style=”display:none; font-size:0px”&amp;gt;live updates&amp;lt;/a&amp;gt; on the go.&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;
By default, I’ve hidden the mobile link in two ways. The display:none hides the mobile link on most desktop and web email clients, but Gmail and some versions of Outlook ignore this property. Setting the font-size to zero satisfies these two clients so desktop users will be sent to the desktop site.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CSS for mobile&lt;/strong&gt;&lt;br /&gt;
Mobile uses the same HTML, but simply overrides the desktop styles to show the mobile link instead.&lt;/p&gt;

&lt;div class="codeBlock"&gt;
&lt;p&gt;@media only screen and (max-device-width: 500px) &amp;#123;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;a[class=mobileLink] &amp;#123;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;display: inline !important;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font-size: 24px !important;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;#125;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;a[class=desktopLink] &amp;#123;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;display: none !important;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;#125;&lt;br /&gt;
&amp;#125;&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;
Recipients that open the email on mobile (see &lt;a href="http://www.sundoginteractive.com/sunblog/posts/dont-forget-about-mobile-when-testing-emails" target="_blank"&gt;Dont&amp;#8217; Forget About Mobile When Testing Emails&lt;/a&gt; for mobile email market share) will be sent to the mobile site. Wherever this email is accessed, it will send the users to the right site. This is especially useful for deep links that may not have a specific redirect to span desktop and mobile but you want to make sure that users have access to a specific product no matter what. It’s a seamless transition for the user and doesn&amp;#8217;t require any thought on their part.&lt;/p&gt;

&lt;p&gt;This has been tested on Outlook 2000-2013, Hotmail, Yahoo! Mail, AOL Mail, Apple Mail, Lotus Notes, Android, iPhone, and Windows Phone and displays the correct link based on the platform.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=bpTt8NTy1LI:hD2j5um7Vgs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=bpTt8NTy1LI:hD2j5um7Vgs:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=bpTt8NTy1LI:hD2j5um7Vgs:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=bpTt8NTy1LI:hD2j5um7Vgs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?i=bpTt8NTy1LI:hD2j5um7Vgs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sunblog/~4/bpTt8NTy1LI" height="1" width="1"/&gt;</description>
      <dc:subject><![CDATA[Email, Mobile, Web Development,]]></dc:subject>
      <dc:date>2013-05-02T12:35:54+00:00</dc:date>
      <guid isPermaLink="false">http://www.sundoginteractive.com/sunblog/posts/customize-link-urls-with-responsive-email-design</guid>
    <feedburner:origLink>http://www.sundoginteractive.com/sunblog/posts/customize-link-urls-with-responsive-email-design</feedburner:origLink></item>

    <item>
      <title><![CDATA[Getting Logged-in userId in Salesforce Android SDK - Mobile App]]></title>
      <link>http://feedproxy.google.com/~r/Sunblog/~3/9jmZkYKJVrw/getting-logged-in-userid-in-salesforce-android-sdk-mobile-app</link>
      <author>craig.isakson@sundog.net (Craig Isakson)</author>
      <description>&lt;p&gt;If you are a developer who works with Salesforce, you are well aware that using the user Id of the currently logged in user is vital to a lot of custom development.&amp;nbsp; The same could be said for mobile applications that are built on the Salesforce platform.&amp;nbsp; I have already expressed myself over the lack of documentation for something that seems so important for both &lt;a href="http://www.sundoginteractive.com/sunblog/posts/ios-salesforce-sdk-tips"&gt;iOS&lt;/a&gt; and &lt;a href="http://www.sundoginteractive.com/sunblog/posts/getting-logged-in-userid-in-salesforce-hybrid-mobile-app"&gt;Hybrid&lt;/a&gt; applications.&amp;nbsp; Now comes Android’s turn.&amp;nbsp; &lt;/p&gt;

&lt;p&gt;My previous Android applications were built before the SDK using the REST API or did not have a need for the current user Id.&amp;nbsp; Today I found myself looking for where it was by fumbling my way through the SDK code after looking around Google for a while.&amp;nbsp; Here is how you access the user Id in your application.&lt;/p&gt;

&lt;p&gt;I’m assuming you have an instance of RestClient within your activity.&amp;nbsp; Use that instance to create a new instance of ClientInfo.&amp;nbsp; ClientInfo has a property for the userId.&amp;nbsp; Your code would look something like this (client is the instance of RestClient):&lt;/p&gt;

&lt;pre class="brush: java"&gt;
ClientInfo ci = this.client.getClientInfo();
String userId = ci.userId;
Log.d(“YOURAPP”, “userId:  “ + userId);
&lt;/pre&gt;

&lt;p&gt;There you have it!&amp;nbsp; Not very difficult but somewhat of a pain if you don’t know where to find it or where to look.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=9jmZkYKJVrw:_axi50MglVk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=9jmZkYKJVrw:_axi50MglVk:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=9jmZkYKJVrw:_axi50MglVk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sunblog?a=9jmZkYKJVrw:_axi50MglVk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sunblog?i=9jmZkYKJVrw:_axi50MglVk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sunblog/~4/9jmZkYKJVrw" height="1" width="1"/&gt;</description>
      <dc:subject><![CDATA[Mobile, Salesforce, Software Development,]]></dc:subject>
      <dc:date>2013-05-01T20:06:05+00:00</dc:date>
      <guid isPermaLink="false">http://www.sundoginteractive.com/sunblog/posts/getting-logged-in-userid-in-salesforce-android-sdk-mobile-app</guid>
    <feedburner:origLink>http://www.sundoginteractive.com/sunblog/posts/getting-logged-in-userid-in-salesforce-android-sdk-mobile-app</feedburner:origLink></item>

    
    </channel>
</rss>
