<?xml version="1.0" encoding="us-ascii"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><lastBuildDate>Wed, 20 Aug 2008 12:58:57 GMT</lastBuildDate><atom:link href="http://www.fwicki.com/rss/agencijanet10/it-blogi" rel="self" type="application/rss+xml" /><ttl>24</ttl><title>IT blogi</title><link>http://www.fwicki.com/fwickis/agencijanet10/IT-blogi</link><generator>Fwicki.Com - Fwicki Feed Generator</generator><language>en-us</language><image><url>http://www.fwicki.com/images/ui/feed-link.jpg</url><title>Fwicki - RSS Feed Management</title><link>http://www.fwicki.com/fwickis/agencijanet10/IT-blogi</link><description>Fwicki - RSS Feed Management</description><width>44</width><height>45</height></image><item><title>Vzorcne baze za testiranje stre?nika SQL Server 2008</title><link>http://blogs.technet.com/slitpro/archive/2008/08/18/vzor-ne-baze-za-testiranje-stre-nika-sql-server-2008.aspx</link><guid>http://blogs.technet.com/slitpro/archive/2008/08/18/vzor-ne-baze-za-testiranje-stre-nika-sql-server-2008.aspx243</guid><description>&lt;p&gt;?e ste ?e instalirali SQL Server 2008 (ali pa ga &amp;#353;e boste) in nimate na voljo vzor?ne baze s katero bi se lahko igrali, si oglejte vzor?ne baze na strani &lt;a href="http://www.codeplex.com/MSFTDBProdSamples"&gt;Codeplex&lt;/a&gt;. Na voljo imate scenarije OLTP, skladi&amp;#353;?enje podatkov in eno zelo enostavno bazo, ki jih lahko testirate na lokalni instalaciji SQLa. Narejene so baze za platforme x86, x64 in Itanium.&lt;/p&gt;  &lt;p&gt;Toma?&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3108205" width="1" height="1"&gt;</description><category>SQL server</category><pubDate>Mon, 18 Aug 2008 21:55:06 GMT</pubDate></item><item><title>Creating splash screens with Expression Designer</title><link>http://feeds.feedburner.com/~r/TheAttic/~3/366036272/Creating-splash-screens-with-Expression-Designer.aspx</link><guid>http://feeds.feedburner.com/~r/TheAttic/~3/366036272/Creating-splash-screens-with-Expression-Designer.aspx244</guid><description>&lt;p&gt;Did you know you can create &lt;a href="http://tozon.info/blogs/andrej/archive/2008/08/11/Splash-Screen-in-WPF.aspx"&gt;cool looking splash screens for your WPF application&lt;/a&gt; right there with the &lt;a href="http://www.microsoft.com/expression/products/Overview.aspx?key=design" target="_blank"&gt;Expression Designer&lt;/a&gt;?&lt;/p&gt;  &lt;p&gt;Of course you did. &lt;a href="http://www.microsoft.com/expression/products/Overview.aspx?key=design" target="_blank"&gt;Expression Designer&lt;/a&gt; provides you with all you need to create free-shaped, part-transparent, drop-shadowed graphics and I bet the the &lt;a href="http://tozon.info/blogs/andrej/archive/2008/08/11/Splash-Screen-in-WPF.aspx"&gt;WPF splash screen support&lt;/a&gt; is going to be baked into the next release of &lt;a href="http://www.microsoft.com/expression/products/Overview.aspx?key=blend" target="_blank"&gt;Expression Blend&lt;/a&gt; as well.&lt;/p&gt;  &lt;p&gt;This is a quick walk through designing a splash screen with the &lt;a href="http://www.microsoft.com/expression/products/Overview.aspx?key=design" target="_blank"&gt;Expression Designer&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;1. With Expression Designer open, create a new rectangle and set its &lt;strong&gt;Corner Radius&lt;/strong&gt; property to about &lt;strong&gt;30px&lt;/strong&gt; (depending your rectangle?s size).&lt;/p&gt;  &lt;p&gt;2. Set rectangle?s color to match your application theme and make it a bit transparent by setting &lt;strong&gt;Opacity&lt;/strong&gt; to around &lt;strong&gt;70%&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;img title="Rectangle" style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="134" alt="Rectangle" src="http://tozon.info/images/blog/CreatingsplashscreenswithExpressionDesig_E12B/image.png" width="341" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;3. Find the &lt;strong&gt;Effects&lt;/strong&gt; property section and click the &lt;strong&gt;Add Effect&lt;/strong&gt; button. Choose &lt;strong&gt;Effects&lt;/strong&gt; | &lt;strong&gt;Drop Shadow&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;img title="Add Effect" style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="166" alt="Add Effect" src="http://tozon.info/images/blog/CreatingsplashscreenswithExpressionDesig_E12B/image_3.png" width="321" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;4. Decrease &lt;strong&gt;Softness&lt;/strong&gt; and &lt;strong&gt;Offset&lt;/strong&gt; and increase &lt;strong&gt;Opacity&lt;/strong&gt; properties to make the shadow more compact. You will end up with something like this:&lt;/p&gt;  &lt;p&gt;&lt;img title="Drop Shadow and Transparence" style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="216" alt="Drop Shadow and Transparence" src="http://tozon.info/images/blog/CreatingsplashscreenswithExpressionDesig_E12B/image_4.png" width="404" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;5. Create a new layer and put a new rectangle on it. Make it the same size as the first one and put it on the same spot to make them both aligned exactly.&lt;/p&gt;  &lt;p&gt;6. Set its stroke to None and fill it with a transparent gradient: First Stop Alpha: 80%, Second Stop Alpha: 0%.&lt;/p&gt;  &lt;p&gt;7. Move gradient?s origin more to the side and make it larger.&lt;/p&gt;  &lt;p&gt;&lt;img title="Gradient" style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="273" alt="Gradient" src="http://tozon.info/images/blog/CreatingsplashscreenswithExpressionDesig_E12B/image_5.png" width="342" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;Your rectangle should now look just a little bit more exciting:&lt;/p&gt;  &lt;p&gt;&lt;img title="Light source" style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="201" alt="Light source" src="http://tozon.info/images/blog/CreatingsplashscreenswithExpressionDesig_E12B/image_6.png" width="404" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;8. Time for some text? With the &lt;strong&gt;Text&lt;/strong&gt; tool, create your application title. I?ve chosen 36 pt Arial Rounded MT Bold font with white color fill. Applying some transparency to the text will make it absorb some background color for a more glassy look. You could add some &lt;strong&gt;Outer Glow Effect&lt;/strong&gt; to make it even cooler.&lt;/p&gt;  &lt;p&gt;9. Add all other text you want to show in your splash screen. Here?s what I got so far:&lt;/p&gt;  &lt;p&gt;&lt;img title="Title &amp;amp; Text" style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="206" alt="Title &amp;amp; Text" src="http://tozon.info/images/blog/CreatingsplashscreenswithExpressionDesig_E12B/image_7.png" width="404" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;10. If you have any graphics that could communicate to the user what your application is all about, you could use that as well. It might also be a screenshot from the actual application if you can?t find anything better. I used a screenshot of my sample &lt;a href="http://tozon.info/blogs/andrej/archive/2008/08/11/Live-Europe-Weather-Map-in-action.aspx"&gt;Live Europe Weather Map&lt;/a&gt; application. Adding a bitmap to the existing Expression Design project is really easy ? just select &lt;strong&gt;File&lt;/strong&gt; | &lt;strong&gt;Impor&lt;/strong&gt;t? and open your graphics - it will get added to the current layer so you will probably want to create a new layer before doing that. And don?t forget to set some transparency to that as well:&lt;/p&gt;  &lt;p&gt;&lt;img title="Bitmap" style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="220" alt="Bitmap" src="http://tozon.info/images/blog/CreatingsplashscreenswithExpressionDesig_E12B/image_8.png" width="444" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;11. Almost done. To break out of dull symmetric rectangly shape, you can mix in some additional decorations, like I did to point out that this is a whole new version of the application:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://tozon.info/images/blog/CreatingsplashscreenswithExpressionDesig_E12B/splash.png"&gt;&lt;img title="Final Splash" style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="296" alt="Final Splash" src="http://tozon.info/images/blog/CreatingsplashscreenswithExpressionDesig_E12B/splash_thumb.png" width="550" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;And this is the final result for now. We?ve got transparency, irregular shape, drop shadow? Of course, this works for a sample, but for a real-world application I would have to put some additional work into it; pay more attention to the details, colors, gradients, etc.&lt;/p&gt;  &lt;p&gt;12. When satisfied with your work, just select all objects, select &lt;strong&gt;File&lt;/strong&gt; | &lt;strong&gt;Export?&lt;/strong&gt; and choose PNG as your target format. After the file is saved on your disk, all you need is &lt;a href="http://tozon.info/blogs/andrej/archive/2008/08/11/Splash-Screen-in-WPF.aspx"&gt;incorporate it in your WPF application&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Expression Design offers a lot more effects and options that were shown in this quick walkthrough. I am particularly happy to see how easy it is to play with different effects, mixing and layering them in different combination. There is, of course, also export to different Xaml instances, which makes it even more sweet.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;While writing this post, I noticed that the WPF team published a new &lt;a href="http://www.codeplex.com/wpf/Release/ProjectReleases.aspx?ReleaseId=14962" target="_blank"&gt;WPF Splash Screen Item Templates for Visual Studio 2008 SP1&lt;/a&gt;. This gives you additional option to add a splash screen to your WPF application ? a new (&lt;em&gt;Splash Screen (WPF)&lt;/em&gt;) item will be available in your templates window when adding a new item. Selecting that will insert a default graphics to your project and set it as the splash screen. You?ll have to customize the graphics yourself though. This is a nice option, although I?d like to see some form of a wizard with some styling options, font/title selections, etc? In the next version of Visual Studio perhaps?&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:left;margin:0px;padding:4px 4px 4px 4px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://tozon.info/blogs/andrej/archive/2008/08/15/Creating-splash-screens-with-Expression-Designer.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://tozon.info/blogs/andrej/archive/2008/08/15/Creating-splash-screens-with-Expression-Designer.aspx&amp;amp;bgcolor=0080C0&amp;amp;fgcolor=FFFFFF&amp;amp;border=000000&amp;amp;cbgcolor=D4E1ED&amp;amp;cfgcolor=000000" border="0/"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://tozon.info/aggbug.aspx?PostID=70686" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/TheAttic?a=2oyOeK"&gt;&lt;img src="http://feeds.feedburner.com/~f/TheAttic?i=2oyOeK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/TheAttic?a=OiTdQk"&gt;&lt;img src="http://feeds.feedburner.com/~f/TheAttic?i=OiTdQk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/TheAttic?a=oqn9Yk"&gt;&lt;img src="http://feeds.feedburner.com/~f/TheAttic?i=oqn9Yk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/TheAttic?a=xmGvGK"&gt;&lt;img src="http://feeds.feedburner.com/~f/TheAttic?i=xmGvGK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/TheAttic?a=HoYunk"&gt;&lt;img src="http://feeds.feedburner.com/~f/TheAttic?i=HoYunk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/TheAttic?a=FTDV3K"&gt;&lt;img src="http://feeds.feedburner.com/~f/TheAttic?i=FTDV3K" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/TheAttic?a=e64Pjk"&gt;&lt;img src="http://feeds.feedburner.com/~f/TheAttic?i=e64Pjk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/TheAttic?a=6UGbVK"&gt;&lt;img src="http://feeds.feedburner.com/~f/TheAttic?i=6UGbVK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/TheAttic?a=o10xPK"&gt;&lt;img src="http://feeds.feedburner.com/~f/TheAttic?i=o10xPK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/TheAttic?a=HkGUyK"&gt;&lt;img src="http://feeds.feedburner.com/~f/TheAttic?i=HkGUyK" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheAttic/~4/366036272" height="1" width="1"/&gt;</description><category>Development,WPF,Expression,User Experience</category><pubDate>Fri, 15 Aug 2008 22:28:50 GMT</pubDate></item><item><title>Skupina FMC - ?tudija primera uporabe Windows Server 2008</title><link>http://blogs.technet.com/slitpro/archive/2008/08/13/skupina-fmc-tudija-primera-uporabe-windows-server-2008.aspx</link><guid>http://blogs.technet.com/slitpro/archive/2008/08/13/skupina-fmc-tudija-primera-uporabe-windows-server-2008.aspx245</guid><description>&lt;p&gt;&lt;b&gt;Ponudnik informacijskih tehnologij najbolj&amp;#353;i primer uporabe sodobnih tehnologij&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Skupina FMC nudi celovito ponudbo, od prodaje in distribucije opreme ter sistemske integracije do izobra?evanja in podpore strankam. Skupina vsem &amp;#353;estim vklju?enim podjetjem zagotavlja ve? skupnih slu?b, med katerimi so kadrovska slu?ba, ra?unovodstvo ter tr?enje. Podjetje se je sre?alo s potrebo po nadgradnji strojne opreme v svojem podatkovnem centru. Obstoje?i sistem namre? ni ve? zagotavljal visoke zmogljivosti, ki jo je potrebovalo hitro rasto?e podjetje. Ob nadgradnji strojne opreme so za?eli na?rtovati tudi nadgradnjo programskih re&amp;#353;itev in platforme. Podjetje je uvedlo operacijski sistem Windows Server 2008, podatkovni stre?nik SQL Server 2005 in sporo?ilni sistem Microsoft Exchange Server 2007. &lt;/p&gt;  &lt;p&gt;Celotno &amp;#353;tudijo primera si oglejte na &lt;a title="http://www.microsoft.com/slovenija/resitve/stranke/fmc.mspx" href="http://www.microsoft.com/slovenija/resitve/stranke/fmc.mspx"&gt;http://www.microsoft.com/slovenija/resitve/stranke/fmc.mspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Toma?&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3103352" width="1" height="1"&gt;</description><category>?tudija primera,Windows Server 2008,SQL server</category><pubDate>Wed, 13 Aug 2008 08:30:29 GMT</pubDate></item><item><title>Bleeding Edge 2008</title><link>http://blogs.technet.com/slitpro/archive/2008/08/13/bleeding-edge-2008.aspx</link><guid>http://blogs.technet.com/slitpro/archive/2008/08/13/bleeding-edge-2008.aspx246</guid><description>&lt;p&gt;Nekaj najbolj&amp;#353;ih slovenskih IT strokovnjakov in razvijalcev v Sloveniji pripravlja tehni?no konferenco &lt;strong&gt;&lt;a href="http://www.bleedingedge.si/"&gt;Bleeding Edge 2008&lt;/a&gt;&lt;/strong&gt;, ki je namenjena arhitektom, razvijalcem in tehni?nim strokovnjakom. Konferenca bo &lt;strong&gt;1. oktobra 2008, v Portoro&amp;#353;kem hotelu Slovenija&lt;/strong&gt;. Vsebinsko je razdeljena na na dva dela in sicer arhitekturo ter spletne tehnologije in varnost.&amp;#160; Urnik si oglejte na &lt;a title="http://www.bleedingedge.si/urnik.html" href="http://www.bleedingedge.si/urnik.html"&gt;http://www.bleedingedge.si/urnik.html&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Na konferenci bodo priznani strokovnjaki z IT podro?ja, MVP-ji, predstavili prakti?ni prikaz izgradnje aplikacije in zavarovanje le-te ter podali razli?ne poglede na uporabnost najnovej&amp;#353;ih tehnologij. Predavali bodo Dejan Sarka, Du&amp;#353;an Zupan?i?, Matev? Ga?nik, Miha Pihler, Miha Marki? in Miha Valen?i?. Ve? o predavateljih si oglejte na &lt;a title="http://www.bleedingedge.si/predavatelji.html" href="http://www.bleedingedge.si/predavatelji.html"&gt;http://www.bleedingedge.si/predavatelji.html&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Vabljeni!&lt;/p&gt;  &lt;p&gt;Toma?&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3104905" width="1" height="1"&gt;</description><category>najave,novice,dogodki</category><pubDate>Wed, 13 Aug 2008 13:41:34 GMT</pubDate></item><item><title>Live Europe Weather Map in action</title><link>http://feeds.feedburner.com/~r/TheAttic/~3/361793015/Live-Europe-Weather-Map-in-action.aspx</link><guid>http://feeds.feedburner.com/~r/TheAttic/~3/361793015/Live-Europe-Weather-Map-in-action.aspx247</guid><description>&lt;p&gt;&lt;a href="http://tozon.info/blogs/andrej/archive/2008/08/04/Live-Europe-Weather-Map-with-Windows-Live-Tools-Map-Control.aspx"&gt;As promised&lt;/a&gt;, here?s my &lt;a href="http://www.anthology.si/liveweather"&gt;Live Europe Weather Map in action&lt;/a&gt;. This is still just a basic example of displaying icon pushpins on a map, and because I?m using &lt;a href="http://dev.live.com/tools"&gt;Virtual Earth ASP.NET Map Control&lt;/a&gt;, I don?t need to worry about how map is handled and pushpins are displayed, I only need to provide data for the pushpins.&lt;/p&gt;  &lt;p&gt;&lt;img title="Live Europe Weather Map" style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="416" alt="Live Europe Weather Map" src="http://tozon.info/images/blog/LiveEuropeWeatherMapinaction_89ED/ve2.jpg" width="554" border="0" /&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;The first version of the Weather Map from a couple of years ago used to scrape the data off a Html Page. Recently, the &lt;a href="http://meteo.arso.gov.si/met/en/" target="_blank"&gt;National Environmental Agency&lt;/a&gt; started publishing weather data in &lt;a href="http://meteo.arso.gov.si/met/en/service/" target="_blank"&gt;a more collection-friendly data formats&lt;/a&gt;, so I switched to these. &lt;/p&gt;  &lt;p&gt;The current version of Live European Weather Map collects Xml files, containing weather observations for European Capitals and additional cities.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Data Collection&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I decided to go with LINQ to SQL option for shaping my data entity. Some may argue that LINQ to SQL isn?t a serious technology, but for small, compact projects like this, it gives me just what I need:&lt;/p&gt;  &lt;p&gt;1. Instead of generating my data classes manually, I can create a table in my database (SQL Express in this case) and pull my classes out of that.&lt;/p&gt;  &lt;p&gt;2. I can shape my data entity by drag and dropping a table from the data source to the LINQ to SQL Class Designer in Visual Studio 2008, and my data class would get generated automatically. Here's what I?m currently collecting for weather conditions:&lt;/p&gt;  &lt;p&gt;&lt;img title="image" style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="442" alt="image" src="http://tozon.info/images/blog/LiveEuropeWeatherMapinaction_89ED/image.png" width="197" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;3. I can use this class to collect the data and store in into the database, or I can simply just store the collected data into ASP.NET Cache and forget the database completely.&lt;/p&gt;  &lt;p&gt;Of course, I could?ve done it some other way (plenty of options), but this one seemed the easiest and quickest.&lt;/p&gt;  &lt;p&gt;Weather data collection is done in a background, with a HttpModule and a timer, set to fire the collection process every 60 minutes (configurable through web.config):&lt;/p&gt;  &lt;div&gt;   &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;     &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Init(HttpApplication application)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; interval = GetCollectIntervalSetting();&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   4:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   5:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (timer == &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt; &amp;amp;&amp;amp;  interval &amp;gt; 0)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   6:&lt;/span&gt;     {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   7:&lt;/span&gt;         timer = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Timer(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; TimerCallback(BackgroundCollectionCallback), application.Context, 0, interval);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   8:&lt;/span&gt;     }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   9:&lt;/span&gt; }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  10:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  11:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; BackgroundCollectionCallback(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  12:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  13:&lt;/span&gt;     WeatherCollector.UpdateConditions();&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  14:&lt;/span&gt; }&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Using LINQ to SQL, collected data is inserted into the database:&lt;/p&gt;

&lt;div&gt;
  &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;
    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; UpdateConditions()&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   3:&lt;/span&gt;     List&amp;lt;WeatherCondition&amp;gt; items = Collect();&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   4:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   5:&lt;/span&gt;     WeatherDataContext context = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; WeatherDataContext();&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   6:&lt;/span&gt;     context.ExecuteCommand(&lt;span style="color:#006080;"&gt;&amp;quot;delete dbo.WeatherCondition&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   7:&lt;/span&gt;     context.WeatherConditions.InsertAllOnSubmit(items);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   8:&lt;/span&gt;     context.SubmitChanges();&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   9:&lt;/span&gt; }&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;? and later read on demand:&lt;/p&gt;

&lt;div&gt;
  &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;
    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; WeatherCondition[] Read()&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   3:&lt;/span&gt;     WeatherDataContext context = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; WeatherDataContext();&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   4:&lt;/span&gt;     var conditions = from item &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; context.WeatherConditions&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   5:&lt;/span&gt;                      select item;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   6:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; conditions.ToArray();&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   7:&lt;/span&gt; }&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;? just to finally get shown on the map:&lt;/p&gt;

&lt;div&gt;
  &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;
    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Page_Load(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (IsPostBack)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   4:&lt;/span&gt;     {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   5:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt;;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   6:&lt;/span&gt;     }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   7:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   8:&lt;/span&gt;     AddWeatherPins();&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   9:&lt;/span&gt; }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  10:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  11:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; AddWeatherPins()&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  12:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  13:&lt;/span&gt;     WeatherCondition[] conditions = WeatherCollector.Read();&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  14:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  15:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; i = 0; i &amp;lt; conditions.Length; i++)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  16:&lt;/span&gt;     {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  17:&lt;/span&gt;         WeatherCondition condition = conditions[i];&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  18:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (condition.ConditionIcon == &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt; || condition.ConditionIcon.Length == 0)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  19:&lt;/span&gt;         {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  20:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;continue&lt;/span&gt;;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  21:&lt;/span&gt;         }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  22:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  23:&lt;/span&gt;         AddPin(condition);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  24:&lt;/span&gt;     };&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  25:&lt;/span&gt; }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  26:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  27:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; AddPin(WeatherCondition condition)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  28:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  29:&lt;/span&gt;     StringBuilder sb = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; StringBuilder();&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  30:&lt;/span&gt;     sb.AppendFormat(&lt;span style="color:#006080;"&gt;&amp;quot;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;{0} {1}&amp;lt;/b&amp;gt;, {2}&amp;quot;&lt;/span&gt;, condition.Temperature, condition.TemperatureUnit, condition.Condition);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  31:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (condition.Weather.Length &amp;gt; 0)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  32:&lt;/span&gt;     {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  33:&lt;/span&gt;         sb.AppendFormat(&lt;span style="color:#006080;"&gt;&amp;quot;, {0}&amp;quot;&lt;/span&gt;, condition.Weather);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  34:&lt;/span&gt;     }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  35:&lt;/span&gt;     sb.Append(&lt;span style="color:#006080;"&gt;&amp;quot;&amp;lt;br /&amp;gt;&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  36:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (condition.WindStrength.HasValue)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  37:&lt;/span&gt;     {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  38:&lt;/span&gt;         sb.AppendFormat(&lt;span style="color:#006080;"&gt;&amp;quot;Wind: {0}, {1} {2}&amp;lt;br /&amp;gt;&amp;quot;&lt;/span&gt;, condition.WindDirection, condition.WindStrength, condition.WindStrengthUnit);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  39:&lt;/span&gt;     }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  40:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (condition.Humidity.HasValue)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  41:&lt;/span&gt;     {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  42:&lt;/span&gt;         sb.AppendFormat(&lt;span style="color:#006080;"&gt;&amp;quot;Humidity: {0} {1}&amp;lt;br /&amp;gt;&amp;quot;&lt;/span&gt;, condition.Humidity, condition.HumidityUnit);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  43:&lt;/span&gt;     }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  44:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (condition.Visibility.HasValue)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  45:&lt;/span&gt;     {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  46:&lt;/span&gt;         sb.AppendFormat(&lt;span style="color:#006080;"&gt;&amp;quot;Visibility: {0} {1}&amp;lt;br /&amp;gt;&amp;quot;&lt;/span&gt;, condition.Visibility, condition.VisibilityUnit);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  47:&lt;/span&gt;     }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  48:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (condition.Pressure.HasValue)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  49:&lt;/span&gt;     {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  50:&lt;/span&gt;         sb.AppendFormat(&lt;span style="color:#006080;"&gt;&amp;quot;Pressure: {0} {1} {2}&amp;lt;br /&amp;gt;&amp;quot;&lt;/span&gt;, condition.Pressure, condition.PressureUnit, condition.PressureText);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  51:&lt;/span&gt;     }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  52:&lt;/span&gt;     sb.AppendFormat(&lt;span style="color:#006080;"&gt;&amp;quot;&amp;lt;br /&amp;gt;Updated: {0}&amp;lt;/p&amp;gt;&amp;quot;&lt;/span&gt;, condition.UpdatedTime);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  53:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  54:&lt;/span&gt;     Shape pin = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Shape(ShapeType.Pushpin, &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; LatLongWithAltitude((&lt;span style="color:#0000ff;"&gt;double&lt;/span&gt;)condition.Latitude, (&lt;span style="color:#0000ff;"&gt;double&lt;/span&gt;)condition.Longitude));&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  55:&lt;/span&gt;     pin.Title = &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.Format(&lt;span style="color:#006080;"&gt;&amp;quot;{0}, {1}&amp;quot;&lt;/span&gt;, condition.City, condition.CountryCode);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  56:&lt;/span&gt;     pin.CustomIcon = &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.Format(&lt;span style="color:#006080;"&gt;&amp;quot;images/{0}.png&amp;quot;&lt;/span&gt;, condition.ConditionIcon);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  57:&lt;/span&gt;     pin.Description = sb.ToString();&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  58:&lt;/span&gt;     map.AddShape(pin);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  59:&lt;/span&gt; }&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Note that the large portion of the code is spent for describing pushpin?s popup content.&lt;/p&gt;

&lt;p&gt;Again, this is just a drag?n?dropped Virtual Earth Map Control put to work here, without any specific client or server-side events. Looking forward to explore those in the future.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:left;margin:0px;padding:4px 4px 4px 4px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://tozon.info/blogs/andrej/archive/2008/08/11/Live-Europe-Weather-Map-in-action.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://tozon.info/blogs/andrej/archive/2008/08/11/Live-Europe-Weather-Map-in-action.aspx&amp;amp;bgcolor=0080C0&amp;amp;fgcolor=FFFFFF&amp;amp;border=000000&amp;amp;cbgcolor=D4E1ED&amp;amp;cfgcolor=000000" border="0/"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://tozon.info/aggbug.aspx?PostID=69915" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/TheAttic?a=T64rHK"&gt;&lt;img src="http://feeds.feedburner.com/~f/TheAttic?i=T64rHK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/TheAttic?a=iZUkgk"&gt;&lt;img src="http://feeds.feedburner.com/~f/TheAttic?i=iZUkgk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/TheAttic?a=f87Huk"&gt;&lt;img src="http://feeds.feedburner.com/~f/TheAttic?i=f87Huk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/TheAttic?a=TSrOeK"&gt;&lt;img src="http://feeds.feedburner.com/~f/TheAttic?i=TSrOeK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/TheAttic?a=Ghzckk"&gt;&lt;img src="http://feeds.feedburner.com/~f/TheAttic?i=Ghzckk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/TheAttic?a=d6VgLK"&gt;&lt;img src="http://feeds.feedburner.com/~f/TheAttic?i=d6VgLK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/TheAttic?a=c4do2k"&gt;&lt;img src="http://feeds.feedburner.com/~f/TheAttic?i=c4do2k" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/TheAttic?a=t6aOPK"&gt;&lt;img src="http://feeds.feedburner.com/~f/TheAttic?i=t6aOPK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/TheAttic?a=EndnOK"&gt;&lt;img src="http://feeds.feedburner.com/~f/TheAttic?i=EndnOK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/TheAttic?a=tySnZK"&gt;&lt;img src="http://feeds.feedburner.com/~f/TheAttic?i=tySnZK" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheAttic/~4/361793015" height="1" width="1"/&gt;</description><category>Development</category><pubDate>Mon, 11 Aug 2008 09:12:14 GMT</pubDate></item><item><title>Splash Screen in WPF 3.5 SP1</title><link>http://feeds.feedburner.com/~r/TheAttic/~3/362299265/Splash-Screen-in-WPF.aspx</link><guid>http://feeds.feedburner.com/~r/TheAttic/~3/362299265/Splash-Screen-in-WPF.aspx84</guid><description>&lt;p&gt;Besides improving application startup time, .NET Framework 3.5 &lt;strong&gt;SP1&lt;/strong&gt; also allows developers to add a splash screen to WPF applications. The splash screen is shown using native code, even before WPF application starts to load. In reality this means the splash screen would show immediately when application is started, and fade away a couple of seconds later, when application is fully loaded and main screen displayed.&lt;/p&gt;  &lt;p&gt;WPF Splash screen is just and nothing more than a plain bitmap image. Common formats are supported, and if you use a PNG format with a specified alpha channel, transparent areas will be shown accordingly. Just remember to keep it small. Choosing a couple of megabytes large bitmap for your splash screen won?t reduce the loading time. Adding additional information to the image during runtime (title, version number) is also not possible; everything you want to show should be designed in advance and incorporated into a single image.&lt;/p&gt;  &lt;p&gt;WPF splash screens can be added to an application in two ways:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Showing splash screen manually&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;1. Create a new &lt;strong&gt;PNG image&lt;/strong&gt;, which will be your splash screen.&lt;/p&gt;  &lt;p&gt;2. Start your &lt;strong&gt;Visual Studio 2008 SP1&lt;/strong&gt; and create a new &lt;strong&gt;WPF project&lt;/strong&gt;. [make sure .NET 3.5 is specified as the target FX]&lt;/p&gt;  &lt;p&gt;3. Choose &lt;strong&gt;Project&lt;/strong&gt; | &lt;strong&gt;Add Existing Item&lt;/strong&gt;? Find and select your splash screen image.&lt;/p&gt;  &lt;p&gt;4. Open &lt;strong&gt;App.xaml&lt;/strong&gt; file in design view and look in the properties window ;)&lt;/p&gt;  &lt;p&gt;&lt;img title="Events in VS2008 WPF designer" style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="399" alt="Events in VS2008 WPF designer" src="http://tozon.info/images/blog/SplashScreeninWPF_137E2/image.png" width="281" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;Yes, there?s an event panel in WPF designer! And properties/events sorting option buttons!&lt;/p&gt;  &lt;p&gt;5. Create a &lt;strong&gt;Startup&lt;/strong&gt; event handler:&lt;/p&gt;  &lt;div&gt;   &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;     &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Application_Startup(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, StartupEventArgs e)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   3:&lt;/span&gt;     SplashScreen screen = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; SplashScreen(&lt;span style="color:#006080;"&gt;&amp;quot;sp1splash.png&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   4:&lt;/span&gt;     screen.Show(&lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   5:&lt;/span&gt; }&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;6. Compile and run.&lt;/p&gt;

&lt;p&gt;The SplashScreen constructor takes the name of the resource, which is a splash screen image. The boolean parameter in the Show() method specifies, whether the splash screen should fade out when application is fully loaded. False means you?ll have to hide the splash screen manually using the Close() method.&lt;/p&gt;

&lt;p&gt;If you don?t like writing code, this gets even easier:&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Showing splash screen declaratively&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1. Create a new &lt;strong&gt;PNG image&lt;/strong&gt;, which will be your splash screen.&lt;/p&gt;

&lt;p&gt;2. Start your &lt;strong&gt;Visual Studio 2008 SP1&lt;/strong&gt; and create a new &lt;strong&gt;WPF project&lt;/strong&gt;. [make sure .NET 3.5 is specified as the target FX]&lt;/p&gt;

&lt;p&gt;3. Choose &lt;strong&gt;Project&lt;/strong&gt; | &lt;strong&gt;Add Existing Item&lt;/strong&gt;? Find and select your splash screen image.&lt;/p&gt;

&lt;p&gt;4. Select the newly added image in the solution explorer and show its properties.&lt;/p&gt;

&lt;p&gt;5. Change the &lt;strong&gt;Build Action&lt;/strong&gt; to &lt;strong&gt;SplashScreen&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;6. Compile and run.&lt;/p&gt;

&lt;p&gt;The splash screen shows immediately upon the application startup and fades out when the main window is loaded and shown. How?s that for cool new user experience :)&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Additional note: SplashScreen class works in WPF desktop apps only, XBAPs have their own mechanism for starting up.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:left;margin:0px;padding:4px 4px 4px 4px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://tozon.info/blogs/andrej/archive/2008/08/11/Splash-Screen-in-WPF.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://tozon.info/blogs/andrej/archive/2008/08/11/Splash-Screen-in-WPF.aspx&amp;amp;bgcolor=0080C0&amp;amp;fgcolor=FFFFFF&amp;amp;border=000000&amp;amp;cbgcolor=D4E1ED&amp;amp;cfgcolor=000000" border="0/"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://tozon.info/aggbug.aspx?PostID=69999" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/TheAttic?a=GySanK"&gt;&lt;img src="http://feeds.feedburner.com/~f/TheAttic?i=GySanK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/TheAttic?a=q2L82k"&gt;&lt;img src="http://feeds.feedburner.com/~f/TheAttic?i=q2L82k" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/TheAttic?a=ksacRk"&gt;&lt;img src="http://feeds.feedburner.com/~f/TheAttic?i=ksacRk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/TheAttic?a=DFmhdK"&gt;&lt;img src="http://feeds.feedburner.com/~f/TheAttic?i=DFmhdK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/TheAttic?a=uGUURk"&gt;&lt;img src="http://feeds.feedburner.com/~f/TheAttic?i=uGUURk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/TheAttic?a=oOI4uK"&gt;&lt;img src="http://feeds.feedburner.com/~f/TheAttic?i=oOI4uK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/TheAttic?a=d2sOFk"&gt;&lt;img src="http://feeds.feedburner.com/~f/TheAttic?i=d2sOFk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/TheAttic?a=8usMOK"&gt;&lt;img src="http://feeds.feedburner.com/~f/TheAttic?i=8usMOK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/TheAttic?a=BPLORK"&gt;&lt;img src="http://feeds.feedburner.com/~f/TheAttic?i=BPLORK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/TheAttic?a=SGrNtK"&gt;&lt;img src="http://feeds.feedburner.com/~f/TheAttic?i=SGrNtK" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheAttic/~4/362299265" height="1" width="1"/&gt;</description><category>Software,WPF,User Experience</category><pubDate>Mon, 11 Aug 2008 21:03:03 GMT</pubDate></item></channel></rss>