<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://davidjsmitty.com/blog/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Search results matching tag '.NET'</title><link>http://davidjsmitty.com/blog/search/SearchResults.aspx?o=DateDescending&amp;tag=.NET&amp;orTags=0</link><description>Search results matching tag '.NET'</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.2)</generator><item><title>Migration from Windows Server/IIS/SQL/ASP.NET to LMono (not LAMP and not LAMMono)</title><link>http://davidjsmitty.com/blog/me/archive/2007/12/27/migration-from-windows-server-iis-sql-asp-net-to-lmono-not-lamp-and-not-lammono.aspx</link><pubDate>Thu, 27 Dec 2007 07:40:00 GMT</pubDate><guid isPermaLink="false">a7f2cd10-d562-4d23-8785-93d3efa39b1e:517</guid><dc:creator>david</dc:creator><description>&lt;p&gt;For those loyal readers of my blog, I'd like to announce a personal change of direction back to lighter, more open tools in the form of Linux, Mac OS, and Windows and Mono.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Background&lt;/b&gt;&lt;/p&gt;&lt;p&gt;It wasn't many years ago that I was enjoying burning my time by
presenting .NET tech talks at Michigan State University.&amp;nbsp; While I was
on this .NET journey, I grew far away from my roots in linux and open
source. And now, as we get closer to 2008, I'm taking a slightly
different direction from the relative ease of Microsoft software to
supporting Linux and Mac OS.&lt;br&gt;
&lt;/p&gt;&lt;p&gt;I'm
building on Mono now, and look forward to writing software that will
run cross-platform (so now my friends will all be able to play with my
stuff on their macs).&amp;nbsp; I've been playing with lighttpd on CentOS since
I'm already very familiar with Apache.&amp;nbsp; I've installed CentOS 5.1, Ubuntu 7.10, and have an UltraVNC connection to a local G4 so I'm pretty set with regards to testing.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;br&gt;The migration path from Windows Server /IIS/SQL/ASP.NET to Linux/Mono and will be slow, but satisfying.&amp;nbsp; I'll be describing my experiences with the migration here.&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Step 1:&amp;nbsp; Install alternate OS's&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Download Virtual PC&lt;br&gt;Install Ubuntu 7.10 w/ GUI - Virtual PC has a problem with the default Ubuntu mouse and video resolution settings, but 1 hour of tinkering will solve it.&amp;nbsp; &lt;br&gt;Install CentOS 5.1 - I decided to install CentOS because I wanted to be able to support lighttpd with FastCGI Mono plugin installed.&lt;br&gt;Get a Mac - Install VineServer for VNC connectivity. &lt;br&gt;&lt;/p&gt;&lt;p&gt;Install UltraVNC on your Windows machine &lt;/p&gt;&lt;p&gt;Depending on what you want and need, install Apache or Lighttpd. Since
I'll be developing desktop software first, I'm not interested in
the web server setup until I'm ready to migrate from IIS.&amp;nbsp; I've played with the FastCGI mod, but will not be going over that yet.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Step 2: Install Visual Studio Express Versions on your Windows machine&lt;br&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;They're simpler, lighter, faster, free-er, and easier than Visual Studio Standard or Pro.&amp;nbsp; While you'll be forced to seperate your Web and C# projects into Web Express and C# Express, this was a welcome forced seperation for me.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Step 3:&amp;nbsp; Install Mono on alternate OS's&amp;nbsp; (official site: &lt;/b&gt;&lt;a href="http://www.mono-project.com/Downloads" target="_blank"&gt;&lt;b&gt;http://www.mono-project.com/Downloads&lt;/b&gt;&lt;/a&gt;&lt;b&gt;) &lt;/b&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;u&gt;Ubuntu 7.10&lt;br&gt;&lt;/u&gt;&lt;/p&gt;&lt;p&gt;sudo apt-get update&lt;br&gt;sudo apt-get install mono&lt;br&gt;sudo apt-get install mono-gmcs &lt;/p&gt;&lt;p&gt;&lt;u&gt;CentOS 5.1&lt;/u&gt;&lt;/p&gt;&lt;p&gt;The built-in installer for CentOS 5.1 is called &lt;i&gt;yum&lt;/i&gt;. If you run into any dependency issues, you can issue a command such as &lt;i&gt;yum install XXX&lt;/i&gt; to install the XXX libraries and executables.&amp;nbsp;&lt;/p&gt;&lt;p&gt;wget http://go-mono.com/sources/mono/mono-1.2.6.tar.bz2&lt;br&gt;tar -xjf mono-1.2.6.tar.bz2&lt;br&gt;cd mono-1.2.6&lt;br&gt;./configure&lt;br&gt;make&lt;br&gt;make install&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;u&gt;Mac OS&lt;/u&gt;&lt;/p&gt;&lt;p&gt;Download and run the installer from&lt;b&gt; &lt;/b&gt;&lt;a href="http://www.mono-project.com/Downloads" target="_blank"&gt;http://www.mono-project.com/Downloads&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Step 4: Share projects between computers and create build scripts&lt;/b&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;You can mount a windows share from Mac OS by exploring your 'Servers' tab in the Finder.&lt;br&gt;On Ubuntu, create a directory under /mnt and type: sudo mount -t cifs //192.168.1.102/SharedDirectory /mnt/SharedDirectory -o username=John,password=mySecretPassword&lt;br&gt;On CentOS, create a directory under /mnt and type: mount -t cifs //192.168.1.102/SharedDirectory /mnt/SharedDirectory -o username=John,password=mySecretPassword &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The compiler for Mono (.NET 2.0) is called gmcs. I like to build a
project on Windows, then copy the project over to a shared folder
that's mounted between all the computers and execute the build command
on each of the separate computers to do unit testing.&lt;/p&gt;&lt;p&gt;Since I'm starting very simple, my build script is a simple gmcs command that compiles 2 projects, 1 library and 1 executable.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;u&gt;/mnt/SharedDirectory/build.sh&lt;/u&gt;&lt;/p&gt;&lt;p&gt;rm -r -f ./bin&lt;br&gt;mkdir ./bin&lt;br&gt;&lt;br&gt;gmcs ./Directory1/SourceFile1.cs ./Directory1/Directory2/SourceFile2.cs ./Directory1/Directory2/SourceFile3.cs /d:TRACE /t:library -out:./bin/MyLibrary.dll&lt;br&gt;gmcs ./Directory1.UnitTest/Program.cs /d:TRACE /t:exe -out:./bin/MyProgram.UnitTest.exe&amp;nbsp; -r:./bin/MyLibrary.dll&lt;br&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;To run the compiled program, I then type:&lt;/p&gt;&lt;p&gt;mono ./bin/MyProgram.UnitTest.exe&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;This is the start.&amp;nbsp; I'll be adding things as I go deeper down the rabbit hole. Nice to be back in the more open arena everyone.&lt;/p&gt;</description></item><item><title>RE: IFPI on BitTorrent</title><link>http://davidjsmitty.com/blog/me/archive/2007/12/27/re-ifpi-on-bittorrent.aspx</link><pubDate>Thu, 27 Dec 2007 07:22:00 GMT</pubDate><guid isPermaLink="false">a7f2cd10-d562-4d23-8785-93d3efa39b1e:516</guid><dc:creator>david</dc:creator><description>&lt;p&gt;The IFPI and ISPs like Comcast make me angry. &lt;a href="http://torrentfreak.com/isps-should-block-bittorrent-and-tpb-071226/" target="_blank"&gt;http://torrentfreak.com/isps-should-block-bittorrent-and-tpb-071226/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;"There’s noway this can happen…Everybody knows there is so much people in p2p that someone will find a way to go around all this. " - &lt;span&gt;most_uniQue&lt;/span&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;most_uniQue is right.&amp;nbsp; They can't stop anything.&amp;nbsp; Developers will always be 2 steps ahead.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;TLS is just the start.&lt;br&gt;&lt;/p&gt;</description></item><item><title>Using Argotic to create an RSS feed from an ASPX page</title><link>http://davidjsmitty.com/blog/me/archive/2007/08/09/using-argotic-to-create-an-rss-feed-from-an-aspx-page.aspx</link><pubDate>Thu, 09 Aug 2007 20:43:00 GMT</pubDate><guid isPermaLink="false">a7f2cd10-d562-4d23-8785-93d3efa39b1e:460</guid><dc:creator>david</dc:creator><description>&lt;P&gt;It's simple.&amp;nbsp; Thanks Brian, for making such an easy-to-use syndication library in .NET.&lt;BR&gt;You can find Argotic at:&amp;nbsp; &lt;A href="http://www.codeplex.com/Argotic"&gt;http://www.codeplex.com/Argotic&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Interesting points about this sample include:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;There's no easy way to get the MIME-type from a certain file extension. (that I know of).&amp;nbsp; I've used a static MIME library to get the MIME type for file extensions.&amp;nbsp; This is included with the example as a referenced library (Okaypublish.Mime.Static)&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;The example I've included uses a pre-defined DataTable as its datasource, which you would then wire up to your SQL database.&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;I'm using a constant file size for the enclosure file sizes since I'm not packaging any example content files with this source.&amp;nbsp; I've commented out how to get the filesize from the local file. (If you're hosted on a shared/dedicated server, you should probably append Environment.CurrentDirectory to the begining of the file name)&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;You can download the example from:&amp;nbsp;&amp;nbsp; &lt;A href="http://piqd.com/get/q/bor"&gt;http://piqd.com/get/q/bor&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Source&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;While I don't know how to post really pretty code samples on the blog, I'll do my best with copy and paste.&lt;/P&gt;&lt;FONT color=#008000 size=2&gt;
&lt;P&gt;// Demo application written by David Smith of OkayPublish LLC&lt;/P&gt;
&lt;P&gt;//&lt;/P&gt;
&lt;P&gt;// http://okaypublish.com&lt;/P&gt;
&lt;P&gt;// http://btsharp.com&lt;/P&gt;
&lt;P&gt;// http://ceedien.com&lt;/P&gt;
&lt;P&gt;// http://piqd.com&lt;/P&gt;
&lt;P&gt;//&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;using&lt;/FONT&gt;&lt;FONT size=2&gt; System;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;using&lt;/FONT&gt;&lt;FONT size=2&gt; Argotic.Core.Rss;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;using&lt;/FONT&gt;&lt;FONT size=2&gt; System.Data;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;public&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;partial&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;class&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;feed&lt;/FONT&gt;&lt;FONT size=2&gt; : System.Web.UI.&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;Page&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;///&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&amp;lt;summary&amp;gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;///&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt; This code will be executed every time somebody visits the RSS feed page&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;///&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&amp;lt;/summary&amp;gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;protected&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;void&lt;/FONT&gt;&lt;FONT size=2&gt; Page_Load(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;object&lt;/FONT&gt;&lt;FONT size=2&gt; sender, &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;EventArgs&lt;/FONT&gt;&lt;FONT size=2&gt; e)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;// This will be used to query the correct information from the SQL database &lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;long&lt;/FONT&gt;&lt;FONT size=2&gt; userId;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;// Don't respond if the request is not in the form of:&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;// "http://example.com/feed.aspx?q=1"&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;// "http://example.com/feed.aspx?q=2"&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;if&lt;/FONT&gt;&lt;FONT size=2&gt; (Request.Params[&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"q"&lt;/FONT&gt;&lt;FONT size=2&gt;] == &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;null&lt;/FONT&gt;&lt;FONT size=2&gt;)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;Response.Output.Write(&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"This URL must be in the form of http://example.com/feed.aspx?q=2. Be sure you're not missing the \"q\" parameter."&lt;/FONT&gt;&lt;FONT size=2&gt;);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;return&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;// Check to see if the GET parameter in "q" is garbage&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;try&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;userId = &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;Convert&lt;/FONT&gt;&lt;FONT size=2&gt;.ToInt64(Request.Params[&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"q"&lt;/FONT&gt;&lt;FONT size=2&gt;]);&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;catch&lt;/FONT&gt;&lt;FONT size=2&gt; (&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;ArgumentException&lt;/FONT&gt;&lt;FONT size=2&gt;)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;return&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;catch&lt;/FONT&gt;&lt;FONT size=2&gt; (&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;OverflowException&lt;/FONT&gt;&lt;FONT size=2&gt;)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;return&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;catch&lt;/FONT&gt;&lt;FONT size=2&gt; (&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;FormatException&lt;/FONT&gt;&lt;FONT size=2&gt;)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;return&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;if&lt;/FONT&gt;&lt;FONT size=2&gt; (userId == 0)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;return&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;// Create the RSS feed to be published on this query&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;RssFeed&lt;/FONT&gt;&lt;FONT size=2&gt; myFeed = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;RssFeed&lt;/FONT&gt;&lt;FONT size=2&gt;();&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;// Create the new RSS Channel. This has an array of RssItems.&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;myFeed.Channel =&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;RssChannel&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"Argotic Demo Feed from User #"&lt;/FONT&gt;&lt;FONT size=2&gt; + userId.ToString(),&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"Published feed from Argotic Demo User #"&lt;/FONT&gt;&lt;FONT size=2&gt; + userId,&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;Uri&lt;/FONT&gt;&lt;FONT size=2&gt;(Request.Url.AbsoluteUri.ToString()));&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;// Create the data access layer&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;// NOTIC: this would be your SQL code&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;ExampleDataLayer&lt;/FONT&gt;&lt;FONT size=2&gt; exampleDataLayer = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;ExampleDataLayer&lt;/FONT&gt;&lt;FONT size=2&gt;();&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;// Get all of the items the user has published &lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;using&lt;/FONT&gt;&lt;FONT size=2&gt; (&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;DataTable&lt;/FONT&gt;&lt;FONT size=2&gt; dataTable = exampleDataLayer.CreateDataTable(userId))&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;// Loop through the results of the SQL query to the&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;// database and insert them into the RSS channel items&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;foreach&lt;/FONT&gt;&lt;FONT size=2&gt; (&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;DataRow&lt;/FONT&gt;&lt;FONT size=2&gt; row &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;in&lt;/FONT&gt;&lt;FONT size=2&gt; dataTable.Rows)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;// Title of the post&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; title = (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt;)row[&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"Title"&lt;/FONT&gt;&lt;FONT size=2&gt;];&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;// Description of the post&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; description = (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt;)row[&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"Description"&lt;/FONT&gt;&lt;FONT size=2&gt;];&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;// Time posted&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;DateTime&lt;/FONT&gt;&lt;FONT size=2&gt; dateTime = (&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;DateTime&lt;/FONT&gt;&lt;FONT size=2&gt;)row[&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"Time"&lt;/FONT&gt;&lt;FONT size=2&gt;];&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;// Attached file. This will be an RSS enclosure.&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; filename = (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt;)row[&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"File"&lt;/FONT&gt;&lt;FONT size=2&gt;];&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;// Get the right MIME-type for the attached file&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; fileExtension = &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;Utils&lt;/FONT&gt;&lt;FONT size=2&gt;.GetExtension(filename);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; mimeType = &lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;""&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;if&lt;/FONT&gt;&lt;FONT size=2&gt; (fileExtension.Length &amp;gt; 0)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;OkayPublish.Mime.Static.&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;MimeType&lt;/FONT&gt;&lt;FONT size=2&gt; currentMimeType =&lt;/P&gt;
&lt;P&gt;OkayPublish.Mime.Static.&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;MimeType&lt;/FONT&gt;&lt;FONT size=2&gt;.FromExtension(fileExtension);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;if&lt;/FONT&gt;&lt;FONT size=2&gt; (currentMimeType != &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;null&lt;/FONT&gt;&lt;FONT size=2&gt;)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;mimeType = currentMimeType.MimeName;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;else&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;mimeType = &lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"application/octet-stream"&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;else&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;mimeType = &lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"application/octet-stream"&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;// Create the new RSSItem to be inserted into myFeed.Channel&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;RssItem&lt;/FONT&gt;&lt;FONT size=2&gt; newItem = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;RssItem&lt;/FONT&gt;&lt;FONT size=2&gt;();&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;// Bind each of the returned results to a new RSS item&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;newItem.PublicationDate = dateTime;&lt;/P&gt;
&lt;P&gt;newItem.Title = title;&lt;/P&gt;
&lt;P&gt;newItem.Description = description;&lt;/P&gt;
&lt;P&gt;newItem.Link = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;Uri&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"http://example.com/readmore.aspx?q="&lt;/FONT&gt;&lt;FONT size=2&gt; + filename);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;//FileInfo fi = new FileInfo(Environment.CurrentDirectory + @"\" + filename);&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;newItem.Enclosure = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;RssEnclosure&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;Uri&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"http://example.com/download.aspx?q="&lt;/FONT&gt;&lt;FONT size=2&gt; + filename),&lt;/P&gt;
&lt;P&gt;1024 * 30, &lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;//fi.Length, 30 KB, since these aren't real files right now&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;mimeType&lt;/P&gt;
&lt;P&gt;);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;// Add the new RSS item to the RSS feed channel (there is only one channel per RSS feed)&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;myFeed.Channel.Items.Add(newItem);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;} &lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;// End Databinding loop &lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;// Set the ContentType for the response&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;Response.ContentType = &lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"application/xml"&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;// Write the feed to the output stream&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;myFeed.Save(Response.OutputStream);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;return&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;As always, comments are appreciated.&amp;nbsp; Cheers.&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;</description></item><item><title>Argotic on the Web: Part 2 (Setup)</title><link>http://davidjsmitty.com/blog/me/archive/2007/06/16/argotic-on-the-web-part-2-setup.aspx</link><pubDate>Sun, 17 Jun 2007 04:19:00 GMT</pubDate><guid isPermaLink="false">a7f2cd10-d562-4d23-8785-93d3efa39b1e:442</guid><dc:creator>david</dc:creator><description>&lt;P&gt;Continued from &lt;A class="" title="Argotic on the Web: Part 1 (Solution Design)" href="http://davidjsmitty.com/blog/me/archive/2007/06/12/argotic-on-the-web.aspx" target=_blank&gt;Argotic on&amp;nbsp;the Web: Part 1 (Solution Design)&lt;/A&gt;...&lt;/P&gt;
&lt;P&gt;Prerequisites:&lt;/P&gt;
&lt;P&gt;1. &lt;A class="" title="Microsoft Visual Web Developer 2005 Express Edition" href="http://msdn.microsoft.com/vstudio/express/downloads/default.aspx" target=_blank&gt;Microsoft Visual Web Developer 2005 Express&lt;/A&gt; Edition (&lt;A class="" title="Visual Web Developer 2005 Express" href="http://piqd.com/get.aspx?q=41bd9565-664a-4677-8599-bbd144d563f7" target=_blank&gt;direct link&lt;/A&gt;)&lt;/P&gt;
&lt;P&gt;We'll use this to design the website that we'll be building for the creation of RSS feeds.&amp;nbsp; The project will reference the Argotic library and will be end up being hosted on a GoDaddy shared server.&lt;/P&gt;
&lt;P&gt;2. Microsoft &lt;A class="" title="C# 2005 Express" href="http://msdn.microsoft.com/vstudio/express/downloads/default.aspx" target=_blank&gt;Visual C# 2005 Express&lt;/A&gt; Edition (&lt;A class="" title="Microsoft Visual C# 2005 Express" href="http://piqd.com/get.aspx?q=d0a36169-2994-441b-9ac0-4bfb9d70e519" target=_blank&gt;direct link&lt;/A&gt;)&lt;/P&gt;
&lt;P&gt;We'll use this to create the RSS reader.&amp;nbsp; The Windows Forms application will be used to read data from the website's RSS feeds (view.aspx).&lt;/P&gt;
&lt;P&gt;3. &lt;A class="" title="SQL Server 2005 Express" href="http://msdn.microsoft.com/vstudio/express/sql/download/" target=_blank&gt;Microsoft SQL Server 2005 Express&lt;/A&gt; Edition (&lt;A class="" title="Microsoft SQL Server 2005 Express" href="http://piqd.com/get.aspx?q=f27a18e3-0b0f-44cd-a020-d5957fade031" target=_blank&gt;direct link&lt;/A&gt;)&lt;/P&gt;
&lt;P&gt;We'll use this to create a Database and Table for the &lt;EM&gt;Users&lt;/EM&gt; table.&amp;nbsp; We can test the SQL server statements on our own machines before we post the website to GoDaddy.&lt;/P&gt;
&lt;P&gt;4. &lt;A class="" title="SQL Management Studio Express" href="http://msdn.microsoft.com/vstudio/express/sql/download/" target=_blank&gt;SQL Server Management Studio Express&lt;/A&gt; Edition (&lt;A class="" title="SQL Server 2005 Management Studio" href="http://piqd.com/get.aspx?q=d07e707b-8c0d-40bf-a58c-d7bae4957544" target=_blank&gt;direct link&lt;/A&gt;)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;This will be our administrative interface for the local SQL server.&amp;nbsp; We'll code up the website against the local SQL server before we upload it to the server through FTP.&lt;/P&gt;
&lt;P&gt;5. &lt;A class="" title="Argotic main site" href="http://www.codeplex.com/Argotic" target=_blank&gt;Argotic&lt;/A&gt; (&lt;A class="" title="Argotic Releases" href="http://www.codeplex.com/Argotic/Release/ProjectReleases.aspx" target=_blank&gt;direct link&lt;/A&gt;)&lt;/P&gt;
&lt;P&gt;This is the library we'll be using to create (feed) and consume (read) the feeds published by our ArgoticWebSample.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Optional Setup Items&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;5. A GoDaddy shared hosting account (&lt;A class="" title="GoDaddy Shared Servers" href="http://www.dpbolvw.net/click-2475769-10379078" target=_blank&gt;direct link&lt;/A&gt;)&amp;nbsp;&lt;/P&gt;
&lt;P&gt;We can set up a GoDaddy shared hosting account that will be used for hosting our web application.&amp;nbsp; After we set up our hosting, we can upload from our computer to the website.&lt;/P&gt;
&lt;P&gt;6.&amp;nbsp; &lt;A class="" title="CoreFTP site" href="http://www.coreftp.com/download.html" target=_blank&gt;CoreFTP&lt;/A&gt; (&lt;A class="" title=CoreFTP href="http://piqd.com/get.aspx?q=806382fa-90b5-40df-85f7-30b249f49751"&gt;direct link&lt;/A&gt;)&lt;/P&gt;
&lt;P&gt;We'll use this to upload to the GoDaddy server.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This wraps up part 2 to the ArgoticWebSample.&amp;nbsp; Next we'll be diving into the implementation of the Feeder and Reader.&lt;/P&gt;</description></item><item><title>Argotic on the Web: Part 1 (Solution Design)</title><link>http://davidjsmitty.com/blog/me/archive/2007/06/12/argotic-on-the-web.aspx</link><pubDate>Tue, 12 Jun 2007 22:06:00 GMT</pubDate><guid isPermaLink="false">a7f2cd10-d562-4d23-8785-93d3efa39b1e:440</guid><dc:creator>david</dc:creator><description>&lt;P&gt;Recently I&amp;nbsp;got excited about a the video about &lt;A class="" title=Argotic href="http://codeplex.com/Argotic" target=_blank&gt;Argotic&lt;/A&gt; (&lt;A class="" title="Brian's Blog" href="http://blog.oppositionallydefiant.com/" target=_blank&gt;blog&lt;/A&gt;) on&amp;nbsp;&lt;A class="" title=dnrTV href="http://dnrtv.com/" target=_blank&gt;dnrTV&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Argotic is a .NET library for RSS/ATOM/OPML creation and consumption.&amp;nbsp; The library is very easy to use, and can be used in a shared hosting environment (creation) and&amp;nbsp;desktop environment(consumption).&lt;/P&gt;
&lt;P&gt;So I decided to make amends for all the tutorials I've read and &lt;A class="" title=Contributions href="http://davidjsmitty.com/blog/me/archive/2007/01/20/sending-email-from-an-asp-net-application-hosted-on-a-godaddy-shared-hosting-account-non-shared-hosting-account-and-non-shared-hosting-account-gmail.aspx" target=_blank&gt;never contributed&lt;/A&gt; to - by coding up an example application&amp;nbsp;for Brian's Argotic .NET Library for .NET.&lt;/P&gt;
&lt;P&gt;This is a &lt;EM&gt;complete&lt;/EM&gt; tutorial, beginning to end, feeder to aggregator.&amp;nbsp; Get a glass of water and get comfortable.&amp;nbsp; I'll be posting this in multiple parts and updating things as necessary.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Introduction&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;This solution will be divided into 3 Parts.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Part 1: Solution Design&lt;BR&gt;Part 2: Setup&lt;BR&gt;Part 3: Implementation&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Architecture&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Goal: This will be a&amp;nbsp;RESTful (whatever that means)&amp;nbsp;website that allows users to publish text.&lt;/P&gt;
&lt;P&gt;Platform:&amp;nbsp;&amp;nbsp;The site&amp;nbsp;will be hosted on an ASP.NET GoDaddy shared server, and will use the shared server instance of SQL to store data (up to 200MB, more than enough).&lt;/P&gt;
&lt;P&gt;Features and Interface: The site will be as simple as possible.&amp;nbsp;It will have 5 pages:&amp;nbsp;CreateAccount, DeleteAccount, Post,&amp;nbsp;Delete, and View pages.&lt;/P&gt;
&lt;P&gt;Data storage: User-posted data will be stored&amp;nbsp;on&amp;nbsp;local site files. Critical site information that needs to be accessed quickly&amp;nbsp;(passwords) will be stored in the SQL server. (GoDaddy SQL servers can only store 200 MB, so we don't want to store too much user-posted data in the SQL database)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Solution Plan&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;We'll be creating 2&amp;nbsp;Visual Studio projects for this solution.&amp;nbsp; (They'll actually be in 2 different solutions, since we're using Visual Studio Express for the development)&lt;/P&gt;
&lt;P&gt;1. The RSS/ATOM/OPML Feeder&lt;/P&gt;
&lt;P&gt;This will be the website. &lt;/P&gt;
&lt;P&gt;2. Reader&lt;/P&gt;
&lt;P&gt;We'll be creating a Windows Forms application that will contact the website (&lt;A href="http://piqd.com/ArgoticWebSample/View.aspx?user=david&amp;amp;format=rss"&gt;http://piqd.com/ArgoticWebSample/View.aspx?user=david&amp;amp;format=rss&lt;/A&gt;) and get the content for the given user.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The Web Pages&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;CreateAccount&amp;nbsp;- Creates an account with a username and a password.&lt;/P&gt;
&lt;P&gt;DeleteAccount &lt;STRONG&gt;- &lt;/STRONG&gt;Deletes an existing account given a username and password.&lt;/P&gt;
&lt;P&gt;Post - A logged-in user can publish a new post from this page.&lt;/P&gt;
&lt;P&gt;Delete&lt;STRONG&gt; &lt;/STRONG&gt;- A logged-in user can see all of his/her posts and choose to delete one of them at a time.&lt;/P&gt;
&lt;P&gt;View - This page will return a feed (RSS, OPML, or ATOM)&amp;nbsp;with the given user's posted data.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The Windows Form Reader&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;There will only be one Form if I can help it.&amp;nbsp; We'll jump that when we get to it!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This is it for my first post.&amp;nbsp; I'll be coming back to revise it I'm sure.&lt;/P&gt;
&lt;P&gt;Continued&amp;nbsp;at &lt;A class="" title="Argotic on the Web: Part 2 (Setup)" href="http://davidjsmitty.com/blog/me/archive/2007/06/16/argotic-on-the-web-part-2-setup.aspx"&gt;Argotic on the Web: Part 2 (Setup)&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Argotic: RSS in .NET</title><link>http://davidjsmitty.com/blog/me/archive/2007/06/08/argotic-rss-in-net.aspx</link><pubDate>Sat, 09 Jun 2007 00:00:00 GMT</pubDate><guid isPermaLink="false">a7f2cd10-d562-4d23-8785-93d3efa39b1e:436</guid><dc:creator>david</dc:creator><description>&lt;P&gt;On dnrTV this week, &lt;A class="" title="Brian Kuhn on Argotic" href="http://dnrtv.com/default.aspx?showID=70" target=_blank&gt;Brian Kuhn shows off Argotic&lt;/A&gt;, his .NET RSS library. Argotic supports parsing of RSS feeds as well as creation of RSS feeds.&lt;/P&gt;
&lt;P&gt;I'm very impressed by how easy the library is to use and look forward to digging in.&lt;/P&gt;
&lt;P&gt;I'll be posting my tinkerings online here.&lt;/P&gt;
&lt;P&gt;A Windows Forms demo application is available here: &lt;A class="" href="http://piqd.com/get.aspx?q=bf383d84-144b-416f-a37a-c61fb644ff4f" target=_blank&gt;http://piqd.com/get.aspx?q=bf383d84-144b-416f-a37a-c61fb644ff4f&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>In an upcoming dnrTV episode, David Smith teaches how to use BTSharp to enable scalable serverless content distribution in your applications.</title><link>http://davidjsmitty.com/blog/me/archive/2007/03/17/in-an-upcoming-dnrtv-episode-david-smith-teaches-how-to-use-btsharp-to-enable-scalable-serverless-content-distribution-in-your-applications.aspx</link><pubDate>Sat, 17 Mar 2007 07:27:00 GMT</pubDate><guid isPermaLink="false">a7f2cd10-d562-4d23-8785-93d3efa39b1e:376</guid><dc:creator>david</dc:creator><description>&lt;P&gt;Do you&amp;nbsp; like&amp;nbsp;Dot Net Rocks?&amp;nbsp; You might like dnrTV too - that's&amp;nbsp;&lt;EM&gt;Dot Net Rocks TV&lt;/EM&gt;.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Carl Franklin and Richard Campell produce an educational and entertaining talk show about .NET and Microsoft technologies.&lt;/P&gt;
&lt;P&gt;&lt;U&gt;Description&lt;/U&gt;: Interested in creating highly scalable data-driven applications with no servers?&amp;nbsp; David wrote his .NET implementation of the BitTorrent protocol in C# and gives a great introduction to BitTorrent and an in-depth look into how to use BTSharp in your applications.&lt;/P&gt;
&lt;P&gt;&lt;U&gt;Speaker Bio&lt;/U&gt;: David is Computer Science graduate from Michigan State University. He served as Microsoft Student Ambassador at MSU for two years and has been as a C# MVP. David is interested in distributed systems and distributed communication algorithms and frameworks.&amp;nbsp; David also likes frisbee and swimming.&lt;/P&gt;
&lt;P&gt;You can find dnrTV at: &lt;A href="http://dnrtv.com/"&gt;http://dnrTV.com&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;You can find Dot Net Rocks at: &lt;A href="http://dotnetrocks.com/"&gt;http://dotnetrocks.com&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Webcast on API design.</title><link>http://davidjsmitty.com/blog/me/archive/2007/02/06/webcast-on-api-design.aspx</link><pubDate>Tue, 06 Feb 2007 11:51:00 GMT</pubDate><guid isPermaLink="false">a7f2cd10-d562-4d23-8785-93d3efa39b1e:250</guid><dc:creator>david</dc:creator><description>&lt;P&gt;Great talk recommended by &lt;A class="" href="http://blogs.msdn.com/brada/archive/2007/01/16/how-to-design-great-apis-and-why-it-maters.aspx"&gt;Brad Abrams&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.infoq.com/presentations/effective-api-design"&gt;http://www.infoq.com/presentations/effective-api-design&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;Long, but &lt;STRONG&gt;&lt;U&gt;&lt;EM&gt;really&lt;/EM&gt;&lt;/U&gt;&lt;/STRONG&gt; great.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;Best advice: "Code to the API before you're even done."&lt;BR&gt;This prevents: Getting to the end and saying "Hm, that doesn't feel right."&lt;/P&gt;
&lt;P&gt;Through experience, I've been learning that flexibility and valuable feedback are really priceless.&lt;/P&gt;</description></item><item><title>Authenticode and Strong naming (&amp;quot;signing&amp;quot;)</title><link>http://davidjsmitty.com/blog/me/archive/2007/01/20/authenticode-and-strong-naming-signing.aspx</link><pubDate>Sun, 21 Jan 2007 05:24:00 GMT</pubDate><guid isPermaLink="false">a7f2cd10-d562-4d23-8785-93d3efa39b1e:24</guid><dc:creator>david</dc:creator><description>&lt;P&gt;It kills me that the names for these processes are "Code signing" and "Strong&amp;nbsp;Name signing".&lt;/P&gt;
&lt;P&gt;So this is the scenario.&amp;nbsp; I'd like for my assembly to be strong named (able to be loaded into the GAC, and used in strong-named apps) and I'd like it to be code signed (verifiably from me, and verifiably changed or not).&lt;/P&gt;
&lt;P&gt;Instead of writing you a walk-through, I'm going to post some links to important articles, then post the build script that allows me to go from a raw Assembly to an obfuscated, strong-named, code-signed assembly.&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;A tip to all the college hobbiest out there: Obtaining a code-signing certificate that allows you to publish code &lt;EM&gt;publicly&lt;/EM&gt; costs&amp;nbsp;~ $500 from Verisign, $200 from Thawte, and ~179 from Comodo.&amp;nbsp; Comodo has horrible customer service, so I went to Thawte (owned by Verisign) and never looked back.&amp;nbsp; Thawte's been great.&lt;BR&gt;&lt;BR&gt;In the meantime, or just for fun, you can create your own code-signing certificate and&amp;nbsp;install the cert on your local machine for testing of code-signing (Authenticode) success.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;&lt;U&gt;Links&lt;/U&gt;&lt;/STRONG&gt;&lt;BR&gt;&lt;BR&gt;1. Best article, defining the two processes and what each does&lt;BR&gt;&lt;A href="http://www.robrich.org/archive/2006/11/29/Code-Signing-two-worlds-defined.aspx"&gt;http://www.robrich.org/archive/2006/11/29/Code-Signing-two-worlds-defined.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;2. .NET Security blog from Shawn, explaining the order or processes and why&lt;BR&gt;&lt;A href="http://blogs.msdn.com/shawnfa/archive/2007/01/10/combining-strong-names-with-authenticode.aspx"&gt;http://blogs.msdn.com/shawnfa/archive/2007/01/10/combining-strong-names-with-authenticode.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;3. Explaining Strong Naming&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/msdnmag/issues/06/07/CLRInsideOut/default.aspx"&gt;http://msdn.microsoft.com/msdnmag/issues/06/07/CLRInsideOut/default.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;4. And on Strong Name integration with VS 2005&lt;BR&gt;&lt;A href="http://blogs.msdn.com/shawnfa/archive/2006/02/14/531921.aspx"&gt;http://blogs.msdn.com/shawnfa/archive/2006/02/14/531921.aspx&lt;/A&gt;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Code&lt;/U&gt;&lt;/STRONG&gt; (I renamed some of my files, and blanked my private key password, hope you don't mind)&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;:: Begin SignAssembly.bat&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;:: Obfuscate the library&lt;/P&gt;
&lt;P&gt;:: In : Raw&lt;BR&gt;:: Out: Obfuscated&lt;/P&gt;
&lt;P&gt;"C:\Program Files\Wise Owl, Inc\Demeanor for .NET, Enterprise Edition\v4.0\Demeanor.exe" /application /encryptstrings /names:alpha /noenums /out:".\Obfuscated" ".\Raw\MyAssembly.dll"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;:: Create the strong-named assembly&lt;/P&gt;
&lt;P&gt;:: In : Obfuscated&lt;BR&gt;:: Out: ObfuscatedAndStrongnamed&lt;/P&gt;
&lt;P&gt;copy ".\Obfuscated\MyAssembly.dll" ".\ObfuscatedAndStrongnamed\MyAssembly.dll" &lt;BR&gt;sn -Ra ".\ObfuscatedAndStrongnamed\MyAssembly.dll" BusinessCodeSigningKey.Single.PublicPrivate.pfx&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;:: Codesign the library&lt;/P&gt;
&lt;P&gt;:: In : ObfuscatedAndStrongnamed&lt;BR&gt;:: Out: ObfuscatedAndStrongnamedAndCodesigned&lt;/P&gt;
&lt;P&gt;copy ".\ObfuscatedAndStrongnamed\MyAssembly.dll" ".\ObfuscatedAndStrongnamedAndCodesigned\MyAssembly.dll" &lt;BR&gt;signtool sign /f BusinessCodeSigningKey.Single.PublicPrivate.pfx&amp;nbsp; /p *********** /t &lt;A href="http://timestamp.verisign.com/scripts/timstamp.dll"&gt;http://timestamp.verisign.com/scripts/timstamp.dll&lt;/A&gt; /d "Description of the dll file" /du &lt;A href="http://mywebsite.com/"&gt;http://mywebsite.com&lt;/A&gt;&amp;nbsp;".\ObfuscatedAndStrongnamedAndCodesigned\MyAssembly.dll"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As always, comments or questions are welcome.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item></channel></rss>