Programmatically PIN shortcut onto Taskbar on Win7

During my work I got one requirement of pinning a specific shortcut file (*.lnk) onto the Windows 7 Taskbar, after investigating I found programmtically achive this is “not permitted”, refer MSDN article: http://msdn.microsoft.com/en-us/library/dd378460(VS.85).aspx

A small set of applications are pinned by default for new installations. Other than these, only the user can pin further applications; programmatic pinning by an application is not permitted.

However, the exception comes from Windows Script Hosting, a snippet of VBscript can achieve my requirement, I read several articles (refer the end of this post) and wrote two VBS scripts showing below:

Pin to Taskbar

Option Explicit

'Const CSIDL_COMMON_PROGRAMS = &H17
Dim ShellApp, FSO, Desktop
Set ShellApp = CreateObject("Shell.Application")
Set FSO = CreateObject("Scripting.FileSystemObject")

'Set StartMenuFolder = ShellApp.NameSpace(CSIDL_COMMON_PROGRAMS)
Set Desktop =  ShellApp.NameSpace("C:\Users\Wayne\Desktop")

Dim LnkFile
LnkFile = Desktop.Self.Path&"\ScheduleNotifier.lnk"

If(FSO.FileExists(LnkFile)) Then
	Dim tmp, verb
	'For Each verb in Desktop.ParseName("ScheduleNotifier.lnk").Verbs
		'tmp = tmp&verb&chr(13)
	'Next
	'MsgBox(tmp)

	Dim desktopImtes, item
	Set desktopImtes = Desktop.Items()

	For Each item in desktopImtes
		If (item.Name = "ScheduleNotifier") Then
			'MsgBox(item.Name)
			For Each verb in item.Verbs
				If (verb.Name = "Pin to Tas&kbar") Then 'If (verb.Name = "锁定到任务栏(&K)")
					verb.DoIt
				End If
			Next
		End If
	Next

End If

Set FSO = Nothing
Set ShellApp = Nothing

Unpin from Taskbar

Option Explicit
'Const CSIDL_COMMON_PROGRAMS = &H17
Dim ShellApp, FSO, Desktop
Set ShellApp = CreateObject("Shell.Application")
Set FSO = CreateObject("Scripting.FileSystemObject")

'Set StartMenuFolder = ShellApp.NameSpace(CSIDL_COMMON_PROGRAMS)
Set Desktop =  ShellApp.NameSpace("C:\Users\Wayne\Desktop")

Dim LnkFile
LnkFile = Desktop.Self.Path&"\ScheduleNotifier.lnk"

If(FSO.FileExists(LnkFile)) Then
	Dim tmp, verb
	'For Each verb in Desktop.ParseName("ScheduleNotifier.lnk").Verbs
		'tmp = tmp&verb&chr(13)
	'Next
	'MsgBox(tmp)

	Dim desktopImtes, item
	Set desktopImtes = Desktop.Items()

	For Each item in desktopImtes
		If (item.Name = "ScheduleNotifier") Then
			'MsgBox(item.Name)
			For Each verb in item.Verbs
				If (verb.Name = "Unpin from Tas&kbar") Then 'If (verb.Name = "从任务栏脱离(&K)")
					verb.DoIt
				End If
			Next
		End If
	Next

End If

Set FSO = Nothing
Set ShellApp = Nothing

Although two snippets of VBS code are simple and stright-forward, they has on serious limitation, it only support one specified language, attention of this line of code:

If (verb.Name = "Pin to Tas&kbar") Then 'If (verb.Name = "锁定到任务栏(&K)")

On Chinese locale, I have to replace “Pin to Tas&kbar” with “锁定到任务栏(&K)”, so in order to support more languages I need to know each exact {Pin sentence} to do the pinning, you know, google translation won’t always work in this case:), so I definitely don’t want to do that…

 

You probably ask WHY??? Because FolderItemVerb object only has one property: Name, and Name is definitely “language sensitive“, MSDN does mention there are two more properties “Application” and “Parent” however they are “Not implemented”.

Several tips

  • For a specific Windows user, all shortcuts pinned onto taskbar store the shortcuts files under
    %AppData%\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar
  • OEM manufacturers could “pre-pin” some shortcut onto the Taskbar before shipping the PC/laptops to the consumers, simply run batch command below during the DASH (see Desktop and mobile Architecture for System Hardware) process:
    Rem Pining OEM Welcome Center app on task barReg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\TBDEn /v SBOEM0 /t REG_EXPAND_SZ /d “SomeFile.lnk” /f
  •  

    References

    Pin and Un-pin items to/from the Windows 7 taskbar
    http://blog.ananthonline.net/?p=37

    Personal Schedule Management Tool

    Time is always ticking no matter you care it or you don’t care it, everyone knows it including myself, to remind myself don’t waste too much time on gaming, reading news or something else, I developed a little tool which I call it “Personal Schedule Management Tool” to achieve this simple goal.

    Mechanism

    I create an XML file to store a serial of [time stamp/task to do] pairs, the tool will start with Windows and load the XML file, a working timer behind it will periodically check whether there is a task needs to be done at defined time stamp, once the condition is matched, the tool will

    1. Shows Windows Balloon Tips with the task as content, screenshot below.
      Balloon
    2. Invokes managed Microsoft Speech API: SpeechSynthesizer.Speak() to remind me even if I am not in front of my dev-box at that time.

    Here is my XML to store schedule items:

    <?xml version="1.0" encoding="utf-8" ?>
    <WayneScheduleItems>
      <ScheduleItem TriggerHour="18" TriggerMinute="20" Content="Wayne, time to have your dinner." />
      <ScheduleItem TriggerHour="19" TriggerMinute="0" Content="Wayne! It is time to learn technologies and programming skills, i.e. CODING TIME!" />
      <ScheduleItem TriggerHour="20" TriggerMinute="30" Content="OK, your eye and brain need rest, time to do some body execise - running, sit-ups, push-up, etc.  Enjoy:)" />
      <ScheduleItem TriggerHour="21" TriggerMinute="0" Content="Well, sweat off your face and have a bath:)." />
      <ScheduleItem TriggerHour="21" TriggerMinute="30" Content="All right, well come back, you know you should read some books!" />
      <ScheduleItem TriggerHour="23" TriggerMinute="0" Content="Wayne, thanks for the hard work! Time to sleep, have a good night!" />
    </WayneScheduleItems>
    

    UI Implementation

    The tool is a WinForm developed in C#, it has no Windows and starts in system tray, to achieve this I set MainWindow’s FormBorderStyle = None, ShowIcon = False and ShowInTaskBar = False, see below.

    WindowProperty

    One more thing is drag two controls onto the form: System.Windows.Forms.NotifyIcon, System.Windows.Forms.ContextMenuStrip and  and naming the instances as “systrayIcon” and “systrayMenu”.

    Controls

    After that I need add menu items, code snippet below:

    this.editScheduleItemsToolStripMenuItem.Name = "editScheduleItemsToolStripMenuItem";
    this.editScheduleItemsToolStripMenuItem.Text = "Edit Schedule Items";
    this.editScheduleItemsToolStripMenuItem.Click += new System.EventHandler(this.editScheduleItemsToolStripMenuItem_Click);
    this.systrayMenu.Items.Add(editScheduleItemsToolStripMenuItem);
    

    All right, its appearance is like below:

    SystrayMenu

    Functionality implementation

    Timer:

                // Initializes timer
                scheduleTimer = new System.Timers.Timer()
                                {
                                    Interval = 1000d * 60 * 10, // 10 minutes
                                    Enabled = true
                                };
                this.scheduleTimer.Start();
                this.scheduleTimer.Elapsed += new System.Timers.ElapsedEventHandler(scheduleTimer_Elapsed);
            }
    
            void scheduleTimer_Elapsed(object sender, ElapsedEventArgs e)
            {
                DateTime currentTime = e.SignalTime;
    
                try
                {
                    foreach (ScheduleItem scheduleItem in scheduleItems)
                    {
                        if (currentTime.Hour == scheduleItem.TriggerHour
                        && currentTime.Minute == scheduleItem.TriggerMinute)
                        {
                            LogManager.WriteAsync(String.Format("{0}, notification occurred: {1}.{2}",
                                currentTime.ToLocalTime(), scheduleItem.Content, Environment.NewLine));
    
                            // Trigger bubble/voice notification
                            this.systrayIcon.ShowBalloonTip(8000, Constants.BalloonTitle, scheduleItem.Content, ToolTipIcon.Info);
                            SoundNotifier.Phonate(scheduleItem.Content);
    
                            break; // Avoid redundant check
                        }
                    }
                }
                catch (Exception ex)
                {
                    LogManager.WriteAsync(ex.Message);
                }
    
                LogManager.WriteAsync(String.Format("Schedule check at: {0}{1}", currentTime.ToLocalTime(), Environment.NewLine));
            }
    

    Load schedule items from XML using LINQ:

        public static class ScheduleItemsReader
        {
            private static readonly String ScheduleItemsXmlLocation = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ScheduleItems.xml");
    
            public static IEnumerable<ScheduleItem> Load()
            {
                IList<ScheduleItem> scheduleItems = new List<ScheduleItem>();
    
                IEnumerable<XElement> scheduleItemsCollection = from scheduleItem in XElement.Load(ScheduleItemsXmlLocation).Descendants("ScheduleItem")
                                                                select scheduleItem;
    
                foreach (XElement ele in scheduleItemsCollection)
                {
                    ScheduleItem scheduleItem = new ScheduleItem();
                    scheduleItem.TriggerHour = ushort.Parse(ele.Attribute("TriggerHour").Value);
                    scheduleItem.TriggerMinute = ushort.Parse(ele.Attribute("TriggerMinute").Value);
                    scheduleItem.Content = ele.Attribute("Content").Value;
    
                    scheduleItems.Add(scheduleItem);
                }
    
                return scheduleItems;
            }
        }
    

    Invoke Speech API:

        public static class SoundNotifier
        {
            public static void Phonate(String sentence)
            {
                using (SpeechSynthesizer speaker = new SpeechSynthesizer())  // Dispose the its instance as soon as it spoke fnished
                {
                    ReadOnlyCollection<InstalledVoice> installedVoices = speaker.GetInstalledVoices();
    
                    CultureInfo cultureInfo = CultureInfo.GetCultureInfo("en-US");
    
                    PromptBuilder pb = new PromptBuilder();
                    pb.StartVoice(VoiceGender.Female, VoiceAge.Adult);
                    pb.StartStyle(new PromptStyle(PromptVolume.Loud));
    
                    pb.StartSentence();
                    pb.AppendText(sentence, PromptEmphasis.Strong);
                    pb.EndSentence();
    
                    pb.EndStyle();
                    pb.EndVoice();
    
                    speaker.Speak(pb);
                }
            }
        }
    

    LogManager:

            public static void WriteAsync(String content)
            {
                FileStream fileStream = null;
    
                LogFilePath = String.Format(LogFilePath, DateTime.Now.ToString("MM-dd-yyyy"));
                if (File.Exists(LogFilePath))
                    fileStream = File.OpenWrite(LogFilePath);
                else
                    fileStream = File.Create(LogFilePath);
                FileInfo logFile = new FileInfo(LogFilePath);
    
                StringBuilder logBuilder = new StringBuilder();
                logBuilder.AppendFormat(
                    "===================================================================================================={0}{1}{0}{0}",
                    Environment.NewLine,
                    content);
    
                byte[] data = Encoding.UTF8.GetBytes(logBuilder.ToString());
                fileStream.Position = logFile.Length; // Move to the end of the existing text file
    
                fileStream.BeginWrite(data, 0, data.Length, new AsyncCallback(r =>
                {
                    AsyncState asyncState = r.AsyncState as AsyncState;
    
                    asyncState.FStream.EndWrite(r);
                    asyncState.FStream.Close();
                }), new AsyncState(fileStream, data, m_ManualResetEvent));
    
                m_ManualResetEvent.WaitOne(100, false);
            }
    

    Source download:

    Schedule Management.zip

    Atom Syndication Feed – RSS replacer

    These days I noticed a new syndication format – Atom, I saw it in a number of web sites I always use: such as MSDN, Twitter, Google Reader and so on, I was thinking whether I need update my life blog (WayneYe.com) to support Atom.

    By investigating, I learnt:

    The name Atom applies to a pair of related standards. The Atom Syndication Format is an XML language used for web feeds, while the Atom Publishing Protocol (AtomPub or APP) is a simple HTTP-based protocol for creating and updating web resources.

    Here is a typical Aom example copied from IETF RFC4287:

    <?xml version="1.0" encoding="utf-8"?>
     <feed xmlns="<a href="http://www.w3.org/2005/Atom%22">http://www.w3.org/2005/Atom"</a>>
     <title type="text">dive into mark</title>
     <subtitle type="html">
     A  &lt;em&gt;lot&lt;/em&gt; of effort
     went into making  this effortless
     </subtitle>
     <updated>2005-07-31T12:29:29Z</updated>
     <id>tag:example.org,2003:3</id>
     <link rel="alternate"  type="text/html"
     hreflang="en" href="<a href="http://example.org/%22/">http://example.org/"/</a>>
     <link  rel="self" type="application/atom+xml"
     href="<a href="http://example.org/feed.atom%22/">http://example.org/feed.atom"/</a>>
     <rights>Copyright (c) 2003, Mark Pilgrim</rights>
     <generator uri="<a href="http://www.example.com/%22">http://www.example.com/"</a> version="1.0">
     Example Toolkit
     </generator>
     <entry>
     <title>Atom draft-07 snapshot</title>
     <link  rel="alternate" type="text/html"
     href="<a href="http://example.org/2005/04/02/atom%22/">http://example.org/2005/04/02/atom"/</a>>
     <link rel="enclosure" type="audio/mpeg" length="1337"
     href="<a href="http://example.org/audio/ph34r_my_podcast.mp3%22/">http://example.org/audio/ph34r_my_podcast.mp3"/</a>>
     <id>tag:example.org,2003:3.2397</id>
     <updated>2005-07-31T12:29:29Z</updated>
     <published>2003-12-13T08:29:29-04:00</published>
     <author>
     <name>Mark Pilgrim</name>
     <uri><a href="http://example.org/">http://example.org/</a></uri>
     <email>f8dy@example.com</email>
     </author>
     <contributor>
     <name>Sam  Ruby</name>
     </contributor>
     <contributor>
     <name>Joe Gregorio</name>
     </contributor>
     <content type="xhtml" xml:lang="en"
     xml:base="<a href="http://diveintomark.org/%22">http://diveintomark.org/"</a>>
     <div xmlns="<a href="http://www.w3.org/1999/xhtml%22">http://www.w3.org/1999/xhtml"</a>>
     <p><i>[Update: The Atom draft is  finished.]</i></p>
     </div>
     </content>
     </entry>
     </feed>
    

    Why Atom?

    I found a grate comparison article from iis.net – The world of Syndication: Atom 1.0 vs. RSS 2.0?

    Atom 1.0 RSS 2.0 Who wins?
    Content Model Allows text, escaped HTML, well-formed XHTML, XML, base-64 encoded binary or pointer to web content outside the feed. Text or Escaped HTML This is a major advantage for Atom, writing escaped HTML affects the readability of RSS feeds
    Partial Content Has separate <summary> or<content> tags. Has a <description> field. This could contain complete content or just synopsis but has no way of identifying what it contains. This is another win for Atom, helps you have a synopsis and complete view inside a feed reader
    Auto Discovery Uses the MIME Type application/atom+xml which is registered with IANA. In addition the feed has a self link to enable auto subscription in readers The MIME Typeapplication/rss+xml is often used but not recognized by IANA Having a registered MIME Type and auto subscription really helps discovery. Another Atom win.
    Format Flexibility Atom syndication format allows entries linking to the feed or standalone entries RSS only recognizes a <rss>document. This is also an Atom win, having standalone entries enables scenarios like linking to entries only.
    Extensibility Atom defines a well-defined structure to extend the default namespace and has specific guidelines on readers should interpret these. RSS has to fixed namespace, however you could include external XML namespaces. Atom has a slight advantage here as external namespaces extensions in RSS are not easily discoverable. In Atom’s case these extensions have a corresponding namespace tag
    Languages Atom uses xml:lang for language specificity RSS has a separate<language> tag for language specificity No one.
    Encryption Atom allows the option to encrypt entries using XML Encryption orXML Digital Signature. In addition the feed could be encrypted entire feed using standard web encryption techniques RSS only allows encrypting using standard web encryption techniques. Atom has extra level of encryption possible.
    Adoption Most sites that publish both RSS and Atom feeds. Most sites that publish both RSS and Atom feeds. RSS has an advantage of being the first mover, the term RSS has become synonymous with syndication.
    Modularity All elements part of Atom’s namespace can be used outside Atom’s context due to way it was designed RSS elements cannot be used outside the context of RSS This has proved to be the one of the major factors of Atom’s popularity and its used in data interactions like those enabled by Google GData

    As a conclusion, Atom has a number of advantages compares to RSS format, it has been adopted by Microsoft, Google, Twitter and many other famous companied/organizations, and I believe Atom will be more and more popular in future. I take Twitter search API as an Atom application example, Twitter provided a search API which supports Atom as returned data type:

    http://search.twitter.com/search.atom?q={search keyword}

    While I try: http://search.twitter.com/search.atom?q=wayne, it returns:

    <table>
    <tbody>
    <tr>
    <td></td>
    <td><?xml version="1.0" encoding="UTF-8"?></td>
    </tr>
    <tr>
    <td></td>
    <td><feed xmlns:google="<a href="http://base.google.com/ns/1.0">http://base.google.com/ns/1.0</a>" xml:lang="en-US" xmlns:openSearch="<a href="http://a9.com/-/spec/opensearch/1.1/">http://a9.com/-/spec/opensearch/1.1/</a>" xmlns="<a href="http://www.w3.org/2005/Atom">http://www.w3.org/2005/Atom</a>" xmlns:twitter="<a href="http://api.twitter.com/">http://api.twitter.com/</a>"></td>
    </tr>
    <tr>
    <td></td>
    <td><id>tag:search.twitter.com,2005:search/wayne</id></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="text/html" href="<a href="http://search.twitter.com/search?q=wayne">http://search.twitter.com/search?q=wayne</a>" rel="alternate"/></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="application/atom+xml" href="<a href="http://search.twitter.com/search.atom?q=wayne">http://search.twitter.com/search.atom?q=wayne</a>" rel="self"/></td>
    </tr>
    <tr>
    <td></td>
    <td><title>wayne - Twitter Search</title></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="application/opensearchdescription+xml" href="<a href="http://search.twitter.com/opensearch.xml">http://search.twitter.com/opensearch.xml</a>" rel="search"/></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="application/atom+xml" href="<a href="http://search.twitter.com/search.atom?q=wayne&amp;since_id=29556261324">http://search.twitter.com/search.atom?q=wayne&amp;since_id=29556261324</a>" rel="refresh"/></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:warning>since_id removed for pagination.</twitter:warning></td>
    </tr>
    <tr>
    <td></td>
    <td><updated>2010-11-03T09:44:22Z</updated></td>
    </tr>
    <tr>
    <td></td>
    <td><openSearch:itemsPerPage>15</openSearch:itemsPerPage></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="application/atom+xml" href="<a href="http://search.twitter.com/search.atom?max_id=29556261324&amp;page=2&amp;q=wayne">http://search.twitter.com/search.atom?max_id=29556261324&amp;page=2&amp;q=wayne</a>" rel="next"/></td>
    </tr>
    <tr>
    <td></td>
    <td><entry></td>
    </tr>
    <tr>
    <td></td>
    <td><id>tag:search.twitter.com,2005:29556261324</id></td>
    </tr>
    <tr>
    <td></td>
    <td><published>2010-11-03T09:44:22Z</published></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="text/html" href="<a href="http://twitter.com/luuanaguerra/statuses/29556261324">http://twitter.com/luuanaguerra/statuses/29556261324</a>" rel="alternate"/></td>
    </tr>
    <tr>
    <td></td>
    <td><title>lollipop - lil wayne #np</title></td>
    </tr>
    <tr>
    <td></td>
    <td><content type="html">lollipop - lil &lt;b&gt;wayne&lt;/b&gt; &lt;a href=&quot;<a href="http://search.twitter.com/search?q=%23np&quot;">http://search.twitter.com/search?q=%23np&quot;</a> onclick=&quot;pageTracker._setCustomVar(2, 'result_type', 'recent', 3);pageTracker._trackPageview('/intra/hashtag/#np');&quot;&gt;#np&lt;/a&gt;</content></td>
    </tr>
    <tr>
    <td></td>
    <td><updated>2010-11-03T09:44:22Z</updated></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="image/png" href="<a href="http://a1.twimg.com/profile_images/1158340569/niver_de_lu4_normal.jpg">http://a1.twimg.com/profile_images/1158340569/niver_de_lu4_normal.jpg</a>" rel="image"/></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:geo></td>
    </tr>
    <tr>
    <td></td>
    <td></twitter:geo></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:metadata></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:result_type>recent</twitter:result_type></td>
    </tr>
    <tr>
    <td></td>
    <td></twitter:metadata></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:source>&lt;a href=&quot;<a href="http://blackberry.com/twitter&quot;">http://blackberry.com/twitter&quot;</a> rel=&quot;nofollow&quot;&gt;Twitter for BlackBerry®&lt;/a&gt;</twitter:source></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:lang>nl</twitter:lang></td>
    </tr>
    <tr>
    <td></td>
    <td><author></td>
    </tr>
    <tr>
    <td></td>
    <td><name>luuanaguerra (Luana Guerra)</name></td>
    </tr>
    <tr>
    <td></td>
    <td><uri><a href="http://twitter.com/luuanaguerra">http://twitter.com/luuanaguerra</a></uri></td>
    </tr>
    <tr>
    <td></td>
    <td></author></td>
    </tr>
    <tr>
    <td></td>
    <td></entry></td>
    </tr>
    <tr>
    <td></td>
    <td><entry></td>
    </tr>
    <tr>
    <td></td>
    <td><id>tag:search.twitter.com,2005:29556257642</id></td>
    </tr>
    <tr>
    <td></td>
    <td><published>2010-11-03T09:44:17Z</published></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="text/html" href="<a href="http://twitter.com/TreyAG/statuses/29556257642">http://twitter.com/TreyAG/statuses/29556257642</a>" rel="alternate"/></td>
    </tr>
    <tr>
    <td></td>
    <td><title>RT @tashabeee: hi @birdman5star please stop making songs with wayne. im tired of skipping your verse. thanks bye</title></td>
    </tr>
    <tr>
    <td></td>
    <td><content type="html">RT &lt;a href=&quot;<a href="http://twitter.com/tashabeee&quot;&gt;@tashabeee&lt;/a&gt;:">http://twitter.com/tashabeee&quot;&gt;@tashabeee&lt;/a&gt;:</a> hi &lt;a href=&quot;<a href="http://twitter.com/birdman5star&quot;&gt;@birdman5star&lt;/a&gt;">http://twitter.com/birdman5star&quot;&gt;@birdman5star&lt;/a&gt;</a> please stop making songs with &lt;b&gt;wayne&lt;/b&gt;. im tired of skipping your verse. thanks bye</content></td>
    </tr>
    <tr>
    <td></td>
    <td><updated>2010-11-03T09:44:17Z</updated></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="image/png" href="<a href="http://a3.twimg.com/profile_images/1138081399/992a2800-f56e-42e4-a23c-59416c48a0e1_normal.png">http://a3.twimg.com/profile_images/1138081399/992a2800-f56e-42e4-a23c-59416c48a0e1_normal.png</a>" rel="image"/></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:geo></td>
    </tr>
    <tr>
    <td></td>
    <td></twitter:geo></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:metadata></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:result_type>recent</twitter:result_type></td>
    </tr>
    <tr>
    <td></td>
    <td></twitter:metadata></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:source>&lt;a href=&quot;<a href="http://twitter.com/&quot;&gt;web&lt;/a&gt;">http://twitter.com/&quot;&gt;web&lt;/a&gt;</a></twitter:source></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:lang>en</twitter:lang></td>
    </tr>
    <tr>
    <td></td>
    <td><author></td>
    </tr>
    <tr>
    <td></td>
    <td><name>TreyAG (Tremaine Garrison )</name></td>
    </tr>
    <tr>
    <td></td>
    <td><uri><a href="http://twitter.com/TreyAG">http://twitter.com/TreyAG</a></uri></td>
    </tr>
    <tr>
    <td></td>
    <td></author></td>
    </tr>
    <tr>
    <td></td>
    <td></entry></td>
    </tr>
    <tr>
    <td></td>
    <td><entry></td>
    </tr>
    <tr>
    <td></td>
    <td><id>tag:search.twitter.com,2005:29556251186</id></td>
    </tr>
    <tr>
    <td></td>
    <td><published>2010-11-03T09:44:09Z</published></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="text/html" href="<a href="http://twitter.com/EventsTBrox/statuses/29556251186">http://twitter.com/EventsTBrox/statuses/29556251186</a>" rel="alternate"/></td>
    </tr>
    <tr>
    <td></td>
    <td><title>Big Media USA Announces the Addition of Wayne Gurnick's Wedding Planning ... <a href="http://bit.ly/94NlG3">http://bit.ly/94NlG3</a></title></td>
    </tr>
    <tr>
    <td></td>
    <td><content type="html">Big Media USA Announces the Addition of &lt;b&gt;Wayne&lt;/b&gt; Gurnick&amp;apos;s Wedding Planning ... &lt;a href=&quot;<a href="http://bit.ly/94NlG3&quot;&gt;http://bit.ly/94NlG3&lt;/a&gt;">http://bit.ly/94NlG3&quot;&gt;http://bit.ly/94NlG3&lt;/a&gt;</a></content></td>
    </tr>
    <tr>
    <td></td>
    <td><updated>2010-11-03T09:44:09Z</updated></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="image/png" href="<a href="http://a3.twimg.com/profile_images/1094782987/T-Brox_logo_-_less_than_30kb_normal.jpg">http://a3.twimg.com/profile_images/1094782987/T-Brox_logo_-_less_than_30kb_normal.jpg</a>" rel="image"/></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:geo></td>
    </tr>
    <tr>
    <td></td>
    <td></twitter:geo></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:metadata></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:result_type>recent</twitter:result_type></td>
    </tr>
    <tr>
    <td></td>
    <td></twitter:metadata></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:source>&lt;a href=&quot;<a href="http://twitterfeed.com%26quot%3B/">http://twitterfeed.com&quot;</a> rel=&quot;nofollow&quot;&gt;twitterfeed&lt;/a&gt;</twitter:source></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:lang>en</twitter:lang></td>
    </tr>
    <tr>
    <td></td>
    <td><author></td>
    </tr>
    <tr>
    <td></td>
    <td><name>EventsTBrox (Events T-Brox)</name></td>
    </tr>
    <tr>
    <td></td>
    <td><uri><a href="http://twitter.com/EventsTBrox">http://twitter.com/EventsTBrox</a></uri></td>
    </tr>
    <tr>
    <td></td>
    <td></author></td>
    </tr>
    <tr>
    <td></td>
    <td></entry></td>
    </tr>
    <tr>
    <td></td>
    <td><entry></td>
    </tr>
    <tr>
    <td></td>
    <td><id>tag:search.twitter.com,2005:29556250780</id></td>
    </tr>
    <tr>
    <td></td>
    <td><published>2010-11-03T09:44:09Z</published></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="text/html" href="<a href="http://twitter.com/cnsrvativeNurse/statuses/29556250780">http://twitter.com/cnsrvativeNurse/statuses/29556250780</a>" rel="alternate"/></td>
    </tr>
    <tr>
    <td></td>
    <td><title>Gov. Rick Perry set to take next step, onto national stage: By WAYNE SLATER / The Dallas Morning News The Republic... <a href="http://bit.ly/aflxjk">http://bit.ly/aflxjk</a></title></td>
    </tr>
    <tr>
    <td></td>
    <td><content type="html">Gov. Rick Perry set to take next step, onto national stage: By &lt;b&gt;WAYNE&lt;/b&gt; SLATER / The Dallas Morning News The Republic... &lt;a href=&quot;<a href="http://bit.ly/aflxjk&quot;&gt;http://bit.ly/aflxjk&lt;/a&gt;">http://bit.ly/aflxjk&quot;&gt;http://bit.ly/aflxjk&lt;/a&gt;</a></content></td>
    </tr>
    <tr>
    <td></td>
    <td><updated>2010-11-03T09:44:09Z</updated></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="image/png" href="<a href="http://a3.twimg.com/profile_images/993100283/090626-005422-030010_normal.jpg">http://a3.twimg.com/profile_images/993100283/090626-005422-030010_normal.jpg</a>" rel="image"/></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:geo></td>
    </tr>
    <tr>
    <td></td>
    <td></twitter:geo></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:metadata></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:result_type>recent</twitter:result_type></td>
    </tr>
    <tr>
    <td></td>
    <td></twitter:metadata></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:source>&lt;a href=&quot;<a href="http://twitterfeed.com%26quot%3B/">http://twitterfeed.com&quot;</a> rel=&quot;nofollow&quot;&gt;twitterfeed&lt;/a&gt;</twitter:source></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:lang>en</twitter:lang></td>
    </tr>
    <tr>
    <td></td>
    <td><author></td>
    </tr>
    <tr>
    <td></td>
    <td><name>cnsrvativeNurse (jt)</name></td>
    </tr>
    <tr>
    <td></td>
    <td><uri><a href="http://twitter.com/cnsrvativeNurse">http://twitter.com/cnsrvativeNurse</a></uri></td>
    </tr>
    <tr>
    <td></td>
    <td></author></td>
    </tr>
    <tr>
    <td></td>
    <td></entry></td>
    </tr>
    <tr>
    <td></td>
    <td><entry></td>
    </tr>
    <tr>
    <td></td>
    <td><id>tag:search.twitter.com,2005:29556247353</id></td>
    </tr>
    <tr>
    <td></td>
    <td><published>2010-11-03T09:44:05Z</published></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="text/html" href="<a href="http://twitter.com/enricop/statuses/29556247353">http://twitter.com/enricop/statuses/29556247353</a>" rel="alternate"/></td>
    </tr>
    <tr>
    <td></td>
    <td><title>RT @mustbeloaded: if i end up like ti...wayne...gucci...and boosie......just make sure you get one of the black t's.....#FREETRELL</title></td>
    </tr>
    <tr>
    <td></td>
    <td><content type="html">RT &lt;a href=&quot;<a href="http://twitter.com/mustbeloaded&quot;&gt;@mustbeloaded&lt;/a&gt;:">http://twitter.com/mustbeloaded&quot;&gt;@mustbeloaded&lt;/a&gt;:</a> if i end up like ti...&lt;b&gt;wayne&lt;/b&gt;...gucci...and boosie......just make sure you get one of the black t&amp;apos;s.....&lt;a href=&quot;<a href="http://search.twitter.com/search?q=%23FREETRELL&quot;">http://search.twitter.com/search?q=%23FREETRELL&quot;</a> onclick=&quot;pageTracker._setCustomVar(2, 'result_type', 'recent', 3);pageTracker._trackPageview('/intra/hashtag/#FREETRELL');&quot;&gt;#FREETRELL&lt;/a&gt;</content></td>
    </tr>
    <tr>
    <td></td>
    <td><updated>2010-11-03T09:44:05Z</updated></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="image/png" href="<a href="http://a3.twimg.com/profile_images/678943055/ENRICOP_normal.jpg">http://a3.twimg.com/profile_images/678943055/ENRICOP_normal.jpg</a>" rel="image"/></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:geo></td>
    </tr>
    <tr>
    <td></td>
    <td></twitter:geo></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:metadata></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:result_type>recent</twitter:result_type></td>
    </tr>
    <tr>
    <td></td>
    <td></twitter:metadata></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:source>&lt;a href=&quot;<a href="http://twitter.com/&quot;&gt;web&lt;/a&gt;">http://twitter.com/&quot;&gt;web&lt;/a&gt;</a></twitter:source></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:lang>en</twitter:lang></td>
    </tr>
    <tr>
    <td></td>
    <td><author></td>
    </tr>
    <tr>
    <td></td>
    <td><name>enricop (Kellogg Lieberbaum)</name></td>
    </tr>
    <tr>
    <td></td>
    <td><uri><a href="http://twitter.com/enricop">http://twitter.com/enricop</a></uri></td>
    </tr>
    <tr>
    <td></td>
    <td></author></td>
    </tr>
    <tr>
    <td></td>
    <td></entry></td>
    </tr>
    <tr>
    <td></td>
    <td><entry></td>
    </tr>
    <tr>
    <td></td>
    <td><id>tag:search.twitter.com,2005:29556236691</id></td>
    </tr>
    <tr>
    <td></td>
    <td><published>2010-11-03T09:43:52Z</published></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="text/html" href="<a href="http://twitter.com/JulesStreething/statuses/29556236691">http://twitter.com/JulesStreething/statuses/29556236691</a>" rel="alternate"/></td>
    </tr>
    <tr>
    <td></td>
    <td><title>dwayne wayne shades .... Minus the frames <a href="http://plixi.com/p/54700453">http://plixi.com/p/54700453</a></title></td>
    </tr>
    <tr>
    <td></td>
    <td><content type="html">dwayne &lt;b&gt;wayne&lt;/b&gt; shades .... Minus the frames &lt;a href=&quot;<a href="http://plixi.com/p/54700453&quot;&gt;http://plixi.com/p/54700453&lt;/a&gt;">http://plixi.com/p/54700453&quot;&gt;http://plixi.com/p/54700453&lt;/a&gt;</a></content></td>
    </tr>
    <tr>
    <td></td>
    <td><updated>2010-11-03T09:43:52Z</updated></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="image/png" href="<a href="http://a0.twimg.com/profile_images/435091824/juice_normal.jpg">http://a0.twimg.com/profile_images/435091824/juice_normal.jpg</a>" rel="image"/></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:geo></td>
    </tr>
    <tr>
    <td></td>
    <td></twitter:geo></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:metadata></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:result_type>recent</twitter:result_type></td>
    </tr>
    <tr>
    <td></td>
    <td></twitter:metadata></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:source>&lt;a href=&quot;<a href="http://www.ubertwitter.com/bb/download.php&quot;">http://www.ubertwitter.com/bb/download.php&quot;</a> rel=&quot;nofollow&quot;&gt;ÜberTwitter&lt;/a&gt;</twitter:source></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:lang>en</twitter:lang></td>
    </tr>
    <tr>
    <td></td>
    <td><author></td>
    </tr>
    <tr>
    <td></td>
    <td><name>JulesStreething (Julian Loh)</name></td>
    </tr>
    <tr>
    <td></td>
    <td><uri><a href="http://twitter.com/JulesStreething">http://twitter.com/JulesStreething</a></uri></td>
    </tr>
    <tr>
    <td></td>
    <td></author></td>
    </tr>
    <tr>
    <td></td>
    <td></entry></td>
    </tr>
    <tr>
    <td></td>
    <td><entry></td>
    </tr>
    <tr>
    <td></td>
    <td><id>tag:search.twitter.com,2005:29556236309</id></td>
    </tr>
    <tr>
    <td></td>
    <td><published>2010-11-03T09:43:51Z</published></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="text/html" href="<a href="http://twitter.com/Sheila464/statuses/29556236309">http://twitter.com/Sheila464/statuses/29556236309</a>" rel="alternate"/></td>
    </tr>
    <tr>
    <td></td>
    <td><title>I have, twice, and will be attending in Fort Wayne, IN on Dec. 1st.  Awesome show!!  Thx Sharon!</title></td>
    </tr>
    <tr>
    <td></td>
    <td><content type="html">I have, twice, and will be attending in Fort &lt;b&gt;Wayne&lt;/b&gt;, IN on Dec. 1st.  Awesome show!!  Thx Sharon!</content></td>
    </tr>
    <tr>
    <td></td>
    <td><updated>2010-11-03T09:43:51Z</updated></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="image/png" href="<a href="http://a0.twimg.com/profile_images/1105408424/IMG_0404_normal.JPG">http://a0.twimg.com/profile_images/1105408424/IMG_0404_normal.JPG</a>" rel="image"/></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:geo></td>
    </tr>
    <tr>
    <td></td>
    <td></twitter:geo></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:metadata></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:result_type>recent</twitter:result_type></td>
    </tr>
    <tr>
    <td></td>
    <td></twitter:metadata></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:source>&lt;a href=&quot;/devices&quot; rel=&quot;nofollow&quot;&gt;txt&lt;/a&gt;</twitter:source></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:lang>en</twitter:lang></td>
    </tr>
    <tr>
    <td></td>
    <td><author></td>
    </tr>
    <tr>
    <td></td>
    <td><name>Sheila464 (Sheila Harting)</name></td>
    </tr>
    <tr>
    <td></td>
    <td><uri><a href="http://twitter.com/Sheila464">http://twitter.com/Sheila464</a></uri></td>
    </tr>
    <tr>
    <td></td>
    <td></author></td>
    </tr>
    <tr>
    <td></td>
    <td></entry></td>
    </tr>
    <tr>
    <td></td>
    <td><entry></td>
    </tr>
    <tr>
    <td></td>
    <td><id>tag:search.twitter.com,2005:29556233419</id></td>
    </tr>
    <tr>
    <td></td>
    <td><published>2010-11-03T09:43:47Z</published></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="text/html" href="<a href="http://twitter.com/musicheadlines/statuses/29556233419">http://twitter.com/musicheadlines/statuses/29556233419</a>" rel="alternate"/></td>
    </tr>
    <tr>
    <td></td>
    <td><title>President Clinton Comments On Lil Wayne's Pending Release From Prison <a href="http://bit.ly/bpZYqg">http://bit.ly/bpZYqg</a></title></td>
    </tr>
    <tr>
    <td></td>
    <td><content type="html">President Clinton Comments On Lil &lt;b&gt;Wayne&lt;/b&gt;&amp;apos;s Pending Release From Prison &lt;a href=&quot;<a href="http://bit.ly/bpZYqg&quot;&gt;http://bit.ly/bpZYqg&lt;/a&gt;">http://bit.ly/bpZYqg&quot;&gt;http://bit.ly/bpZYqg&lt;/a&gt;</a></content></td>
    </tr>
    <tr>
    <td></td>
    <td><updated>2010-11-03T09:43:47Z</updated></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="image/png" href="<a href="http://a0.twimg.com/profile_images/1117218416/lmh_normal.jpg">http://a0.twimg.com/profile_images/1117218416/lmh_normal.jpg</a>" rel="image"/></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:geo></td>
    </tr>
    <tr>
    <td></td>
    <td></twitter:geo></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:metadata></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:result_type>recent</twitter:result_type></td>
    </tr>
    <tr>
    <td></td>
    <td></twitter:metadata></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:source>&lt;a href=&quot;<a href="http://www.zepan.org/software/tweetly-updater/&quot;">http://www.zepan.org/software/tweetly-updater/&quot;</a> rel=&quot;nofollow&quot;&gt;Tweetly Updater&lt;/a&gt;</twitter:source></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:lang>en</twitter:lang></td>
    </tr>
    <tr>
    <td></td>
    <td><author></td>
    </tr>
    <tr>
    <td></td>
    <td><name>musicheadlines (LatestMusicHeadlines)</name></td>
    </tr>
    <tr>
    <td></td>
    <td><uri><a href="http://twitter.com/musicheadlines">http://twitter.com/musicheadlines</a></uri></td>
    </tr>
    <tr>
    <td></td>
    <td></author></td>
    </tr>
    <tr>
    <td></td>
    <td></entry></td>
    </tr>
    <tr>
    <td></td>
    <td><entry></td>
    </tr>
    <tr>
    <td></td>
    <td><id>tag:search.twitter.com,2005:29556229269</id></td>
    </tr>
    <tr>
    <td></td>
    <td><published>2010-11-03T09:43:42Z</published></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="text/html" href="<a href="http://twitter.com/ruthlessblogs/statuses/29556229269">http://twitter.com/ruthlessblogs/statuses/29556229269</a>" rel="alternate"/></td>
    </tr>
    <tr>
    <td></td>
    <td><title>Lil Wayne Has Another Legal Issue To Address Post-Prison <a href="http://f.ast.ly/f65yS">http://f.ast.ly/f65yS</a></title></td>
    </tr>
    <tr>
    <td></td>
    <td><content type="html">Lil &lt;b&gt;Wayne&lt;/b&gt; Has Another Legal Issue To Address Post-Prison &lt;a href=&quot;<a href="http://f.ast.ly/f65yS&quot;&gt;http://f.ast.ly/f65yS&lt;/a&gt;">http://f.ast.ly/f65yS&quot;&gt;http://f.ast.ly/f65yS&lt;/a&gt;</a></content></td>
    </tr>
    <tr>
    <td></td>
    <td><updated>2010-11-03T09:43:42Z</updated></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="image/png" href="<a href="http://a3.twimg.com/profile_images/1094935523/RuthlessBlogs_Logo_no_Title2_normal.png">http://a3.twimg.com/profile_images/1094935523/RuthlessBlogs_Logo_no_Title2_normal.png</a>" rel="image"/></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:geo></td>
    </tr>
    <tr>
    <td></td>
    <td></twitter:geo></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:metadata></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:result_type>recent</twitter:result_type></td>
    </tr>
    <tr>
    <td></td>
    <td></twitter:metadata></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:source>&lt;a href=&quot;<a href="http://www.linksalpha.com/&quot;">http://www.linksalpha.com/&quot;</a> rel=&quot;nofollow&quot;&gt;LinksAlpha&lt;/a&gt;</twitter:source></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:lang>en</twitter:lang></td>
    </tr>
    <tr>
    <td></td>
    <td><author></td>
    </tr>
    <tr>
    <td></td>
    <td><name>ruthlessblogs (RuthlessBlogs)</name></td>
    </tr>
    <tr>
    <td></td>
    <td><uri><a href="http://twitter.com/ruthlessblogs">http://twitter.com/ruthlessblogs</a></uri></td>
    </tr>
    <tr>
    <td></td>
    <td></author></td>
    </tr>
    <tr>
    <td></td>
    <td></entry></td>
    </tr>
    <tr>
    <td></td>
    <td><entry></td>
    </tr>
    <tr>
    <td></td>
    <td><id>tag:search.twitter.com,2005:29556228815</id></td>
    </tr>
    <tr>
    <td></td>
    <td><published>2010-11-03T09:43:42Z</published></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="text/html" href="<a href="http://twitter.com/michanwoo7/statuses/29556228815">http://twitter.com/michanwoo7/statuses/29556228815</a>" rel="alternate"/></td>
    </tr>
    <tr>
    <td></td>
    <td><title>RT @san_e: lil wayne's 'im not a human being'...dang this album makes me wanna rap so bad! lyrics are just crazy</title></td>
    </tr>
    <tr>
    <td></td>
    <td><content type="html">RT &lt;a href=&quot;<a href="http://twitter.com/san_e&quot;&gt;@san_e&lt;/a&gt;:">http://twitter.com/san_e&quot;&gt;@san_e&lt;/a&gt;:</a> lil &lt;b&gt;wayne&lt;/b&gt;&amp;apos;s &amp;apos;im not a human being&amp;apos;...dang this album makes me wanna rap so bad! lyrics are just crazy</content></td>
    </tr>
    <tr>
    <td></td>
    <td><updated>2010-11-03T09:43:42Z</updated></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="image/png" href="<a href="http://a1.twimg.com/profile_images/1154790897/184359626_normal.gif">http://a1.twimg.com/profile_images/1154790897/184359626_normal.gif</a>" rel="image"/></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:geo></td>
    </tr>
    <tr>
    <td></td>
    <td></twitter:geo></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:metadata></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:result_type>recent</twitter:result_type></td>
    </tr>
    <tr>
    <td></td>
    <td></twitter:metadata></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:source>&lt;a href=&quot;<a href="http://twitter.com/&quot;&gt;web&lt;/a&gt;">http://twitter.com/&quot;&gt;web&lt;/a&gt;</a></twitter:source></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:lang>en</twitter:lang></td>
    </tr>
    <tr>
    <td></td>
    <td><author></td>
    </tr>
    <tr>
    <td></td>
    <td><name>michanwoo7 (Michelle Anne Kam)</name></td>
    </tr>
    <tr>
    <td></td>
    <td><uri><a href="http://twitter.com/michanwoo7">http://twitter.com/michanwoo7</a></uri></td>
    </tr>
    <tr>
    <td></td>
    <td></author></td>
    </tr>
    <tr>
    <td></td>
    <td></entry></td>
    </tr>
    <tr>
    <td></td>
    <td><entry></td>
    </tr>
    <tr>
    <td></td>
    <td><id>tag:search.twitter.com,2005:29556223216</id></td>
    </tr>
    <tr>
    <td></td>
    <td><published>2010-11-03T09:43:35Z</published></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="text/html" href="<a href="http://twitter.com/bobo_16/statuses/29556223216">http://twitter.com/bobo_16/statuses/29556223216</a>" rel="alternate"/></td>
    </tr>
    <tr>
    <td></td>
    <td><title>RT @iamorezi: OK ...LIL WAYNE WE R  WAITING FOR U OH!!!! ....IF U LOVE WEEZY ..LET ME HEAR U SAY OH OH OH OH!!! LOLZ ...ON TOP FORM DIS MORNING</title></td>
    </tr>
    <tr>
    <td></td>
    <td><content type="html">RT &lt;a href=&quot;<a href="http://twitter.com/iamorezi&quot;&gt;@iamorezi&lt;/a&gt;:">http://twitter.com/iamorezi&quot;&gt;@iamorezi&lt;/a&gt;:</a> OK ...LIL &lt;b&gt;WAYNE&lt;/b&gt; WE R  WAITING FOR U OH!!!! ....IF U LOVE WEEZY ..LET ME HEAR U SAY OH OH OH OH!!! LOLZ ...ON TOP FORM DIS MORNING</content></td>
    </tr>
    <tr>
    <td></td>
    <td><updated>2010-11-03T09:43:35Z</updated></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="image/png" href="<a href="http://a2.twimg.com/profile_images/1143033238/IMG01062-20100919-1240_normal.jpg">http://a2.twimg.com/profile_images/1143033238/IMG01062-20100919-1240_normal.jpg</a>" rel="image"/></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:geo></td>
    </tr>
    <tr>
    <td></td>
    <td></twitter:geo></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:metadata></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:result_type>recent</twitter:result_type></td>
    </tr>
    <tr>
    <td></td>
    <td></twitter:metadata></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:source>&lt;a href=&quot;<a href="http://blackberry.com/twitter&quot;">http://blackberry.com/twitter&quot;</a> rel=&quot;nofollow&quot;&gt;Twitter for BlackBerry®&lt;/a&gt;</twitter:source></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:lang>en</twitter:lang></td>
    </tr>
    <tr>
    <td></td>
    <td><author></td>
    </tr>
    <tr>
    <td></td>
    <td><name>bobo_16 (Bolanle Muda Lawal)</name></td>
    </tr>
    <tr>
    <td></td>
    <td><uri><a href="http://twitter.com/bobo_16">http://twitter.com/bobo_16</a></uri></td>
    </tr>
    <tr>
    <td></td>
    <td></author></td>
    </tr>
    <tr>
    <td></td>
    <td></entry></td>
    </tr>
    <tr>
    <td></td>
    <td><entry></td>
    </tr>
    <tr>
    <td></td>
    <td><id>tag:search.twitter.com,2005:29556215635</id></td>
    </tr>
    <tr>
    <td></td>
    <td><published>2010-11-03T09:43:25Z</published></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="text/html" href="<a href="http://twitter.com/presidentclint/statuses/29556215635">http://twitter.com/presidentclint/statuses/29556215635</a>" rel="alternate"/></td>
    </tr>
    <tr>
    <td></td>
    <td><title>I favorited a YouTube video -- Lil Wayne - Boom (Zoom Remix) <a href="http://youtu.be/yhKfKV-H9FY?a">http://youtu.be/yhKfKV-H9FY?a</a></title></td>
    </tr>
    <tr>
    <td></td>
    <td><content type="html">I favorited a YouTube video -- Lil &lt;b&gt;Wayne&lt;/b&gt; - Boom (Zoom Remix) &lt;a href=&quot;<a href="http://youtu.be/yhKfKV-H9FY?a&quot;&gt;http://youtu.be/yhKfKV-H9FY?a&lt;/a&gt;">http://youtu.be/yhKfKV-H9FY?a&quot;&gt;http://youtu.be/yhKfKV-H9FY?a&lt;/a&gt;</a></content></td>
    </tr>
    <tr>
    <td></td>
    <td><updated>2010-11-03T09:43:25Z</updated></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="image/png" href="<a href="http://a2.twimg.com/profile_images/1144930262/Green_Sea_Turtle_normal.jpg">http://a2.twimg.com/profile_images/1144930262/Green_Sea_Turtle_normal.jpg</a>" rel="image"/></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:geo></td>
    </tr>
    <tr>
    <td></td>
    <td></twitter:geo></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:metadata></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:result_type>recent</twitter:result_type></td>
    </tr>
    <tr>
    <td></td>
    <td></twitter:metadata></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:source>&lt;a href=&quot;<a href="http://www.google.com/support/youtube/bin/answer.py?hl=en&amp;answer=164577&quot;">http://www.google.com/support/youtube/bin/answer.py?hl=en&amp;answer=164577&quot;</a> rel=&quot;nofollow&quot;&gt;Google&lt;/a&gt;</twitter:source></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:lang>en</twitter:lang></td>
    </tr>
    <tr>
    <td></td>
    <td><author></td>
    </tr>
    <tr>
    <td></td>
    <td><name>presidentclint (Clint Rodefer)</name></td>
    </tr>
    <tr>
    <td></td>
    <td><uri><a href="http://twitter.com/presidentclint">http://twitter.com/presidentclint</a></uri></td>
    </tr>
    <tr>
    <td></td>
    <td></author></td>
    </tr>
    <tr>
    <td></td>
    <td></entry></td>
    </tr>
    <tr>
    <td></td>
    <td><entry></td>
    </tr>
    <tr>
    <td></td>
    <td><id>tag:search.twitter.com,2005:29556215496</id></td>
    </tr>
    <tr>
    <td></td>
    <td><published>2010-11-03T09:43:25Z</published></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="text/html" href="<a href="http://twitter.com/Lyddongirl/statuses/29556215496">http://twitter.com/Lyddongirl/statuses/29556215496</a>" rel="alternate"/></td>
    </tr>
    <tr>
    <td></td>
    <td><title>&gt; lol “@WayneG1988: I should be at work running late in true wayne style! If I turnt up on time to anything (cont) <a href="http://tl.gd/6pm2qm">http://tl.gd/6pm2qm</a></title></td>
    </tr>
    <tr>
    <td></td>
    <td><content type="html">&amp;gt; lol “@WayneG1988: I should be at work running late in true &lt;b&gt;wayne&lt;/b&gt; style! If I turnt up on time to anything (cont) &lt;a href=&quot;<a href="http://tl.gd/6pm2qm&quot;&gt;http://tl.gd/6pm2qm&lt;/a&gt;">http://tl.gd/6pm2qm&quot;&gt;http://tl.gd/6pm2qm&lt;/a&gt;</a></content></td>
    </tr>
    <tr>
    <td></td>
    <td><updated>2010-11-03T09:43:25Z</updated></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="image/png" href="<a href="http://a0.twimg.com/profile_images/1080680292/image_normal.jpg">http://a0.twimg.com/profile_images/1080680292/image_normal.jpg</a>" rel="image"/></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:geo></td>
    </tr>
    <tr>
    <td></td>
    <td></twitter:geo></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:metadata></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:result_type>recent</twitter:result_type></td>
    </tr>
    <tr>
    <td></td>
    <td></twitter:metadata></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:source>&lt;a href=&quot;<a href="http://twitter.com/&quot;">http://twitter.com/&quot;</a> rel=&quot;nofollow&quot;&gt;Twitter for iPhone&lt;/a&gt;</twitter:source></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:lang>en</twitter:lang></td>
    </tr>
    <tr>
    <td></td>
    <td><author></td>
    </tr>
    <tr>
    <td></td>
    <td><name>Lyddongirl (Nicky Full of hope..)</name></td>
    </tr>
    <tr>
    <td></td>
    <td><uri><a href="http://twitter.com/Lyddongirl">http://twitter.com/Lyddongirl</a></uri></td>
    </tr>
    <tr>
    <td></td>
    <td></author></td>
    </tr>
    <tr>
    <td></td>
    <td></entry></td>
    </tr>
    <tr>
    <td></td>
    <td><entry></td>
    </tr>
    <tr>
    <td></td>
    <td><id>tag:search.twitter.com,2005:29556202617</id></td>
    </tr>
    <tr>
    <td></td>
    <td><published>2010-11-03T09:43:08Z</published></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="text/html" href="<a href="http://twitter.com/presidentclint/statuses/29556202617">http://twitter.com/presidentclint/statuses/29556202617</a>" rel="alternate"/></td>
    </tr>
    <tr>
    <td></td>
    <td><title>I favorited a YouTube video -- Lil Wayne-&quot;Duffle Bag Boy&quot; &amp; &quot;Fireman&quot;-Uncut <a href="http://youtu.be/ZE0Xs-6kVLE?a">http://youtu.be/ZE0Xs-6kVLE?a</a></title></td>
    </tr>
    <tr>
    <td></td>
    <td><content type="html">I favorited a YouTube video -- Lil &lt;b&gt;Wayne&lt;/b&gt;-&amp;quot;Duffle Bag Boy&amp;quot; &amp;amp; &amp;quot;Fireman&amp;quot;-Uncut &lt;a href=&quot;<a href="http://youtu.be/ZE0Xs-6kVLE?a&quot;&gt;http://youtu.be/ZE0Xs-6kVLE?a&lt;/a&gt;">http://youtu.be/ZE0Xs-6kVLE?a&quot;&gt;http://youtu.be/ZE0Xs-6kVLE?a&lt;/a&gt;</a></content></td>
    </tr>
    <tr>
    <td></td>
    <td><updated>2010-11-03T09:43:08Z</updated></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="image/png" href="<a href="http://a2.twimg.com/profile_images/1144930262/Green_Sea_Turtle_normal.jpg">http://a2.twimg.com/profile_images/1144930262/Green_Sea_Turtle_normal.jpg</a>" rel="image"/></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:geo></td>
    </tr>
    <tr>
    <td></td>
    <td></twitter:geo></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:metadata></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:result_type>recent</twitter:result_type></td>
    </tr>
    <tr>
    <td></td>
    <td></twitter:metadata></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:source>&lt;a href=&quot;<a href="http://www.google.com/support/youtube/bin/answer.py?hl=en&amp;answer=164577&quot;">http://www.google.com/support/youtube/bin/answer.py?hl=en&amp;answer=164577&quot;</a> rel=&quot;nofollow&quot;&gt;Google&lt;/a&gt;</twitter:source></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:lang>en</twitter:lang></td>
    </tr>
    <tr>
    <td></td>
    <td><author></td>
    </tr>
    <tr>
    <td></td>
    <td><name>presidentclint (Clint Rodefer)</name></td>
    </tr>
    <tr>
    <td></td>
    <td><uri><a href="http://twitter.com/presidentclint">http://twitter.com/presidentclint</a></uri></td>
    </tr>
    <tr>
    <td></td>
    <td></author></td>
    </tr>
    <tr>
    <td></td>
    <td></entry></td>
    </tr>
    <tr>
    <td></td>
    <td><entry></td>
    </tr>
    <tr>
    <td></td>
    <td><id>tag:search.twitter.com,2005:29556200416</id></td>
    </tr>
    <tr>
    <td></td>
    <td><published>2010-11-03T09:43:05Z</published></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="text/html" href="<a href="http://twitter.com/Xizou/statuses/29556200416">http://twitter.com/Xizou/statuses/29556200416</a>" rel="alternate"/></td>
    </tr>
    <tr>
    <td></td>
    <td><title>RT @OfficialGuzzy: Nao entendo a galera q fala q o Lil Wayne,Drake,Eminem nao mandam bem na rima...se vc e um,ou nao entende Ingles ou nao entende RAP #rapBR</title></td>
    </tr>
    <tr>
    <td></td>
    <td><content type="html">RT &lt;a href=&quot;<a href="http://twitter.com/OfficialGuzzy&quot;&gt;@OfficialGuzzy&lt;/a&gt;:">http://twitter.com/OfficialGuzzy&quot;&gt;@OfficialGuzzy&lt;/a&gt;:</a> Nao entendo a galera q fala q o Lil &lt;b&gt;Wayne&lt;/b&gt;,Drake,Eminem nao mandam bem na rima...se vc e um,ou nao entende Ingles ou nao entende RAP &lt;a href=&quot;<a href="http://search.twitter.com/search?q=%23rapBR&quot;">http://search.twitter.com/search?q=%23rapBR&quot;</a> onclick=&quot;pageTracker._setCustomVar(2, 'result_type', 'recent', 3);pageTracker._trackPageview('/intra/hashtag/#rapBR');&quot;&gt;#rapBR&lt;/a&gt;</content></td>
    </tr>
    <tr>
    <td></td>
    <td><updated>2010-11-03T09:43:05Z</updated></td>
    </tr>
    <tr>
    <td></td>
    <td><link type="image/png" href="<a href="http://a2.twimg.com/profile_images/535869450/twitterProfilePhoto_normal.jpg">http://a2.twimg.com/profile_images/535869450/twitterProfilePhoto_normal.jpg</a>" rel="image"/></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:geo></td>
    </tr>
    <tr>
    <td></td>
    <td></twitter:geo></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:metadata></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:result_type>recent</twitter:result_type></td>
    </tr>
    <tr>
    <td></td>
    <td></twitter:metadata></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:source>&lt;a href=&quot;<a href="http://www.ubertwitter.com/bb/download.php&quot;">http://www.ubertwitter.com/bb/download.php&quot;</a> rel=&quot;nofollow&quot;&gt;ÜberTwitter&lt;/a&gt;</twitter:source></td>
    </tr>
    <tr>
    <td></td>
    <td><twitter:lang>pt</twitter:lang></td>
    </tr>
    <tr>
    <td></td>
    <td><author></td>
    </tr>
    <tr>
    <td></td>
    <td><name>Xizou (XIzou)</name></td>
    </tr>
    <tr>
    <td></td>
    <td><uri><a href="http://twitter.com/Xizou">http://twitter.com/Xizou</a></uri></td>
    </tr>
    <tr>
    <td></td>
    <td></author></td>
    </tr>
    <tr>
    <td></td>
    <td></entry></td>
    </tr>
    <tr>
    <td></td>
    <td></feed></td>
    </tr>
    </tbody>
    </table>
    

    Coding it

    Now I realized that Atom should be a trend, so I decide to support Atom in my life blog (WayneYe.com) developed by myself.  I found there are already some great libraries doing such kind of things such as Atom.NET, however, the pity is most of them seemed seriously out of date… So I decide do it myself as usualSmile

    I supposed to manually created an “Atom.xml” file and expose it to web site, in additional, I hope it is RESTful, I use this:
    http://WayneYe.com/Atom

    I wrote C# code snippet below to generate and CRUD the Atom.xml, Blog is an O/R Mapping entity class written by me, it is nothing special with some properties:
    BlogClass

    Constants definition:

            public const String AtomTitle = "Wayne的自由空间";
            public const String AtomSubtitle = "Wayne's Atom Syndication Feed";
            public const String AtomNamespace = "http://www.w3.org/2005/Atom";
            public const String AtomUri = "http://wayneye.com/Atom";
            public const String AtomAlternateUri = "http://wayneye.com/Feeds/Atom.xml";
            public const int MaximumEntryCount = 15;
    

    Regenerate Atom Xml Feed:

            public static void RegenerateAtom()
            {
                if (File.Exists(AtomHandler.AtomFilePath)) File.Delete(AtomHandler.AtomFilePath);
    
                XNamespace atomXmln = AtomNamespace; // Declare the Atom XML namespace first
    
                XDocument atomXml = new XDocument(new XDeclaration("1.0", "utf-8", "yes"),
                    new XElement(atomXmln + "feed", new XAttribute(XNamespace.Xml + "lang", "zh-CN"),
                        new XElement(atomXmln + "title", new XAttribute("type", "html"), AtomTitle),
                        new XElement(atomXmln + "subtitle", new XAttribute("type", "html"), AtomSubtitle),
                        new XElement(atomXmln + "id", AtomUri),
                        new XElement(atomXmln + "link", new XAttribute("rel", "alternate"), new XAttribute("type", "text/html"), new XAttribute("href", Constants.WayneYeUri)),
                        new XElement(atomXmln + "link", new XAttribute("rel", "self"), new XAttribute("type", "application/atom+xml"), new XAttribute("href", AtomAlternateUri)),
                        new XElement(atomXmln + "updated", DateTime.Now.ToUniversalTime())));
    
                var entries = new List();
                var entryCount = 0;
                foreach (var blog in Blog.LoadAllBlogs(BlogVisibility.Public, false))
                {
                    blog.HyperLink = String.Format("{0}ViewBlog.aspx?BlogID={1}", WayneBlogMaster.ServerRoot, blog.Id);
    
                    if (entryCount == MaximumEntryCount) break; // Maximum entry count is 15 by default
    
                    entries.Add(ConvertBlogToAtomEntry(blog, false));
    
                    entryCount++;
                }
    
                atomXml.Root.Add(entries);
    
                atomXml.Save(AtomHandler.AtomFilePath);
            }
    

    Create new blog entry

            public static void AddBlogEntry(Blog b)
            {
                    XNamespace atomXmln = AtomNamespace;
                    XDocument atomXml = XDocument.Load(AtomFilePath);
    
                    XElement newEntry = ConvertBlogToAtomEntry(b, false);
    
                    atomXml.Root.LastNode.Remove(); // Remove oldest blog entry
    
                    // Insert this new blog entry at top position
                    // NOTES: while querying, I need explicitly specify the element's namespace
                    atomXml.Root.Elements(atomXmln + "entry").First().AddBeforeSelf(newEntry);
    
                    atomXml.Save(AtomFilePath);
            }
    

    Update an existing blog entry

            public static void UpdateBlogEntry(Blog b)
            {
                    XNamespace atomXmln = AtomNamespace;
                    var atomXml = XDocument.Load(AtomFilePath);
    
                    var newEntry = ConvertBlogToAtomEntry(b, true);
    
                    if (atomXml.Root.Descendants(atomXmln + "entry").Any(
                        xe => xe.Element(atomXmln + "id").Value.Equals(b.HyperLink)))  // Check entry existense
                    {
                        var blogEntry =
                            atomXml.Root.Descendants(atomXmln + "entry").Single(
                                xe => xe.Element(atomXmln + "id").Value.Equals(b.HyperLink));
    
                        blogEntry.ReplaceWith(newEntry);  // Replace the entried entry node
    
                        atomXml.Save(AtomFilePath);
                    }
                    else
                    {
                        // Do nothing since this blog which supposed to be editted does not exist in the Atom.xml
                    }
            }
    

    Important Notes

    1. You might noticed that in my generating Atom code I explicitly specify XML Namespace to every child nodes, actually this is NOT redundant, if I don’t do that, the generated XML would like below:

    <?xml version="1.0" encoding="utf-8" standalone="yes"?>
    <feed xml:lang="zh-CN" xmlns="http://www.w3.org/2005/Atom">
      <title type="html" xmlns="">Wayne的自由空间</title>
      <subtitle type="html" xmlns="">Wayne's Atom Syndication Feed</subtitle>
      <id xmlns="">http://wayneye.com/Atom</id>
    ... ...
    

    2. Similar tricky like #1 above, while doing Linq query, I MUST specify XML Namespace explicitly too, otherwise I couldn’t get any result.
    3. I noticed that most Atom feeds contain ONLY 15 entries, so far I didn’t find out the reason for this, I just simply follow them, i.e. I also let my Atom feed contains 15 entries, that’s why I raised:
    public const int MaximumEntryCount = 15;  // Of course I can store this value inside config file

    Updated on Nov 3rd 2010, I also noticed that WCF 4.0 is officially supporting Atom, it is called Syndication Service Library: http://msdn.microsoft.com/en-us/library/bb412203.aspx

    In Windows Communication Foundation (WCF), syndication feeds are modeled as another type of service operation, one where the return type is one of the derived classes of SyndicationFeedFormatter. The retrieval of a feed is modeled as a request-response message exchange. A client sends a request to the service and the service responds. The request message is set over an infrastructure protocol (for example, raw HTTP) and the response message contains a payload that consists of a commonly understood syndication format (RSS 2.0 or Atom 1.0). Services that implement these message exchanges are referred to as syndication services.

    Hum, I will study it some day..

    References

    Atom Wiki page:
    http://en.wikipedia.org/wiki/Atom_(standard)

    IETF – The Atom Syndication Format
    http://tools.ietf.org/html/rfc4287

    W3C Feed Validation Service
    http://validator.w3.org/feed/

    A Short Introduction to the Atom Publishing Protocol
    http://exist.sourceforge.net/atompub.html

    Google provided URL to convert RSS to Atom
    http://www.google.com/reader/atom/feed/{url-to-convert}

    RSS/Atom libraries
    RSS.NET http://www.rssdotnet.com/
    Atom.NET http://atomnet.sourceforge.net/
    ASP.Net RSS Toolkit http://aspnetrsstoolkit.codeplex.com/

    Encrypt application/web configuration file

    Under some scenarios the developers want to encrypt some sections inside app.config or web.config file, this article How To: Encrypt Configuration Sections in ASP.NET 2.0 Using RSA describes how to do so clearly, Scott Guthrie also posted one: Encrypting Web.Config Values in ASP.NET 2.0.

    However, in the posts above they uses aspnet_regiis.exe and seems it doesn’t directly support app.config, if we want to encrypt app.config for Windows Form or WPF applications, while I tried use it to encrypt my app.config file, it generates a web.config which means my Winform definitely can’t use it, even if I copy the encrypted appSettings section from this generated web.config to my own app.config (ConfigurationManager.AppSettings[EncryptedKeyName] is null after I did that).

     

    Config Encrypt

    Click to view large screenshot

     

     

    Encrypted WebConfig

    Click to view large screenshot

     

    After several minutes google search and testing I found the code below is simple and very straight forward to achieve this:

                Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    
                SectionInformation appSettingsSecInfo = config.GetSection("appSettings").SectionInformation;
                if (!appSettingsSecInfo.IsProtected)
                {
                    Console.WriteLine("The configuration file has NOT been protected!");
    
                    // Encrypt this section by using security provider (RsaProtectedConfigurationProvider or DpapiProtectedConfigurationProvider).
                    appSettingsSecInfo.ProtectSection("RsaProtectedConfigurationProvider");
                    appSettingsSecInfo.ForceSave = true;
    
                    config.Save(ConfigurationSaveMode.Full);
                }
    

    This code snippet will do the encryption job and works for both app.config/web.config, here is the MSDN definition page for SectionInformation.ProtectSection:
    http://msdn.microsoft.com/en-us/library/system.configuration.sectioninformation.protectsection.aspx

    References:
    Overview of Protected Configuration:
    http://msdn.microsoft.com/en-us/library/hh8x3tas.aspx

    RsaProtectedConfigurationProvider Class:
    http://msdn.microsoft.com/en-us/library/system.configuration.rsaprotectedconfigurationprovider.aspx

    DpapiProtectedConfigurationProvider Class:
    http://msdn.microsoft.com/en-us/library/system.configuration.dpapiprotectedconfigurationprovider.aspx