<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>BlogBaud.com &#187; Shaun Sullivan</title>
	<atom:link href="http://www.blogbaud.com/blog/category/shaun-sullivan/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.blogbaud.com/blog</link>
	<description>A Nonprofit Blog Powered By Blackbaud Employees</description>
	<pubDate>Tue, 03 Jun 2008 03:37:18 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Infinity and the LAMP Stack</title>
		<link>http://www.blogbaud.com/blog/2007/03/20/infinity-and-the-lamp-stack/</link>
		<comments>http://www.blogbaud.com/blog/2007/03/20/infinity-and-the-lamp-stack/#comments</comments>
		<pubDate>Tue, 20 Mar 2007 20:26:55 +0000</pubDate>
		<dc:creator>Shaun Sullivan</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[Infinity]]></category>

		<category><![CDATA[NPTech]]></category>

		<category><![CDATA[Shaun Sullivan]]></category>

		<guid isPermaLink="false">http://www.blogbaud.com/blog/2007/03/20/infinity-and-the-lamp-stack/</guid>
		<description><![CDATA[We have been building our next generation application platform (code name Infinity) for almost two years now.  I can&#8217;t talk in specifics at this point, but I can say that we have two brand new applications built on this platform ready to ship!  Sorry, no dates will be revealed here, my friends.

Is that [...]]]></description>
			<content:encoded><![CDATA[<p>We have been building our next generation application platform (code name Infinity) for almost two years now.  I can&#8217;t talk in specifics at this point, but I can say that we have two brand new applications built on this platform ready to ship!  Sorry, no dates will be revealed here, my friends.</p>
<div style="padding:4px;float:left"><a title="Is that Linux?  And Blackbaud?" href="http://www.blogbaud.com/blog/wp-content/uploads/2007/03/g1.jpg"><img src="http://www.blogbaud.com/blog/wp-content/uploads/2007/03/g1.thumbnail.jpg" alt="Is that Linux?  And Blackbaud?" /></a><br />
<strong>Is that Linux?  Yep.</strong></div>
<p>So, as we exit one of the most intense R&amp;D cycles in the 18 years I&#8217;ve been at Blackbaud, I took some time to reflect back on our initial goals for the platform and do a little internal report card of sorts around how I think we did.  I won&#8217;t bore you with the details, or maybe I will in another post, but for now I&#8217;d like to look at one place where I give the team an A+.</p>
<p>You didn&#8217;t think I was going to blog about the &#8220;B&#8221; grade did you?</p>
<p><strong>Goal: Embrace web standards to maximize interoperability</strong></p>
<p>I know, it&#8217;s a mouthful, but I can&#8217;t figure out how to put it any more succinctly.  Two years ago it was obvious to the team here that we needed to be web delivered and if we were going to be web delivered we should use as many standards-based technologies as possible.</p>
<p><span id="more-80"></span></p>
<div style="padding:4px;float:right"><a title="Bio Screen" href="http://www.blogbaud.com/blog/wp-content/uploads/2007/03/g2.jpg"><img src="http://www.blogbaud.com/blog/wp-content/uploads/2007/03/g2.thumbnail.jpg" alt="Bio Screen" /></a><br />
<strong>Larry&#8217;s Linux App</strong></div>
<p>This was important to us particularly in the area of how we exposed our API stack.  We decided on using SOAP-based web services to support our API and extensibility models.  Interestingly, we have also sprinkled in REST-based access to the services as well, but in general we are a SOAP shop.  It wasn&#8217;t as if we were making some visionary choice.  Our core applications are built on Microsoft SQL Server 2005 and ASP.NET 2.0 using Microsoft Visual Studio &#8212; we are a Microsoft shop &#8212; and Microsoft plays real nice with SOAP.  Seriously, Microsoft did a great job with their development tools plumbing SOAP into the deepest levels of the platform, safely abstracting the developer away (well only if you want to be) from the gory details of the actual XML messages, wire format, WSDL etc.  Our real visionary architectural decisions were made around how Infinity exposes all of it&#8217;s data and functionality via web services, with zero compromises.</p>
<blockquote><p>&#8220;Let&#8217;s see just how platform agnostic the API is.  Let&#8217;s build something on Linux&#8221;</p></blockquote>
<p>That&#8217;s what I said to the team.  So, as is always the case with the folks on my team, a developer jumped at the challenge.  I have the luxury of having a brilliant team of developers here, so it was no surprise when two days later, Larry showed up at my door with a working application.  The Apache/PHP based application provides basic search an record management capabilities by using the web services APIs exposed by our Infinity platform.  It really was a proud moment, one that made all the rigor and discipline that has gone into building the Infinity platform *totally* worth it.  I love when a plan comes together like that.</p>
<p>Two worlds, two totally different flavors of Kool-Aid, one application.  It was borderline heresy in the Microsoft worshiping halls of Blackbaud &#8212; and it worked great.</p>
<p><strong>Grandma to the rescue</strong></p>
<div style="padding:4px;float:left"><a title="Granny" href="http://www.blogbaud.com/blog/wp-content/uploads/2007/03/g3.jpg"><img src="http://www.blogbaud.com/blog/wp-content/uploads/2007/03/g3.thumbnail.jpg" alt="Granny" /></a><br />
<strong>Grandma&#8217;s LAMP</strong></div>
<p>Initially, we were all so clueless about Linux it was comical.  Picture three nerds poking and prodding at a computer with quizzical looks, not knowing where to start.  It was a true &#8220;showing fire to the natives&#8221; type of moment.  So, we did what anybody would do, and typed <a href="http://www.google.com/search?q=linux+for+my+grandma&amp;rls=com.microsoft:en-us&amp;ie=UTF-8&amp;oe=UTF-8&amp;startIndex=&amp;startPage=1">&#8220;Linux for my grandma&#8221;</a> into Google.  Bingo!  Within minutes we had a Linux VM even the Blackbaud team could use!  OK, so maybe I took some creative license on how it went down, but that&#8217;s pretty much what happened.  Really.</p>
<p><a href="http://www.vmware.com/vmtn/appliances/directory/581">Grandma&#8217;s LAMP</a> was the perfect tool for the job &#8212; a pre-built VMWare image with the LAMP stack, samba, Firefox etc.  All there and ready to use.  The fact that Larry was then able to build a super-clean PHP wrapper that made it trivial to exercise our API from PHP and then build what he did in two days was proof enough for me that the mission was accomplished.</p>
<div style="padding:4px;float:right"><a title="PHP" href="http://www.blogbaud.com/blog/wp-content/uploads/2007/03/g4.jpg"><img src="http://www.blogbaud.com/blog/wp-content/uploads/2007/03/g4.thumbnail.jpg" alt="PHP" /></a><br />
<strong>PHP Meets Infinity</strong></div>
<p>2007 is going to be a fun year.  If you see me at a conference some time please ask me to boot up ole Granny and show you what I am talking about here.  We&#8217;ll include it in the Infinity SDK as well.  Sure, this<br />
was an exercise and proof of concept, but maybe someday Larry&#8217;s code will help somebody solve a thorny integration problem with our systems and some other application out there in the cloud.</p>
<p>Thanks Grandma!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blogbaud.com/blog/2007/03/20/infinity-and-the-lamp-stack/feed/</wfw:commentRss>
		</item>
		<item>
		<title>KPI Friday</title>
		<link>http://www.blogbaud.com/blog/2007/01/15/kpi-friday/</link>
		<comments>http://www.blogbaud.com/blog/2007/01/15/kpi-friday/#comments</comments>
		<pubDate>Mon, 15 Jan 2007 17:20:23 +0000</pubDate>
		<dc:creator>Shaun Sullivan</dc:creator>
		
		<category><![CDATA[Blackbaud]]></category>

		<category><![CDATA[Infinity]]></category>

		<category><![CDATA[Internet]]></category>

		<category><![CDATA[Shaun Sullivan]]></category>

		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.blogbaud.com/2007/01/15/kpi-friday/</guid>
		<description><![CDATA[Friday I was walking through the Product Development department when the Director of Core Technologies, Paul Gibson, waved me into a developer&#8217;s cube.  I could tell by the look on their faces that they had something cool to show me.  They sure did.
Paul Crowder (the dev) has been working on implementing platform-level support [...]]]></description>
			<content:encoded><![CDATA[<p>Friday I was walking through the Product Development department when the Director of Core Technologies, Paul Gibson, waved me into a developer&#8217;s cube.  I could tell by the look on their faces that they had something cool to show me.  They sure did.</p>
<p>Paul Crowder (the dev) has been working on implementing platform-level support for KPIs (Key Performance Indicators) in our upcoming Infinity application platform.  KPIs will be featured throughout future applications built on the platform (Galileo, RE8, Bullseye etc.)  Apologies for all the code names, we&#8217;ll cover those in a future post.</p>
<h2>What are KPIs?</h2>
<p>KPIs are quantifiable measurements that reflect the health of the organization.  By quickly scanning an organization&#8217;s KPIs one should be able to get a solid idea on how things are tracking against the defined business goals.  Some examples might be:</p>
<ul>
<li>Response Rate for a direct mail segment</li>
<li>Number of gifts per day</li>
<li>Avg days to close a major gift</li>
<li>Gifts This Month</li>
<li>Cost Per Dollar Raised</li>
</ul>
<p>Those are just a few samples, but each one represents a single value that could be calculated and compared vs. an established goal.</p>
<h2>Infinity&#8217;s KPI Platform</h2>
<div style="margin-bottom:20px;margin-right:20px;float:left"><a class="imagelink" title="kpiedit.jpg" href="http://www.blogbaud.com/blog/wp-content/uploads/2007/01/kpiedit.jpg"><br />
<img id="image39" src="http://www.blogbaud.com/blog/wp-content/uploads/2007/01/kpiedit.thumbnail.jpg" alt="kpiedit.jpg" height="88" /><br />
</a><br />
<span style="position:relative;left:30;font-size:75%">Editing a KPI Definition</span></div>
<p>Infinity&#8217;s base platform support provides the following for KPIs:</p>
<ul style="position:relative;left:15px">
<li>A framework and UI for establishing, securing, and managing KPIs.</li>
<li>A way to express a goal for a KPI.</li>
<li>The ability to define warning and alert zones for a KPI as it progresses toward or deviates from it’s goal.</li>
<li>An automated process to calculate KPI values and cache those values for quick rendering at a later time.</li>
<li>A mechanism to back-calculate KPI values to establish historical trends.</li>
<li>RSS support for KPI values so they can be monitored without running the application and logging in.</li>
<li>A personal dashboard that can be customized by an end user to display the most important and relevant KPIs as the user sees fit.</li>
<li>The ability to view the dashboard outside the application from any web browser without having to log in and navigate the application (assuming the user is authenticated).</li>
<li>A stock set of KPI calculations &#8220;in the box&#8221;.</li>
<li>Advanced support for creating custom KPIs using an open, extensible XML specification. (you&#8217;ll be hearing a lot about &#8220;specs&#8221; in the Infinity platform as I discuss it in future posts&#8230;)</li>
</ul>
<p><span id="more-43"></span></p>
<div style="margin-bottom:20px;margin-left:20px;float:right"><a class="imagelink" title="kpidash.jpg" href="http://www.blogbaud.com/blog/wp-content/uploads/2007/01/kpidash.jpg"><img id="image37" src="http://www.blogbaud.com/blog/wp-content/uploads/2007/01/kpidash.thumbnail.jpg" alt="kpidash.jpg" height="96" /><br />
</a><br />
<span style="position:relative;left:0;font-size:75%">A KPI Dashboard in &#8220;Galileo&#8221;</span></div>
<p>An Infinity-powered application presents a user interface that allows organizations to define their KPIs and have the system constantly calculate them based on the data as it flows in.  Typically, you would sit down with leaders in the organization, agree on your KPIs and goals and then setup the KPIs in the system using a very simple user interface.  There is even support for back-dating them so you can have a look at quantifiable results from the past, which can be a useful benchmark from which to build on as you define your unique set of KPIs and goals.  Then the fun starts.</p>
<p>Once the KPIs have been defined they can be featured wherever you like inside and (here&#8217;s the killer part) <strong>*outside*</strong> the system!  Infinity support syndicating KPIs and alert mechanisms via auto-generated web pages, RSS feeds (which can be consumed directly by IE7 and feature rich support for sorting and filtering), and even via directly accessible AJAX-friendly web service end points!  The key point here, is since we are building all this stuff using standard open technologies like XML and Web Services, there is simply an explosion of interoperability and reach scenarios.  What &#8220;the Pauls&#8221; showed me today was a great example of leveraging that power.  So, let&#8217;s talk about what they showed me&#8230;</p>
<h2>Technology Converges on the Windows Vista Sidebar</h2>
<div style="margin-bottom:20px;margin-left:20px;float:right">
<p><a class="imagelink" title="kpivista.jpg" href="http://www.blogbaud.com/blog/wp-content/uploads/2007/01/kpivista.jpg"><img id="image41" src="http://www.blogbaud.com/blog/wp-content/uploads/2007/01/kpivista.thumbnail.jpg" alt="kpivista.jpg" height="96" /></a><br />
<span style="position:relative;left:30;font-size:75%">KPIs on the Vista Sidebar</span></p>
</div>
<p>Windows Vista has added a really nice feature for displaying graphical gadgets directly on what is referred to as the sidebar.  Its a nice unobtrusive way to have important information featured on the the desktop.  For example there is a little weather gadget that gives a graphical cue and some other info about the weather conditions at a given location.  I guess you could say a Sun is a good KPI and a Rain Cloud a bad one.  Interestingly the sidebar supports using standard Dynamic HTML and JavaScript to build custom gadgets.  When the team was discussing scenarios we wanted to support for KPI reach, we all got excited about the possibilities here.  Remember when I mentioned that Infinity exposes it&#8217;s KPI data as an AJAX-callable endpoint?  Well, add one part Vista, a little JavaScript/AJAX to call Infinity, some Dynamic HTML to present the user interface and <em>whammo</em>, you have KPIs on the desktop.  Sure, when we release this it will look prettier (the current rendering is placeholder art) but I think it&#8217;s pretty cool.</p>
<p>The true payoff of using open, standard technologies really is exciting.  When I think of all the mash up scenarios we&#8217;ll be poised to support it puts a smile on my face.  And if all this technology helps you improve the reach of information, whether it be to your boss, your board, or even your constituency I hope you&#8217;ll be smiling too.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blogbaud.com/blog/2007/01/15/kpi-friday/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A chilly (but truly warm) start to 2007</title>
		<link>http://www.blogbaud.com/blog/2007/01/03/a-chilly-but-truly-warm-start-to-2007/</link>
		<comments>http://www.blogbaud.com/blog/2007/01/03/a-chilly-but-truly-warm-start-to-2007/#comments</comments>
		<pubDate>Wed, 03 Jan 2007 16:30:34 +0000</pubDate>
		<dc:creator>Shaun Sullivan</dc:creator>
		
		<category><![CDATA[Announcements]]></category>

		<category><![CDATA[Shaun Sullivan]]></category>

		<guid isPermaLink="false">http://www.blogbaud.com/2007/01/03/a-chilly-but-truly-warm-start-to-2007/</guid>
		<description><![CDATA[First, welcome to BlogBaud!  I&#8217;m super excited about the fact that we got this kick-started.  A few of us here at ole BB have been dying to do this for a while now.  Kudos to Chad Norman for doing it the old fashioned way &#8212; do it first, then ask if it&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>First, welcome to BlogBaud!  I&#8217;m super excited about the fact that we got this kick-started.  A few of us here at ole BB have been dying to do this for a while now.  Kudos to Chad Norman for doing it the old fashioned way &#8212; do it first, then ask if it&#8217;s ok after you have built something too cool to deny <img src='http://www.blogbaud.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Every year at our conferences I get a shot of adrenaline when I get to interact with so many of our customers, so maybe we&#8217;ll get a community going here that will perpetuate that feeling year round.  <strong>Now what&#8217;s with the title to this post?</strong></p>
<p>On New Year&#8217;s Day the Sullivan family made our annual journey to <a href="http://local.live.com/default.aspx?v=2&amp;cp=32.762052~-79.834793&amp;style=r&amp;lvl=15&amp;tilt=-90&amp;dir=0&amp;alt=-1000" target="_blank">Sullivan&#8217;s Island</a> (no relation!) for the <a href="http://www.charleston.net/assets/webPages/shared/thirdParty/supplements/assets/xsea/winter.polar.html" target="_blank">Polar Bear swim</a>.  It&#8217;s an amazing event where literally thousands of people dressed in a bizarre array of &#8220;bathing attire&#8221; take a running plunge into the Atlantic at exactly 2 PM.  The swim takes place on a stretch of beach behind Dunleavy&#8217;s Pub, the event&#8217;s organizer since its inception 14 years ago.  The whole thing can simply be described as surreal. They have a great saying, &#8220;freezin&#8217; for a reason&#8221; which refers to the fact that the whole event is focused on supporting charity.  I&#8217;ve got a really good friend whose sister has Down Syndrome and I know this day warms his heart, so we do it together, along with an ever-increasing number of our sons (we have 3 each).  My 9 year old, Sammy did it this year, proclaiming &#8220;that wasn&#8217;t so bad.&#8221;</p>
<p>The vibe of the whole event is awesome, with an awareness and camaraderie born from the fact that we all know we are doing something to help someone else.  What a great way to start the year.</p>
<p>Now I probably should come clean.  This year a real polar bear would not have survived the conditions.  The air temperature&#8230;67.  The water temperature&#8230;a balmy 60.  It is South Carolina after all. However, knowing how much it means to my friend and his family, coupled with the sheer spectacle of the event, I know I&#8217;d do it no matter what the conditions are.</p>
<p>Happy New Year. We&#8217;ll &#8220;dive&#8221; into something technical next time&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blogbaud.com/blog/2007/01/03/a-chilly-but-truly-warm-start-to-2007/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
