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

<channel>
	<title>Digital Diner &#187; Sharepoint</title>
	<atom:link href="http://digitaldiner.org/category/sharepoint/feed/" rel="self" type="application/rss+xml" />
	<link>http://digitaldiner.org</link>
	<description>Gavin Clabaugh&#039;s irregular blog on irregular things.</description>
	<lastBuildDate>Tue, 05 Jan 2010 04:39:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Dumb Blobs</title>
		<link>http://digitaldiner.org/2009/11/15/dumb-blobs/</link>
		<comments>http://digitaldiner.org/2009/11/15/dumb-blobs/#comments</comments>
		<pubDate>Sun, 15 Nov 2009 21:48:57 +0000</pubDate>
		<dc:creator>Gavin Clabaugh</dc:creator>
				<category><![CDATA[NPTech]]></category>
		<category><![CDATA[Sharepoint]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web/Tech]]></category>
		<category><![CDATA[blobs]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://digitaldiner.org/?p=522</guid>
		<description><![CDATA[<p>Email — you may be addicted to it, you may hate it, abuse it, love it, or eschew it. Whatever your relationship, troubled or otherwise, email is and continues to be one of the world&#8217;s few, new, great things. When it comes to &#8220;killer-apps,&#8221; it is the undefeated heavy-weight champion of the world. Email [...]]]></description>
			<content:encoded><![CDATA[<p>Email — you may be addicted to it, you may hate it, abuse it, love it, or eschew it. Whatever your relationship, troubled or otherwise, email is and continues to be one of the world&#8217;s few, new, great things. When it comes to &#8220;killer-apps,&#8221; it is the undefeated heavy-weight champion of the world. Email is the backbone of social and commercial intercourse. Commerce flows through it, along with pain and joy, and work and play, and many of the hours of my day.</p>
<p>While you may <em>order</em> that inflatable, remote-controlled zeppelin online, the acknowledgement nevertheless comes via email, as does the receipt, and the shipping updates.</p>
<p>Email is the truck that moves freight – light and heavy – on the information-super-goat-trail. Plain, simple, elegant, boring, your-grandma-has-an-AOL-address-type email remains the venerable heavy lifter of the online world.</p>
<p>Strangely, it has also become the <em>de facto</em> identity management tool. It is universally used to authenticate just who we are, on everything from my bank to the myriad of social and anti-social real-time networking sites. When we forget just who we are, it&#8217;s the delivery method of choice to jog the memory or to trigger a reset — ironically, given how totally insecure it really is, likened to a postcard.]</p>
<p>But, the core problem with email is not security. The real problem with email is it&#8217;s really stupid. It&#8217;s dumb as a bucket of overripe bananas. I mean it. It&#8217;s really god-awful stupid. It can&#8217;t help it. It was designed that way.</p>
<p><span id="more-522"></span>When push comes to pull, with email, you really don&#8217;t get much, and that illustrates its frailty and its amazing functionality.</p>
<p>With email, you see, all you really get is an &#8220;envelope&#8221; (consisting of minor variations on &#8220;From,&#8221; &#8220;To&#8221; a &#8220;Subject&#8221; along with tiny little bits of routing data that nobody pays attention to) and a giant blob of undifferentiated stuff called a &#8220;message body.&#8221; What&#8217;s in that message body is anything, unstructured, and undifferentiated – a blob.</p>
<p>What&#8217;s in there could be secret silly croonings to your one-true love, it could be the confirmation of your getaway flight to a land without extradition, or it could be my secret recipe for the world&#8217;s best gazpacho (and hence your necessary and immediate flight from justice).</p>
<p>With email, the medium hides the message. (If I keep this up, I&#8217;m likely to be haunted by McLuhan.)</p>
<p>Since its launch in 1971, we have improved it. We&#8217;ve tweaked it and twiddled it. We&#8217;ve made it better, making it easy, for example, to stuff it with bits of binary. We&#8217;ve said goodbye and good riddance to Uuencode and its ilk. Now digital civilians needn&#8217;t know a MIME type from a mime troupe. We&#8217;ve prettied it up, too — love it or hate it — with HTML, providing that ever-so-useful ability to deliver ugly fonts, in all the sizes, shapes, and colours your little heart could desire, rendering it pretty much unreadable</p>
<p>[For the record: I think I sent my first in the fall of 1979, using a service called <a href="http://wikiworld.com/wiki/index.php/EIES_History" target="_blank">EIES</a>. I've got a copy of it around here someplace. It was a message to the fellow at the desk next to me, suggesting we get lunch at the Burrito King (tacos al carbon); truly important stuff!]</p>
<p>And, so, email moves the world, moving commerce and confirmations, in the wink of an eye. We&#8217;ve filled the tubes with everything from solicitations for various dysfunctional systems (whether erectile or congressional), to orders for <a href="http://greentealovers.com/" target="_blank">green tea</a>, multiple drafts, rewrites and painful iterations of your latest annual report, and those important PDF copies of your sinister plans for global domination through puppy adoption. They&#8217;re all sent on their respective ways via email.</p>
<p>Email is the go-to tool for everything from &#8220;donuts in the kitchen,&#8221; to presidential elections. But, inside, it&#8217;s still one dumb blob.<sup><br />
</sup></p>
<p>Blob, meet the software equivalent of <a href="http://www.imdb.com/title/tt0051418/" target="_blank">Steve McQueen</a>: Email2DB– one magnificent tool.</p>
<div id="attachment_529" class="wp-caption alignright" style="width: 277px"><img class="size-full wp-image-529" src="http://digitaldiner.org/files/2009/11/The-Blob1.png" alt="Steve McQueen (saving diners) in the Blob!" width="267" height="291" /><p class="wp-caption-text">Steve McQueen (saving diners) in the Blob!</p></div>
<div class="mceTemp">Made by Parker Software, <a href="http://www.email2db.com/" target="_blank">Email2DB</a> can turn that dumb blob into something sort of smart, stopping it before it &#8220;<em>creeps, and leaps, and glides and slides across the floor</em>.&#8221; It&#8217;s described as a &#8220;tool for integrating incoming emails with business processes.&#8221; It&#8217;s grand.</div>
<p>Email2DB has become a necessary cog in my machinery. It lets me take those dumb blobs and ferret out the necessary bits and pieces of the message, shaping them, cleaning them up, adding value in terms of structure, and then, gently slipping that data into a giant database.</p>
<p>In the best of all possible worlds, I wouldn&#8217;t have to do this. In that world, I wouldn&#8217;t be tasked with figuring out what to do with thousands email messages sent willy-nilly to just about any email address, person, or inanimate object you might care to imagine. But I do.</p>
<p>I am charged with capturing and organizing thousands of inquiries — inquiries that arrive in every way imaginable, some via a web form, others via email, and still others via such unspeakable things as (shudder) fax. I even think a few get slipped under the door at night by pixies. They&#8217;re all important, and regardless of origination, I want them all to end up in the same place — a database. Despite their disparate origins, I want them all channeled into the waiting, eager programmatic minds for review. I am all about the smooth flow of information. My motto: Never, ever, type it twice.</p>
<p>Email2DB keeps me true to my motto. In a nutshell, Email2DB &#8220;deconstructs&#8221; the email. It breaks it into its constituent parts, slicing and dicing the blob, parsing not only the header, but the contents, and gently slipping those deconstructed pieces into the database of your choice – in my case, the same-same database used to capture the content entered via a fancy online web form. <a href="http://en.wikipedia.org/wiki/Jacques_Derrida" target="_blank">Derrida</a> would be proud.</p>
<p>Well known parts of the email —like the TO, FROM, SUBJECT, DATE — as well as some of the arcane bits and pieces of the underlying protocol (Originating IP, MessageID, ReplyTo) are a breeze to deconstruct.</p>
<p>They&#8217;re &#8220;pre-programmed&#8221; into the software, and with a single mouse click, you can pull those wee bits apart and slide them into a database. It talks to all-comers: Access, SQL Server, Oracle, MySQL, Access, ODBC, yada yada yada. It&#8217;ll even write it out as a CSV if you&#8217;re living in 1996.</p>
<p style="text-align: center"> </p>
<p><span style="color:#4f81bd;font-size:9pt"><strong></strong></span>Once you&#8217;ve extracted the pieces you can use them for nefarious purposes: perhaps to construct a new message, sending back, for example, custom acknowledgments, or forwarding on reformatted confirmations, or simply adding them into a database for further processing. Email2DB takes email and turns the contents into fields and records in your favorite database.</p>
<div id="attachment_524" class="wp-caption aligncenter" style="width: 967px"><img class="size-full wp-image-524" src="http://digitaldiner.org/files/2009/11/Email2DB-diagram.jpg" alt="The Taming of the Blob -- Smart Parsing for Dumb Blobs" width="957" height="560" /><p class="wp-caption-text">The Taming of the Blob -- Smart Parsing for Dumb Blobs</p></div>
<p style="text-align: left"> </p>
<p> </p>
<p>Fancy stuff is easy. Within an hour I was rolling my own routines to parse more bits and pieces from the message, isolating the &#8220;First name&#8221; and &#8220;Last name&#8221; from the so-called &#8220;Friendly Name&#8221; portion of the &#8220;From&#8221; field. &#8220;Don&#8217;t stop there,&#8221; I said to myself.</p>
<p>So, I tackled the blob itself. With a little head-scratching, a smattering of OOP concepts under my belt (and a passing familiarity with VB), I was able to deconstruct bits of the body of the message itself, scanning through the text for familiar references that might match my mighty database elements.</p>
<p>With only a little fancy footwork, I was even able to detach any attachments, saving them with a unique &#8220;key&#8221; to a SharePoint document library, along with a PDF copy of the original message (also tagged with the same unique key).</p>
<p>The beastie will read and process messages from POP3, IMAP, and Exchange servers. It will also read and process messages directly from Outlook folders, including Exchange &#8220;Public Folders.&#8221; It has a fairly full-featured scripting language, and variables, once created are reusable.</p>
<p>While this is all well and good for me and mine, the beauty of this product is its universal application. There&#8217;s not a week goes by that someone on doesn&#8217;t ask me for the easy way to get information from a web site to a database. While there are a myriad of ways — some are easy and some are not. None are as easy as email.</p>
<p>Moreover, if it&#8217;s email generated by a web form, you control the structure. If the structure is predictable, Email2DB can easily grab that email, work with your structure, find the right bits and pieces, deconstruct them into the raw data you need, and then, easily slip that deconstructed data into an eagerly awaiting database. All is right with the world.</p>
<p>The requirements are minimal. The Email2DB software costs $300, $500 or $1,000, depending on features. I went with the $500 copy, as I needed the scripting engine and attachment processing. You need an email account (any will do, including those reached via SSL). Finally, I run it on a virtualized XP machine, rigged to autostart, autologin, and autorun, should anything interrupt its dedicated rounds.</p>
<p>Overall, the customization took about three days. I created scripts for:</p>
<ul>
<li>pattern matching to extract first and last names</li>
<li>file-renaming to save copies of the original message and attachments to a SharePoint library</li>
<li>Unique (per message) tags so that saved items could be retrieved as a group</li>
<li>URL constructions so the database could include links to the original message and attachments</li>
<li>Other custom flags for the source, date and time received, and type of inquiry</li>
</ul>
<p>Whether you&#8217;re looking to manage the email meteor shower, stave off an invasion of unstoppable email blobs, or just want to turn a few dumb ones into smartly structured data, Email2DB can do it. It&#8217;s not often you can find software that will not only stop an alien invasion, but will also send you an acknowledgement when it&#8217;s done. Steve McQueen not included.</p>
]]></content:encoded>
			<wfw:commentRss>http://digitaldiner.org/2009/11/15/dumb-blobs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Free Beer, SharePoint, and an April Fool</title>
		<link>http://digitaldiner.org/2009/05/03/april-fool/</link>
		<comments>http://digitaldiner.org/2009/05/03/april-fool/#comments</comments>
		<pubDate>Sun, 03 May 2009 14:40:34 +0000</pubDate>
		<dc:creator>Gavin Clabaugh</dc:creator>
				<category><![CDATA[Gizmos & Gadgets]]></category>
		<category><![CDATA[Sharepoint]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://digitaldiner.org/?p=332</guid>
		<description><![CDATA[<p>I thought it was a joke. Who could blame me? After all, the announcement began: “Starting on April 1, 2009…” Then again, Microsoft usually ain’t one to make “April Fool’s” jokes.</p> <p>I read the announcement again. I clicked the buttons. The download started. I double-checked the URL — “Perhaps it was a fancy phishing [...]]]></description>
			<content:encoded><![CDATA[<p>I thought it was a joke. Who could blame me? After all, the announcement began: “Starting on April 1, 2009…” Then again, Microsoft usually ain’t one to make “April Fool’s” jokes.</p>
<p>I read the announcement again. I clicked the buttons. The download started. I double-checked the URL — “Perhaps it was a fancy phishing scheme,” I thought to myself. “Better check.” “Free” often means free trouble.</p>
<p>I Googled. I got half-a-dozen links. I clicked the Wikipedia entry. It said: “<em>SharePoint Designer 2007 is available as license-restricted freeware.</em>”</p>
<p>Hey, if Wikipedia says so, it’s got to be true, right?</p>
<p>Here’s the scoop, the lowdown, the straight poop:<span id="more-332"></span></p>
<p>As of April 1, SharePoint Designer is free. Get it <a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=baa3ad86-bfc1-4bd4-9812-d9e710d44f42" target="_blank">here</a>. Now, it’s not free as in speech, but it is free as in beer. Shamelessly, let me admit here and now. I use SharePoint Designer (hereafter referred to by me as SPD). I use it almost every day. It lets me work magic. It’s a buggy piece of ssssssss…software, but it lets you do magic.</p>
<p>Since we’re talking beer, I liken SPD to <a href="http://www.mickeys.com/homepage.php" target="_blank">Mickey’s Big Mouth Ale</a> — AKA the “green grenade.” It’s kind of rough, kind of wild. But, like SPD, I also like Mickey’s — at least I did when I last drank beer. Perhaps there’s still a bit o’ cowboy in me.</p>
<p>Nevertheless, it’s one of those things I’m not sure I want to advertise — liking Mickey’s, SPD, or the cowboy part. None of them are things you’d mention in the mixed company of a crowd of open source, micro-brew city-folk.</p>
<p>But, it’s true — acceptance is the first step — I like SPD — that affection affliction goes hand in hand with my liking SharePoint. Don’t tell anyone. SharePoint rocks.</p>
<p>Like it or not, to work SharePoint, to do real SharePoint magic, you need SPD. It ain’t a luxury, it’s a necessity. Moreover, you don’t want to touch SharePoint with FrontPage. You don’t even want FrontPage to flirt casually with IIS when it’s hosting SharePoint. You don’t even want it to sidle up and try to buy it drinks, casual-like.</p>
<p>FrontPage will break SharePoint quicker than you can say “Joomla.”</p>
<p>On the other hand, with SPD, a little bit of undaunted adventurism, and some cowboyish <em>bonhomie</em>, you can work magic — good magic as well as some of the sinister dark arts, things like custom workflows, fancy dataviews, and point-and-click connections to XML webservices. Welcome to the dark side.</p>
<p>In fact, it’s SPD that will let you turn that all-too-boring look of SharePoint into something almost purty. It’s all there, it’s all in SPD, and now it’s free.</p>
<p>Let me warn you though. Like that green grenade, SPD is big, and brash, and none too gentle in its approach. You know what they say about “operating heavy machinery.” SPD does not have a light touch. The fact of the matter is, SPD can wreak havoc — breaking a MOSS or WSS site in two shakes of a lamb’s tail. Moreover, it’s prone to crash — especially when messing about with the dark arts of dataviews.</p>
<p>I’ve learned. One must use the “undo” button judiciously. Moreover, it’s wise to only create (and destroy) web parts in a temporary environment; you should, at the very least, isolate your cowboy antics to a subsite for god’s sake, if not a stand-alone development environment.</p>
<p>[On the other hand, that’s the nice thing about webparts — do ‘em right and once you get them done and all nice and shiny-like, just the way you want ‘em, they’re easy to move about. Importing (and exporting) is easy. I typically develop my parts on a stand-alone WSS site, and then import them into MOSS when they are acting proper. Sure, this is just good sense, but the portable nature of web parts makes this pretty easy too. ]</p>
<p><span style="text-decoration: underline">The Dark Arts: Custom Workflows</span></p>
<p>One of the extras you get with SPD is custom workflows. SharePoint OOTB workflows suck. Custom workflows are magic — black magic, pure and simple — and they are, to me, an example that the IT industry has finally managed to somewhat lessen the gap between the marketeer’s hype and the reality of real-life computing. Perhaps we are finally seeing the age of integrated software that actually interoperates, does what it says it does, and makes your teeth whiter, your hair thicker and more luxurious.</p>
<p>Back to the magic: workflows are magic. Incredibly, with SPD, custom workflows are at your fingertips for no extra costs; a standard feature in both MOSS and WSS. All it takes is SharePoint Designer. Sure, it’s not K2 — then K2 is slightly more expensive.</p>
<p>Here’s a simple example:</p>
<p>We scan lots of documents. We use a fancy scanner. It connects to an automated, server-based PDF conversion and fancy OCR system. It not only scans and converts the docs to PDFs, it also automatically tags them with custom metadata before sliding them smartly into a SharePoint document library. It tags them using information the OCR system pulls from a custom coversheet. It works. It’s great, except for some persnickety problems with people’s names.</p>
<p>For reasons only known to the gods of OCR, some <em>particular</em> names never seem to make it through the OCR process intact. Moreover, they are <em>predictably</em> wrong. I won’t say the original names, but my two favorite OCR errors end up as: PASSMOKE and SLANDER. And, while that might make a terrific name for a law firm, I wanted zero defects.</p>
<p>My solution, on the other hand, was rather simple. I used a simple SharePoint workflow. With a workflow it was easy to fix. In fact, my first cut was done in less than 5 minutes.</p>
<p>In a nutshell, I created a workflow that examined all new documents, looked at the metadata for the known OCR errors, and, in the wink of an eye, corrected them. No muss, no fuss, no kitchen drudgery. It only took two steps. Here’s how:</p>
<p><strong>Step zero:</strong></p>
<p>Using SPD, attach to the proper site and create a new workflow. You find it under File/New/Workflow.</p>
<p><strong>Step one: </strong></p>
<p>You see a screen like this. This is the toughest part. You’ve got to name it. While you’re here, you choose if you want it to start automatically and/or if you want it so you can start it manually. All this can be changed later, so — while debugging — I choose “manual.” Once it’s all smooth sailing, I switch it over to automatic.</p>
<p>Here, you also choose what list or document library or other SharePoint item you want to attach the workflow to. This is the downside of workflows, by the way. They have to be attached to a SharePoint item and once attached, they’re stuck there. This means that you absolutely have to develop the thing in a production environment. Steel your nerves and quaff that grenade.</p>
<p align="center"><a href="http://digitaldiner.org/files/2009/05/image.png"><img src="http://digitaldiner.org/files/2009/05/image-thumb.png" border="0" alt="image" width="244" height="192" /></a></p>
<p><strong>Step Two:</strong></p>
<p>Once you’ve named it and attached it to a SharePoint item, you get presented with a set of screens that allow you to build your workflow steps based upon various conditions and variables. The nice thing — starting off — it’s all point and click.</p>
<p align="center"><a href="http://digitaldiner.org/files/2009/05/image1.png"><img src="http://digitaldiner.org/files/2009/05/image-thumb1.png" border="0" alt="image" width="244" height="196" /></a></p>
<p>In this example, I use a set of simple IF/THEN conditions. Basically:</p>
<p>o IF [STAFF] equals “SLANDER”</p>
<p>o THEN set [STAFF] to “Correct Name”</p>
<p>Since the universe of errors is relatively small, it could work to simply hardcode the various cases, one after another. That’s it in a nutshell.</p>
<p><strong>Step just-push-the-buttons:</strong></p>
<p>Now, in reality, I got fancier. Not wanting to hard-code a series of problematic names forever, I instead decided to use an existing table of staff names — treating it as a lookup table.</p>
<p>SharePoint workflows can perform limited lookups, matching information in one list to fields in another. It can then, based upon that match, substitute one value for another.</p>
<p align="center"><a href="http://digitaldiner.org/files/2009/05/image2.png"><img src="http://digitaldiner.org/files/2009/05/image-thumb2.png" border="0" alt="image" width="244" height="237" /></a></p>
<p>In this example, the workflow fixes my SLANDER problem by checking a list of possible errors stored in one list, finding the proper name based on that match, and then slips it into the original field, correcting the error.</p>
<p>It takes a bit of puzzling to get the logic straight — and if you ask me, all the help text just adds to the confusion. In the end, I found that just clicking the options — in a logical order — worked. Like most Microsoft products anymore, over-thinking can get you in trouble. Just push the buttons.</p>
]]></content:encoded>
			<wfw:commentRss>http://digitaldiner.org/2009/05/03/april-fool/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Skype Me, Dr. Memory!</title>
		<link>http://digitaldiner.org/2008/02/21/skype-me-dr-memory/</link>
		<comments>http://digitaldiner.org/2008/02/21/skype-me-dr-memory/#comments</comments>
		<pubDate>Fri, 22 Feb 2008 04:44:16 +0000</pubDate>
		<dc:creator>Gavin Clabaugh</dc:creator>
				<category><![CDATA[NPTech]]></category>
		<category><![CDATA[Sharepoint]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Telephony]]></category>
		<category><![CDATA[Web/Tech]]></category>

		<guid isPermaLink="false">http://www.digitaldiner.org/2008/02/21/skype-me-dr-memory/</guid>
		<description><![CDATA[<p>A few days ago, a reader of this humble blog asked if I knew a way to embed &#8220;Skype Presence&#8221; in a SharePoint Web Part.</p> <p>I didn&#8217;t. But, I was intrigued. (That&#8217;s a bad sign… as it usually means I&#8217;m going to stay up until the wee hours.)</p> <p>It turns out to be pretty [...]]]></description>
			<content:encoded><![CDATA[<p>A few days ago, a reader of this humble blog asked if I knew a way to embed &#8220;Skype Presence&#8221; in a SharePoint Web Part.</p>
<p>I didn&#8217;t. But, I was intrigued. (That&#8217;s a bad sign… as it usually means I&#8217;m going to stay up until the wee hours.)</p>
<p>It turns out to be pretty easy-breezy, with a few caveats. I&#8217;ll explain those below. It&#8217;s easy because lots of stuff today is &#8220;widgetized.&#8221; A few minutes on the Skype site turned up some Skype web-widgets—– basically HTML code one can embed on a blog or web page — that gave me what I needed: HTML that would display Skype &#8220;presence&#8221; by Skype name (what I call a SkypeID).</p>
<p>Realize, I&#8217;m no code slinger, but it looked to me that one could simply modify the HTML, adding in different Skype names, and then stack it up in a CEWP. So that&#8217;s what I did.<span id="more-237"></span></p>
<p>That&#8217;s it. Once again, the Content Editor Web Part (AKA: CEWP) is a wily rascal. It can do the most amazing things. The HTML itself is pretty simple. It consists of a small scriptlet, and some basic HTML. Here it is in a screen shot:</p>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2008/02/022208-0444-skypemedrm12.png" alt="" /></p>
<p>I&#8217;ve highlighted the areas you need to change – basically substituting the appropriate SKYPEID in the yellow areas, and/or the appropriate &#8220;friendly name&#8221; at the bottom. That&#8217;s the basics.</p>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2008/02/022208-0444-skypemedrm22.png" alt="" /></p>
<p>My first attempted yielded the result above — a webpart with my Skype status and name. If you click on the &#8220;I&#8217;m Online&#8221; graphic, it launches Skype and tries to make the call (via Skype, of course).</p>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2008/02/022208-0444-skypemedrm32.png" alt="" /></p>
<p style="text-align: center"><span style="font-size: 9pt;color: #4f81bd"><strong>Silly Rabbit, Trix is for Kids<br />
</strong></span></p>
<p>I tried it, but some wiseass at Skype designed it so you can&#8217;t call yourself. (Grumble – what fun is that!). Anyway, this all once again shows how truly neat the CEWP is.</p>
<p>Now I decided to get fancy — after all it was still early. I decided to set up a nice format, a table, light border, etc. Just because, I also decided to see how it handled multiple Skype accounts in the same part.</p>
<p>Not a problem, it turns out. I just had to cut-and-paste the code, changing the embedded SkypeID in two places, and inserting a &#8220;Friendly Name&#8221; so that it looked nice on the screen. It&#8217;s all pretty straight HTML. No muss, no fuss, and — no kitchen drudgery.</p>
<p>Here&#8217;s the final screen shot:</p>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2008/02/022208-0444-skypemedrm42.png" alt="" /></p>
<p style="text-align: center"><span style="font-size: 9pt;color: #4f81bd"><strong>Schizophrenic Skype Status<br />
</strong></span></p>
<p>The caveats and other bits:</p>
<ol>
<li>You&#8217;ve gotta have a Skype account to use this. And, you have to have Skype loaded to use the button to call someone. If you don&#8217;t have Skype, you&#8217;ve wasted your time reading this anyway.</li>
<li>This is just stacking up the standard Skype &#8220;Skype Me&#8221; widgets. You can find other ones here: <a href="http://www.skype.com/intl/en/share/buttons/">http://www.skype.com/intl/en/share/buttons/</a></li>
<li>I&#8217;ve not a clue what kind of demand this puts on SharePoint — but since this is all &#8220;client-side&#8221; code, it shouldn&#8217;t be a problem.</li>
<li>The trick here is the Content Editor Web Part. Make it your friend.</li>
<li>I did this originally in MOSS, and then duplicated it in WSS, just to make sure that it worked in both environments. It does.</li>
<li>This Skype status does NOT refresh unless you reload the page. Hence just leaving the page loaded might result in inaccurate &#8220;presence&#8221; information. [I looked at a few methods to automatically refresh, but nothing seemed elegant, and the easy answer would refresh the entire page.]</li>
<li>Use at your own risk.</li>
</ol>
<p>I&#8217;ve appended the final code below, and I put an exported copy of the webpart up <a href="http://cid-b3dd0f79ba95fb8d.skydrive.live.com/self.aspx/Public/CEWP-Generic_Skype_Presence.dwp">here</a>. Feel free to download and abuse. You&#8217;ll need to edit the code and insert the desired SkypeIDs and dup the sections for additional IDs.</p>
<p>Finally — and I say this seriously — Caveat Emptor and all that jazz. I offer no guarantees. I distribute this free of all responsibility and liability, use and/or abuse at your own risk. It should give you no problems, but if it does, well… I&#8217;ve left town, and I&#8217;m living with the dogs on the Dalmatian coast.</p>
<p><span style="text-decoration: underline">Content Editor Web Part – Code for Skype Presence embedded on WSS site.<br />
</span></p>
<p>Note the areas you&#8217;ll need to edit and change. You must replace the text &#8220;SKYPE_IDn&#8221; and &#8220;Friendly_Name&#8221; with a real Skype IDs and really friendly name.</p>
<table border="0">
<tbody>
<tr>
<td style="padding-right: 7px;padding-left: 7px;border: black 0.5pt solid">
<p style="text-align: center">Content Editor Web Part – Skype Presence</p>
</td>
</tr>
<tr>
<td style="padding-right: 7px;padding-left: 7px"><span style="font-size: 8pt">&lt;!&#8211; Caveat Emptor! I make no warranties that this will work &#8211;&gt;<br />
</span><span style="font-size: 8pt">&lt;!&#8211; In fact, I make no warranties at all. You use this at your own risk &#8211;&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;!—I mean that. I&#8217;m not responsible if your naughty bits fall off &#8211;&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;style type=&#8221;text/css&#8221;&gt;<br />
</span></p>
<p><span style="font-size: 8pt">.style1<br />
</span></p>
<p><span style="font-size: 8pt">{<br />
</span></p>
<p><span style="font-size: 8pt">    font-family: Tahoma;<br />
</span></p>
<p><span style="font-size: 8pt">}<br />
</span></p>
<p><span style="font-size: 8pt">.style2 {<br />
</span></p>
<p><span style="font-size: 8pt">    border-style: solid;<br />
</span></p>
<p><span style="font-size: 8pt">    border-width: 1px;<br />
</span></p>
<p><span style="font-size: 8pt">    font-family: Tahoma;<br />
</span></p>
<p><span style="font-size: 8pt">    font-size: medium;<br />
</span></p>
<p><span style="font-size: 8pt">}<br />
</span></p>
<p><span style="font-size: 8pt">.style3 {<br />
</span></p>
<p><span style="font-size: 8pt">    border-style: solid;<br />
</span></p>
<p><span style="font-size: 8pt">    border-width: 1px;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;/style&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;Center&gt;<br />
</span></p>
<p><span style="font-size: 8pt">Skype Status &#8212; Click to Call<br />
</span></p>
<p><span style="font-size: 8pt">&lt;/Center&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;script type=&#8221;text/javascript&#8221; src=&#8221;http://download.skype.com/share/skypebuttons/js/skypeCheck.js&#8221; mce_src=&#8221;http://download.skype.com/share/skypebuttons/js/skypeCheck.js&#8221;&gt;&lt;/script&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;table style=&#8221;width: 100%&#8221;&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;!&#8211; BEGIN ReUsable SECTION &#8211; duplicate the section below once for each SkypeID<br />
</span></p>
<p><span style="font-size: 8pt">&lt;!&#8211; Change SKYPE_ID and Friendly Name &#8211;&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;!&#8211; BEGIN &#8211;&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;tr&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;td style=&#8221;width: 200px; height: 44px&#8221; class=&#8221;style3&#8243;&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;span class=&#8221;style1&#8243;&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;a href=&#8221;skype:<span>SKYPE_ID1</span>?call&#8221;&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;img src=&#8221;http://mystatus.skype.com/bigclassic/<span>SKYPE_ID1</span>&#8221; style=&#8221;border: none;&#8221; alt=&#8221;Click to Skype&#8221; /&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;/a&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;/span&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;/td&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;td class=&#8221;style2&#8243;&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;strong&gt;  <br />
</span></p>
<p><span style="font-size: 8pt"><span>FRIENDLY_NAME1</span><br />
</span></p>
<p><span style="font-size: 8pt">&lt;/strong&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;/td&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;/tr&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;!&#8211; END &#8211;&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;!&#8211; BEGIN &#8211;&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;tr&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;td style=&#8221;width: 200px; height: 44px&#8221; class=&#8221;style3&#8243;&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;span class=&#8221;style1&#8243;&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;a href=&#8221;skype:<span>SKYPE_ID2</span>?call&#8221;&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;img src=&#8221;http://mystatus.skype.com/bigclassic/<span>SKYPE_ID2</span>&#8221; style=&#8221;border: none;&#8221; alt=&#8221;Click to Skype&#8221; /&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;/a&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;/span&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;/td&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;td class=&#8221;style2&#8243;&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;strong&gt;  <br />
</span></p>
<p><span style="font-size: 8pt"><span>FRIENDLY_NAME2</span><br />
</span></p>
<p><span style="font-size: 8pt">&lt;/strong&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;/td&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;/tr&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;!&#8211; END &#8211;&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;!&#8211; END DUPLICATE SECTION &#8211;&gt;<br />
</span></p>
<p><span style="font-size: 8pt">&lt;/table&gt;<br />
</span></td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://digitaldiner.org/2008/02/21/skype-me-dr-memory/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Cracking the Cuneiform Code — The KM Supremacy (2 of 2)</title>
		<link>http://digitaldiner.org/2007/11/22/cracking-the-cuneiform-code-%e2%80%94-the-km-supremacy-2-of-2/</link>
		<comments>http://digitaldiner.org/2007/11/22/cracking-the-cuneiform-code-%e2%80%94-the-km-supremacy-2-of-2/#comments</comments>
		<pubDate>Thu, 22 Nov 2007 17:08:42 +0000</pubDate>
		<dc:creator>Gavin Clabaugh</dc:creator>
				<category><![CDATA[Chumpness]]></category>
		<category><![CDATA[NPTech]]></category>
		<category><![CDATA[Sharepoint]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.digitaldiner.org/2007/11/22/cracking-the-cuneiform-code-%e2%80%94-the-km-supremacy-2-of-2/</guid>
		<description><![CDATA[<p>[The exciting sequel to "The Cuneiform Code"] </p> <p>Having established the elements, theories, and principles, what I really wanted was pretty simple. I know what I wanted to keep (element one); I had a place to keep it (element two); and what I thought was a simple way to find it all again (element [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: #7f7f7f">[The </span><span style="color: #4f81bd"><em>exciting</em></span><span style="color: #7f7f7f"> sequel to "<a href="http://www.digitaldiner.org/2007/11/22/the-cuneiform-code-1-of-2/" target="_blank">The Cuneiform Code</a>"]<br />
</span></p>
<p>Having established the elements, theories, and principles, what I really wanted was pretty simple. I know what I wanted to keep (element one); I had a place to keep it (element two); and what I thought was a simple way to find it all again (element three).</p>
<p><span style="text-decoration: underline">Element One — Know what you want to keep:</span></p>
<p>What I wanted to keep were all the bits and pieces of information that are crucial to a sane IT operation. Here&#8217;s the dirty secret. There is a vast amount of stuff — facts, figures, incantations, mystical folklore, secret handshakes, twiddles and tweaks — that IT folks have to remember to keep tens or hundreds or thousands of computers happy and healthy. There&#8217;s even more to remember if you want to keep a vast army of squeaky users happy and healthy too. To most folks IT stuff is voodoo. I needed a simple system to remember all the voodoo, <a href="http://en.wikipedia.org/wiki/Legba" target="_blank">Papa Legba</a> be dammed. What I wanted was a simple system to track all these assorted permutations, combinations, and incantations.<span id="more-222"></span></p>
<p><span style="color: #4f81bd">[My secret goal was to simply avoid the 11<sup>th</sup> circle of IT hell — the hell where all bad programmers go, along with whoever invented the concept of "opt-out" email. (It should be "opt-in," you bastard — no fruit baskets for you! Oops that slipped out.)<br />
</span></p>
<p><span style="color: #4f81bd">It's a hell composed of forever clicking "Next" again and again and again, while simultaneously explaining how to print an envelope with Word. It's a hell where all three heads of Cerberus nip gently at your heels while you un-jam a printer. It's a hell where you are forced, again and again, to diagnose why "X" program doesn't play nice-nice with "Y" program.]</span></p>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/11/112207-1708-crackingthe1.png" alt="" /></p>
<p>So, I needed a knowledgebase. My knowledgebase will serve as a repository for a host of esoteric knowledge, making it easy find again, right at my proverbial fingertips, so it&#8217;s there, when memory fails — a shared repository of the critical yet esoteric. By the way, the <em>sharing</em> aspect is as crucial as the &#8220;keeping it simple&#8221; part. It does no good if I know it and others don&#8217;t. Those &#8220;others&#8221; must be able to find it too.</p>
<p><span style="text-decoration: underline">Element Two — Have an organized place to keep it:<span style="color: #7f7f7f"><br />
</span></span></p>
<p>Abraham Maslow once observed &#8220;<em>When the only tool you own is a hammer, every problem resembles a nail.</em>&#8221;</p>
<p><span style="color: #7f7f7f">[My variant on Maslow is: "When all you have is a hammer, you're bound to hit your thumb. So swing lightly." My father's variant on this was: "Nothing screws things up faster than a power tool." With a power tool, you're likely not just to hit your thumb, but cut it, and a portion of your arm, clean off. Beware the power tool. ]<br />
</span></p>
<p>It&#8217;s only natural I suppose, that when I wanted to build a knowledgebase, I turned to my preferred hammer, SharePoint. I&#8217;m sure there are other options. Maslow aside, SharePoint is well suited to the task. It&#8217;s perfect — really. It hits all the criteria. In fact, a couple of features in MOSS make this a cakewalk — specifically these new things called &#8220;email-enabled document libraries.&#8221; This feature, new to MOSS, eliminates a dozen headaches. Moreover, they make it easy to feed the beast. Email-enabled document libraries are also kind of smart. MOSS is a power tool, though, swing lightly.</p>
<p>First, using email-enabled document libraries, a knowledgebase is easy to feed. People already spend their days inside of Outlook; I figured I might as well capitalize on that. Second, MOSS&#8217;s document libraries are flexible. They&#8217;re flexible enough that they handle just about everything I&#8217;ve thrown — or emailed — at them, including multiple attachments, mixed attachments, weird attachments, and Buddhist email (no attachments).</p>
<p><span style="text-decoration: underline">Element Three: Have a Way to Find It Again<br />
</span></p>
<p>Finally, the &#8220;easy retrieval&#8221; requirement is well met by SharePoint, almost out of the box. Once you twiddle with it a bit, SharePoint&#8217;s indexing is terrific. It handles all &#8220;Office&#8221; documents, including (important for me) Visio drawings. I tend to think in pictures and flow charts drawn on napkins and, subsequently, translated to Visio. Other file types are a piece of cake too, as the search engine is extensible via add-ins called IFilters. There are IFilters available for PDFs, and JPGs, and MP3s, and all sorts of other stuff. Find a list <a href="http://channel9.msdn.com/wiki/default.aspx/Channel9.DesktopSearchIFilters" target="_blank">here</a>. There&#8217;s a filter for just about everything, from GIF&#8217;s, to TIF&#8217;s, through ZIP&#8217;s.</p>
<p><span style="text-decoration: underline">Creating and Feeding the Beast:<br />
</span></p>
<p>With SharePoint, feeding the beast is easy. You can send it an email message; you can send it attachments via email. SharePoint will magically convert the message to a file and put it in the document library. Along the way, it takes all the information it can from the email system and adds it as metadata, automatically. Everything — metadata, message and attachment(s) — are completely searchable.</p>
<p>Anything mailed to the library gets the following information automatically added as related metadata:</p>
<table border="0">
<tbody>
<tr>
<td style="padding-right: 7px;padding-left: 7px;border: black 0.5pt solid" colspan="3">
<p style="text-align: center"><span style="font-size: 10pt"><em>MOSS (SharePoint) Mail-Enabled Document Library Metadata</em></span></p>
</td>
</tr>
<tr>
<td style="padding-right: 7px;padding-left: 7px">
<p style="text-align: center"><span style="font-size: 8pt;color: #7f7f7f"><em>Email Fields</em></span></p>
</td>
<td style="padding-right: 7px;padding-left: 7px">
<p style="text-align: center"><span style="font-size: 8pt;color: #7f7f7f"><em>Document Fields</em></span></p>
</td>
<td style="padding-right: 7px;padding-left: 7px">
<p style="text-align: center"><span style="font-size: 8pt;color: #7f7f7f"><em>SharePoint Fields</em></span></p>
</td>
</tr>
<tr>
<td style="padding-right: 7px;padding-left: 7px"><span style="font-size: 8pt">To:(contents)<br />
</span><span style="font-size: 8pt">From: (contents)<br />
</span><span style="font-size: 8pt">CC: (contents)<br />
</span><span style="font-size: 8pt">Sender: (contents)<br />
</span></p>
<p><span style="font-size: 8pt">Subject: (contents)</span></td>
<td style="padding-right: 7px;padding-left: 7px"><span style="font-size: 8pt">Title: (Office Title)<br />
</span><span style="font-size: 8pt">File Size (bytes)<br />
</span><span style="font-size: 8pt">FileType (extension)<br />
</span></td>
<td style="padding-right: 7px;padding-left: 7px"><span style="font-size: 8pt">Created (Date)<br />
</span><span style="font-size: 8pt">Created by (AD)<br />
</span><span style="font-size: 8pt">Modified (Date)<br />
</span><span style="font-size: 8pt">Modified By (AD)<br />
</span></p>
<p><span style="font-size: 8pt">Version (for versioning)</span></td>
</tr>
</tbody>
</table>
<p>I added one additional field — a calculated field to store the concatenated value of the &#8220;Title&#8221; field and the &#8220;Subject&#8221; field. This is just so I have one field that contains either the &#8220;Title&#8221; or the &#8220;Subject,&#8221; instead of having to look at two separate fields. As such, if one or the other was blank, it didn&#8217;t matter.</p>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/11/112207-1708-crackingthe2.png" alt="" /></p>
<p style="text-align: center"><span style="font-size: 9pt;color: #4f81bd"><strong>Helpdesk Site Showing IS Knowledgebase View<br />
</strong></span></p>
<p>When you email an item, SharePoint automatically detaches any attachments and saves them with the same metadata as the message (From, Subject, etc). As I mentioned, you can also feed the document library directly, dropping files directly into it, uploading, or by saving files to it from any Office application. You can even set it up as a mapped drive, should you want to. True to my needs, it handles just about anything, including images and Visio drawings, as well as Word documents, Excel spreadsheets, PDF documents, and the body of an email message.</p>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/11/112207-1708-crackingthe3.png" alt="" /></p>
<p style="text-align: center"><span style="font-size: 9pt;color: #4f81bd"><strong>Knowledgebase — View Showing Items Grouped in Folders by &#8220;From&#8221; Address<br />
</strong></span></p>
<p>There is one nice option called &#8220;Group Attachments in Folder.&#8221; This option lets you decide to have MOSS automatically store things in folders based on the &#8220;Subject&#8221; or &#8220;From&#8221; field of the email message. I show a view of this above. I chose to group by &#8220;From&#8221; — neatly organizing the stuff by each contributor to the knowledgebase.</p>
<p>(Note: As you&#8217;ll notice in the above screen capture, I&#8217;ve once again mucked up the names and such. This is to protect the appropriately paranoid. I&#8217;ve left most of my info stand as is — it&#8217;s too late for me to be paranoid.)</p>
<p>If you turn on the &#8220;From&#8221; grouping option, items sent to the Knowledgebase are automatically sorted and filed into folders named for the originator&#8217;s email address. It creates the folder automagically. All the stuff I send goes into a folder named for me. Stuff from other people is automatically sorted into their own folders.</p>
<p>I should note that getting the mail-enabled features to work took some effort. I had to tweak it. In the end, I followed a guide from a site called &#8220;Combined Knowledge&#8221; verbatim. Here&#8217;s a <a href="http://www.combined-knowledge.com/Downloads/How%20to%20configure%20Email%20Enabled%20Lists%20in%20Moss2007%20RTM%20using%20Exchange%202003.pdf" target="_blank">link</a> to the PDF.</p>
<p>(I emailed a copy to our Knowledgebase, by the way — illustrating the rule that you must use it to make it worthwhile. See it works!)</p>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/11/112207-1708-crackingthe4.png" alt="" /></p>
<p style="text-align: center"><span style="font-size: 9pt;color: #4f81bd"><strong>Knowledgebase — Standard View Showing Basic and Custom Metadata<br />
</strong></span></p>
<p>In addition to the regular metadata fields, you can &#8220;roll your own,&#8221; adding as many fields and types and other crap as you might need. (So far we haven&#8217;t needed to add any. )The sky (and your imagination) is the limit. Beware, however, if you create the beast, you must feed the beast. Keep it simple.</p>
<p>In the end, I ended up with a simple, inexpensive system for managing information, something that met all my particular, curmudgeonly needs. A system that:</p>
<ul>
<li>Accepts any sort of information I can throw at it, including documents, pictures, diagrams, web pages, and just about anything else that can be digitized.</li>
<li>Accepts that sort of stuff via all imaginable methods, including &#8220;drag and drop&#8221;, email, scanners, upload, and regular old file/folder access</li>
<li>Automatically tracks the &#8220;who, what and when&#8221; in metadata (who put it there or who changed it, when they did it, and what it is).</li>
<li>Is customizable and flexible (because, well, I&#8217;m going to customize it, like it or not);</li>
<li>Is easy to search — a &#8220;Google-like&#8221; interface, except none of those annoying ads about linoleum, free cell phones, or timeshares in Essakane.</li>
</ul>
<p>Nevertheless, the most important lesson in all this is clear: Never <img src="http://digitaldiner.org/files/2007/11/112207-1708-crackingthe5.jpg" alt="" />, unless, of course, you <img src="http://digitaldiner.org/files/2007/11/112207-1708-crackingthe6.jpg" alt="" /> the <img src="http://digitaldiner.org/files/2007/11/112207-1708-crackingthe7.jpg" alt="" /> and <img src="http://digitaldiner.org/files/2007/11/112207-1708-crackingthe8.jpg" alt="" /> first. Everything else pales in comparison. Oh, and watch your thumbs.</p>
]]></content:encoded>
			<wfw:commentRss>http://digitaldiner.org/2007/11/22/cracking-the-cuneiform-code-%e2%80%94-the-km-supremacy-2-of-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Cuneiform Code (1 of 2)</title>
		<link>http://digitaldiner.org/2007/11/22/the-cuneiform-code-1-of-2/</link>
		<comments>http://digitaldiner.org/2007/11/22/the-cuneiform-code-1-of-2/#comments</comments>
		<pubDate>Thu, 22 Nov 2007 17:04:34 +0000</pubDate>
		<dc:creator>Gavin Clabaugh</dc:creator>
				<category><![CDATA[Chumpness]]></category>
		<category><![CDATA[NPTech]]></category>
		<category><![CDATA[Sharepoint]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.digitaldiner.org/2007/11/22/the-cuneiform-code-1-of-2/</guid>
		<description><![CDATA[<p>In theory, knowledge management is easy. Then again, in theory, lots of things are easy. In practice, things are never quite as easy as they sound. Nevertheless, lightly armed, I set out to put a few of my theories into practice.</p> <p>There are three essential theoretical elements to effective knowledge management. I call these [...]]]></description>
			<content:encoded><![CDATA[<p>In theory, knowledge management is easy. Then again, in theory, lots of things are easy. In practice, things are never quite as easy as they sound. Nevertheless, lightly armed, I set out to put a few of my theories into practice.</p>
<p>There are three essential theoretical elements to effective knowledge management. I call these &#8220;Gavin&#8217;s Three Essential Theoretical Elements To Effective Knowledge Management.&#8221; Unfortunately, &#8220;GTETETEKM&#8221; does not lend itself to a memorable mnemonic, so let&#8217;s just call these the &#8220;KM-3.&#8221;<span id="more-213"></span></p>
<table border="0">
<tbody>
<tr>
<td style="padding-right: 7px;padding-left: 7px;border: black 0.5pt solid" colspan="2">
<p style="text-align: center"><strong><em>The KM-3</em></strong></p>
</td>
</tr>
<tr>
<td style="padding-right: 7px;padding-left: 7px">Element One:</td>
<td style="padding-right: 7px;padding-left: 7px"><strong>Have a clear idea of the things you want to keep. Throw out the rest. </strong>Have a clear idea of what defines &#8220;knowledge&#8221; and have a clear editorial/creative process to reward its capture and codification. [Conversely, have a clear idea of what defines "garbage" and have a clear process for throwing it away. Reward that too.] Remember Sturgeon&#8217;s Law — 90 percent of everything is crap. (My Outlook inbox is a case in point. So&#8217;s yours, I reckon.) This, by the way, is the absolute heart of effective knowledge management. Not your inbox — throwing things away. It&#8217;s also the toughest part. Once you figure out what to keep and what to trash, it&#8217;s all downhill.</td>
</tr>
<tr>
<td style="padding-right: 7px;padding-left: 7px">Element Two</td>
<td style="padding-right: 7px;padding-left: 7px"><strong>Know where to keep things: have an organized, centralized place that everybody knows and everybody uses</strong>. This can just be one big pile someplace — a relatively undifferentiated document repository. It should be somewhat organized, but <em>the structure should reflect your security</em> and access needs, not topics or categories. Radical, I know. Read on, McDuff.</td>
</tr>
<tr>
<td style="padding-right: 7px;padding-left: 7px">Element Three</td>
<td style="padding-right: 7px;padding-left: 7px"><strong>Have an EASY way to find it again, quickly and easily, without the need for some specialized knowledge or secret decoder ring. </strong>This used to require a good controlled vocabulary (read: taxonomy) and lots of scribes, or librarians, or subject matter experts, or magicians, and filing cabinets. Now it requires a good search engine with some kind of ranking or sorting algorithm, an easy search syntax, and an easy to understand interface. Think Google, without the ads please.</td>
</tr>
</tbody>
</table>
<p>As I said, in theory, Knowledge Management is easy. In practice, organizations usually ignore the first element (especially the garbage part), do a half-assed job on the second, and muck up the third totally.</p>
<p>Moreover, the whole thing gets usually gets derailed when someone brings up the dreaded &#8220;T-Word&#8221; — Taxonomy. When you hear that word, it&#8217;s time to run screaming from the room. It&#8217;s a sure sign that you&#8217;re going to spend the next year in meetings trying to figure out how to &#8220;accurately&#8221; classify socks, or rocks, or ethnicity, or nationality, or <a href="http://www.digitaldiner.org/2007/01/12/this-chump%E2%80%99s-for-you/" target="_blank">chumps</a>. The trouble is the world does not fall easily into logical groupings. For example, is Russia part of Europe or Asia? [It's a trick question. The answer is "yes."]</p>
<p>If you must, when in doubt — if you need one — use an existing taxonomy. You&#8217;ll save yourself a truckload of heartache. Trust me here — I know trucks and I know heartache. In fact, be daring, live life on the edge and don&#8217;t use a taxonomy at all!</p>
<p>Wait. Stop… Before you beat me about the head and ears with a leather-bound copy of the Library of Congress Classification System (or worse, the National Taxonomy of Exempt Entities), let me explain:</p>
<p>You see, there&#8217;s been a war going on for the last 5,000 years, give or take a Tuesday or two. It probably started with the first scribes in <a href="http://en.wikipedia.org/wiki/Sumer" target="_blank">Sumer</a>, as they struggled to do something with their ever-multiplying cuneiform tablets. Some, no doubt, wanted to keep them all stacked on their desks, while others wanted to file them away, sorted and organized, all the <img src="http://digitaldiner.org/files/2007/11/112207-1704-thecuneifor1.jpg" alt="" /> stuff in one place, all the <img src="http://digitaldiner.org/files/2007/11/112207-1704-thecuneifor2.jpg" alt="" /> stuff in another, and all the other <img src="http://digitaldiner.org/files/2007/11/112207-1704-thecuneifor3.jpg" alt="" /> stuff in a third. Never mind that no one had invented file cabinets yet.</p>
<p>Anyway, thus was born the first controlled vocabulary, the first taxonomy. There was no doubt a memo stating, unequivocally, that all clay tablets should be filed either as <img src="http://digitaldiner.org/files/2007/11/112207-1704-thecuneifor4.jpg" alt="" />, <img src="http://digitaldiner.org/files/2007/11/112207-1704-thecuneifor5.jpg" alt="" />, or as<img src="http://digitaldiner.org/files/2007/11/112207-1704-thecuneifor6.jpg" alt="" />, upon pain of death or promotion.</p>
<p>[There was also all the <img src="http://digitaldiner.org/files/2007/11/112207-1704-thecuneifor7.jpg" alt="" /> stuff , but, I suppose it's best not to mention that, at least not in polite company.]</p>
<p>Thus began the war between those who <em>file</em> and these who <em>pile</em> — the filers and the pilers. I&#8217;ve been on the wrong side, it seems, since the beginning. I&#8217;m a filer, tried and true; a card-carrying member of Filer&#8217;s Anonymous. I even organize my paperbacks, first by genre and then by author. Nevertheless, my proclivities aside, the pilers have won; hands-down. So, ever pragmatic, I switched sides. No, I&#8217;ve not started just piling up my books, but I&#8217;ve embraced the &#8220;pile it on&#8221; approach. &#8220;Bring it on,&#8221; I say, &#8220;I&#8217;m no chump; Nuh-uh, not anymore.&#8221;</p>
<p>Technology <span style="color: #7f7f7f">[written language, clay tablets cuneiform, that kind of stuff]</span> started the war, and now technology <span style="color: #7f7f7f">[fast full-text machine indexing, smart digital filing systems, and natural language query]</span> has ended it. With today&#8217;s tools, you can just dump things into a nice digital pile o&#8217;stuff and let the machines sort it out. Our tools have ended the conflict, by ending the <em>need</em> for the conflict. As such, they&#8217;ve also eliminated much of the need for a formal, controlled vocabulary (the T-word). Instead, a simple one will do, if you need one at all.</p>
<p><span style="text-decoration: underline">How to Build a Simple Knowledgebase<br />
</span></p>
<p>Let me show you how I built a simple &#8220;knowledgebase&#8221; — using simple tools and a simplistic approach — what I call simple minded knowledge management (or is that knowledge management for the simple minded …).</p>
<p>It&#8217;s an approach that lets me just put things in piles. Moreover, there is no taxonomy — ok maybe a small one — but all the filing is done by the machine. It works; it&#8217;s easy to feed, stuff is easy to find, everybody&#8217;s happy. And, it&#8217;s out of sight, neatly self-organized, so it doesn&#8217;t irritate me at my core.</p>
<p>So, welcome to the machine — welcome to SharePoint&#8217;s &#8220;mail-enabled&#8221; document libraries — a world where the machine does all the heavy lifting, from submission, to organizing, to search and retrieval. It&#8217;s a piler&#8217;s dream, and a filer&#8217;s delight. One caveat: knowledge creation and synthesis still takes work. That&#8217;s an essential human process, one of creativity and editorial heavy lifting. Machines don&#8217;t do that.</p>
<p>First some rules. Remember &#8220;GTETETEKM&#8221;… err… the &#8220;KM-Three.&#8221; Remember those and you should ahead of the game; forget them and you&#8217;ll likely discover that &#8220;knowledge management&#8221; is an oxymoron. Moreover, you&#8217;ll probably end up either in management or looking for a new job, or [shudder] both. Rules in hand, let&#8217;s add a dash of required simplicity:</p>
<ul>
<li><strong>Keep things simple. </strong>I like simple things, simple tools, and simple approaches. Tools that aren&#8217;t simple won&#8217;t be used. Simplicity wins, period. Complicated systems fail — usually because they&#8217;re too complicated. Complicated approaches fail for the same reasons. It must be easy to use and easy to find stuff again; easy, and I mean &#8220;Eee-Zee&#8221; with a capital EASY, else it&#8217;s a wasted exercise.</li>
<li><strong>Beware, you must feed the beast.</strong> Any knowledgebase must be fed. They live on a diet of — you guessed it — knowledge. If you create a beast, you must feed it. So, while you&#8217;re at it, don&#8217;t make the beast so impossibly complicated that you won&#8217;t, don&#8217;t or can&#8217;t feed it. It needs high quality chow, lest it bite your hand.</li>
</ul>
<p>In summary: an effective knowledge management system starts with knowing what you want to keep, and knowing what you don&#8217;t want to keep. After that, it&#8217;s all about the tools, and your tools must: A) be simple in design, B) be some-what self-organizing, C) meet your security needs, D) be easy to feed, and F) easy to search.</p>
<p><span style="color: #7f7f7f">[Don't miss the </span><span style="color: #4f81bd"><em>exciting</em></span><span style="color: #7f7f7f"> sequel: "<a href="http://www.digitaldiner.org/2007/11/22/cracking-the-cuneiform-code-%e2%80%94-the-km-supremacy-2-of-2/" target="_blank">Cracking the Cuneiform Code — The KM Supremacy</a>" – coming soon to a blog near you.]</span></p>
]]></content:encoded>
			<wfw:commentRss>http://digitaldiner.org/2007/11/22/the-cuneiform-code-1-of-2/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Son of Fronkensteen</title>
		<link>http://digitaldiner.org/2007/10/28/son-of-fronkensteen/</link>
		<comments>http://digitaldiner.org/2007/10/28/son-of-fronkensteen/#comments</comments>
		<pubDate>Sun, 28 Oct 2007 18:15:37 +0000</pubDate>
		<dc:creator>Gavin Clabaugh</dc:creator>
				<category><![CDATA[NPTech]]></category>
		<category><![CDATA[Sharepoint]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web/Tech]]></category>

		<guid isPermaLink="false">http://www.digitaldiner.org/2007/10/28/son-of-fronkensteen/</guid>
		<description><![CDATA[<p>The retail release of Windows Home Server (WHS) hit the web- shops in early October. My copy arrived as fast as a flying monkey. The retail price was, as promised, less than $200 ($179 from NewEgg to be exact — a sweet deal considering what you&#8217;re getting).</p> <p>It&#8217;s an &#8220;OEM&#8221; version, by the way; [...]]]></description>
			<content:encoded><![CDATA[<p>The retail release of Windows Home Server (WHS) hit the web- shops in early October. My copy arrived as fast as a flying monkey. The retail price was, as promised, less than $200 ($179 from <a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16832116395" target="_blank">NewEgg</a> to be exact — a sweet deal considering what you&#8217;re getting).</p>
<p>It&#8217;s an &#8220;OEM&#8221; version, by the way; there&#8217;s no &#8220;consumer&#8221; version. It seems that most folks are expected to buy it pre-installed on a preconfigured &#8220;home server.&#8221; The OEM version in my grubby mitts is supposedly for &#8220;system builders,&#8221; folks that are going to bundle it with some hardware and sell it as retail turn-key system. Sure&#8230; That&#8217;s me. I am now officially a system builder. Wahoo! (ahem)</p>
<p>So far, the only downside to all this is, according to the shrink-wrap license, I&#8217;m my own end-user support. Apparently, the &#8220;system builder&#8221; is responsible for end-user support.</p>
<p>I bought it, I built it, and I sold it to myself. I must say, it was a great sales experience. I was very attentive to my needs and I seemed to know just what I wanted. Then again, when and if it comes to needing some support, I suppose I could just put myself on hold for an hour or two, ask a bunch of incomprehensible questions, cop an attitude, and then blame it on the &#8220;drivers.&#8221; That&#8217;s easy enough. &#8220;Have you tried rebooting, sir?&#8221; I&#8217;ll ask myself.<span id="more-199"></span></p>
<p>Anyway… The software&#8217;s arrival in the post just happened to correspond with a hardware sale at the local Stuff-R-Us Mega-Discount Warehouse and Croissant Emporium. They were clearing out half-terabyte hard drives — decent speed and cache — for 99 bucks. I was there and back before my credit card knew what happened.</p>
<p>New hardware in hand, software ready, I decided to start with a clean slate. I decided that it was time to chase the happily humming beta version, my lovely Frankenstein, out of town, like an angry villager armed with pitchfork and fire. Yep, Frankenstein, err… Fronkensteen had to go, and in its place: Son of <a href="http://www.digitaldiner.org/wp-content/uploads/2007/07/dramatic.wav" target="_blank">Fronkensteen</a>!</p>
<p><span style="color: #7f7f7f">[See my previous Frankenstein-related posts "</span><a href="http://www.digitaldiner.org/2007/04/28/savory-soho-server-soup/" target="_blank">Savory Soho Server Soup</a><span style="color: #7f7f7f">" and "</span><a href="http://www.digitaldiner.org/2007/07/17/dancing-with-abby-normal%e2%80%a6/" target="_blank">Dancing with Abby Normal</a>.<span style="color: #7f7f7f">" In those two posts I describe my adventures building a beta version of WHS, and then tweaking it a wee bit so that it would also run Windows SharePoint Services (WSS 3.0). ]<br />
</span></p>
<p>Sure, I could have gone the upgrade route, but I prefer a clean build. Windows, out of the box, is messy enough. Besides I had nice shiny new drives to work with. Besides, I wanted to do this right. In the next few weeks, we were going to build one of these for our London office — to provide an automated backup/shared file storage system — best to get off on the right foot.</p>
<p>I figured it was the perfect setup for an office of four people. Combined with (a soon-to-be-released WHS version of) <a href="http://www.jungledisk.com/whs.shtml" target="_blank">JungleDisk</a>, it would form the perfect disaster avoidance solution for a small office. WHS was brain-dead easy backup for local files and automated, off-site, secure backup (via JungleDisk and S3) of shared files. The remote access was gravy. And all for a great price.</p>
<ul style="margin-left: 54pt">
<li>WHS would provide backup from local PCs to the WHS server.</li>
<li>WHS would provide shared file storage between staff in the office.</li>
<li>JungleDisk would automate the backup of the shared file storage to Amazon&#8217;s S3 service.</li>
<li>When those folks travelled they could get remote access (via SSL) to their shared files.</li>
<li>When and if we needed, my staff could get remote access to the local workstations via the built-in TS gateway service.</li>
</ul>
<p><span style="text-decoration: underline">Building Son of Fronkensteen<br />
</span></p>
<p>So the process begins. With two new shiny drives in hand, I set out to build Fronkensteen Junior. First, I backed up everything on the Beta server – well, everything I wanted to save – on to a couple of USB drives.</p>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/10/102807-1815-sonoffronke1.jpg" alt="" /></p>
<p style="text-align: center"><span style="font-size: 9pt;color: #4f81bd"><strong>Drives Akimbo<br />
</strong></span></p>
<p>Then I tore Frankie (or is that <a href="http://www.digitaldiner.org/wp-content/uploads/2007/07/igor.wav" target="_blank">Fronkie</a>?) apart, removed all the existing drives, and shoved in the two new drives. I then added a dash of extra RAM I found lying around. Out of habit I checked the jumpers and cables, gave it a good vacuum, again checked the jumpers and cables; checked wallet, watch, testicles and spectacles, closed it up, and turned it on.</p>
<p>Everything worked and nothing hurt, so I booted from the WHS DVD and stared at the screen for about 45 minutes while drinking tea and playing with my dog, Tanzy. She likes this part of the process.</p>
<table border="0">
<tbody>
<tr>
<td style="padding-right: 7px;padding-left: 7px;border: black 0.5pt solid" valign="middle">
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/10/102807-1815-sonoffronke2.jpg" alt="" /></p>
<p style="text-align: center">Old Sony the Monitor</p>
</td>
<td style="padding-right: 7px;padding-left: 7px" valign="middle">
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/10/102807-1815-sonoffronke3.jpg" alt="" /></p>
<p style="text-align: center">Sweet Tanzy the Dog</p>
</td>
</tr>
</tbody>
</table>
<p>Seriously, that was it — stare at monitor, click &#8220;OK&#8221; once or twice, play with dog, and sip tea. Maybe I had to answer a couple of questions now and then, eventually, I had to type in the serial number. Other than that, it was just 45 minutes of daydreaming about Italy, Oaxaca, or dinner (I can&#8217;t remember which). After those 45 minutes — and after ignoring a variety of warnings about formatting drives, losing all your data, and possible nuclear meltdown — it was done. Fronkie Jr., was up and running.</p>
<p><span style="text-decoration: underline">Adding SharePoint<br />
</span></p>
<p>Tempting fate, I then followed my own instructions and installed Windows SharePoint Services on the server too — mucking about with the IIS ports and such. The second time around it was easy; in another 10 minutes it too, was done. It took three hours, start to finish, and that includes the vacuuming, daydreaming, several cups of tea, and some serious tennis ball tossing time with Tanzy.</p>
<p>[Tanzy would like me to note here that the tennis-ball-tossing is very serious work indeed, and she fails to understand why I waste my time with all these other trivial pursuits. "Ball," says Tanzy, dropping it in my lap, "Ball!" Obviously, I'm fairly dense, and can only follow simple instructions.]</p>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/10/102807-1815-sonoffronke4.png" alt="" /></p>
<p style="text-align: center"><span style="font-size: 9pt;color: #4f81bd"><strong>WHS with SharePoint<br />
</strong></span></p>
<p style="text-align: center"><span style="font-size: 9pt;color: #4f81bd"><strong>— Embedded YouTube Video Experiment —<br />
</strong></span></p>
<p>You can see SharePoint (above). This particular screen shot shows one of my current experiments —displaying a YouTube video inside of a SharePoint web part. Turns out it&#8217;s a piece of cake. It took about 10 minutes and a little work with SharePoint Designer. The evidence, above, is a screen-shot of a low-budget video by The Silencers performing a traditional Scottish ballad called &#8220;<a href="http://www.youtube.com/watch?v=MagG8J--BBI" target="_blank">Wild Mountain Thyme</a>,&#8221; AKA: the &#8220;Braes o&#8217;Balquidder&#8221; or the &#8220;Hills of Balquidder&#8221; (that&#8217;s &#8220;bal-whither,&#8221; should you care to pronounce it).</p>
<p>Music choice aside, the web part is simple. It&#8217;s just an IFrame as a link target, with a list of links on the same page. Put the links you want in a SharePoint list, display the list on the page, click on an item, and the content shows in the web part hosting the IFrame. You can use the same trick to create a dynamic &#8220;form library&#8221; of PDF forms, for example. Here&#8217;s an example, below:</p>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/10/102807-1815-sonoffronke5.png" alt="" /></p>
<p style="text-align: center"><span style="font-size: 9pt;color: #4f81bd"><strong>Dynamic PDF Form Library Viewer<br />
</strong></span></p>
<p>I can see using the embedded video parts for &#8220;how-to&#8221; videos and screen movies, on a central &#8220;how-to&#8221; page on an Intranet, for example. With a little creativity, SharePoint can rock, really.</p>
<p>All in all after an investment of three hours and a couple of hundred bucks, I had not only a multi-terabyte home server, but a serviceable SharePoint server too. For me, the SharePoint bit comes in handy for testing ideas about how to manage information, develop prototype intranet parts, and for experimenting with various MS Office integrations, such as OneNote.</p>
<p><span style="color: #7f7f7f">[Lately I had been using OneNote (2007) for a variety of things, and it happily uses WSS as a central storage repository. Since I was considering using OneNote to help keep track and store a wild jumble of investment information (email, documents, charts, graphs, contracts, etc.), it was nice to be able to put it through its paces — OneNote takes some getting used to, I'll warn you now. But it basically will hold anything — and it likes to use SharePoint for its backend storage.]<br />
</span></p>
<p>Since it was all going well, I decided to customize things just a wee bit, modifying the wallpaper and the default remote web page (shown below) — paying homage to the original &#8220;Abby Normal&#8221; build, and getting rid of that irritating picture of a &#8220;family playing in the yard&#8221; that comes as the web site default. This is much more fitting.</p>
<table border="0">
<tbody>
<tr>
<td style="padding-right: 7px;padding-left: 7px;border: black 0.5pt solid" valign="middle">
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/10/102807-1815-sonoffronke6.jpg" alt="" width="301" height="208" /></p>
</td>
<td style="padding-right: 7px;padding-left: 7px" valign="middle">
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/10/102807-1815-sonoffronke7.png" alt="" width="256" height="208" /></p>
</td>
</tr>
<tr>
<td style="padding-right: 7px;padding-left: 7px" valign="middle">
<p style="text-align: center">WHS WallPaper</p>
</td>
<td style="padding-right: 7px;padding-left: 7px" valign="middle">
<p style="text-align: center">WHS Remote Web Site Page</p>
</td>
</tr>
</tbody>
</table>
<p style="text-align: center"><a href="http://www.digitaldiner.org/wp-content/uploads/2007/07/alive.wav" target="_blank"><span style="font-size: 9pt;color: #4f81bd"><strong>Son of Fronkensteen. It&#8217;s alive, it&#8217;s alive!</strong></span></a><span style="font-size: 9pt;color: #4f81bd"><strong><br />
</strong></span></p>
<p>Finally, I installed a couple of WHS Add-Ins: <a href="http://www.avast.com/eng/avast-whs-edition-beta.html" target="_blank">Avast for WHS </a> (beta 3 at this writing) and <a href="http://www.edholloway.com/archive/2007/06/21/PhotoSync-Beta2-for-Windows-Home-Server-is-Available_2100_.aspx" target="_blank">PhotoSync</a> (beta 2 at this writing). Avast adds antivirus to the WHS server, and provides a management interface to any Avast clients installed on local PCs. It&#8217;s quite nice, and doesn&#8217;t seem as taxing to the system as, for example, Symantec&#8217;s AV products. Avast! for the home user is also free. That&#8217;s a great price. PhotoSync does what it says — it syncs photos. It automatically syncs designated WHS folders with a Flickr site. To add items to Flickr, you need only put them in a designated folder on the WSH shares. Filenames become picture titles on Flickr, and folder names become photo &#8220;sets&#8221; on Flickr — unfortunately there is no support for tagging, at least not yet.</p>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/10/102807-1815-sonoffronke8.png" alt="" /><span style="font-size: 9pt;color: #4f81bd"><strong><br />
</strong></span></p>
<p style="text-align: center"><span style="font-size: 9pt;color: #4f81bd"><strong>WHS Console with Avast and PhotoSync<br />
</strong></span></p>
<p>Fronkie Jr., is up and running, happily backing up my various PCs and laptops every night starting at 2:00 a.m., and busily syncing my photos with Flickr when I ask it to. It&#8217;s centrally managing Avast! Anti-virus across my home PC network, and has yet to terrorize any of the local villagers. What more could I ask?</p>
]]></content:encoded>
			<wfw:commentRss>http://digitaldiner.org/2007/10/28/son-of-fronkensteen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.digitaldiner.org/wp-content/uploads/2007/07/dramatic.wav" length="155802" type="audio/x-wav" />
<enclosure url="http://www.digitaldiner.org/wp-content/uploads/2007/07/igor.wav" length="410418" type="audio/x-wav" />
<enclosure url="http://www.digitaldiner.org/wp-content/uploads/2007/07/alive.wav" length="85820" type="audio/x-wav" />
		</item>
		<item>
		<title>Wham, Bam! DAM</title>
		<link>http://digitaldiner.org/2007/08/22/wham-bam-dam/</link>
		<comments>http://digitaldiner.org/2007/08/22/wham-bam-dam/#comments</comments>
		<pubDate>Wed, 22 Aug 2007 16:27:14 +0000</pubDate>
		<dc:creator>Gavin Clabaugh</dc:creator>
				<category><![CDATA[NPTech]]></category>
		<category><![CDATA[Photography]]></category>
		<category><![CDATA[Sharepoint]]></category>
		<category><![CDATA[Web/Tech]]></category>

		<guid isPermaLink="false">http://www.digitaldiner.org/2007/08/22/wham-bam-dam/</guid>
		<description><![CDATA[<p>For all you folks that have been ever so gently bugging me about sharing my damn DAM system… Between minor brain freezes and other lovely things like work and spending two weeks tasting wine in Burgundy, Beaujolais, Cote du Rhone, and Provence; well, time just slipped away. I apologize. [and.. Yes, I have stories [...]]]></description>
			<content:encoded><![CDATA[<p>For all you folks that have been ever so gently bugging me about sharing my damn DAM system… Between minor brain freezes and other lovely things like work and spending two weeks tasting wine in Burgundy, Beaujolais, Cote du Rhone, and Provence; well, time just slipped away. I apologize. <span style="color: #7f7f7f">[and.. Yes, I have stories to tell … sordid tales of love and the GPS lady, but those will have to wait…]</span></p>
<p>I&#8217;m back, and now I&#8217;ve knocked &#8220;sharing the DAM thing&#8221; off my &#8220;to-do&#8221; list. Read on.<span id="more-155"></span></p>
<p style="text-align: center"><img style="width: 322px;height: 219px" src="http://digitaldiner.org/files/2007/08/082207-1627-whambamdam1.png" alt="" width="322" height="219" /></p>
<p style="text-align: center"><span style="font-size: 9pt;color: #4f81bd"><strong>Gavin&#8217;s DAM System<br />
</strong></span></p>
<p>Finally (finally!), my brain kicked into gear. I figured out an easy way to share the DAM thing. Moreover, I re-did the whole thing in WSS just to make sure it was totally portable and didn&#8217;t have any residual MOSS attributes, etc.</p>
<p>I knew it should be easy. I think I was just over thinking it. Finally, one day, I, not so gently, slapped myself in the head and said (to myself): &#8220;why not just put it up on one of those free file sharing/storage systems that have sprouted up all over the place in the last few years. Might just be a good chance to take a look at how they work anyway.&#8221; A couple of aspirin later (for the headache after the slapping) I did it.</p>
<p>Here&#8217;s how: I closed my eyes and picked one. Once I picked one, I then puttered around with it trying to figure out how to actually share something. Then I trashed it, and tried another. Trashed that one, and tried yet another, and then another, and … finally I found one that would do what I wanted. It&#8217;s a nice service and it seems to work. It&#8217;s called File123. It seems workable.</p>
<p>The downside — it has a time limit. Four weeks. We&#8217;ll work around that simple enough. As long as people want it, I&#8217;ll keep resetting the date and/or posting a new copy.</p>
<p>So, (tad da!) you can find the completed DAM WSS template here:</p>
<p><span style="text-decoration: line-through"><a href="http://www.file123.com/Transfer.aspx?guid=33a3935c-a4e4-4df0-975b-f066fcfe34e7">http://www.file123.com/Transfer.aspx?guid=33a3935c-a4e4-4df0-975b-f066fcfe34e7</a></span></p>
<p><span style="text-decoration: line-through">(Link updated 10/29/2007 &#8211; the new link will expire on 11/26/2007)</span></p>
<p><span style="text-decoration: line-through">(12/4/2007)</span></p>
<p><strong>I got tired of updating that link, so here&#8217;s one that won&#8217;t expire, up on Microsoft&#8217;s new (beta) Skydrive. Click <a href="http://mjxxsa.bay.livefilestore.com/y1phyAVNLhJypc7Z2flBYasGYB60nqTE2GjyDOGsKC6Q-UD3BGfdbAtBlsfB5sg8FiPqcX4mYBqOJML4Gzd7ufHzw/WSS_dam_template.stp?download" target="_blank">here</a>. </strong></p>
<p><span style="text-decoration: line-through">As I said, that URL will work for four weeks (all these systems impose some sort of time limit – I guess so you don&#8217;t use them as some sort continual, free, FTP hosting service just like I am doing). In four weeks I&#8217;ll re-share the file and reset the date.</span></p>
<p>Now: Some information:</p>
<p>First, I re-wrote the whole thing for WSS. My original (and working) design is in MOSS. But, I discovered that while something designed for WSS works just fine in MOSS, the reverse is not necessarily true. So, I just redid it in WSS.</p>
<p>Second, I completed the &#8220;Graphics&#8221; section. The photograph section was fully formed, but the Graphics section had been left wanting. I also put in some sample graphics and pictures. Of course, feel free to delete.</p>
<p>Third, I&#8217;ve saved it as a WSS template, instead of a &#8220;backup.&#8221; This, I believe, makes it much more portable and flexible. Everything is still there (I chose the option of saving data with the template), but templates are designed as &#8220;re-usable,&#8221; so there should be no issue with broken links or the like. I also eliminated the &#8220;search&#8221; portions. Instead, it should fall right into whatever search is appropriate for your particular installation.</p>
<p>Fourth, here are some basic instructions</p>
<p>Step 1: Add the template to your MOSS/WSS installation:</p>
<ul>
<li>Choose: Site Actions</li>
<li>From the Galleries list, choose: Site Templates</li>
<li>From the List menu, choose Upload and then upload the DAM WSS STP file into your site gallery.</li>
</ul>
<p>Step 2: Choose to create a new site. On the site information page, choose the template under the CUSTOM tab in the Template Selection named &#8220;DAM WSS Version.&#8221;</p>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/08/082207-1627-whambamdam2.png" alt="" /></p>
<p>Finally — and I say this seriously — download and have fun. <span style="text-decoration: underline">However</span>, Caveat Emptor and all that jazz. I offer no guarantees. I distribute this free of all responsibility and liability, <span style="color: #0070c0">use and/or abuse at your own risk</span>. It <em>should</em> give you no problems, but if it does, well&#8230; I&#8217;ve left town, yeah, and am now living on the island of Fernando Poo, or maybe the long lost Isles of Langerhans… Yeah, that&#8217;s it.</p>
]]></content:encoded>
			<wfw:commentRss>http://digitaldiner.org/2007/08/22/wham-bam-dam/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Fun with MOSS – Data Views and Custom Filters</title>
		<link>http://digitaldiner.org/2007/08/16/fun-with-moss-%e2%80%93-data-views-and-custom-filters/</link>
		<comments>http://digitaldiner.org/2007/08/16/fun-with-moss-%e2%80%93-data-views-and-custom-filters/#comments</comments>
		<pubDate>Thu, 16 Aug 2007 17:53:25 +0000</pubDate>
		<dc:creator>Gavin Clabaugh</dc:creator>
				<category><![CDATA[NPTech]]></category>
		<category><![CDATA[Sharepoint]]></category>
		<category><![CDATA[Web/Tech]]></category>

		<guid isPermaLink="false">http://www.digitaldiner.org/2007/08/16/fun-with-moss-%e2%80%93-data-views-and-custom-filters/</guid>
		<description><![CDATA[<p>In previous versions of SharePoint, I was often frustrated with how difficult it was to do things I thought should be simple. It was probably my ignorance, or it could have been SharePoint&#8217;s obscurity and overall lack of good documentation, but it seemed a herculean task to simply filter information by a dynamic variable [...]]]></description>
			<content:encoded><![CDATA[<p>In previous versions of SharePoint, I was often frustrated with how difficult it was to do things I thought should be simple. It was probably my ignorance, or it could have been SharePoint&#8217;s obscurity and overall lack of good documentation, but it seemed a herculean task to simply filter information by a dynamic variable like &#8220;current user.&#8221;</p>
<p>The trouble was even though it<em> had </em>a setting for &#8220;current user&#8221; buried deep in some of the &#8220;filter&#8221; options; it returned the information in the form &#8220;Domain\LOGON_USER&#8221; or the common name (Firstname Lastname). I never could figure out how to easily extract just the portions I needed and to use that portion in any of the off-the-shelf web parts or data views. As I said, perhaps it was just ignorance.<span id="more-123"></span></p>
<p>Instead, I ended up going the long way round and built out some special code to make a connectable web part that could be used to filter by username. It was a lot of work. And, of course, it broke in the transition from SPS2003 to MOSS 2007. Connectable web parts are great — but this was just too much work.</p>
<p>Consequently, in this version, I vowed to do something simpler. I knew it could be done; it was just a question of beating my head against it until I either:</p>
<blockquote>
<blockquote>
<blockquote><p>A) beat myself senseless and forgot what I was doing, or</p></blockquote>
</blockquote>
</blockquote>
<blockquote>
<blockquote>
<blockquote><p>B) found the keys to the kingdom.</p></blockquote>
</blockquote>
</blockquote>
<p style="margin-left: 1pt">I suppose there was always option &#8220;C) Hire a consultant&#8221; but my experience with consultants, with a few notable exceptions, has not always been that satisfactory. Consultants seem to like to borrow <em>your</em> watch to tell you what time it is. The good ones, of course, then keep the watch.</p>
<p>The goal: simple, a stand-alone, self-filtering web part that displays data based upon the current user. If I did it right, the code should be reusable, or at least easy to duplicate.</p>
<p>I&#8217;m happy to report that I succeeded. Moreover, once I figured out where to do it, it was easy — and it opened up a whole passel of possibilities. (And I vowed to write it down so I wouldn&#8217;t forget it. I&#8217;m keeping my promise.)</p>
<p><span style="text-decoration: underline">About DVWPs:<br />
</span></p>
<p>Before I talk about &#8220;the how,&#8221; let me digress a minute to talk about &#8220;data views&#8221; or &#8220;data view web parts.&#8221; They&#8217;re the other half to this puzzle, and they&#8217;re real special, magical even. They are one of the more powerful SharePoint tools. Affectionately called DVWP&#8217;s, these little beasts do magic. And they&#8217;re right cute too. Like love, and like all magic, it&#8217;s kind of hard to explain unless you see it; even then, you&#8217;re not too sure how it works.</p>
<p>Please note: To play with DVWPs you need SharePoint Designer (MOSS 2007) or Visual Studio. The cost of admission is worth it. I use SharePoint Designer, but beware it is buggy as hell and seems to crash all the time. You get used to it, and learn not to do some things in some sequences. Such is life or Microsoft or both.</p>
<p>DVWP&#8217;s display data from databases such as SQL Server (or any ODBC-compliant data source) on a SharePoint page. In a nutshell, DVWPs give you a table of data, like a data grid, or a form. It&#8217;s that easy, by the way, to set up a web-front end to a database, for both viewing and editing.</p>
<p>If you&#8217;re looking to build some sort of dashboard, aggregating existing data, and displaying it dynamically on a web page, well, here is one easy way to do it.</p>
<p>Once set up, you can display data; you can shape it, mold it, and filter it. With the flick of a mouse, you can put it inside of handy dandy expanding and contracting headers, or sort it, or change the format or the display, based upon any of the values in the data itself. You can hide things or expose things, or change their color and format, based upon the values in the table. It&#8217;s just damn neat — and easy.</p>
<p>Here&#8217;s a simple sample (below), a DVWP showing &#8220;open&#8221; helpdesk support tickets dynamically pulled from our helpdesk system called TrackIT. Total Time to create: 2 minutes. I&#8217;ve redacted names to avoid tormenting the paranoid.</p>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/08/081607-1752-funwithmoss13.png" alt="" /></p>
<p>I warn you now, that while creating and tweaking DVWPs is easy as pie, the tough part is figuring out where to stop. All of a sudden, all that data that&#8217;s locked up in LOB databases can be easily displayed on a web page — without code, without anything other than (some) knowledge of the data structure and a connection to the SQL server.</p>
<p>As I mentioned, you need SharePoint Designer. From there, it&#8217;s easy. Just a few menu clicks, and some mousing around. I&#8217;m not going to cover them here, but, trust me, they&#8217;re phenomenally easy. Next stop, filtering. Buckle your seatbelts. The management is not responsible for headaches, eye strain, or slaps to the side of your head.</p>
<p>Before we go any further — and before you tell me that there are already ways to filter in MOSS — let me explain a bit more. You&#8217;re correct: built in to MOSS is a parameter called [Current User]. Unfortunately, for my purposes, it doesn&#8217;t work. It returns the current user in the form &#8220;First name Last name&#8221; (e.g., John Smith). We don&#8217;t use that. (D&#8217;oh) Where it&#8217;s appropriate, we tag data using the so-called USERNAME, in the form &#8220;JSMITH&#8221; (first initial concatenated with last name). It&#8217;s ubiquitous to all our databases. I know, because I made it so. Standards! I&#8217;m just a jeepster for standards. <span style="color: #808080">[You have to remember </span><a href="http://video.google.co.uk/videoplay?docid=-6219459623783980102&amp;q=marc+bolan" target="_blank">T-Rex</a><span style="color: #808080"><a href="http://video.google.co.uk/videoplay?docid=-6219459623783980102&amp;q=marc+bolan" target="_blank"> </a>for that to make any sense at all, not that it makes any sense even if you know the reference.]</span></p>
<p>So, I needed to work some magic — pretty simple magic if you have access to any sort of programming language — but I wanted to do this without opening the hood. How it&#8217;s done turns out to be simple, it&#8217;s done with XSLT, and I show you the code, and tell you where to put it. [I don't mean that the way it sounds.]</p>
<p><span style="text-decoration: underline">Personalizing a DVWP:<br />
</span></p>
<p>I&#8217;m going to use a real-life example here. I&#8217;m going to walk you thru creating a web part that displays data from our Grants Management system — specifically information about employee charitable giving, and the organization&#8217;s matching contribution. Our goal is a simple, stand-alone, portable web part that would display data filtered by the current user, in this case, me. What we want is a list of charitable gifts, sorted and grouped by year, showing the amount, the match, and the name of the organization.</p>
<p>What we&#8217;re not going to cover how to set up DVWPs or connections to a database. That&#8217;s pretty self explanitory.</p>
<p>The data is in the database, all we have to do it get it out, format it on the screen, and filter it by the Windows Server variable &#8220;LOGON_USER.&#8221; In the end, it should look like this: Again, I&#8217;ve redacted so you don&#8217;t see my gifts to folks like the Rosicrucians, the L5 Society, and the Center for Epistemological Inconsistencies and Eccentricities (I&#8217;m a charter member!).  Obviously, I&#8217;m an equal opportunity push-over.</p>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/08/081607-1752-funwithmoss23.png" alt="" /></p>
<p>Pretty simple really. You might note, I got a little fancy. I use some simple DVWP tricks put up a little red &#8220;<span style="color: #ff0000">new</span>&#8221; flag if the gift date is less than a month old.</p>
<p>Here is how it&#8217;s done:</p>
<ul style="margin-left: 67pt">
<li>Step 1:     Set up a connection to the database using the DVWP wizard.</li>
<li>Step 2:    Select the table or view you want, and select the appropriate fields.</li>
<li>Step 3:    Insert the data into an appropriate web part zone, and move the items around, until you get them the way you want them.</li>
<li>Step 4:    Set up the groupings and headers and all that jazz.</li>
<li>Step 4:    Set up the filter and sit back and admire your work.</li>
</ul>
<p>By the way, while you&#8217;re working with a DVWP, I recommend you adjust a couple of settings right away. To get to the settings (and where you work the magic) click the little &#8220;menu&#8221; arrow thingy on the right side of the DVWP. Here&#8217;s a before and after shot, showing the task pane.</p>
<table border="0">
<tbody>
<tr>
<td style="padding-right: 7px;padding-left: 7px;border: black 0.5pt solid">
<p style="text-align: center">Accessing the Data View Tasks Menu</p>
<p style="text-align: center">Before</p>
</td>
<td style="padding-right: 7px;padding-left: 7px">
<p style="text-align: center">Accessing the Data View Tasks Menu</p>
<p style="text-align: center">After</p>
</td>
</tr>
<tr>
<td style="padding-right: 7px;padding-left: 7px" valign="middle">
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/08/081607-1752-funwithmoss33.png" alt="" /></p>
</td>
<td style="padding-right: 7px;padding-left: 7px" valign="middle">
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/08/081607-1752-funwithmoss43.png" alt="" /></p>
</td>
</tr>
</tbody>
</table>
<p>I set the various defaults as follows:</p>
<ol style="margin-left: 72pt">
<li>Click the box labled &#8220;Show with sample data&#8221; — this will populate the fields with sample data. This is important, especially if you use a filter that has no current results.</li>
<li>Set the the Data View Preview to hide all filters. Otherwise, if you filter out all the results, you have no current results.</li>
<li>The &#8220;Sort and Group&#8221; option lets you pick sort fields, and select to group on a certain field of set of fields. This is also where you set the expanding/contracting header groupings.</li>
<li>Notice the menu item labeled &#8220;Parameters.&#8221; This is where we set up the dynamic variable that pulls in the LOGON_USER.</li>
<li>Finally, we&#8217;re going to tweak the first parameter, the one labled &#8220;Filter.&#8221; This is where the magic happens.</li>
</ol>
<p>Now we&#8217;re ready for the filter.</p>
<p>First we need to set up a &#8220;parameter&#8221; — click the menu item on the &#8220;Common Tasks&#8221; menu (above) labeled &#8220;Parameters.&#8221; You should see the following window:</p>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/08/081607-1752-funwithmoss53.png" alt="" /></p>
<p>We&#8217;re going to set up a parameter called &#8220;LogonUser&#8221; with the following attributes:</p>
<ul>
<li>Name:     LogonUser</li>
<li>Parameter Source:    Server Variable</li>
<li>Server Variable name:    Logon_User</li>
</ul>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/08/081607-1752-funwithmoss63.png" alt="" /></p>
<p>When you&#8217;re done, it should look like the screen above. What this gets us is a dynamic parameter we can use elsewhere in the DVWP. It contains the full Windows Logon_User string, in the form &#8220;Domain\Logon_User.&#8221;</p>
<p>Next we&#8217;re going to turn it into something we can use by stripping off the domain and the slash (\) and converting it all to upper case. We do this right in the filter statement.</p>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/08/081607-1752-funwithmoss73.png" alt="" /></p>
<p>As shown above, from the &#8220;Common Data View Tasks&#8221; list, click the &#8220;Filter&#8221; menu option. It&#8217;s the first one on the list. You should see the &#8220;Filter Criteria&#8221; dialog box. It&#8217;s probably blank, and looks much like this:</p>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/08/081607-1752-funwithmoss83.png" alt="" /></p>
<p>Note the little check box at the bottom of the window. This is where we add the filter magic. Check the box, and then click the button to edit the XSLT filtering. Ignore the birght yellow warning that says: &#8221;Using XSLT Filtering can reduce performance.&#8221; This is just a typical &#8220;If-you-do-this-your-naughty-bits-might-just-fall-off&#8221; warning. I just ignored it. Nothing fell off yet.</p>
<p>Finally we get to the filter – shown below in all its glory! Yep, that&#8217;s it. That whole line of gobbledygook. I&#8217;ll explain what it does, working from the inside out. (And quit your squinting – I put the final formula below so you can just copy and paste it into your DVWP.)</p>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/08/081607-1752-funwithmoss93.png" alt="" /></p>
<p><span style="text-decoration: underline">Constructing the Filter (from the inside out):<br />
</span></p>
<p>In the examples below, I show variables and formula in <span style="color: #1f497d">blue</span>, and the current value of that statement in <span style="color: #c0504d">reddish</span> brown. We start first in the center of the gobbledygook, with the $LogonUser parameter.</p>
<p style="margin-left: 72pt;text-align: center"><strong><span style="color: #1f497d">$LogonUser = </span><span style="color: #c0504d">Domain\JSmith<br />
</span></strong></p>
<p>In the center of the expression is the parameter we created, called LogonUser, only now it is prefaced by a &#8220;$,&#8221; indicating that it is a parameter. This evaluates as the string &#8220;Domain\JSmith&#8221;</p>
<p style="margin-left: 72pt;text-align: center"><strong><span style="color: #1f497d">(Substring-After(&#8220;Domain\JSmith&#8221;,&#8221;\&#8221;) = </span><span style="color: #c0504d">JSmith</span><span style="color: #1f497d"><br />
</span></strong></p>
<p>Surrounding the LogonUser parameter is a function to extract a substring from the parameter, using the &#8220;\&#8221; as the starting place in the string. The function extracts all the text following the &#8220;\&#8221;. We now have a parameter with just the name, e.g., JSmith.</p>
<p style="text-align: center"><strong><span style="color: #1f497d">Translate(JSmith&#8217;),&#8217;abcdefghijklmnopqrstuvwxyz&#8217;,'ABCDEFGHIJKLMNOPQRSTUVWXYZ&#8217;) = </span><span style="color: #c0504d">JSMITH</span><span style="color: #1f497d"><br />
</span></strong></p>
<p>Now that we have the logon_user name handy, we have to convert it to upper case. XSLT is really clumsy here. Instead of a simple &#8220;UCase&#8221; statement or some such, we have to use a &#8220;Translate&#8221; function to convert every occurrence of a lower case letter to an upper case letter. Luckily I only need to do this once, and now I&#8217;ll just cut and paste it.</p>
<p style="text-align: center"><strong><span style="color: #1f497d">@Staff_ID = </span><span style="color: #c0504d">JSMITH<br />
</span></strong></p>
<p>Finally, we can use an &#8220;Equals&#8221; operator to compare the variable @Staff_ID (pulled from the data source, to the LogonUser parameter we&#8217;ve constructed (or deconstructed, as the case may be).</p>
<p>The full statement is shown below: (note I&#8217;ve broken the line into two for display purposes). The brackets and everything else is important.</p>
<p style="text-align: center"><span style="color: #1f497d"><strong>[@Staff_ID = Translate(Substring-After($LogonUser,'\'), 'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')]<br />
</strong></span></p>
<p>That&#8217;s it. If you run Gifts, for example, and use the same format for STAFFID, you should be able to take this stuff verbatim and drop it into any part you set up.</p>
]]></content:encoded>
			<wfw:commentRss>http://digitaldiner.org/2007/08/16/fun-with-moss-%e2%80%93-data-views-and-custom-filters/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Dancing with Abby Normal…</title>
		<link>http://digitaldiner.org/2007/07/17/dancing-with-abby-normal%e2%80%a6/</link>
		<comments>http://digitaldiner.org/2007/07/17/dancing-with-abby-normal%e2%80%a6/#comments</comments>
		<pubDate>Wed, 18 Jul 2007 02:10:13 +0000</pubDate>
		<dc:creator>Gavin Clabaugh</dc:creator>
				<category><![CDATA[Gizmos & Gadgets]]></category>
		<category><![CDATA[NPTech]]></category>
		<category><![CDATA[Sharepoint]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web/Tech]]></category>

		<guid isPermaLink="false">http://www.digitaldiner.org/2007/07/17/dancing-with-abby-normal%e2%80%a6/</guid>
		<description><![CDATA[<p>You may remember my April adventures with a beta of Microsoft&#8217;s &#8220;Windows Home Server&#8221; (AKA: WHS). WHS is a neat little consumer product. I think it also has some applicability in the NGO-SOHO space. It&#8217;s perfect, for example, for a nonprofit with fewer than ten or so people in need of automated backup and [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: 12pt">You may remember my April adventures with a beta of Microsoft&#8217;s &#8220;Windows Home Server&#8221; (AKA: WHS). WHS is a neat little consumer product. I think it also has some applicability in the NGO-SOHO space. It&#8217;s perfect, for example, for a nonprofit with fewer than ten or so people in need of automated backup and some easily expanded shared file storage.<br />
</span></p>
<p><span style="font-size: 12pt">Since that foray into Betatown, MS released a new WHS version, the so-called &#8220;RC1&#8243; or &#8220;release candidate 1&#8243; edition — just a little bit closer to an actual commercial release. Just between you and me, I don&#8217;t pretend to follow Microsoft&#8217;s various mystical and mysterious machinations as it (slowly) walks a product to market. RC1, or Beta 3, or CTP, they&#8217;re all beta&#8217;s to me. It means you can&#8217;t buy it, yet. It also means install at your own risk. A beta, by any other name, is still likely to break your heart, eat your hard drive, and maybe shred your collection of precious Godzilla DVD rips.<span id="more-106"></span><br />
</span></p>
<p><span style="font-size: 12pt">While I am on the subject of both the mystical and Godzilla — has anybody noticed that Microsoft has a severe case of marketing schizophrenia? At times, it&#8217;s almost comical.<br />
</span></p>
<p><span style="font-size: 12pt">Why, on one hand, with WHS, are they introducing network file shares for the home market, while simultaneously encouraging migration <em>away</em> from shares (to things like SharePoint) in all other markets? Why didn&#8217;t they just bundle SharePoint Services (WSS) with WHS? They could have called it a &#8220;break-through in web-based home file storage&#8221; and garnered lots of hype. It makes a whole lot more sense than their decision to introduce a line of furniture in the form of a <a href="http://www.microsoft.com/surface/" target="_blank">table-sized PC</a>. Gack! That thing only serves to remind me of wasted hours with the lovely Ms. <a href="http://www.bhmvending.com/Amusements/Namco/namco_ms_pacman_galaga_cocktail_home_version.html" target="_blank">Pac Man</a>.<br />
</span></p>
<p><span style="font-size: 12pt">Mystical musing aside, I was nevertheless eager to once again take another walk on the seedy side of Betatown, so I installed RC1. (Everything was running just fine, so it seems a perfect time to screw things up.)<br />
</span></p>
<p><span style="font-size: 12pt">The upgrade itself was uneventful, smooth even; smooth enough to make me nervous. So far: &#8220;Everything is beautiful and nothing hurt.&#8221; This also seemed an opportune time to take a look at the &#8220;add-ins&#8221; feature of WHS.<br />
</span></p>
<p><span style="font-size: 12pt">What are they? Well, they&#8217;re little server based processes — that do things. The one I specifically wanted to see was something called PhotoSync. It supposedly automates uploads to Flickr from a designated WHS folder or folders. I thought that sounded like a neat idea. I&#8217;ve been having lots of fun lately with <a href="http://www.flickr.com/photos/gclabaugh/" target="_blank">Flickr</a>. (Shameless self-promotion alert: I&#8217;m especially fond of this one I call &#8220;<a href="http://flickr.com/photos/gclabaugh/616272312/in/set-72157600470803353/" target="_blank">Looking for the heart of Saturday night</a>,&#8221; with apologies to Tom Waits.)<br />
</span></p>
<p><span style="font-size: 12pt">The concept behind PhotoSync is simple: You put photographs in a designated WHS folder and it will automagically post them to your Flickr account. I tried it. It worked. It was nice.<br />
</span></p>
<p><span style="font-size: 12pt">The down side: it didn&#8217;t do tagging, at least not yet. But it will automatically create new photo sets. That&#8217;s a nice feature. Moreover, it will automatically title the photographs based upon the name of the file. All in all, a nice piece of work, that.<br />
</span></p>
<p><span style="font-size: 12pt">On the side, what&#8217;s also nice is the &#8220;add an add-in&#8221; process itself. (Try saying that fast.) It&#8217;s brain-dead simple. You need only copy the appropriate installation files to the appropriate folder on WHS. Moreover — in a true break from tradition — the appropriate folder was even logically named (\Software\Add-ins).<br />
</span></p>
<p><span style="font-size: 12pt">When an add-In is copied to the right folder, it shows up on the WHS management console. You click the button to install, or, if it&#8217;s already installed, you click the button to un-install it. Simple.<br />
</span></p>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/07/071807_0122_Dancingwith12.png" alt="" /><span style="font-size: 12pt"><br />
</span></p>
<p><span style="font-size: 12pt">Unfortunately, there appear to be relatively few add-ins available — maybe four or five max. Nevertheless, they are all &#8220;community developed&#8221; and freebies, which is pretty cool. You can find them at a place called <a href="http://www.wegotserved.co.uk/whs-add-ins/" target="_blank">We Got Served</a>. I note that there is a handy µTorrent client, and some sort of media extender that will stream media (music, DVDs, videos, photos) called <a href="http://www.asciiexpress.com/webguide/forums/Default.aspx?g=posts&amp;t=1519" target="_blank">WebGuide</a>.<br />
</span></p>
<p><span style="font-size: 12pt">Meanwhile, while I was doing all the requisite staring into space that goes hand in hand with any software installation, I got to pondering… a dangerous thing, that. When I ponder, I get ideas — wild ideas, fanciful ideas — sometimes they lead me on a journey of discovery, other times I just end up breaking things.<br />
</span></p>
<p><span style="font-size: 12pt">What I got to pondering about was SharePoint and Windows Home Server. I got to thinking about the fact that WHS was <em>just </em>a stripped-down version Server 2003, the OS required for Window SharePoint Services (the free version). To me, it seemed such a shame, such a waste of resources — to have a whole server doing not much but humming to its self. What a waste of processing power, and resources, and potential.<br />
</span></p>
<p><span style="font-size: 12pt">Now, clearly I could install <a href="http://setiathome.berkeley.edu/" target="_blank">Seti@home</a>, feel good about my carbon footprint or some such, and simultaneously help search for intelligent life in Washington, but I had a better idea. [Besides, I think that's fruitless; alien life, sure, absolutely, but Washington, not likely at least for another 18 months; highly doubtful even then.]<br />
</span></p>
<p><span style="font-size: 12pt">Instead, I pondered up this idea: Why not build a <a href="http://digitaldiner.org/files/2007/07/dramatic.wav">Frankenstein</a> —and… I could even name the server &#8220;<a href="http://digitaldiner.org/files/2007/07/abbynrml.wav">Abby Normal</a>&#8221; — I could transplant a WSS brain into WHS body! Clearly I have watched too much Mystery Science Theater 3000. Just as clearly, I&#8217;m entertained by simple things.<br />
</span></p>
<p><span style="font-size: 12pt">Anyway, my logic went like this: if it&#8217;s Server 2003, why can&#8217;t it run SharePoint too? Besides, it&#8217;s free. I could even use it when I wanted to do some SharePoint development at home and, well, who knows, it might be handy. Besides, what have I got to lose except all my backups?<br />
</span></p>
<p><span style="font-size: 12pt">The fact is, I could imagine a nice WSS/WHS <a href="http://digitaldiner.org/files/2007/07/igor.wav">Frankenstein</a>, err … Fronkensteen, as being very handy for your typical nuclear, post-nuclear, and not-so-nuclear family.<br />
</span></p>
<p><span style="font-size: 12pt">In my mind — strange as it may be — the typical features of a small &#8220;team&#8221; site might be quite applicable to both the home market and the small NGO market — shared calendar, &#8220;cork&#8221; board, shared file storage, etc. Having a quick and dirty WSS Intranet happily humming on WHS might just be the ticket.<br />
</span></p>
<p><span style="font-size: 12pt">It also fit in to my plans to write up a couple of SharePoint &#8220;use case&#8221; studies I was thinking of calling &#8220;<em>Gavin&#8217;s Five-Minute Guide to SharePoint Intranets</em>.&#8221; (Coming soon to a theater near you.)<br />
</span></p>
<p><span style="font-size: 12pt">&#8220;<a href="http://digitaldiner.org/files/2007/07/couldwrk.wav">What a grand idea</a>,&#8221; I said to myself. So, I set out to see if it could be done.<br />
</span></p>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/07/071807_0122_Dancingwith22.jpg" alt="" /><span style="font-size: 12pt"><br />
</span></p>
<p style="text-align: center"><span style="font-size: 12pt"><strong><a href="http://digitaldiner.org/files/2007/07/givelife.wav">Give my creation life!</a></strong></span><span style="font-size: 12pt;color: #4f81bd"><strong><br />
</strong></span></p>
<p><span style="font-size: 12pt">The short story is: yes, it can be done. In fact, it was easy as pie. First you need a brain…<br />
</span></p>
<p><span style="font-size: 12pt">Seriously, there was only one small SNAFU, and that was easily solved with some quick tweaks to IIS (Internet Information Server) — changing a few ports around so that all the various web sites would work. Below, I lead you through how to do it and how to avoid the SNAFU.<br />
</span></p>
<p><span style="font-size: 12pt">Here are the simplified steps:<br />
</span></p>
<ol>
<li><span style="font-size: 12pt">Login to WHS as administrator and ignore the big splash screen warning that your naughty bits are going to fall off if you mess about with stuff. Relax, really. Trust me &lt;evil grin&gt;.<br />
</span></li>
<li><span style="font-size: 12pt">Grab your mouse and prepare to mess about. Close the warning window — out of sight, out of mind — and open IIS Manager.<br />
</span></li>
<li><span style="font-size: 12pt">In IIS Manager, locate the &#8220;Default Web Site&#8221; in the Web Server&#8217;s list, and change the port from 80 to 81. Leave the SLL port (443) the same. If you want to know why, I explain what this does at the end of this posting.<br />
</span></li>
<li><span style="font-size: 12pt">Open &#8220;My Computer&#8221; and create a folder on the root of the [D:] drive and name it WSSIndex. We&#8217;ll use it later to hold the WSS index files and avoid filling up the limited space on [C:]. (WHS sets up a rather small [C:] partition, so I figured not to crowd it.)<br />
</span></li>
<li><span style="font-size: 12pt">Download WSS if you haven&#8217;t got it already, it&#8217;s here. Then double-click the install file (it&#8217;s called &#8220;SharePoint.exe&#8221;)<br />
</span></li>
<li><span style="font-size: 12pt">Accept the EULA, ignoring the fact that you&#8217;ve probably just offered up your firstborn to Satan.<br />
</span></li>
<li><span style="font-size: 12pt">At the dialog window where you choose an installation type, choose the option for &#8220;Advanced.&#8221;<br />
</span></li>
<li>
<div><span style="font-size: 12pt">On the next dialog window, click on the &#8220;Data Location&#8221; tab, and switch where the beast stores its index files. Change it to the folder you created on the [D:] drive, e.g., D:\WSSIndex.<br />
</span></div>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/07/071807_0122_Dancingwith32.png" alt="" /><span style="font-size: 12pt"><br />
</span></p>
</li>
<li><span style="font-size: 12pt">Go back to the &#8220;Server Type&#8221; tab, select the option for &#8220;Stand-Alone&#8221; and press the &#8220;Install Now&#8221; button.<br />
</span></li>
<li>
<div><span style="font-size: 12pt">Make a cup of tea and pet the dog for a while as it installs. Consider making a political donation or moving (back) to Canada, or both, or maybe Scotland.<br />
</span></div>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/07/071807_0122_Dancingwith42.png" alt="" /><span style="font-size: 12pt"><br />
</span></p>
<p style="text-align: center">
</li>
<li><span style="font-size: 12pt">When Windows is done whirring and installing, click the &#8220;Close&#8221; button, making sure the checkbox for &#8220;Run the Configuration Wizard&#8221; is checked. This will start the WSS configuration wizard.<br />
</span></li>
<li><span style="font-size: 12pt">Click &#8220;Next&#8221; to tell the wizard to keep on keeping wiz&#8217;ing, and accept the silly warning that a few services will be reset. It will run through all sorts of tasks — ten in all, so…<br />
</span></li>
<li><span style="font-size: 12pt">Make another cup of tea. Check your Gmail to see if anybody has written you lately. Sigh, sadly, at all the spam, close Gmail and go back to work.<br />
</span></li>
<li>
<div><span style="font-size: 12pt">If all goes well, about this time, Windows SharePoint Services should now be installed, and you should see something like this:<br />
</span></div>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/07/071807_0122_Dancingwith52.png" alt="" /><span style="font-size: 12pt"><br />
</span></p>
</li>
<li><span style="font-size: 12pt">Click &#8220;Finish&#8221; … and if all went according to plan, you should be dropped at the default WSS web page. It should look sort of like the picture on the left (below). If you substitute &#8220;HTTP<span style="color: #ff0000">S</span>&#8221; for &#8220;HTTP&#8221; you should see the default WHS site, as shown on the right (below).<br />
</span></li>
</ol>
<div>
<table border="0">
<tbody>
<tr>
<td style="padding-right: 7px;padding-left: 7px;border: black 0.5pt solid">
<p style="text-align: center"><span style="font-size: 12pt;color: #0070c0;text-decoration: underline">WSS SharePoint Site – Default Team Site on 80<br />
</span></p>
<p style="text-align: center"><span style="font-size: 12pt;color: #0070c0;text-decoration: underline">Http://&lt;servername&gt;</span></p>
</td>
<td style="padding-right: 7px;padding-left: 7px">
<p style="text-align: center"><span style="font-size: 12pt;color: #0070c0;text-decoration: underline">WHS Site with Login on Https (SSL port 443)<br />
</span></p>
<p style="text-align: center"><span style="font-size: 12pt;color: #0070c0;text-decoration: underline">https://&lt;servername&gt;</span></p>
</td>
</tr>
<tr>
<td style="padding-right: 7px;padding-left: 7px">
<p style="text-align: center">
<p style="text-align: center"><a href="http://www.ladyofthecake.com/mel/frank/sounds/telling.wav"><img src="http://digitaldiner.org/files/2007/07/071807_0122_Dancingwith62.png" border="0" alt="" /></a><span style="font-size: 12pt"><br />
</span></p>
<p style="text-align: center">
<p style="text-align: center"><span style="font-size: 12pt">Default WSS site</span></p>
</td>
<td style="padding-right: 7px;padding-left: 7px">
<p style="text-align: center">
<p style="text-align: center"><a href="http://www.ladyofthecake.com/mel/frank/sounds/schwan.wav"><img src="http://digitaldiner.org/files/2007/07/071807_0122_Dancingwith72.png" border="0" alt="" /></a><span style="font-size: 12pt"><br />
</span></p>
<p style="text-align: center">
<p style="text-align: center"><span style="font-size: 12pt">Default WHS site</span></p>
</td>
</tr>
</tbody>
</table>
</div>
<p><span style="font-size: 12pt">You&#8217;re done, by the way. You&#8217;ve now got a SharePoint site to play with. Both the WSS and WHS web sites should be available at URLs shown above, from anywhere on your home network (substitute your server name, of course).<br />
</span></p>
<p><span style="font-size: 12pt">WSS itself is administered through the Control Panel, under Administrative Tools, and click the item labeled &#8220;SharePoint 3.0 Central Administration.&#8221; The first thing to do is add authorized users to the WSS site — if you&#8217;ve set up WHS with local users, you can use the same login credentials (user accounts) on WSS. You add them right under site actions, site settings, &#8220;People and Groups.&#8221; Easy as pie.<br />
</span></p>
<p style="text-align: center"><a href="http://digitaldiner.org/files/2007/07/alive.wav"><img src="http://digitaldiner.org/files/2007/07/071807_0122_Dancingwith82.jpg" border="0" alt="" /></a><span style="font-size: 12pt"><br />
</span></p>
<p style="text-align: center"><span style="font-size: 12pt"><a href="http://digitaldiner.org/files/2007/07/telling.wav">Have fun!</a></span><span style="font-size: 12pt"><br />
</span></p>
<p><span style="font-size: 12pt">About Port 80 and Port 81:<br />
</span></p>
<p><span style="font-size: 12pt">I mentioned above that I&#8217;d talk briefly about why we moved one web server from port 80 to port 81. Port 80, as you no doubt know, is the default web server port. What we did is free-up port 80 for WSS. It simplifies the installation process, as the WSS wizard is going to use Port 80 no matter what. But, if we leave the WHS in place, on Port 80, the WSS installation wizard ends up shutting down the server on both port 80 and port 443 (SSL/HTTPS). By changing the default server to port 81 before hand, we avoid that problem, and the server on port 443 is left untouched.<br />
</span></p>
<p><span style="font-size: 12pt">It&#8217;s easy to do.<br />
</span></p>
<ol>
<li><span style="font-size: 12pt">Open IIS Manager and locate the Default Web Site.<br />
</span></li>
<li>
<div><span style="font-size: 12pt">Right click and choose Properties. You should see a window like this:<br />
</span></div>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/07/071807_0122_Dancingwith92.png" alt="" /><span style="font-size: 12pt"><br />
</span></p>
</li>
<li><span style="font-size: 12pt">Change the TCP port from 80 to 81 and click OK.<br />
</span></li>
<li><span style="font-size: 12pt">Right-click on the default web server and choose stop. Wait a few seconds and then right-click again, and choose start. That usually gets everything humming nicely again.<br />
</span></li>
</ol>
<p><span style="font-size: 12pt">This way, it keeps everything neat – otherwise, the installation just stops the WHS instance and leaves it stopped. Sure, there are other approaches, including host headers and adding additional IP addresses to the network interface. But this is the simplest and has no impact that I can see.<br />
</span></p>
<p><span style="font-size: 12pt">Quite frankly, I don&#8217;t think you need the WHS web server on port 80. All that web site does is redirect you to the SSL port (443). It&#8217;s simpler and easier to just use HTTPS for your WHS server and leave WSS as is, on port 80. So far, it&#8217;s worked just fine for me.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://digitaldiner.org/2007/07/17/dancing-with-abby-normal%e2%80%a6/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
<enclosure url="http://digitaldiner.org/files/2007/07/telling.wav" length="328312" type="audio/wav" />
<enclosure url="http://digitaldiner.org/files/2007/07/alive.wav" length="85820" type="audio/wav" />
<enclosure url="http://digitaldiner.org/files/2007/07/givelife.wav" length="115886" type="audio/wav" />
<enclosure url="http://digitaldiner.org/files/2007/07/igor.wav" length="410418" type="audio/wav" />
<enclosure url="http://digitaldiner.org/files/2007/07/dramatic.wav" length="155802" type="audio/wav" />
<enclosure url="http://www.ladyofthecake.com/mel/frank/sounds/telling.wav" length="328312" type="audio/x-wav" />
<enclosure url="http://www.ladyofthecake.com/mel/frank/sounds/schwan.wav" length="383532" type="audio/x-wav" />
<enclosure url="http://digitaldiner.org/files/2007/07/couldwrk.wav" length="86854" type="audio/wav" />
<enclosure url="http://digitaldiner.org/files/2007/07/abbynrml.wav" length="162695" type="audio/wav" />
		</item>
		<item>
		<title>DAM Pictures</title>
		<link>http://digitaldiner.org/2007/03/28/dam-pictures/</link>
		<comments>http://digitaldiner.org/2007/03/28/dam-pictures/#comments</comments>
		<pubDate>Wed, 28 Mar 2007 20:34:55 +0000</pubDate>
		<dc:creator>Gavin Clabaugh</dc:creator>
				<category><![CDATA[NPTech]]></category>
		<category><![CDATA[Photography]]></category>
		<category><![CDATA[Sharepoint]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web/Tech]]></category>

		<guid isPermaLink="false">http://www.digitaldiner.org/2007/03/28/dam-pictures/</guid>
		<description><![CDATA[<p>While there are lots of consumer-level products to manage digital images, photographs and the like, institutional options, it seems, are not that plentiful. Moreover, those options that do exist tend to cost a pretty penny. I don&#8217;t mean Adobe &#8220;Album&#8221; and Picassa. They&#8217;re wonderful products; I use Picassa myself. It&#8217;s great for an individual, [...]]]></description>
			<content:encoded><![CDATA[<p>While there are lots of consumer-level products to manage digital images, photographs and the like, institutional options, it seems, are not that plentiful. Moreover, those options that do exist tend to cost a pretty penny. I don&#8217;t mean Adobe &#8220;Album&#8221; and Picassa. They&#8217;re wonderful products; I use Picassa myself. It&#8217;s great for an individual, but not so great for an organization.</p>
<p><span style="color: #7f7f7f">[Here's another in my continuing critiques of the scalability and limits of most web-two-dot-oh stuff. It's part of my ongoing litany about nonprofits needing "the basics" – It ain't all about fancy web sites, sophisticated communications systems, and interactive bloggy-wiki-groovy things. The real world needs working infrastructure, including training and training and training, and accounting systems, and communications systems, and shared calendars, and to not keep their mailing lists in a word document, and, and, and… … more than anything, staff that know how to use the stuff.  Boring, I know, but true. ]<br />
</span></p>
<p>What got me thinking about this was two-fold: First, I have a crying need to manage thousands upon thousands of images — a collection that dates back some 75 years, and second, someone asked the very question over on the &#8220;InteRider&#8221; listserv, to wit:</p>
<p style="margin-left: 36pt"><span style="color: #1f497d">&#8220;Does anyone have any recommendations for a digital photo management system for a small NGO? We are looking for something that makes cataloguing, indexing, storage and retrieval of images relatively easy and efficient.&#8221;<br />
</span></p>
<p>There was, of course, a flurry of responses — including folks suggesting both Picassa and Flickr — but all suffered, in my opinion, from the same old problem: These damn things are not designed for organizations.</p>
<p>Let&#8217;s look at Flickr, for example. I love it. I love it enough to pay for the &#8220;Pro&#8221; account. I load my pictures up there on a regular basis. Feel free to browse my latest set, entitled &#8220;<a href="http://www.flickr.com/photos/gclabaugh/sets/72157594567380924/">Brussels Noir</a>&#8221; – my photo safari through the night streets of Brussels one gloomy February evening or two.</p>
<p>However Flickr — multi-user from the get-go — still suffers the faults of a consumer product. It <em>is</em> a consumer product, so it&#8217;s not really a fault. Flickr tools, for example, are designed to help you get items uploaded and <em>into</em> your Flickr site. But, I challenge anyone to point out the tools that let you get photos <em>out of Flickr</em> [aside from the old, right-click-and-save-as]. This is not a product for managing large collections of photographs within an institution. It&#8217;s especially not a tool for finding, selecting, editing, manipulating, and generally mucking about with the images. Damn.</p>
<p>Having no where else to turn, I turned to myself. I built a photo management system with SharePoint. I call it a DAM system — DAM is short for Digital Asset Management. It&#8217;s fun to talk about in meetings. I get to say things like: &#8220;The DAM system works&#8221; or &#8220;You need to update the DAM subject codes.&#8221; Great fun, believe you me<span style="color: #7f7f7f">. [Somewhere, still inside of me, is that 12-year-old Boy Scout that got such great joy out of singing "Amster, Amster - Dam, Dam, Dam" around the campfire. Strange, I only remember the chorus, not the rest of the words.]</span></p>
<p>My DAM system is a testament to the flexibility of SharePoint. Start to finish, once I had it spec&#8217;ed out, it took only a few days to build — and most of that was in thinking thru the supporting tables and coding systems and then loading up those tables with real data. <span style="color: #7f7f7f">[Now, in interest of full disclosure, I had thought about the problem for a couple of years, and I had designed a couple of other DAM systems in previous versions of SharePoint, including SharePoint 2001, SharePoint 2003, and WSS 3.0. – but it was still pretty easy.]<br />
</span></p>
<p>The building (and the spec&#8217;ing) required some backwards thinking: the ephemeral art of imagining the goal and then working backwards to figure out how you got there. Truthfully, it helps to think backwards. Something I&#8217;m good at.</p>
<p>My first foray into programming was on a 200 step programmable HP calculator. It was in high school, amazingly enough. The &#8220;calculator&#8221; was size of a large microwave, it cost $25,000. You could pick the equivalent today as trade-show swag. It was programmed in &#8220;RPL&#8221; – short for <a href="http://en.wikipedia.org/wiki/RPL_programming_language">Reverse Polish Lisp</a>. The emphasis was on the &#8220;Reverse&#8221; – to program this beast, you had to know the answer and work backwards to the problem. I learned then I was good at assuming a goal and working backwards.</p>
<p>With database design, the same things hold true, despite the intervening years. I just think backwards. Between you and me, with SharePoint, backwards thinking is required. It&#8217;s either that, or you end up redoing things a couple of times. In the end, it&#8217;s easier to have all the support tables setup <em>before </em>you set up your master list or document/picture library.</p>
<p><span style="text-decoration: underline">Building a DAM System:<br />
</span></p>
<p>First (or is it really last?), I needed a few supporting tables (or as SharePoint calls them, &#8220;lists&#8221;). My design goals included:</p>
<ol style="margin-left: 54pt">
<li>Keep it simple, yet powerful.</li>
<li>Where possible, use forced vocabularies (read: taxonomy) to catalog the images based on pick-lists and lookup tables.</li>
<li>Provide an easy to use, consistent, error-free, and end-user-proof system for cataloging.</li>
<li>Provide &#8220;Google-like&#8221; tools for search, &#8217;cause that&#8217;s what users will tolerate.</li>
<li>Provide simple tools to sort, manage, organize, view, retrieve and repurpose images.</li>
</ol>
<p>Hence, my design called for lots of pre-populated lookups. I&#8217;d let the anarchists and other folksonomic folks frolic elsewhere in the design. They get their fields, I get mine. And, since I&#8217;m the designer, I&#8217;d make mine &#8220;required&#8221; [evil laugh].</p>
<p>I decided on a total of six supporting tables, one each for <strong>subject</strong>, <strong>program,</strong><br />
<strong>location</strong>, <strong>credit</strong>, <strong>geography, </strong>and<strong> usage</strong>. I describe them and how they&#8217;re used, below:</p>
<ul style="margin-left: 54pt">
<li><strong>Subject</strong> (Coding): Multiple choice list of pre-selected (controlled) subject terms. I used a subset of the <a href="http://nccsdataweb.urban.org/PubApps/nteeSearch.php?gQry=all&amp;codeType=NPC&amp;PHPSESSID=6f929d1dde8c43abd0769f5d68c90425">NPC</a> since we already use this taxonomy within the organization. I built the list with two fields and concatenated those fields to create a single field for the lookup. The first field was a &#8220;code&#8221; in the form like &#8220;A10&#8243; or &#8220;E4&#8243; and the second the term itself, like &#8220;aquarium.&#8221; Using the &#8220;code&#8221; lets you sort by the code instead of the description, hence logically grouped terms tend to stay in the same area of the lookup table. Less messy and easier to use.</li>
<li><strong>Program </strong>(Coding): This is a completely idiosyncratic taxonomy used to catalog our grants. This is so engrained within our thinking that we see the world through these lenses whether we wish to or not. Again I used two fields and concatenated them into a single lookup much like the subject codes, in form: &#8220;Program&#8221; — &#8220;Program Area.&#8221; For example, &#8220;Environment—Freshwater&#8221; or the like.</li>
<li><strong>Geographic</strong> Focus (Coding): This is a three-tiered hierarchal coding originally based on ISO country codes. The table allows up to three fields that are, again, concatenated into a single lookup field. However, in this case I concatenate in reverse order to make the pick-list easy (e.g., &#8220;Ann Arbor – Michigan – United States&#8221; instead of &#8220;United States – Michigan – Ann Arbor&#8221;). I also include a &#8220;Special&#8221; category, such as &#8220;Great Lakes – Special.&#8221; This lets us have ad-hoc groupings for regions, special areas, and the like. People tend to think &#8220;ad hoc&#8221; and this solves that problem.</li>
<li><strong>Credit</strong> (Supporting): This is a list of photographer&#8217;s names and other contact information. Since it was &#8220;people information&#8221; I got smart and just used a standard MOSS &#8220;Contacts&#8221; list. It had everything I needed and more.</li>
<li><strong>Location</strong> (Supporting): This is a completely idiosyncratic list of hardcopy storage locations. Since we have a lot of original photographs, stored in our archives, it&#8217;s a reference field to the actual physical location. If we only have it as a digital asset, the option is DAM (as in Digital Asset Management).</li>
<li><strong>Usage</strong> History (Supporting): This is a list of publications where the photo may have been used. Not strictly germane to the system, it&#8217;s a user requirement. We use it to track when and if we used the photo in a printed publication. There is also an entry for &#8220;Web Site&#8221; and the year. Seemed useful.</li>
</ul>
<p>Here&#8217;s a snapshot of how the various supporting tables look like:
</p>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/03/032207_2120_DAMPictures110.png" /></p>
<p style="text-align: center"><span style="font-size: 9pt;color: #4f81bd"><strong>Table 1: DAM Geographic Codes<br />
</strong></span>
</p>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/03/032207_2120_DAMPictures210.png" /></p>
<p style="text-align: center"><span style="font-size: 9pt;color: #4f81bd"><strong>Table 2: DAM Program Codes<br />
</strong></span></p>
<p>Once I had the coding tables and supporting tables in place, building the DAM system was relatively easy.</p>
<p>And, it was here that I got creative and designed in the folksonomic flexibility that I knew people would ask for. I was pretty sure that I had designed in enough structure — enough forced vocabulary — that the system could survive the ensuing chaos. So I went wild (in a database designer way) and added in free form &#8220;Keyword&#8221; and &#8220;Description&#8221; fields. I have a suspicion that the &#8220;Keywords&#8221; field will prove redundant, given that the search engine indexes all fields, it strikes me that the &#8220;Description&#8221; field should be more than sufficient. Moreover, given user-fatigue, I imagine that we will quickly stop using all but the required fields, and &#8220;Description.&#8221; Simple always wins.</p>
<p>Trying to think simple (and backwards), the entire system has only 11 metadata fields, in addition to the system fields. I outline the fields below.</p>
<div>
<table border="0">
<tr style="height: 12px">
<td style="padding-right: 7px;padding-left: 7px;border: black 0.5pt solid"><span style="font-size: 8pt;color: red">DAM Custom Fields</span></td>
<td style="padding-right: 7px;padding-left: 7px">
<p style="text-align: center"><span style="font-size: 8pt;color: red">SharePoint Provided Fields</span></p>
</td>
</tr>
<tr>
<td style="padding-right: 7px;padding-left: 7px"><span style="font-size: 8pt">Item Title</span></td>
<td style="padding-right: 7px;padding-left: 7px"><span style="font-size: 8pt">Thumbnail (automatically generated)</span></td>
</tr>
<tr>
<td style="padding-right: 7px;padding-left: 7px"><span style="font-size: 8pt">Program Code (Lookup/multiple)</span></td>
<td style="padding-right: 7px;padding-left: 7px"><span style="font-size: 8pt">Check In Comment </span></td>
</tr>
<tr>
<td style="padding-right: 7px;padding-left: 7px"><span style="font-size: 8pt">Keywords (free text)</span></td>
<td style="padding-right: 7px;padding-left: 7px"><span style="font-size: 8pt">Content Type</span></td>
</tr>
<tr>
<td style="padding-right: 7px;padding-left: 7px"><span style="font-size: 8pt">Subject Codes (Lookup/multiple)</span></td>
<td style="padding-right: 7px;padding-left: 7px"><span style="font-size: 8pt">Copy Source</span></td>
</tr>
<tr>
<td style="padding-right: 7px;padding-left: 7px"><span style="font-size: 8pt">Geographic Focus (Lookup/multiple)</span></td>
<td style="padding-right: 7px;padding-left: 7px"><span style="font-size: 8pt">Created (date)</span></td>
</tr>
<tr>
<td style="padding-right: 7px;padding-left: 7px"><span style="font-size: 8pt">Description (Free text)</span></td>
<td style="padding-right: 7px;padding-left: 7px"><span style="font-size: 8pt">Created by (username)</span></td>
</tr>
<tr>
<td style="padding-right: 7px;padding-left: 7px"><span style="font-size: 8pt">Item Location (Lookup)</span></td>
<td style="padding-right: 7px;padding-left: 7px"><span style="font-size: 8pt">Date Picture Taken</span></td>
</tr>
<tr>
<td style="padding-right: 7px;padding-left: 7px"><span style="font-size: 8pt">Usage History (Lookup/multiple)</span></td>
<td style="padding-right: 7px;padding-left: 7px"><span style="font-size: 8pt">File Size</span></td>
</tr>
<tr>
<td style="padding-right: 7px;padding-left: 7px"><span style="font-size: 8pt">Credit (Lookup)</span></td>
<td style="padding-right: 7px;padding-left: 7px"><span style="font-size: 8pt">File Type (extension)</span></td>
</tr>
<tr>
<td style="padding-right: 7px;padding-left: 7px"><span style="font-size: 8pt">Copyright Statement</span></td>
<td style="padding-right: 7px;padding-left: 7px"><span style="font-size: 8pt">ID (unique record ID)</span></td>
</tr>
<tr>
<td style="padding-right: 7px;padding-left: 7px"> </td>
<td style="padding-right: 7px;padding-left: 7px"><span style="font-size: 8pt">Modified (date)</span></td>
</tr>
<tr>
<td style="padding-right: 7px;padding-left: 7px"> </td>
<td style="padding-right: 7px;padding-left: 7px"><span style="font-size: 8pt">Modified by (username)</span></td>
</tr>
<tr>
<td style="padding-right: 7px;padding-left: 7px"> </td>
<td style="padding-right: 7px;padding-left: 7px"><span style="font-size: 8pt">Picture Height</span></td>
</tr>
<tr>
<td style="padding-right: 7px;padding-left: 7px"> </td>
<td style="padding-right: 7px;padding-left: 7px"><span style="font-size: 8pt">Picture Width</span></td>
</tr>
<tr>
<td style="padding-right: 7px;padding-left: 7px"> </td>
<td style="padding-right: 7px;padding-left: 7px"><span style="font-size: 8pt">Picture Size (K)</span></td>
</tr>
<tr>
<td style="padding-right: 7px;padding-left: 7px"> </td>
<td style="padding-right: 7px;padding-left: 7px"><span style="font-size: 8pt">Type (Icon)</span></td>
</tr>
<tr>
<td style="padding-right: 7px;padding-left: 7px"> </td>
<td style="padding-right: 7px;padding-left: 7px"><span style="font-size: 8pt">Version (if you run versioning)</span></td>
</tr>
</table>
</div>
<p>Most, if not all, of the system fields are automatically created and populated by SharePoint — this keeps to the design criteria of &#8220;simple&#8221; yet powerful.</p>
<p><span style="text-decoration: underline">DAM User Interface:<br />
</span></p>
<p>SharePoint provides a sparse user interface OOTB (out of the box); lots of potential, but not much &#8220;substance&#8221; on the screen. Without some customization, MOSS pretty much drops you to an almost-blank screen. Users don&#8217;t like dropping on a blank page. SharePoint leaves you wondering. Unless you put them on the page, any document libraries, or picture libraries, or other content is kind of &#8220;hidden.&#8221; I remedy that by creating what I call &#8220;a soft landing&#8221; — usually something simple like a nice graphic that folks can click. The click takes you into meat of the system.</p>
<p>Tool-wise, MOSS gives you a whole toolbox at your fingertips. You get thumbnails, a &#8220;slide sorter&#8221; view, a list view, and tools to upload, download, and insert into Outlook, or Word, or open in an editor. One thing you can say about Microsoft products is they integrate well – ah, as long as it&#8217;s with other Microsoft products.
</p>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/03/032207_2120_DAMPictures38.png" /></p>
<p style="text-align: center"><span style="font-size: 9pt;color: #4f81bd"><strong>Figure 1: A DAM Soft Landing<br />
</strong></span></p>
<p>For this DAM system, I used actual content for the landing page –a picture for the link into the photo repository, and a graphic for the link into the graphic repository. To make it easy to change things in the future, the two &#8220;click boxes&#8221; on the front page are simple &#8220;CEWP&#8217;s&#8221; (Content Editor Web Parts) that reference to generic graphic images named &#8220;PhotoLogo.jpg&#8221; and &#8220;GraphicLogo.jpg.&#8221; The images can be swapped out easily by simply placing replacing the graphic files. The JPG files are stored in an unlisted photo library.</p>
<p>(Oh, I forgot to mention I did a similar system for graphic images – uses the same codes, mostly. The only real change was to include artists in the &#8220;Credit&#8221; table, and a few different supporting tables. But, this post is long enough without me going into that piece of the pie.) Note the nice navigation on the left side – a list of the supporting tables and codes. These are, of course, security-trimmed — only showing if you have appropriate rights, etc.</p>
<p>Clicking on logo of the &#8220;shoes&#8221; takes you into the DAM system<span style="color: #7f7f7f">. [See, ain't that fun.]</span> There are two views predesigned views — one designed as a &#8220;list&#8221; showing a small thumbnail, and allowing you to filter on the various metadata fields. This is how I expect most people to wander around in the system, filtering down on a particular subject or geographic code; and a &#8220;Slide Sorter&#8221; view. Here&#8217;s a picture of the pictures – two different views:
</p>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/03/032207_2120_DAMPictures48.png" /></p>
<p style="text-align: center"><span style="font-size: 9pt;color: #4f81bd"><strong>Figure 2: DAM List View<br />
</strong></span>
</p>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/03/032207_2120_DAMPictures58.png" /></p>
<p style="text-align: center"><span style="font-size: 9pt;color: #4f81bd"><strong>Figure 3: DAM Slide Sorter View<br />
</strong></span></p>
<p>Now, the tools that SharePoint brings to this, OOTB, are formidable. First, everything is indexed by the MOSS search engine. And, just so you don&#8217;t feel left out, this works in WSS too. There is nothing here that can&#8217;t be done in the bundled version of Windows SharePoint Services (WSS 3.0).</p>
<p>Moreover, within either of these views, you get access to a range of actions, including upload, download, edit, and send to, as well as the ability to subscribe to the library itself via RSS or via MOSS&#8217;s own &#8220;Alert Me&#8221; system that works via Outlook.
</p>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/03/032207_2120_DAMPictures68.png" /></p>
<p style="text-align: center"><span style="font-size: 9pt;color: #4f81bd"><strong>Figure 4: DAM Actions<br />
</strong></span></p>
<p>Finally, the Send To feature bears mentioning. It&#8217;s a neat little menu that lets you pop selected pictures into Office apps. I used it to insert the following screen cap, right from the picture library and into this blog post.
</p>
<p style="text-align: center"><img src="http://digitaldiner.org/files/2007/03/032207_2120_DAMPictures78.png" /></p>
<p>The fact that all of this can be done fairly quickly and easily with a product that is bundled for free with Windows Server 2003 is pretty damn neat — and that doesn&#8217;t even begin to touch it&#8217;s flexible, integration with Word, InfoPath, and the rest of Office. Damn, DAM: damn neat.</p>
]]></content:encoded>
			<wfw:commentRss>http://digitaldiner.org/2007/03/28/dam-pictures/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
	</channel>
</rss>
