<?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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>TechEdgeBuzz</title>
	
	<link>http://anexinet.com/blog</link>
	<description>Mobile application development, Android, iOS, Microsoft, and Open Source technologies.</description>
	<lastBuildDate>Tue, 08 May 2012 17:29:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/anexinet-biztechbuzz" /><feedburner:info uri="anexinet-biztechbuzz" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>anexinet-biztechbuzz</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Establishing an Enterprise Mobility Strategy</title>
		<link>http://feedproxy.google.com/~r/anexinet-biztechbuzz/~3/DR15FL6Q7Lo/</link>
		<comments>http://anexinet.com/blog/index.php/mobility/establishing-an-enterprise-mobility-strategy/#comments</comments>
		<pubDate>Tue, 08 May 2012 17:29:04 +0000</pubDate>
		<dc:creator>anexinet</dc:creator>
				<category><![CDATA[Mobility]]></category>
		<category><![CDATA[Mobile Strategy]]></category>

		<guid isPermaLink="false">http://anexinet.com/blog/?p=113</guid>
		<description><![CDATA[The mobility revolution is driving fundamental changes in enterprise computing.  Many companies are stuck in reactive mode, struggling to cope with the infusion of consumer... <a href="http://anexinet.com/blog/index.php/mobility/establishing-an-enterprise-mobility-strategy/" style="font-weight:normal; text-decoration:none;"> More &#8594;</a>]]></description>
			<content:encoded><![CDATA[<p>The mobility revolution is driving fundamental changes in enterprise computing.  Many companies are stuck in reactive mode, struggling to cope with the infusion of consumer devices into the workplace, and scrambling to respond to requests for business applications on mobile devices.</p>
<p>I highly recommend that companies take the time to develop a clear strategy and intelligent roadmap for mobility in the organization. An Enterprise Mobility Strategy defines the business needs, value proposition, and phased roadmap for addressing the major issues surrounding mobile computing.</p>
<p>Mobility issues include:</p>
<ul>
<li>Corporate policies and procedures for mobile computing, including defining a matrix of fully supported, partially supported,  and non-supported platforms and devices.</li>
<li>Standard productivity applications for mobile devices.</li>
<li>Mobile development architecture, tools, and best practices.</li>
<li>Mobile business intelligence capabilities.</li>
<li>Mobile Device Management (MDM), including provisioning, management and support, security, and decommissioning of mobile<br />
devices.</li>
</ul>
<p>An Enterprise Mobility Strategy is a critical first step to having a clearly defined, proactive plan for mobility in your  organization.  Anexinet&#8217;s Enterprise Mobility Strategy service is typically a four to six week engagement that delivers a comprehensive findings and recommendations document, including current state, gaps/risks, near-term recommendations, and an intelligently phased roadmap for mobility in your organization.</p>
]]></content:encoded>
			<wfw:commentRss>http://anexinet.com/blog/index.php/mobility/establishing-an-enterprise-mobility-strategy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://anexinet.com/blog/index.php/mobility/establishing-an-enterprise-mobility-strategy/</feedburner:origLink></item>
		<item>
		<title>How do you count to 3 in powershell?  That’s easy… 0, 2, 3!</title>
		<link>http://feedproxy.google.com/~r/anexinet-biztechbuzz/~3/Wo5pFDRlxBE/</link>
		<comments>http://anexinet.com/blog/index.php/bi/how-do-you-count-to-3-in-powershell-that%e2%80%99s-easy%e2%80%a6-0-2-3/#comments</comments>
		<pubDate>Tue, 17 Apr 2012 13:00:49 +0000</pubDate>
		<dc:creator>anexinet</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[SSIS]]></category>

		<guid isPermaLink="false">http://anexinet.com/blog/?p=105</guid>
		<description><![CDATA[A PowerShell mystery by Mark Wojciechowicz I met with an unexpected behavior in PowerShell’s count function. In SSIS, we needed to check if the contents... <a href="http://anexinet.com/blog/index.php/bi/how-do-you-count-to-3-in-powershell-that%e2%80%99s-easy%e2%80%a6-0-2-3/" style="font-weight:normal; text-decoration:none;"> More &#8594;</a>]]></description>
			<content:encoded><![CDATA[<p>A PowerShell mystery by Mark Wojciechowicz</p>
<p>I met with an unexpected behavior in PowerShell’s count function.  In SSIS, we needed to check if the contents of a folder were empty before running a process on the contents.  The reason being, if the folder was empty, the process would throw an error.  So very simply, we hooked up PowerShell to an execute process task, set the working directory to the location that we wanted to check the contents for and then mapped the StandardOutputVariable to capture the result (shown below).  In the argument we put the following command:<br />
(Get-Childitem).count -as [int]<br />
Get-Childitem is PowerShell’s cmdlet for getting the contents of a parent item.  Wrap that in a count and we have the number of files in the folder.  Lastly, we convert that to an integer value.</p>
<p><a href="http://anexinet.com/blog/wp-content/uploads/2012/04/Powershell_Count_Config.png"><img class="alignnone size-medium wp-image-106" title="Powershell_Count_Config" src="http://anexinet.com/blog/wp-content/uploads/2012/04/Powershell_Count_Config-300x218.png" alt="PowerShell Count" width="300" height="218" /></a></p>
<p>Since this operation was generally operating on 5 to 10 files at a time or none at all, everything ran as expected.  However, I tried reprocessing a single file the other day, only to find that PowerShell returned “0” for the count.  After adding more files, I found that it suddenly started returning the correct count again.  It seems the function above cannot count items when there is only one.  After Googling around for a while, I found that if the Get-Childitem collection is converted to an array, PowerShell can return the correct count for a single item.  This is done by adding an “@” sign to the beginning of the statement:<br />
@(Get-Childitem).count -as [int]<br />
Easy as 0, 2 ,3!</p>
]]></content:encoded>
			<wfw:commentRss>http://anexinet.com/blog/index.php/bi/how-do-you-count-to-3-in-powershell-that%e2%80%99s-easy%e2%80%a6-0-2-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://anexinet.com/blog/index.php/bi/how-do-you-count-to-3-in-powershell-that%e2%80%99s-easy%e2%80%a6-0-2-3/</feedburner:origLink></item>
		<item>
		<title>Dynamically Pivot Columns in T-SQL</title>
		<link>http://feedproxy.google.com/~r/anexinet-biztechbuzz/~3/xzDXdO9Y7rM/</link>
		<comments>http://anexinet.com/blog/index.php/bi/dynamically-pivot-columns-in-t-sql/#comments</comments>
		<pubDate>Thu, 09 Feb 2012 14:22:33 +0000</pubDate>
		<dc:creator>anexinet</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[BI]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[TSQL]]></category>

		<guid isPermaLink="false">http://anexinet.com/blog/?p=85</guid>
		<description><![CDATA[By Mark Wojciechowicz, Anexinet Business Intelligence Architect I recently had an odd request from a client who needed a query which will pivot data from... <a href="http://anexinet.com/blog/index.php/bi/dynamically-pivot-columns-in-t-sql/" style="font-weight:normal; text-decoration:none;"> More &#8594;</a>]]></description>
			<content:encoded><![CDATA[<p>By Mark Wojciechowicz, Anexinet Business Intelligence Architect</p>
<p>I recently had an odd request from a client who needed a query which will pivot data from a key – value table.  This is not a normal request in that reporting tools would normally deal with the pivoting of data in a dynamic way, rather than your database tools. Needless to say, this was needed to feed data to an application which was expecting variable columns.</p>
<p>The T-SQL below used the XML Path function to convert the columns to a CSV and then uses the PIVOT function (and dynamic sql) to return the values for each column.  Hope this is helpful to someone!</p>
<p>Create Table #tb (KeyColumn varchar(20), Value int);</p>
<p>INSERT INTO #tb<br />
SELECT &#8216;Bodington&#8217;, 1<br />
UNION All<br />
SELECT &#8216;Budweiser&#8217;, 2<br />
UNION ALl<br />
SELECT &#8216;Petit_Syrah&#8217;, 3</p>
<p>declare<br />
	@sql as nvarchar(max),<br />
	@cols as nvarchar(max) = (SELECT<br />
				STUFF(<br />
				 (<br />
				  SELECT<br />
				  &#8216;,&#8217; + KeyColumn<br />
				  FROM #tb<br />
				  FOR XML PATH(&#8221;)<br />
				  ), 1, 1, &#8221;<br />
				  ) As concatenated_string)</p>
<p>SET @sql = </p>
<p>&#8216;SELECT &#8216;+ @cols + &#8216;<br />
FROM<br />
      (<br />
	SELECT<br />
		  KeyColumn<br />
		  ,Value<br />
	  FROM #tb<br />
	  ) AS tb1<br />
PIVOT (<br />
	Max(Value) for KeyColumn IN (&#8216;+ @cols + &#8216;)<br />
	) as pvt&#8217;<br />
	Exec sp_executesql @sql</p>
<p>DROP TABLE #tb</p>
]]></content:encoded>
			<wfw:commentRss>http://anexinet.com/blog/index.php/bi/dynamically-pivot-columns-in-t-sql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://anexinet.com/blog/index.php/bi/dynamically-pivot-columns-in-t-sql/</feedburner:origLink></item>
		<item>
		<title>SSIS and Excel on a 64 bit Server</title>
		<link>http://feedproxy.google.com/~r/anexinet-biztechbuzz/~3/nu8q7dj_JPM/</link>
		<comments>http://anexinet.com/blog/index.php/bi/ssis-and-excel-on-a-64-bit-server/#comments</comments>
		<pubDate>Thu, 09 Feb 2012 14:18:07 +0000</pubDate>
		<dc:creator>anexinet</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[BI]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SSIS]]></category>

		<guid isPermaLink="false">http://anexinet.com/blog/?p=83</guid>
		<description><![CDATA[By Mark Wojciechowicz, Anexinet Business Intelligence Architect Recently, I developed a package which read the contents of an excel file and inserted rows into several... <a href="http://anexinet.com/blog/index.php/bi/ssis-and-excel-on-a-64-bit-server/" style="font-weight:normal; text-decoration:none;"> More &#8594;</a>]]></description>
			<content:encoded><![CDATA[<p>By Mark Wojciechowicz, Anexinet Business Intelligence Architect</p>
<p>Recently, I developed a package which read the contents of an excel file and inserted rows into several SQL tables.  Note that development was on a 32 bit machine.  When I deployed the package to our 64 bit dev server, I received the following error:</p>
<p><em>SSIS<br />
Error Code DTS_E_OLEDB_EXCEL_NOT_SUPPORTED: The Excel Connection Manager is not<br />
supported in the 64-bit version of SSIS, as no OLE DB provider is available.</em></p>
<p>Todd McDermid offers good advice regarding this problem on the MS forums: <a href="http://social.msdn.microsoft.com/Forums/en-US/sqlintegrationservices/thread/289e29ad-26dc-4f90-bad4-ffb86c76e5f9/">http://social.msdn.microsoft.com/Forums/en-US/sqlintegrationservices/thread/289e29ad-26dc-4f90-bad4-ffb86c76e5f9/</a></p>
<p>In my case, I have a master package executing many other packages.  I did not want to have the whole master run in 32-bit mode, so I replaced my execute package task with an execute process task and then referenced the 32 bit DTEXEC.exe.  I then ran the package again, but received a new error:</p>
<p><em>[Connection manager "Excel Connection Manager"]: SSIS Error Code DTS_E_OLEDB_NOPROVIDER_ERROR.  The requested OLE DB provider Microsoft.ACE.OLEDB.12.0 is not registered. Error code: 0×00000000. </em></p>
<p><em>An OLE DB record is available.  Source: &#8220;Microsoft OLE DB Service Components&#8221;  Hresult: 0×80040154  Description: &#8220;Class not registered&#8221;.<br />
</em></p>
<p>Now, the issue was that MS Office was not installed on the machine.  Luckily, you can install the data providers from MS:</p>
<p>Microsoft Access Database Engine 2010 Redistributable<br />
<a href="http://www.microsoft.com/download/en/details.aspx?id=13255">http://www.microsoft.com/download/en/details.aspx?id=13255</a><br />
However, I installed the 64 bit provider and received the same error.  I then uninstalled the 64 bit, installed the 32 bit and Yahoo – it finally worked.</p>
<p>Final Answer – To read excel on a 64 bit machine in SSIS, you need to install the 32 bit data providers and execute the package from the 32 bit version of the dtexec.exe.</p>
]]></content:encoded>
			<wfw:commentRss>http://anexinet.com/blog/index.php/bi/ssis-and-excel-on-a-64-bit-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://anexinet.com/blog/index.php/bi/ssis-and-excel-on-a-64-bit-server/</feedburner:origLink></item>
		<item>
		<title>Using the Solution Explorer in SQL Server Management Studio</title>
		<link>http://feedproxy.google.com/~r/anexinet-biztechbuzz/~3/mCl-erxX3-k/</link>
		<comments>http://anexinet.com/blog/index.php/bi/using-the-solution-explorer-in-sql-server-management-studio/#comments</comments>
		<pubDate>Thu, 09 Feb 2012 14:13:43 +0000</pubDate>
		<dc:creator>anexinet</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[BI]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://anexinet.com/blog/?p=74</guid>
		<description><![CDATA[By Mark Wojciechowicz, Anexinet Business Intelligence Architect I recently learned about a feature in SSMS that I never paid much attention to – the ability to... <a href="http://anexinet.com/blog/index.php/bi/using-the-solution-explorer-in-sql-server-management-studio/" style="font-weight:normal; text-decoration:none;"> More &#8594;</a>]]></description>
			<content:encoded><![CDATA[<p>By Mark Wojciechowicz, Anexinet Business Intelligence Architect</p>
<p>I recently learned about a feature in SSMS that I never paid much attention to – the ability to save queries in a solution.  I normally organize my queries into folders in the project folder for short term use with the project that I am working on.  However, I found that the solution method of storing queries could prove very useful for the ones that you use on a regular basis.<br />
First off, this is what it looks like:</p>
<p><a href="http://anexinet.com/blog/wp-content/uploads/2011/10/SSMS_Solution_Explorer.png"><img class="alignnone size-medium wp-image-77" title="SSMS_Solution_Explorer" src="http://anexinet.com/blog/wp-content/uploads/2011/10/SSMS_Solution_Explorer-300x140.png" alt="SSMS Solution Explorer" width="300" height="140" /></a><a href="http://anexinet.com/blog/wp-content/uploads/2011/10/SSMS_Solution_Explorer.png"></a></p>
<p>To access the solution panel, Go to view&gt; Solution Explorer (or CTLR + ALT + L)<br />
To add a project, right click on the solution explorer and add new project.  Right click on the Connections folder to add a new connection (Use the options tab to specify a database.  You can add a new query by double—licking the connection or by right clicking on the Queries folder.</p>
<p>Note that when you rename a query it must end in .sql or the file will be moved under the miscellaneous folder.  To run a query, simply double click it and it will open it up in ssms.</p>
<p>This is a nice way to organize your queries and easily find them (rather than hunting through windows explorer).  There is also source control support for this solution, though I have not tested that as of yet.</p>
]]></content:encoded>
			<wfw:commentRss>http://anexinet.com/blog/index.php/bi/using-the-solution-explorer-in-sql-server-management-studio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://anexinet.com/blog/index.php/bi/using-the-solution-explorer-in-sql-server-management-studio/</feedburner:origLink></item>
		<item>
		<title>Anexinet Mobile Architect Joins PhoneGap Contributor Team</title>
		<link>http://feedproxy.google.com/~r/anexinet-biztechbuzz/~3/_I6vkE7AEY4/</link>
		<comments>http://anexinet.com/blog/index.php/mobility/anexinet-mobile-architect-joins-phonegap-contributor-team/#comments</comments>
		<pubDate>Tue, 25 Oct 2011 20:05:26 +0000</pubDate>
		<dc:creator>anexinet</dc:creator>
				<category><![CDATA[Mobility]]></category>

		<guid isPermaLink="false">http://anexinet.com/blog/?p=75</guid>
		<description><![CDATA[In response to recurring questions on the PhoneGap discussion group, Dan Shookowsky wrote a blog article &#8220;Creating a plugin with PhoneGap 1.0&#8220;.  In the article, he describe how... <a href="http://anexinet.com/blog/index.php/mobility/anexinet-mobile-architect-joins-phonegap-contributor-team/" style="font-weight:normal; text-decoration:none;"> More &#8594;</a>]]></description>
			<content:encoded><![CDATA[<p>In response to recurring questions on the PhoneGap discussion group, Dan Shookowsky wrote a blog article &#8220;<a href="http://www.practicaldeveloper.net/2011/09/creating-plugin-with-phonegap-10.html">Creating a plugin with PhoneGap 1.0</a>&#8220;.  In the article, he describe how to add functionality that&#8217;s not supplied directly by PhoneGap.  In this case, he added the ability to send an SMS directly from the PhoneGap HTML UI.</p>
<p>PhoneGap is an opensource project and Dan <a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a>notified the discussion group that the article was there, and got some feedback from Simon Mac Donald.  Dan then decided to offer the code to the PhoneGap project when he realized that others were finding it useful.  Simon recommended some small naming changes and gave some general instructions on how to submit it.  </p>
<p>Look to see Dan&#8217;s work officially in the PhoneGap framework soon!</p>
]]></content:encoded>
			<wfw:commentRss>http://anexinet.com/blog/index.php/mobility/anexinet-mobile-architect-joins-phonegap-contributor-team/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://anexinet.com/blog/index.php/mobility/anexinet-mobile-architect-joins-phonegap-contributor-team/</feedburner:origLink></item>
		<item>
		<title>Extremely Rapid Application Development with Microsoft LightSwitch</title>
		<link>http://feedproxy.google.com/~r/anexinet-biztechbuzz/~3/fOYJ4VHJiYo/</link>
		<comments>http://anexinet.com/blog/index.php/custom-development/extremely-rapid-application-development-with-microsoft-lightswitch/#comments</comments>
		<pubDate>Fri, 21 Oct 2011 12:47:59 +0000</pubDate>
		<dc:creator>anexinet</dc:creator>
				<category><![CDATA[Custom Development]]></category>

		<guid isPermaLink="false">http://anexinet.com/blog/?p=69</guid>
		<description><![CDATA[by Vince Iovacchini During the first half of the Tech Tuesday held at the Kennett Square Near Site on 9/13/2011, we took a look at... <a href="http://anexinet.com/blog/index.php/custom-development/extremely-rapid-application-development-with-microsoft-lightswitch/" style="font-weight:normal; text-decoration:none;"> More &#8594;</a>]]></description>
			<content:encoded><![CDATA[<p>by Vince Iovacchini<a href="http://anexinet.com/blog/wp-content/uploads/2011/10/lightswitch.png"></a></p>
<p style="text-align: left;">During the first half of the Tech Tuesday held at the Kennett Square Near Site on 9/13/2011, we took a look at the Microsoft LightSwitch Framework.  Offered as an extension to the Visual Studio 2010 IDE, LightSwitch is touted as a collection of starter kits, wizards, and templates that “help you create and easily release custom business apps that look professional and polished, with no coding required”. </p>
<p>Before getting into the details of the framework, we took a two-minute tour of a data management system that was implemented using LightSwitch – the Wind Demographics Database Interface:</p>
<p><a href="http://anexinet.com/blog/wp-content/uploads/2011/10/lightswitch.png"><img class="alignnone size-full wp-image-70" title="lightswitch" src="http://anexinet.com/blog/wp-content/uploads/2011/10/lightswitch.png" alt="" width="648" height="372" /></a></p>
<p> When using Visual Studio to create a new LightSwitch project, the framework for a three-tier application is automatically generated.  The front-end is a Silverlight client that can be configured as a desktop application, or as a browser-based application hosted by a Web server or the Cloud.  “Pages” are added by creating Screens that are based off of Search, New, and Edit templates.  The middle (logic) tier is generated using Microsoft ADO.NET Entity Framework and provides a service layer to connect to various third-tier data layers (SQL Server, Oracle, SharePoint, RIA Services).  The logic tier offers Entities and Entity Sets that are types (classes) that match the underlying data service constructs. </p>
<p>Using Visual Studio LightSwitch, we were able to stand up very simple web application that connected to a SQL Server database in about 7 minutes (including compilation time).  This led us into our “What’s Hot” discussion that centered on some of the impressive features of LightSwitch:</p>
<ul>
<li>Relational Data Model – all the CRUD is done for us
<ul>
<li>No need to write SELECT, INSERT, UPDATE, and DELETE stored procs for all of the data objects in the model</li>
</ul>
</li>
<li>Free Validation
<ul>
<li>User-edited fields are automatically checked for type and length</li>
</ul>
</li>
<li>Free Dirty-Checking
<ul>
<li>If a user edits data and attempts to close the tab, screen, or even the whole application, the Framework automatically prompts the user to Save changes, Discard changes, or Cancel &#8211; no need to write custom JavaScript</li>
</ul>
</li>
<li>Built-in templates
<ul>
<li>Search, New, Edit screens provide default layouts for the generated data types, with the entity fields and related collections automatically added to the screen</li>
</ul>
</li>
<li>ASP .NET Security
<ul>
<li>Windows Active Directory can be tied in automatically, so that users and roles can be managed through the application by administrators – all without custom security code modules</li>
</ul>
</li>
</ul>
<p>Next we went over some of the less-than-ideal requirements or drawbacks of LightSwitch:</p>
<ul>
<li>Data Model <strong>must</strong> be normalized
<ul>
<li>For example, tables that are missing primary keys cannot be imported into the Logic tier</li>
<li>No class inheritance for Screens
<ul>
<li>This leads to a great deal of “copy-paste” code</li>
<li>Customization of application appearance requires creation of custom Shell and/or Theme Extensions
<ul>
<li>Even some as “simple” as adding a logo to the application turned out to be not so simple</li>
<li>Unit testing is <strong>not</strong> supported out of the box</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>To wrap things up, we discussed the overall impressions of LightSwitch.  It seems ideal for straightforward data management applications, not only for LOB apps but also for lighter-weight “utility” applications.  For example, some of the developers began contemplating the use of LightSwitch to provide a quick and easy interface into databases that normally require “manual” management.  LightSwitch offers extensibility and the means to create custom business logic by writing VB or C# code; however, the trade-off is the need to have some technical expertise to create any type of practical application, and to navigate configuration and deployment aspects.  Another catch is the necessity to have a sound data model – the automated features of data modeling in LightSwitch are only possible with a normalized data model with primary and foreign keys in place.  At the end of the day, LightSwitch is a powerful framework that can stand up applications quickly as long as the proper conditions are met and the proper expertise is driving the effort.</p>
]]></content:encoded>
			<wfw:commentRss>http://anexinet.com/blog/index.php/custom-development/extremely-rapid-application-development-with-microsoft-lightswitch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://anexinet.com/blog/index.php/custom-development/extremely-rapid-application-development-with-microsoft-lightswitch/</feedburner:origLink></item>
		<item>
		<title>Data Visualization in SQL Reporting Services 2008 R2</title>
		<link>http://feedproxy.google.com/~r/anexinet-biztechbuzz/~3/YCFd_Hr78GQ/</link>
		<comments>http://anexinet.com/blog/index.php/bi/data-visualization-in-sql-reporting-services-2008-r2/#comments</comments>
		<pubDate>Mon, 29 Aug 2011 21:31:51 +0000</pubDate>
		<dc:creator>anexinet</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[BI]]></category>
		<category><![CDATA[Bubble Chart]]></category>
		<category><![CDATA[Charts]]></category>
		<category><![CDATA[Graphs]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Reporting]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SSAS]]></category>
		<category><![CDATA[SSRS]]></category>
		<category><![CDATA[Visualization]]></category>

		<guid isPermaLink="false">http://anexinet.com/blog/?p=56</guid>
		<description><![CDATA[Applying Data Visualization in SQL Reporting Services 2008 R2 (SSRS) Tuesday, August 9, 2011 by Mark Wojciechowicz This past Tech Tuesday, I presented techniques for... <a href="http://anexinet.com/blog/index.php/bi/data-visualization-in-sql-reporting-services-2008-r2/" style="font-weight:normal; text-decoration:none;"> More &#8594;</a>]]></description>
			<content:encoded><![CDATA[<h2>Applying Data Visualization in SQL Reporting Services 2008 R2 (SSRS)</h2>
<p>Tuesday, August 9, 2011</p>
<p>by Mark Wojciechowicz</p>
<p>This past Tech Tuesday, I presented techniques for data visualization as espoused by Stephen Few, the author of<a href="http://www.amazon.com/Now-You-See-Visualization-Quantitative/dp/0970601980"> Now You See It</a>.  We first looked at some common best practices for visualizing data in any tool and then took some of those techniques to SSRS.  For those who have not worked much in SSRS before, I demonstrated how easy it is to get started.  In this post, I will cover some of the key considerations in displaying data.  At the end of the article, you can find links to the source files.  The data that was used for the demonstration was taken from the <a href="http://www.beerinstitute.org/">www.beerinstitute.org</a> (when you are not presenting data to sales people you have to have some catchy subject matter!)</p>
<h3>Pre-attentive Attributes</h3>
<p>First things first, by data visualization we mean to take that raw set of numbers that’s presented in a giant data grid and present it in way to draw at the meaning and trends in the data.  The human mind can understand images much more quickly than it can read numbers and assess their relative weighting to each other.  Those images which are most easily understood by the mind are called pre-attentive attributes.  Some of these attributes are much easier to absorb than others and make it so that the audience of the report can comprehend the data with little explanation.</p>
<h3>Not all charts are created equal</h3>
<p>Some charts take much more work to understand than others.  So let’s compare a pie chart, bubble chart and column graph. </p>
<p><a href="http://anexinet.com/blog/wp-content/uploads/2011/08/PieChart.png"><img class="alignnone size-medium wp-image-62" title="PieChart" src="http://anexinet.com/blog/wp-content/uploads/2011/08/PieChart-300x180.png" alt="" width="300" height="180" /></a></p>
<p>A pie chart presents triangular shaped areas that are hard to accurately compare the slices relative value.  In the image above, how much more is D3 compared to D8, and better yet, which is D3 and which is D8?  The default settings for a pie chart often include a legend with an array of colors that are time consuming to match up to their slices.</p>
<p><a href="http://anexinet.com/blog/wp-content/uploads/2011/08/BubbleChart.png"><img class="alignnone size-medium wp-image-57" title="BubbleChart" src="http://anexinet.com/blog/wp-content/uploads/2011/08/BubbleChart-300x179.png" alt="" width="416" height="253" /></a></p>
<p>Bubble charts look cool!  The sales guys love them when they want to compare 3 different data points at once.  How much greater is D5 compared to D6?  If we went around the room, we would probably hear numbers like 10 times as much, while in reality it is only 6 times larger.  Circle areas are even more difficult to compare than pie slices. </p>
<p><a href="http://anexinet.com/blog/wp-content/uploads/2011/08/ColumnGraph.png"><img class="alignnone size-medium wp-image-59" title="ColumnGraph" src="http://anexinet.com/blog/wp-content/uploads/2011/08/ColumnGraph-300x179.png" alt="" width="442" height="238" /></a></p>
<p>When we look at the old standby, the column chart, we more easily see which lines are the largest and the relative difference between them.  In most charting tools, we still have to battle some obtrusive defaults as we’ll see in the image below.</p>
<p><a href="http://anexinet.com/blog/wp-content/uploads/2011/08/ColumnGraph2.png"><img class="alignnone size-medium wp-image-60" title="ColumnGraph2" src="http://anexinet.com/blog/wp-content/uploads/2011/08/ColumnGraph2-300x180.png" alt="" width="450" height="269" /></a></p>
<p>In the above graph, there are some common charting problems:</p>
<ul>
<li>The scale starts at 10, rather than 0.  This creates an optical illusion having us think that D1 is a 3<sup>rd</sup> greater than D2.  This is the same dataset throughout all of these charts, however.  Looking back to our previous bar chart, you will see that these two data points are far closer to each other.</li>
<li>The order of the dataset is alphabetical rather than by value.  This makes it more difficult to see exactly how the data points compare to each other.  You might even be prone to sorting them in your head.</li>
<li>Last, the multi-color bars merely add distraction.  A single series should all be the same color unless you want to highlight a particular data point.</li>
</ul>
<p> </p>
<p>If it is necessary to zoom in on the data, we can use a different image to display them which takes away the optical illusion.  Below, I have replaced the part chart with a line chart.  I made the line invisible and added horizontal markers.  Now, you can see the distance between the columns, but you are given to using the scale and their 2-dimensional distance to compare them.</p>
<p><a href="http://anexinet.com/blog/wp-content/uploads/2011/08/HorizontalMarkerChart.png"><img class="alignnone size-medium wp-image-61" title="HorizontalMarkerChart" src="http://anexinet.com/blog/wp-content/uploads/2011/08/HorizontalMarkerChart-300x180.png" alt="" width="476" height="283" /></a></p>
<p>Now who doesn’t love 3-D charts?</p>
<p><a href="http://anexinet.com/blog/wp-content/uploads/2011/08/ThreeDChart.png"><img class="alignnone size-medium wp-image-65" title="ThreeDChart" src="http://anexinet.com/blog/wp-content/uploads/2011/08/ThreeDChart-300x180.png" alt="" width="458" height="284" /></a> </p>
<p>Well, me.  And probably just me at that &#8212; but let me explain the challenges.  3-D images are really just 2-D images with shadow and line effects.  Comparing the exact difference in bars is very difficult, even with the help of a gridline.  Not only this, data points can be hidden behind others making it very hard to get the whole picture.  Even with a cool charting tool that lets you spin the image around, there is almost always a hidden data point and, thus, a challenge to your short term memory.  And I sure don’t need challenges to my memory.  A solution to the 3D graph is below when we discuss <a href="http://anexinet.com/blog/wp-admin/post-new.php#TrellisCharts">Trellis Charts</a>.</p>
<h3>So what’s good to include in a chart?</h3>
<p>First, try to leave out any additional markup that is distracting to what you are trying to feature – the data.  Some of these things are:</p>
<ul>
<li>Chart borders</li>
<li>Gridlines</li>
<li>Background colors</li>
<li>Labels (labels can be delivered through a mouse over)</li>
<li>Multiple colors for the same series</li>
<li>3D presentations</li>
</ul>
<p>Some good practices in charting are:</p>
<ul>
<li>Ordering a series by value</li>
<li>Using 0 scale or 2-D positioning with markers</li>
<li>Using lines to connect a time series</li>
</ul>
<h2>Reporting Services</h2>
<p>Now, that we have these principles in place, we can see how this plays out in Reporting Services.  SSRS 2008 R2 offers a few new tricks which can help make the process of building a visual report much easier.  Sparklines can be dragged onto a report table over a data point and can be quickly configured to show the trend for a category in a tiny graph that wastes no space and gets straight to the point.</p>
<p><a href="http://anexinet.com/blog/wp-content/uploads/2011/08/SSRS_Sparklines.png"><img class="alignnone size-medium wp-image-64" title="SSRS_Sparklines" src="http://anexinet.com/blog/wp-content/uploads/2011/08/SSRS_Sparklines-300x253.png" alt="" width="300" height="253" /></a></p>
<p>We can easily compare the annual trend of beer sales across beer sources in the table above.  However, sparklines do not capture the relative difference between each data point. To do this, we must convert the sparkline to a regular chart (right click the sparkline and select convert to chart), clean up all its decoration and scale it according to the highest month for all beer sales amongst all varieties.</p>
<p><a href="http://anexinet.com/blog/wp-content/uploads/2011/08/SSRS_Minicharts.png"><img class="alignnone size-medium wp-image-63" title="SSRS_Minicharts" src="http://anexinet.com/blog/wp-content/uploads/2011/08/SSRS_Minicharts-300x242.png" alt="" width="300" height="242" /></a></p>
<p>Now, we can see that domestic draft is small potatoes compared to domestic packaged beer.  When we have many categories to compare across each other, we can fit these charts into a tablix.  This creates a trellis chart.  Trellis charting paints the same chart across rows and columns to compare relative differences to each other. </p>
<p><a href="http://anexinet.com/blog/wp-content/uploads/2011/08/TrellisCharts.png"><img class="alignnone size-medium wp-image-66" title="TrellisCharts" src="http://anexinet.com/blog/wp-content/uploads/2011/08/TrellisCharts-300x124.png" alt="" width="300" height="124" /></a></p>
<p>Please note that, like a regular chart, the categories should be ordered by greatest amount to smallest in order to aid comparison.  While we covered some other cool tricks in reporting services like indicators, one last point that I would like to highlight is the use of bullet graphs.  Bullet graphs offer a very compact way to indicate status with relative weighting.  A bullet graph is nothing more than a bar chart (or stacked bar chart) with a target line (a marker).  See below.</p>
<p><a href="http://anexinet.com/blog/wp-content/uploads/2011/08/BulletGraphs.png"><img class="alignnone size-medium wp-image-58" title="BulletGraphs" src="http://anexinet.com/blog/wp-content/uploads/2011/08/BulletGraphs-300x185.png" alt="" width="300" height="185" /></a></p>
<p>The bullet graph shows an orange bar seeking to cross a target line.  In order to make this affect realistic, I used the Datamining excel add-in to forecast sales of beer.  This forecast number became the marker point and the actual sales are the bar.  The eye is immediately drawn to those lines that make the cross.  In addition, you can see the relative difference in magnitude.  We would probably care much more about forecast accuracy for packaged beer than the other smaller categories.</p>
<p>In the last column, I illustrate a poor use of indicators.  Indicators can be a great way to subtly highlight a data point that is in trouble.  But it tends to dumb down the data when it is used to emphatically.  You also might draw a completely different conclusion looking at a bullet graph versus an indicator.  While import packaged goods had a very good 2010, it pales in comparison to the relative importance of domestic packaged beer.  And I’m not just saying that because I like micro-brewed beer.</p>
<p>I hope these charting tips are helpful.  To learn more, please check out Stephen Few’s work.  Links to the BeerInstitute database and SSRS project are below.</p>
<h3>References:</h3>
<p>Few, S. (2004, September 4). www.perceptualedge.com. Retrieved July 25, 2011, from www.perceptualedge.com/articles/ie/visual_perception.pdf</p>
<p>Few, S. (2009). Now You See It. Oakland, CA: Analytics Press.</p>
<p>Ware, C. (2004). Information Visualization: Perception for Design, Second Edition. San Francisco: Kaufman Publishers.</p>
]]></content:encoded>
			<wfw:commentRss>http://anexinet.com/blog/index.php/bi/data-visualization-in-sql-reporting-services-2008-r2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://anexinet.com/blog/index.php/bi/data-visualization-in-sql-reporting-services-2008-r2/</feedburner:origLink></item>
		<item>
		<title>Key aspects of WCF development you should know—things we just came to realize</title>
		<link>http://feedproxy.google.com/~r/anexinet-biztechbuzz/~3/BgSPr6CMr30/</link>
		<comments>http://anexinet.com/blog/index.php/custom-development/key-aspects-of-wcf-development-you-should-know-things-we-just-came-to-realize/#comments</comments>
		<pubDate>Fri, 24 Jun 2011 19:26:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Custom Development]]></category>
		<category><![CDATA[Advanced .NET]]></category>
		<category><![CDATA[Microsoft technology]]></category>
		<category><![CDATA[Tech Tuesday]]></category>
		<category><![CDATA[Windows Communication Foundation]]></category>
		<category><![CDATA[Windows IIS]]></category>

		<guid isPermaLink="false">http://anexinet.com/blog/?p=28</guid>
		<description><![CDATA[At the end of May, we covered Windows Communication Foundation (WCF) during our Tech Tuesday presentation.  WCF was chosen because many of us came to... <a href="http://anexinet.com/blog/index.php/custom-development/key-aspects-of-wcf-development-you-should-know-things-we-just-came-to-realize/" style="font-weight:normal; text-decoration:none;"> More &#8594;</a>]]></description>
			<content:encoded><![CDATA[<p>At the end of May, we covered Windows Communication Foundation (WCF) during our Tech Tuesday presentation.  WCF was chosen because many of us came to realize how very little we knew about the topic, thinking that we had a good understanding of WCF development prior to 2011—meaning, how hard is it to add a few XML nodes to a web.config file to expose a .NET CLR class as a WCF service through IIS?  However, once we started digging into WCF we realized that there is a lot more to it than this. We have found that Microsoft does a pretty good job at applying the 80/20 rule to most technologies they publish–meaning that one can get 80% functionality through a 20% effort and, for Anexinet developers, WCF was no different.</p>
<p>Prior to 2011, our exposure to WCF was limited, primarily delivering WCF services using the Visual Studio “WCF Service” template. This approach allowed us to create true WCF services hosted in IIS and exposed over HTTP. This was perfect for the environments that we were already working in since those projects were Web based projects and, therefore, IIS was readily available. With IIS came access to existing SSL certificates to secure the content of the messages flowing to and from the service. And, since the organization was already using IP filtering to limit access into the DMZ, we had a way to “authorize” the client making the calls in to our services. We successfully deployed several WCF services in this fashion to support both internal and external communication and we delivered that project with a sense of accomplishment and feeling pretty good about our WCF knowledge.</p>
<p><strong>Then came 2011.</strong> We started looking deeper into SOA from an architectural position and decided to do a deeper dive into the WCF technology. At that same time, we started working with a client that was looking at using WCF to support a centrally hosted SOA based routing engine. The deeper we dove and the more requirements that were gathered, the more we realized how little we really knew and understood about WCF. It became clear to us that WCF was a lot more than glorified IIS URLs.</p>
<p>Below are concepts that we feel represent some of the more important aspects of WCF:</p>
<ul>
<li><strong>WCF Hosting:</strong> WCF services can be hosted in IIS or any other windows process using the System.ServiceModel.ServiceHost class. When hosting in IIS you use the web.config file to configure services and IIS takes care of the rest. When using a Windows process (e.g. a Windows service, a console application, or even a Windows forms application) you can use the app.config file OR you can programmatically create WCF services and manage all aspects of a service in code. Programmatic mode allows for dynamic creation of services providing complete control over all aspects of a WCF service.</li>
</ul>
<ul>
<li><strong>Protocols: </strong>WCF services hosted in IIS use the HTTP protocol by default to communicate. It is possible to support the NET TCP protocol in IIS but that requires additional installation and configuration in IIS.  IIS cannot support the Named Pipes or MSMQ protocols. Hosting using the System.ServiceModel.ServiceHost class supports all WCF protocols without any additional installation or configuration.</li>
</ul>
<p><strong> </strong></p>
<ul>
<li><strong>Security–Authentication: </strong>WCF services support protocol, message, or protocol and message security.  Protocol security includes concepts like Kerberos, NTLM, and certificate. Message security includes concepts like Kerberos, NTLM, Username/Password, certificate, and issued token.</li>
</ul>
<ul>
<li><strong>Security–Authorization: </strong>WCF services support role based, identity based, and resource based authorization models.</li>
</ul>
<ul>
<li><strong>Cloud Computing: </strong>Microsoft has released an <a title="Azure SDK for Visual Studio" href="http://www.microsoft.com/windowsazure/sdk/" target="_blank">Azure SDK for Visual Studio</a> that makes developing WCF and WF services for the cloud fairly straight forward. The SDK includes an emulator to test your application locally before deploying to the cloud.</li>
</ul>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<ul>
<li><strong>Extensibility: </strong>WCF was built to allow for complete extensibility. All aspects of the WCF “stack” can be extended if the functionality needed is not natively supported by WCF.</li>
</ul>
<p>Although many of these concepts are not fully explained, our goal is to offer viewpoints to what WCF is capable of doing and to encourage you to take a deeper dive into WCF.<a href="#_msoanchor_1"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://anexinet.com/blog/index.php/custom-development/key-aspects-of-wcf-development-you-should-know-things-we-just-came-to-realize/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://anexinet.com/blog/index.php/custom-development/key-aspects-of-wcf-development-you-should-know-things-we-just-came-to-realize/</feedburner:origLink></item>
		<item>
		<title>Starting a Project with PhoneGap in Eclipse</title>
		<link>http://feedproxy.google.com/~r/anexinet-biztechbuzz/~3/-i2YccW3E6E/</link>
		<comments>http://anexinet.com/blog/index.php/mobility/starting-a-project-with-phonegap-in-eclipse/#comments</comments>
		<pubDate>Mon, 23 May 2011 18:21:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Mobility]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Android Project]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Helios]]></category>
		<category><![CDATA[JQueryMobile]]></category>
		<category><![CDATA[mobile development]]></category>
		<category><![CDATA[PhoneGap]]></category>
		<category><![CDATA[Sencha Touch]]></category>

		<guid isPermaLink="false">http://anexinet.com/blog/?p=1</guid>
		<description><![CDATA[Recently, a colleague was asking for assistance setting up a development environment. The good news is that there are a number of tutorials that go... <a href="http://anexinet.com/blog/index.php/mobility/starting-a-project-with-phonegap-in-eclipse/" style="font-weight:normal; text-decoration:none;"> More &#8594;</a>]]></description>
			<content:encoded><![CDATA[<p>Recently, a colleague was asking for assistance setting up a development environment. The good news is that there are a number of tutorials that go in to detail about how to get started. The bad news (which is good news too) is that because PhoneGap is advancing rapidly and gaining developer mind-share, these tutorials are getting outdated quickly.For the record, the one that we recommend at the moment is the <a title="PhoneGap QuickStart" href="http://wiki.phonegap.com/w/page/30862722/phonegap-android-eclipse-quickstart" target="_blank">PhoneGap Android Eclipse QuickStart Guide</a>. This how-to doesn&#8217;t require developers to set-up git and ruby, and works with the latest build of PhoneGap.</p>
<p>After walking our colleague through these steps, it occurred to me that it would be much easier if someone created an Eclipse Plugin. The good news is that someone did. The installation is, with a minor exception, pretty straight forward.</p>
<ol>
<li>Under the <strong>Help</strong> menu in Eclipse Helios, select &#8220;install new software&#8221;</li>
<li>Enter the following address in the <strong>Work With</strong> combo and click add.<br />
<code>https://svn.codespot.com/a/eclipselabs.org /mobile-web-development-with-phonegap/tags/r1.2/download</code></li>
<li>Give it a meaningful name such as &#8216;MDS PhoneGap for Android Plug-In&#8217;</li>
<li>Here&#8217;s where we ran into an issue. The plug-in wants to install the JavaScript Development Tools (JSDT) and it was failing to install. Unchecking this particular component allowed the installation to complete.</li>
</ol>
<p>After completing the installation, you&#8217;ll be able to start a new PhoneGap project by selecting File-&gt;New-&gt;Other-&gt;PhoneGap for Android Project. The wizard allows you to specify local, web, internal, or git repository locations for the PhoneGap bits. As a bonus, you can also opt to include the JQueryMobile or Sencha Touch in the project and build the sample application. It&#8217;s never been easier to get started with mobile development.</p>
]]></content:encoded>
			<wfw:commentRss>http://anexinet.com/blog/index.php/mobility/starting-a-project-with-phonegap-in-eclipse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://anexinet.com/blog/index.php/mobility/starting-a-project-with-phonegap-in-eclipse/</feedburner:origLink></item>
	</channel>
</rss>
