<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://codebetter.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Mark DiGiovanni</title><subtitle type="html">Software Development and Supporting Technologies</subtitle><id>http://codebetter.com/blogs/mark.digiovanni/atom.aspx</id><link rel="alternate" type="text/html" href="http://codebetter.com/blogs/mark.digiovanni/default.aspx" /><link rel="self" type="application/atom+xml" href="http://codebetter.com/blogs/mark.digiovanni/atom.aspx" /><generator uri="http://communityserver.org" version="3.0.20416.853">Community Server</generator><updated>2005-02-03T08:21:00Z</updated><entry><title>Richmond Code Camp 3 Presentations</title><link rel="alternate" type="text/html" href="http://codebetter.com/blogs/mark.digiovanni/archive/2007/05/01/richmond-code-camp-3-presentations.aspx" /><id>http://codebetter.com/blogs/mark.digiovanni/archive/2007/05/01/richmond-code-camp-3-presentations.aspx</id><published>2007-05-01T12:56:00Z</published><updated>2007-05-01T12:56:00Z</updated><content type="html">&lt;p&gt;&lt;a href="http://richmondcodecamp.org/default.aspx"&gt;Richmond Code Camp 3&lt;/a&gt; was a huge success.  There were some really great &lt;a href="http://richmondcodecamp.org/Lists/RCC3Schedule/CodeCampSked.aspx?CalendarDate=4/28/2007"&gt;topics&lt;/a&gt; presented and prizes given away.
&lt;/p&gt;&lt;p&gt;I presented two sessions on WPF.  The first on XAML and the second on Code; both sessions were based on the most excellent book by &lt;a href="http://www.charlespetzold.com"&gt;Charles Petzold&lt;/a&gt; called &lt;a href="http://www.charlespetzold.com/wpf/"&gt;Applications = Code + Markup, A Guide to the Microsoft Windows Presentation Foundation&lt;/a&gt;.  If you are new to WPF and have .NET development experience with C#, then this book is for you.
&lt;/p&gt;&lt;p&gt;The slide decks will be published shortly.  You will be able to download them here:
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://richmondcodecamp.org/Lists/RCC3Schedule/DispForm.aspx?ID=8&amp;amp;Source=http%3A%2F%2Frichmondcodecamp%2Eorg%2FLists%2FRCC3Schedule%2FCodeCampSked%2Easpx%3FCalendarDate%3D4%2F28%2F2007"&gt;Cool Stuff with WPF: XAML&lt;/a&gt;
		&lt;/li&gt;&lt;li&gt;&lt;a href="http://richmondcodecamp.org/Lists/RCC3Schedule/DispForm.aspx?ID=11&amp;amp;Source=http%3A%2F%2Frichmondcodecamp%2Eorg%2FLists%2FRCC3Schedule%2FCodeCampSked%2Easpx%3FCalendarDate%3D4%2F28%2F2007"&gt;Cool Stuff with WPF: Code&lt;/a&gt;
		&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;--Mark&lt;/p&gt;&lt;img src="http://codebetter.com/aggbug.aspx?PostID=162637" width="1" height="1"&gt;</content><author><name>mdigiovanni</name><uri>http://codebetter.com/members/mdigiovanni.aspx</uri></author><category term="WPF" scheme="http://codebetter.com/blogs/mark.digiovanni/archive/tags/WPF/default.aspx" /></entry><entry><title>Retrieve the Current User &amp; Set the Combo Box: Access 2003</title><link rel="alternate" type="text/html" href="http://codebetter.com/blogs/mark.digiovanni/archive/2005/06/10/64444.aspx" /><id>http://codebetter.com/blogs/mark.digiovanni/archive/2005/06/10/64444.aspx</id><published>2005-06-10T11:55:00Z</published><updated>2005-06-10T11:55:00Z</updated><content type="html">&lt;P&gt;It’s been six years since I did any real Microsoft Access development.&amp;nbsp; I am currently on a short engagement to enhance an Access database for a&amp;nbsp;“Major Nationwide Electronics and Stuff Retailer.”&amp;nbsp; In reality, I’m building them a completely new database.&amp;nbsp;&amp;nbsp; I am hoping that this will lead to an overhaul of their department operations, which I hope will lead to a lengthy .NET conversion project.&amp;nbsp; A lot of applications actually start out this way.&amp;nbsp; I’ve worked on several Microsoft Office application to .NET&amp;nbsp;conversions.&amp;nbsp;&amp;nbsp; Access programming may not be as&amp;nbsp;glamorous as say building &lt;a href="http://www.codebetter.com/blogs/darrell.norton/archive/2005/06/07/64192.aspx"&gt;.NET driven robots&lt;/A&gt;, but it is still pretty fun.&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;BR&gt;Retrieve the UserName&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;To retrieve the currently logged in user, created a helper class, and place the following method in it:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Public Function GetCurrentUserName() As String&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;GetCurrentUserName = Environ("USERNAME")&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;End Function&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;In the old days of Access programming, a complicated API call had to be made to achieve the above.&amp;nbsp;&amp;nbsp; The example will also work in other Office applications.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;BR&gt;Retrieve the UserID from the Users Table&lt;/EM&gt;&lt;/STRONG&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Create a table of Users that contains the UserID, UserName, FirstName, LastName, and so on.&amp;nbsp;&amp;nbsp; Then match the value returned from GetCurrentUserName() with the value that is in the UserName field of the table.&amp;nbsp; Use the following method to retrieve any given value from the Users table based upon the UserName:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Public Function GetUserNamePart(returnPart As String) As String&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Dim user As String&lt;BR&gt;user = GetCurrentUserName&lt;/P&gt;
&lt;P&gt;Dim cmdText As String&lt;BR&gt;cmdText = "SELECT " &amp;amp; returnPart &amp;amp; " FROM Users WHERE UserName = '" &amp;amp; user &amp;amp; "'"&lt;/P&gt;
&lt;P&gt;Dim cmd As New ADODB.Command&lt;BR&gt;cmd.ActiveConnection = CurrentProject.Connection&lt;BR&gt;cmd.CommandText = cmdText&lt;/P&gt;
&lt;P&gt;Dim rst As New ADODB.recordset&lt;BR&gt;Set rst = cmd.Execute&lt;/P&gt;
&lt;P&gt;Dim namePartValue As String&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;If Not rst.BOF And Not rst.EOF Then&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; namePartValue = rst(0).value&lt;BR&gt;&lt;BR&gt;Else&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; namePartValue = user&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;End If&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;rst.Close&lt;BR&gt;Set rst = Nothing&lt;BR&gt;Set cmd = Nothing&lt;/P&gt;
&lt;P&gt;GetUserNamePart = namePartValue&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;End Function&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;BR&gt;For example, if the UserID is need,&amp;nbsp;make the following call to the above method:&lt;/P&gt;
&lt;P&gt;Public Function GetUserID() As Long&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;GetUserID= GetUserNamePart("UserID")&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;End Function&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;&lt;EM&gt;Set the Default Value of the Combo Box&lt;/EM&gt;&lt;/STRONG&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;I have forms that track various bits of data that can be associated with a person other than the current user.&amp;nbsp; I created a Combo Box that is bound to the UserID of the table that is bound to the form, while the Combo Box gets its display data from the Users table.&amp;nbsp; When the value of the Combo Box changes,&amp;nbsp;it will be stored in the table that is bound to the form.&amp;nbsp; Without making any changes, the Combo Box will default to the first row that is retrieved.&amp;nbsp; This can become painful if the user has a last name that starts with “S” or a latter letter in the alphabet and has to key in 100+ items.&lt;/P&gt;
&lt;P&gt;On the Form_Load() event of&amp;nbsp;the form, add the following code:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;UserList.DefaultValue = HelperFunctions.GetUserID&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;This will tell the Combo Box to default to the currently logged in user, and will also give the user the ability to change the value. &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;&lt;EM&gt;Additional Resources:&lt;/EM&gt;&lt;/STRONG&gt;&lt;BR&gt;&lt;A href="http://blogs.officezealot.com/charles/archive/2004/12/10/3574.aspx"&gt;http://blogs.officezealot.com/charles/archive/2004/12/10/3574.aspx&lt;/A&gt;&lt;BR&gt;&lt;A href="http://www.vba-programmer.com/"&gt;http://www.vba-programmer.com/&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;--Mark&lt;BR&gt;&amp;nbsp;&lt;/P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;BR&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;img src="http://codebetter.com/aggbug.aspx?PostID=64444" width="1" height="1"&gt;</content><author><name>mdigiovanni</name><uri>http://codebetter.com/members/mdigiovanni.aspx</uri></author></entry><entry><title>Windows CE Emulator Error Message</title><link rel="alternate" type="text/html" href="http://codebetter.com/blogs/mark.digiovanni/archive/2005/05/05/62842.aspx" /><id>http://codebetter.com/blogs/mark.digiovanni/archive/2005/05/05/62842.aspx</id><published>2005-05-05T18:23:00Z</published><updated>2005-05-05T18:23:00Z</updated><content type="html">&lt;P&gt;I finally got my Virtual PC development environment configured so I can develop a Windows CE application in Visual Studio.NET 2003.&amp;nbsp; I created a new project (Smart Device Application), then pressed F5 to see what would happen.&amp;nbsp; Here is the error message I received.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;IMG src="/photos/mark.digiovanni/images/62841/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;--Mark&lt;/P&gt;&lt;img src="http://codebetter.com/aggbug.aspx?PostID=62842" width="1" height="1"&gt;</content><author><name>mdigiovanni</name><uri>http://codebetter.com/members/mdigiovanni.aspx</uri></author></entry><entry><title>Publishing Office Documents as HTML to SharePoint</title><link rel="alternate" type="text/html" href="http://codebetter.com/blogs/mark.digiovanni/archive/2005/05/02/62736.aspx" /><id>http://codebetter.com/blogs/mark.digiovanni/archive/2005/05/02/62736.aspx</id><published>2005-05-02T14:21:00Z</published><updated>2005-05-02T14:21:00Z</updated><content type="html">My boss came to me today with the need to have a list he is maintaining published to a SharePoint site.&amp;nbsp; This list needed to be viewed only by a select group of people.&amp;nbsp; This list was rather dynamic, and columns could be added or removed as needed.&amp;nbsp; He needed this published by COB today.&amp;nbsp; He also requires the ability to publish this list whenever the need arises.&lt;BR&gt;&lt;BR&gt;The solution I implemented only took about five minutes of my time.&amp;nbsp; Here is what I did:&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;SharePoint Configuration:&lt;BR&gt;&lt;/STRONG&gt;
&lt;UL&gt;
&lt;LI&gt;Created a site and added my boss as an administrator. (He can add people as he see fit).&lt;BR&gt;
&lt;LI&gt;Modified the homepage.&amp;nbsp; I removed all the default web parts except events. 
&lt;LI&gt;Added a Page Viewer Web Part and the widths were set to 900 by 900 pixels and set the Frame Style to none.&lt;BR&gt;
&lt;LI&gt;Added a default webpage called pageview.htm (you can name this whatever you like) to the Shared Documents document library. 
&lt;LI&gt;Pointed the Page Viewer Web Part to pageview.htm. &lt;/LI&gt;&lt;/UL&gt;&lt;STRONG&gt;Office Application Configuration:&lt;BR&gt;&lt;/STRONG&gt;
&lt;UL&gt;
&lt;LI&gt;Saved Excel&amp;nbsp;file as a webpage and name it pageview.htm --works with Word too :). 
&lt;LI&gt;Uploaded this document to the Shared Documents document library of the new site. 
&lt;LI&gt;Alternatively, you can tell the office application to publish to the document library (on Save As). &lt;/LI&gt;&lt;/UL&gt;I accomplished all of this in under five minutes.&amp;nbsp; Now my boss can make changes to his document, and share it as a webpage whenever he likes.&amp;nbsp; The best part is that he can do this himself.&amp;nbsp; He doesn't need an "IT" person to push a webpage to the portal site.&lt;BR&gt;&lt;BR&gt;--Mark&lt;BR&gt;&lt;img src="http://codebetter.com/aggbug.aspx?PostID=62736" width="1" height="1"&gt;</content><author><name>mdigiovanni</name><uri>http://codebetter.com/members/mdigiovanni.aspx</uri></author><category term="SharePoint" scheme="http://codebetter.com/blogs/mark.digiovanni/archive/tags/SharePoint/default.aspx" /></entry><entry><title>Problems with Rhapsody to Go</title><link rel="alternate" type="text/html" href="http://codebetter.com/blogs/mark.digiovanni/archive/2005/04/27/62519.aspx" /><id>http://codebetter.com/blogs/mark.digiovanni/archive/2005/04/27/62519.aspx</id><published>2005-04-27T11:08:00Z</published><updated>2005-04-27T11:08:00Z</updated><content type="html">&lt;P&gt;Surprisingly, this is actually my first "rant" of 2005.&amp;nbsp; I am completely frustrated with &lt;A href="http://www.real.com/"&gt;Real Networks&lt;/A&gt; new Rhapsody subscription, "&lt;A href="http://www.listen.com/services/"&gt;Rhapsody to Go.&lt;/A&gt;"&lt;/P&gt;
&lt;P&gt;On April 26th, &lt;A href="http://news.zdnet.com/2100-9588_22-5684989.html"&gt;Real Networks announced Rhapsody 3.0 and a new subscription tiers&lt;/A&gt;.&amp;nbsp; So I upgraded to &lt;A href="http://www.listen.com/services/"&gt;Rhapsody to Go&lt;/A&gt;.&amp;nbsp; This subscription is $14.99 per month, and is supposed to allow you to download all the music you want to your portable device.&amp;nbsp; Take a look at their help documentation &lt;A href="http://home.real.com/product/help/rhapv3_ts/en/PD_Transfer.htm"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;The device I am transferring to is my IPod Shuffle which is supported (&lt;A href="http://music.guide.real.com/rhapsodydevices"&gt;http://music.guide.real.com/rhapsodydevices&lt;/A&gt;).&amp;nbsp; Here is my problem: every time I try to transfer music to my portable device, I get prompted to pay 89 cents for each song that I want to transfer.&lt;/P&gt;
&lt;P&gt;So I emailed customer support twice, then finally called (to get a phone number, you have to try to cancel your subscription from within Rhapsody).&amp;nbsp; They told me that anytime I want to transfer music I have to pay 89 cents regardless of the "&lt;A href="http://www.listen.com/services/"&gt;To Go&lt;/A&gt;"&amp;nbsp;subscription that I have.&amp;nbsp; This in complete contradiction to what they are advertising with their &lt;A href="http://www.listen.com/services/"&gt;subscription service&lt;/A&gt;.&amp;nbsp; &lt;SPAN style="TEXT-DECORATION: line-through"&gt;Quite frankly, I am in disbelief.&amp;nbsp; This seems to me like false advertising, pure and simple.&lt;/SPAN&gt; &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;[Update (thanks to &lt;A href="http://geekswithblogs.net/bpaddock"&gt;Brandon Paddock&lt;/A&gt;) :&amp;nbsp; It seems that I, along with the Rhapsody customer service reps missed the little &lt;A href="http://music.guide.real.com/rhapsodydevices"&gt;bit of info&lt;/A&gt;&amp;nbsp;:&lt;BR&gt;&lt;BR&gt;Basic: Plays simple MP3, WMA, AAC etc.&lt;BR&gt;Download: Plays all of the above, PLUS secure music purchased from Rhapsody&lt;BR&gt;Subscription: Plays all of the above, PLUS subscription downloads from Rhapsody To Go&lt;BR&gt;&lt;BR&gt;I wish this was posted in a more conspicuous place]&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;This is the first paragraph from &lt;A href="http://home.real.com/product/help/rhapv3_ts/en/PD_Transfer.htm"&gt;this&lt;/A&gt; help file:&lt;/P&gt;
&lt;P&gt;"A portable player or device allows you to take your local music with you wherever you go. But with a the appropriate Rhapsody subscription, you can download and transfer thousands of Rhapsody subscription tracks, at no additional cost beyond your subscription rates. Much of the vast Rhapsody Music Guide library is yours to put in your pocket and take with you anywhere."&lt;/P&gt;
&lt;P&gt;This is from their advertisement from their &lt;A href="http://www.listen.com/services/"&gt;site&lt;/A&gt;: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV&gt;Unlimited access to over 1 million songs&lt;/DIV&gt;
&lt;LI style="COLOR: rgb(0,0,0)"&gt;
&lt;DIV&gt;Unlimited transfers to your portable devices&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;Unlimited pre-programmed and custom radio&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;Effortless music playback and discovery&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;Personalized music recommendations&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;These statements clearly state that&amp;nbsp;I do not have to pay for each song.&amp;nbsp; What part of "no additional cost" includes 89 cents per track?&amp;nbsp; What part of "Unlimited transfers to your portable devices" includes 89 cents per track?&lt;/P&gt;
&lt;P&gt;I have since cancelled my Rhapsody subscription, and I will purchase one or two albums from &lt;A href="http://www.itunes.com/"&gt;ITunes&lt;/A&gt; a month from now on.&lt;/P&gt;
&lt;P&gt;--Mark&lt;/P&gt;&lt;img src="http://codebetter.com/aggbug.aspx?PostID=62519" width="1" height="1"&gt;</content><author><name>mdigiovanni</name><uri>http://codebetter.com/members/mdigiovanni.aspx</uri></author></entry><entry><title>Command-Line switches (parameters) for Virtual PC 2004</title><link rel="alternate" type="text/html" href="http://codebetter.com/blogs/mark.digiovanni/archive/2005/04/20/62216.aspx" /><id>http://codebetter.com/blogs/mark.digiovanni/archive/2005/04/20/62216.aspx</id><published>2005-04-20T10:21:00Z</published><updated>2005-04-20T10:21:00Z</updated><content type="html">&lt;P&gt;Here is a few switches (parameters)&amp;nbsp;that you can use to start Virtual PC 2004:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&amp;nbsp;&lt;STRONG&gt;-singlepc&lt;/STRONG&gt;&lt;BR&gt;The -singlepc parameter starts the specified virtual machine without starting Virtual PC Console. This parameter can simplify the Virtual PC interface in a corporate or lab environment where users only want to access a virtual machine and do not have to use Virtual PC Console. You can use this parameter only during Virtual PC startup. 
&lt;LI&gt;&lt;STRONG&gt;-quiet&lt;/STRONG&gt;&lt;BR&gt;The -quiet parameter prevents the starting of any virtual machines that are configured to start automatically. You can use this parameter only during Virtual PC startup. 
&lt;LI&gt;&lt;STRONG&gt;-usehostdiskcache&lt;/STRONG&gt;&lt;BR&gt;The -usehostdiskcache parameter turns on host-side disk caching. Host-side disk caching can improve the performance of virtual machines that run operating systems other than Windows. This parameter can help to resolve poor performance problems with disk-intensive tasks. You can use this parameter only during Virtual PC startup.-pc virtual_machine_name&lt;BR&gt;The -pc virtual_machine_name parameter specifies to perform operations on a specific virtual machine. The virtual_machine_name is the name that appears in Virtual PC Console and the virtual machine window for the virtual machine.&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt; virtual_machine_name&amp;nbsp; is case sensitive.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;You can use these either from the command-line or by creating a shortcut with the target set&amp;nbsp;like this:&lt;/P&gt;
&lt;P&gt;"C:\Program Files\Microsoft Virtual PC\Virtual PC.exe" -usehostdiskcache&lt;/P&gt;
&lt;P&gt;You can find more switches &lt;A href="http://support.microsoft.com/default.aspx?kbid=831501&amp;amp;product=vpcwin2004" target="_blank"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;--Mark&lt;/P&gt;&lt;img src="http://codebetter.com/aggbug.aspx?PostID=62216" width="1" height="1"&gt;</content><author><name>mdigiovanni</name><uri>http://codebetter.com/members/mdigiovanni.aspx</uri></author><category term="Virtualization" scheme="http://codebetter.com/blogs/mark.digiovanni/archive/tags/Virtualization/default.aspx" /></entry><entry><title>Optimizing Development with Microsoft Virtual PC 2004</title><link rel="alternate" type="text/html" href="http://codebetter.com/blogs/mark.digiovanni/archive/2005/04/13/61863.aspx" /><id>http://codebetter.com/blogs/mark.digiovanni/archive/2005/04/13/61863.aspx</id><published>2005-04-13T10:00:00Z</published><updated>2005-04-13T10:00:00Z</updated><content type="html">I've written an article about &lt;a href="http://www.codebetter.com/blogs/mark.digiovanni/articles/61862.aspx"&gt;Optimizing Development with Microsoft Virtual PC 2004&lt;/A&gt;.&amp;nbsp; This product caused me to rethink the way I configure my laptop for enterprise development.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Read on &lt;a href="http://www.codebetter.com/blogs/mark.digiovanni/articles/61862.aspx"&gt;here&lt;/A&gt;. &lt;BR&gt;&lt;BR&gt;--Mark&lt;BR&gt;&lt;img src="http://codebetter.com/aggbug.aspx?PostID=61863" width="1" height="1"&gt;</content><author><name>mdigiovanni</name><uri>http://codebetter.com/members/mdigiovanni.aspx</uri></author><category term="Virtualization" scheme="http://codebetter.com/blogs/mark.digiovanni/archive/tags/Virtualization/default.aspx" /></entry><entry><title>WeProgram.Net site</title><link rel="alternate" type="text/html" href="http://codebetter.com/blogs/mark.digiovanni/archive/2005/03/31/60923.aspx" /><id>http://codebetter.com/blogs/mark.digiovanni/archive/2005/03/31/60923.aspx</id><published>2005-03-31T13:06:00Z</published><updated>2005-03-31T13:06:00Z</updated><content type="html">&lt;P&gt;Our &lt;A href="http://www.weprogram.net"&gt;new site&lt;/A&gt; is up.&amp;nbsp; Many thanks to Greg Postlewait for all his hard work.&amp;nbsp; My presentation materials from our last meeting on March 8th, "One Part Enterprise Library, One Part VistaDB, and A Dash of Resharper" are online and located &lt;A href="http://www.weprogram.net/Home/tabid/36/ctl/Details/mid/364/ItemID/3/Default.aspx"&gt;here&lt;/A&gt;.&amp;nbsp; If you are new to the Enterprise Library, make sure to look at these &lt;A href="http://channel9.msdn.com/wiki/default.aspx/Channel9.EnterpriseLibraryTutorials"&gt;walkthroughs&lt;/A&gt;; they are really good.&lt;/P&gt;
&lt;P&gt;&lt;a href="http://www.codebetter.com/blogs/mark.digiovanni/archive/2005/03/07/56672.aspx"&gt;Previous post on this topic&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;--Mark&lt;/P&gt;&lt;img src="http://codebetter.com/aggbug.aspx?PostID=60923" width="1" height="1"&gt;</content><author><name>mdigiovanni</name><uri>http://codebetter.com/members/mdigiovanni.aspx</uri></author><category term="Enterprise Library" scheme="http://codebetter.com/blogs/mark.digiovanni/archive/tags/Enterprise+Library/default.aspx" /><category term="Usergroup" scheme="http://codebetter.com/blogs/mark.digiovanni/archive/tags/Usergroup/default.aspx" /><category term="VistaDB" scheme="http://codebetter.com/blogs/mark.digiovanni/archive/tags/VistaDB/default.aspx" /></entry><entry><title>User Agent Switcher plug-in for Firefox</title><link rel="alternate" type="text/html" href="http://codebetter.com/blogs/mark.digiovanni/archive/2005/03/25/60616.aspx" /><id>http://codebetter.com/blogs/mark.digiovanni/archive/2005/03/25/60616.aspx</id><published>2005-03-25T11:06:00Z</published><updated>2005-03-25T11:06:00Z</updated><content type="html">&lt;P&gt;Here is a &lt;A href="http://www.chrispederick.com/work/firefox/useragentswitcher/download/"&gt;plugin&lt;/A&gt; that I came across today.&amp;nbsp; It switches the user agent&amp;nbsp;in Firefox&amp;nbsp;to fool the website into thinking it's IE, Opera, etc.&lt;/P&gt;
&lt;P&gt;--Mark&lt;/P&gt;&lt;img src="http://codebetter.com/aggbug.aspx?PostID=60616" width="1" height="1"&gt;</content><author><name>mdigiovanni</name><uri>http://codebetter.com/members/mdigiovanni.aspx</uri></author></entry><entry><title>Presenting at WeProgram.Net</title><link rel="alternate" type="text/html" href="http://codebetter.com/blogs/mark.digiovanni/archive/2005/03/07/56672.aspx" /><id>http://codebetter.com/blogs/mark.digiovanni/archive/2005/03/07/56672.aspx</id><published>2005-03-07T22:33:00Z</published><updated>2005-03-07T22:33:00Z</updated><content type="html">&lt;P&gt;Tomorrow I will be presenting the following topic:&lt;/P&gt;
&lt;P&gt;"One Part Enterprise Library, One Part VistaDB, and A Dash of Resharper"&lt;/P&gt;
&lt;P&gt;This has been a fun topic to put together.&amp;nbsp; Basically, I will be confining my talk to the &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/daab.asp"&gt;Data Access Application Block&lt;/A&gt;, how to write a custom data provider to interface with VistaDB via this application block, and how Resharper can help the developer be more productive.&lt;/P&gt;
&lt;P&gt;I plan on recording this presentation with Windows Media Encoder, and making it available for on-line viewing.&amp;nbsp; We'll see how it goes.&amp;nbsp; I definitely will make the slide deck and the code examples available.&lt;/P&gt;
&lt;P&gt;We will be giving a $900 pass to &lt;A href="http://www.devscovery.com/"&gt;Devscovery&lt;/A&gt;, at least 2 licenses for VistaDB, two licenses for Resharper, and everyone who attends will receive a 20% discount on their purchase of Resharper.&lt;/P&gt;
&lt;P&gt;for more info, visit the following:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.weprogram.net"&gt;WeProgram.Net&lt;/A&gt;&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/dnpag2/html/entlib.asp"&gt;Microsoft Patterns and Practices, Enterprise Library&lt;/A&gt;&lt;BR&gt;&lt;A href="http://www.vistadb.com/"&gt;VistaDB&lt;/A&gt;&lt;BR&gt;&lt;A href="http://www.jetbrains.com/resharper/"&gt;Resharper&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Update:&amp;nbsp; Materials are now available &lt;A href="http://www.weprogram.net/Home/tabid/36/ctl/Details/mid/364/ItemID/3/Default.aspx"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Mark&lt;/P&gt;&lt;img src="http://codebetter.com/aggbug.aspx?PostID=56672" width="1" height="1"&gt;</content><author><name>mdigiovanni</name><uri>http://codebetter.com/members/mdigiovanni.aspx</uri></author><category term="Enterprise Library" scheme="http://codebetter.com/blogs/mark.digiovanni/archive/tags/Enterprise+Library/default.aspx" /><category term="Usergroup" scheme="http://codebetter.com/blogs/mark.digiovanni/archive/tags/Usergroup/default.aspx" /><category term="VistaDB" scheme="http://codebetter.com/blogs/mark.digiovanni/archive/tags/VistaDB/default.aspx" /></entry><entry><title>How to change portal navigation in SharePoint 2003</title><link rel="alternate" type="text/html" href="http://codebetter.com/blogs/mark.digiovanni/archive/2005/03/04/56533.aspx" /><id>http://codebetter.com/blogs/mark.digiovanni/archive/2005/03/04/56533.aspx</id><published>2005-03-04T20:24:00Z</published><updated>2005-03-04T20:24:00Z</updated><content type="html">&lt;P&gt;These are two great articles.&lt;/P&gt;
&lt;P&gt;In researching how to modify the default navigation in SharePoint Portal Server 2003, I came across these articles:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odc_sp2003_ta/html/Office_SharePointApplyingCorporateBrand.asp"&gt;Branding a SharePoint Portal Server 2003 Site: Part 1, Understanding the Use of a Corporate Brand.&lt;/A&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;The second article discusses modifying the left area navigation and creating a breadcrumb.&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odc_sp2003_ta/html/Office_SharePointHowToApplyBrand.asp"&gt;Branding a SharePoint Portal Server 2003 Site: Part 2, How to Apply Your Own Corporate Brand.&lt;/A&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;--Mark&lt;/P&gt;&lt;img src="http://codebetter.com/aggbug.aspx?PostID=56533" width="1" height="1"&gt;</content><author><name>mdigiovanni</name><uri>http://codebetter.com/members/mdigiovanni.aspx</uri></author><category term="SharePoint" scheme="http://codebetter.com/blogs/mark.digiovanni/archive/tags/SharePoint/default.aspx" /></entry><entry><title>Shorter hours in software</title><link rel="alternate" type="text/html" href="http://codebetter.com/blogs/mark.digiovanni/archive/2005/02/22/51322.aspx" /><id>http://codebetter.com/blogs/mark.digiovanni/archive/2005/02/22/51322.aspx</id><published>2005-02-22T15:08:00Z</published><updated>2005-02-22T15:08:00Z</updated><content type="html">&lt;P&gt;It seems that shorter work days are the &lt;A href="http://news.zdnet.com/2100-9589_22-5582885.html?tag=zdfd.newsfeed" target=_blank&gt;new trend&lt;/A&gt; in the software industry.&amp;nbsp; I think &lt;A href="http://news.zdnet.com/2100-3513_22-5457274.html?tag=nl" target=_blank&gt;EA&lt;/A&gt; helped bring this to the forefront, but&amp;nbsp;companies may not be all to blame.&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;!--StartFragment --&gt;A tough-guy culture among coders also seems to have been a factor. Last year, the &lt;A href="http://dw.com.com/redir?destUrl=http%3A%2F%2Fwww.idga.org&amp;amp;siteId=22&amp;amp;oId=2100-9589-5582885&amp;amp;ontId=9589&amp;amp;lop=nl.ex"&gt;International Game Developers Association&lt;/A&gt; cited this as a reason for horrible working conditions in the computer game world. &lt;/P&gt;
&lt;P&gt;"Developers are sometimes just as much to blame for submitting themselves to extreme working conditions, adopting a macho bravado in hopes of 'proving' themselves worthy for the industry," the professional group's board said in a statement. &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;Does working overtime produce more work?&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P dir=ltr&gt;&lt;!--StartFragment --&gt;Research indicates that long hours don't translate into heaps of extra work. Consultant DeMarco has studied productivity data and concluded that workers putting in 44 hours per week generate&amp;nbsp;&lt;!--StartFragment --&gt;the same amount of work as those who put in 36 or 37 hours. &lt;/P&gt;
&lt;P&gt;"There's nothing to be gained from the extra hours," he said. DeMarco argues that there are limits to how much people can churn out without adequate breaks, and companies with cultures of long days tend not to run meetings in a disciplined fashion. &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;Read on &lt;A href="http://news.zdnet.com/2100-9589_22-5582885.html?tag=zdfd.newsfeed" target=_blank&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;—Mark&lt;/P&gt;&lt;img src="http://codebetter.com/aggbug.aspx?PostID=51322" width="1" height="1"&gt;</content><author><name>mdigiovanni</name><uri>http://codebetter.com/members/mdigiovanni.aspx</uri></author></entry><entry><title>Determine User Site Group (Role) Membership in SharePoint 2003</title><link rel="alternate" type="text/html" href="http://codebetter.com/blogs/mark.digiovanni/archive/2005/02/16/51054.aspx" /><id>http://codebetter.com/blogs/mark.digiovanni/archive/2005/02/16/51054.aspx</id><published>2005-02-16T17:04:00Z</published><updated>2005-02-16T17:04:00Z</updated><content type="html">&lt;P&gt;Since there is no method to test whether a user is a member of a specific SharePoint Site Group such as Reader, Member, etc., use the following method:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private bool IsCurrentUserInRole(string role)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool inRole= false;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPWeb rootWeb = SPControl.GetContextSite(Context).RootWeb;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPRole&amp;nbsp; spRole = rootWeb.Roles[role];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPUser currentUser = rootWeb.CurrentUser;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach(SPUser roleUser in spRole.Users)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(roleUser.ID.Equals(currentUser.ID))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inRole= true;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return inRole;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;A similar loop will have to be used to remove a user from a role.&amp;nbsp; This avoids having to trap an exception that gets&amp;nbsp;thrown&amp;nbsp;when the user cannot be found in the role collection.&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;Update&lt;/FONT&gt;:&amp;nbsp; I found this &lt;A href="http://www.bluedoglimited.com/SharePointThoughts/ViewPost.aspx?ID=7" target="_blank"&gt;post&lt;/A&gt;.&amp;nbsp; Take a look.&lt;/P&gt;
&lt;P&gt;--Mark&lt;/P&gt;&lt;img src="http://codebetter.com/aggbug.aspx?PostID=51054" width="1" height="1"&gt;</content><author><name>mdigiovanni</name><uri>http://codebetter.com/members/mdigiovanni.aspx</uri></author><category term="SharePoint" scheme="http://codebetter.com/blogs/mark.digiovanni/archive/tags/SharePoint/default.aspx" /></entry><entry><title>How To Retrieve a User's Profile in SharePoint 2003</title><link rel="alternate" type="text/html" href="http://codebetter.com/blogs/mark.digiovanni/archive/2005/02/05/50576.aspx" /><id>http://codebetter.com/blogs/mark.digiovanni/archive/2005/02/05/50576.aspx</id><published>2005-02-06T00:52:00Z</published><updated>2005-02-06T00:52:00Z</updated><content type="html">&lt;p&gt;I am currently building a Web Part for our internal SharePoint 2003
portal site that will return the employee directory complete with
photo, email address, and home, work, and cell phone numbers. To do
this, the web part needs to access to the users profile. Here is the C#
code needed to get the user profiles.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;*The below code does not represent a complete web part*&lt;/p&gt;
&lt;p&gt;First, make sure that your web part has the appropriate code access
security settings such as the SharePointPermission with the following
setting: ObjectModel=True. For more information on Code Access Security
and SharePoint, click &lt;a title="Code Access Security" href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odc_SP2003_ta/html/sharepoint_wsscodeaccesssecurity.asp" target="_blank"&gt;here&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;Add the following using statements after the assemblies are referenced. &lt;/p&gt;
&lt;blockquote&gt;&lt;font color="#0000ff" size="2"&gt;using&lt;/font&gt;&lt;font size="2"&gt; Microsoft.SharePoint.Portal;&lt;br&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;using&lt;/font&gt;&lt;font size="2"&gt; Microsoft.SharePoint.Portal.Topology;&lt;/font&gt; &lt;br&gt;&lt;font color="#0000ff" size="2"&gt;using&lt;/font&gt;&lt;font size="2"&gt; Microsoft.SharePoint.Portal.UserProfiles;&lt;/font&gt;&lt;/blockquote&gt;The root site will have to be retrieved to get the collection of users. Use the following method to get the base URL. 
&lt;blockquote&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;private &lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; GetRootUrl() &lt;br&gt;{ &lt;/font&gt;&lt;/p&gt;
&lt;blockquote style="margin-right: 0px;" dir="ltr"&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt; url = Context.Request.Url.GetLeftPart(UriPartial.Authority) + &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;this&lt;/font&gt;&lt;font size="2"&gt;.ResolveUrl( Context.Request.ApplicationPath); &lt;br&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;return&lt;/font&gt;&lt;font size="2"&gt; url;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;&lt;font size="2"&gt;}&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;*NOTE* If you are accessing the portal site via http://localhost/, you must add http://localhost/ as an alias for the site. 
&lt;blockquote&gt;
&lt;p&gt;&lt;font color="#808080" size="2"&gt;//Get the root URL and the PortalContext.&lt;/font&gt; &lt;br&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt; url = GetRootUrl(); &lt;br&gt;SPSite rootSite = SPControl.GetContextSite(Context); &lt;br&gt;PortalContext portalContext = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;null&lt;/font&gt;&lt;font size="2"&gt;; &lt;br&gt;Uri uri = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; Uri(url);&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;&lt;font color="#808080" size="2"&gt;//Get the collection of portal sites by the URL.&lt;/font&gt; &lt;br&gt;&lt;font size="2"&gt;TopologyManager topologyManager = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; TopologyManager(); &lt;br&gt;PortalSiteCollection sites = topologyManager.PortalSites; &lt;br&gt;portalContext = PortalApplication.GetContext(sites[uri]);&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;&lt;font color="#808080" size="2"&gt;//Get all the users that have access.&lt;/font&gt; &lt;br&gt;&lt;font size="2"&gt;SPUserCollection allUsers = rootSite.RootWeb.AllUsers; &lt;br&gt;UserProfileManager upm = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; UserProfileManager(portalContext); &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#808080" size="2"&gt;//Loop through the users to get their profile.&lt;/font&gt; &lt;br&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;foreach&lt;/font&gt;&lt;font size="2"&gt; (SPUser user &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;in&lt;/font&gt;&lt;font size="2"&gt; allUsers) &lt;br&gt;&lt;/font&gt;&lt;font size="2"&gt;{&lt;/font&gt;&lt;/p&gt;
&lt;blockquote style="margin-right: 0px;" dir="ltr"&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;font color="#808080" size="2"&gt;//Do whatever needs to be done with the following properties.&lt;/font&gt; &lt;br&gt;UserProfile up = upm.GetUserProfile(user.LoginName);&lt;/font&gt; &lt;br&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt; fullName = up[&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"PreferredName"&lt;/font&gt;&lt;font size="2"&gt;].ToString();&lt;/font&gt; &lt;br&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt; emailAddress = up[&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"WorkEmail"&lt;/font&gt;&lt;font size="2"&gt;].ToString();&lt;/font&gt; &lt;br&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt; homePhone = up[&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"HomePhone"&lt;/font&gt;&lt;font size="2"&gt;].ToString();&lt;/font&gt; &lt;br&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt; cellPhone = up[&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"MobilePhone"&lt;/font&gt;&lt;font size="2"&gt;].ToString();&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;font size="2"&gt;}&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;To see a list of property names available to you, navigate here:
Site Settings &amp;gt; Manage profile Database &amp;gt; View profile
properties. &lt;br&gt;
&lt;/p&gt;For additional resources on SharePoint, visit the following sites: 
&lt;p&gt;&lt;a title="SharePoint and Code Access Security" href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odc_SP2003_ta/html/sharepoint_wsscodeaccesssecurity.asp" target="_blank"&gt;SharePoint and Code Access Security&lt;/a&gt; &lt;br&gt;&lt;a title="Lamont Harrington's SharePoint 2003 Resource Center" href="http://dotnetjunkies.com/WebLog/lamont_harrington/articles/12068.aspx" target="_blank"&gt;Lamont Harrington's SharePoint 2003 Resource Center&lt;/a&gt; &lt;br&gt;&lt;a title="SharePoint University" href="http://www.sharepointu.com/" target="_blank"&gt;SharePoint University&lt;/a&gt;&lt;br&gt;&lt;a href="http://www.devx.com/dotnet/Article/22387/1763/page/1" target="_blank"&gt;Push the Limits of SharePoint Customization&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;--Mark &lt;/p&gt;&lt;img src="http://codebetter.com/aggbug.aspx?PostID=50576" width="1" height="1"&gt;</content><author><name>mdigiovanni</name><uri>http://codebetter.com/members/mdigiovanni.aspx</uri></author><category term="SharePoint" scheme="http://codebetter.com/blogs/mark.digiovanni/archive/tags/SharePoint/default.aspx" /></entry><entry><title>Fifty Invites from GMail</title><link rel="alternate" type="text/html" href="http://codebetter.com/blogs/mark.digiovanni/archive/2005/02/03/50456.aspx" /><id>http://codebetter.com/blogs/mark.digiovanni/archive/2005/02/03/50456.aspx</id><published>2005-02-03T13:21:00Z</published><updated>2005-02-03T13:21:00Z</updated><content type="html">&lt;P&gt;Today &lt;A href="http://codebetter.com/blogs/paul.laudeman"&gt;Paul&lt;/A&gt; pointed out that &lt;A href="http://www.gmail.com"&gt;GMail&lt;/A&gt; has given us 50 invites to give away.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="/blogs//images/codebetter_com/mark.digiovanni/36/o_FiftyInfives.jpg" border=0&gt;&lt;/P&gt;
&lt;P&gt;I don't know about the rest of&amp;nbsp;you, but I have&amp;nbsp;had a&amp;nbsp;hard time giving away the sets of&amp;nbsp;six that GMail gave out in the past.&lt;/P&gt;
&lt;P&gt;--Mark&lt;/P&gt;&lt;img src="http://codebetter.com/aggbug.aspx?PostID=50456" width="1" height="1"&gt;</content><author><name>mdigiovanni</name><uri>http://codebetter.com/members/mdigiovanni.aspx</uri></author></entry></feed>