<?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-5048836253961581336</id><updated>2008-06-14T02:25:09.084-07:00</updated><title type='text'>health</title><link rel='alternate' type='text/html' href='http://health.bg58.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default?start-index=26&amp;max-results=25'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://health.bg58.com/atom.xml'/><author><name>baby</name><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>358</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5048836253961581336.post-6833622671947745545</id><published>2008-06-14T02:23:00.003-07:00</published><updated>2008-06-14T02:25:09.116-07:00</updated><title type='text'>Let 'em Eat Cake</title><content type='html'>A winter tradition the last few years is to receive a &lt;br /&gt;birthday cake from Mark...also known as Poo-baca, &lt;br /&gt;Poo-Man-Chu, Poo-Man or any number of other Poo-related&lt;br /&gt;names. Mark is the Waste Water Treatment Plant Tech &lt;br /&gt;and some feel he sometimes has a little too much&lt;br /&gt;time on his hands. We went to a birthday party this&lt;br /&gt;weekend where Jay-Bird was presented with this pretty&lt;br /&gt;cake from Poo-baca. Sometimes they look good enough to&lt;br /&gt;eat. However, if you look at the ingredients, however&lt;br /&gt;good it may look, it might cause a few Pepto-Bismo &lt;br /&gt;momments when digested. When I asked him for a recipe &lt;br /&gt;I could put on my blog, he was more than happy to oblige:&lt;br /&gt;&lt;br /&gt;Grammy Bacca’s Poo-licious Cake&lt;br /&gt;&lt;br /&gt;6 cups Class A or B processed sludge*&lt;br /&gt;&lt;br /&gt;*this can be biosolids processed from belt press, centrifuge,&lt;br /&gt;or compost pile; pre-tested for microbial and organic nutrient&lt;br /&gt;&amp; at least 14-17% solids content after de-watering for &lt;br /&gt;consistency and body&lt;br /&gt;&lt;br /&gt;3-4 cups Hand-whipped cream topping--cooled&lt;br /&gt;6 oz. Syrup of choice--warmed&lt;br /&gt;4 oz. Sprinkles of choice&lt;br /&gt;2-3 oz. Candy of choice&lt;br /&gt;&lt;br /&gt;---------------------------- --------------------------&lt;br /&gt;&lt;br /&gt;Take the sludge and pack into a non-stick or pre-coated &lt;br /&gt;decorative mold. Let stand at room temperature (preferably&lt;br /&gt;20 C [ 70 F ]) for 2-4 hrs. When ready to decorate, carefully &lt;br /&gt;turn molded sludge onto a serving plate/platter (preferably &lt;br /&gt;fine china, silver, or acceptable equivalent) and release &lt;br /&gt;sludge from mold by tapping and slight force. If mold crumbles &lt;br /&gt;at all you will have to start all over or apply delicate hand &lt;br /&gt;“spackling” techniques to the molded sludge to put it to rights.&lt;br /&gt;&lt;br /&gt;After cake is satisfactorily positioned onto the plate or &lt;br /&gt;platter, take the pre-refrigerated hand-whipped cream and &lt;br /&gt;spread evenly onto the surface—taking extra care in easing it &lt;br /&gt;over the edges of the mold. Then—as liberally and decoratively &lt;br /&gt;as you wish—apply dobs of your favorite syrups, sprinkles, &lt;br /&gt;candies, and accents (edible or non-edible)&lt;br /&gt;&lt;br /&gt;***be careful when pressing or inserting decorations, for the &lt;br /&gt;molded cake may crumble&lt;br /&gt;&lt;br /&gt;Keep at cooled temperature (0-4 C [ 32-40 F ]) until ready &lt;br /&gt;to serve&lt;br /&gt;&lt;br /&gt;Serves 4-8 per cake&lt;br /&gt;&lt;br /&gt;Enjoy!!! &lt;br /&gt;Love Ya…Grammy Poo-bacca!!!</content><link rel='alternate' type='text/html' href='http://health.bg58.com/2008/06/let-em-eat-cake.html' title='Let &apos;em Eat Cake'/><link rel='replies' type='application/atom+xml' href='http://health.bg58.com/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/6833622671947745545'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/6833622671947745545'/><author><name>baby</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-5048836253961581336.post-4992030402139425753</id><published>2008-06-14T02:23:00.002-07:00</published><updated>2008-06-14T02:24:49.760-07:00</updated><title type='text'>Dark Days Ahead</title><content type='html'>The photos above were taken by Bill, the NSF Station Manager&lt;br /&gt;this May (top two photos) and last May (bottom two photos).&lt;br /&gt;Even though we turned off quite a few lights last year to&lt;br /&gt;conserve energy, this year we've probably turned off twice&lt;br /&gt;as many and it's very obvious when comparing the photos. I&lt;br /&gt;for one am very happy since I am a Dark Sky proponent and we&lt;br /&gt;will see many more stars and auroras here in town. There &lt;br /&gt;are some who would rather turn on all of the lights but I &lt;br /&gt;think it's more how Antarctica should be and not just some&lt;br /&gt;big town on the edge of the wilderness. Safety does however&lt;br /&gt;play a big part of our lives down here and I concede that we&lt;br /&gt;need to have a fair share of lights on so people will not &lt;br /&gt;hurt themselves. For the next few months, this will be our&lt;br /&gt;view when looking over McMurdo as the Sun is long gone and&lt;br /&gt;even the very dim twilight at midday will be gone in less than&lt;br /&gt;a week. However, with the lights vastly dimmed, I'm&lt;br /&gt;looking forward to some fantastic sky shows this winter!</content><link rel='alternate' type='text/html' href='http://health.bg58.com/2008/06/dark-days-ahead.html' title='Dark Days Ahead'/><link rel='replies' type='application/atom+xml' href='http://health.bg58.com/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/4992030402139425753'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/4992030402139425753'/><author><name>baby</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-5048836253961581336.post-4396817921348867089</id><published>2008-06-14T02:23:00.001-07:00</published><updated>2008-06-14T02:24:31.801-07:00</updated><title type='text'>Tucker to Castle Rock</title><content type='html'>The MEC (Mechanical Equipment Center) is tasked this &lt;br /&gt;winter to put 250 hours on the new Tucker tracked vehicles.&lt;br /&gt;Once a week, Sean and Josh take two people from town out on&lt;br /&gt;the Castle Rock Loop on a two hour trip. This week, Lynn&lt;br /&gt;and I got to go. We hadn't been to Castle Rock before&lt;br /&gt;and we hadn't ridden in the new Tuckers before so it was&lt;br /&gt;a doubly nice trip. The Tuckers are tracked vehicles so&lt;br /&gt;they roll over the snow easily and had no problem at all&lt;br /&gt;climbing from the Sea Ice up the glacier headed to Castle&lt;br /&gt;Rock.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I was pretty surprised how steep the terrain was around&lt;br /&gt;Castle Rock and it's definitely a long slide down to the&lt;br /&gt;bottom of the glacier. Lots of people make this 9.3 mile&lt;br /&gt;loop trip on foot or skis, but they definitely have more&lt;br /&gt;energy than I do. I was very happy making it in a warm&lt;br /&gt;vehicle.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;On the way back, we were riding along the top of the glacier,&lt;br /&gt;so we were fairly high up compared to McMurdo Sound to the&lt;br /&gt;right and the Ross Ice Shelf to the left. At this high&lt;br /&gt;up, you could see that it's a lot brighter to the north,&lt;br /&gt;but you'd have to go hundreds of miles to actually see &lt;br /&gt;the sun. And this was at 3:30 in the afternoon. We had&lt;br /&gt;a great trip and hopefully we'll be able to go out again&lt;br /&gt;after it's completely dark to see lots of stars.</content><link rel='alternate' type='text/html' href='http://health.bg58.com/2008/06/tucker-to-castle-rock.html' title='Tucker to Castle Rock'/><link rel='replies' type='application/atom+xml' href='http://health.bg58.com/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/4396817921348867089'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/4396817921348867089'/><author><name>baby</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-5048836253961581336.post-4430803422022104465</id><published>2008-06-14T02:23:00.000-07:00</published><updated>2008-06-14T02:24:06.491-07:00</updated><title type='text'>WINFLY-WhenFly-OpenFly</title><content type='html'>The powers that be in the land up north have &lt;br /&gt;decided that we will not have our traditional&lt;br /&gt;WINFLY the third week of August. They're &lt;br /&gt;replacing it with something officially called&lt;br /&gt;ADVON, (Advanced Echelon...some vague military&lt;br /&gt;term). What it comes down to though is that we &lt;br /&gt;will not be leaving the third week of August as &lt;br /&gt;planned. Instead we will be departing as early&lt;br /&gt;as September 1st (not likely) or as late as&lt;br /&gt;September 15th (more likely). This caused &lt;br /&gt;several people to leave early last week that &lt;br /&gt;were scheduled to Winter with us. They either&lt;br /&gt;had definite plans for that period or had &lt;br /&gt;immigration issues that they couldn't risk&lt;br /&gt;fouling up because a date had changed. More&lt;br /&gt;than likely we will only get three weeks off&lt;br /&gt;before returning here for the Summer. As a&lt;br /&gt;result, we can kiss our trip to Tibet, Nepal&lt;br /&gt;and Bhutan goodbye as it was supposed to start&lt;br /&gt;on September 4th. It seems like the folks who&lt;br /&gt;are currently on the Ice might have been a bit&lt;br /&gt;of an afterthought when the plans were being &lt;br /&gt;drawn up for this period (whatever you want to&lt;br /&gt;call it) but we are cogs in the machine and&lt;br /&gt;that's the way it works. Can't get too upset&lt;br /&gt;over it as it does mean three more weeks of pay&lt;br /&gt;which will come in handy. My cynical side though&lt;br /&gt;makes me wonder if they're planning on sending&lt;br /&gt;a plane for us at all in five months.&lt;br /&gt;&lt;br /&gt;"They said bidey-bye to them what they'd &lt;br /&gt;birthed. And from the nothing, they looked back... &lt;br /&gt;and Captain Walker hollered, Wait, one of us&lt;br /&gt;will come! Wait, one of us will come! And&lt;br /&gt;somebody did come. Walker! We's heartful to &lt;br /&gt;you, Captain Walker. We's ready now. Take us&lt;br /&gt;home.</content><link rel='alternate' type='text/html' href='http://health.bg58.com/2008/06/winfly-whenfly-openfly.html' title='WINFLY-WhenFly-OpenFly'/><link rel='replies' type='application/atom+xml' href='http://health.bg58.com/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/4430803422022104465'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/4430803422022104465'/><author><name>baby</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-5048836253961581336.post-7555069063011644198</id><published>2008-06-01T14:36:00.001-07:00</published><updated>2008-06-01T14:36:31.019-07:00</updated><title type='text'>Photoshop 3D Layers Tutorial</title><content type='html'>&lt;p&gt;This video tutorial shows how to add a 3D object in a photo and some 3D layer effects.&lt;/p&gt; &lt;p&gt;&lt;center&gt;&lt;/center&gt;&lt;/p&gt;                                          &lt;p&gt;&lt;center&gt;Thanks for subscribing to &amp;copy;  http://www.orangeinks.com - visit the author for more great content.&lt;/center&gt;&lt;/p&gt;     &lt;br /&gt; &lt;br /&gt;             &lt;h3&gt;Related Reading&lt;/h3&gt;&lt;ul class="related_post"&gt;&lt;li&gt;Photoshop Patch Tools and Levels Tutorial (0)&lt;/li&gt;&lt;li&gt;How To Make a Feed Icon in Photoshop Video Tutorial (1)&lt;/li&gt;&lt;li&gt;Photoshop Filter: Liquify Tutorial (0)&lt;/li&gt;&lt;li&gt;Fix a Website using GreaseMonkey and Firebug (0)&lt;/li&gt;&lt;li&gt;You Suck At Photoshop Video 1 (0)&lt;/li&gt;&lt;/ul&gt;</content><link rel='alternate' type='text/html' href='http://health.bg58.com/2008/06/photoshop-3d-layers-tutorial.html' title='Photoshop 3D Layers Tutorial'/><link rel='replies' type='application/atom+xml' href='http://health.bg58.com/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/7555069063011644198'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/7555069063011644198'/><author><name>baby</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-5048836253961581336.post-664931273699810082</id><published>2008-06-01T12:41:00.000-07:00</published><updated>2008-06-01T12:42:03.317-07:00</updated><title type='text'>Type Mathematical Formulas with Ease Using LyX</title><content type='html'>&lt;p&gt;LyX is an open-source document processor which runs on Mac, Windows and Linux. They called it a &amp;#8220;document processor&amp;#8221; simply because unlike most word processors, it encourages an approach to writing based on the structure of the document rather than the appearance. This means that you do not have to worry about the appearance of your document because the software will handle the details for visual layouts.&lt;/p&gt; &lt;p style="text-align: center;"&gt;&lt;/p&gt; &lt;p style="text-align: center;"&gt;&lt;/p&gt; &lt;p&gt;The software is free with no strings attached. Using LyX for typing regular notes and letters is as easy as using your favorite word processor. The main feature of the software is its ability to produce complex equations with ease while providing a professional look for the created document. It takes a little time to get used to and to learn the commands for the software, but once you get the hang of LyX, you can turn LyX into a very useful document tool. You can check out their video demo here.&lt;/p&gt; &lt;p&gt;LyX is a great alternative for your usual word processor and a great tool for creating documents that contains simple and complex equations. It is light and does not eat up a lot of memory and you can download it for free.&lt;/p&gt;                                          &lt;p&gt;&lt;center&gt;Thanks for subscribing to &amp;copy;  http://www.orangeinks.com - visit the author for more great content.&lt;/center&gt;&lt;/p&gt;     &lt;br /&gt; &lt;br /&gt;             &lt;h3&gt;Related Reading&lt;/h3&gt;&lt;ul class="related_post"&gt;&lt;li&gt;Evernote: Remember Everything, Access Anywhere (5)&lt;/li&gt;&lt;li&gt;Help Find Cure for Diseases by Playing Foldit (0)&lt;/li&gt;&lt;li&gt;Xobni: Email Organizer for Outlook Users (0)&lt;/li&gt;&lt;li&gt;Use Multiple Online Language Translators with Translate.Net (3)&lt;/li&gt;&lt;li&gt;Turn your iTunes into an Alarm Clock (0)&lt;/li&gt;&lt;/ul&gt;</content><link rel='alternate' type='text/html' href='http://health.bg58.com/2008/06/type-mathematical-formulas-with-ease.html' title='Type Mathematical Formulas with Ease Using LyX'/><link rel='replies' type='application/atom+xml' href='http://health.bg58.com/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/664931273699810082'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/664931273699810082'/><author><name>baby</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-5048836253961581336.post-7316877608927965670</id><published>2008-06-01T08:36:00.001-07:00</published><updated>2008-06-01T08:36:18.729-07:00</updated><title type='text'>Search Available Domains Faster Using Domize</title><content type='html'>&lt;p&gt;We all know that searching of an available domain name can be such a pain. Typing a name at a time and hoping that the search will return a &amp;#8220;this domain is available.&amp;#8221; It can be very time consuming and frustrating at the same time.&lt;/p&gt; &lt;p&gt;Domize is a domain name search engine that lets you search domain names faster and gives quick results of available and unavailable domains. The engine is very easy to use and is secured over SSL. Like most domain search tools out there, all you have to do is type in the domain name that you want to search. Then it gets interesting. With every character that you type, the engine will show a result of the availability of your domain for every letter that you add. This will give you additional information and a greater possibility of finding a shorter domain name.&lt;/p&gt; &lt;p style="text-align: center;"&gt;&lt;/p&gt; &lt;p&gt;After each search, a snapshot preview of the available domains can be accessed easily. Just hover your mouse cursor over the red colored text (red means taken and blue means available), and a snapshot window will popup. If you did not find what you are looking for, you can edit the text in the Domize search bar and the results will change as you add or remove a letter or character to your domain name. This will save you a lot of time while playing around with ideas for a domain name.&lt;/p&gt; &lt;p&gt;Thousands of domain names are being registered everyday. Finding an available name gets even harder with conventional domain search tools. Using Domize as a tool for finding a domain name will certainly give you an edge and save you a lot of time.&lt;/p&gt; &lt;p&gt;Note: Domize also offers iPhone support.&lt;/p&gt;                                          &lt;p&gt;&lt;center&gt;Thanks for subscribing to &amp;copy;  http://www.orangeinks.com - visit the author for more great content.&lt;/center&gt;&lt;/p&gt;     &lt;br /&gt; &lt;br /&gt;             &lt;h3&gt;Related Reading&lt;/h3&gt;&lt;ul class="related_post"&gt;&lt;li&gt;Powerset: The Natural Language Search Engine (1)&lt;/li&gt;&lt;li&gt;Stumpedia: The Social Powered Search Engine (2)&lt;/li&gt;&lt;li&gt;Google Just Banned Ecocho on Earthday (0)&lt;/li&gt;&lt;li&gt;Ecocho: The Green  Search Engine (3)&lt;/li&gt;&lt;li&gt;Evernote: Remember Everything, Access Anywhere (5)&lt;/li&gt;&lt;/ul&gt;</content><link rel='alternate' type='text/html' href='http://health.bg58.com/2008/06/search-available-domains-faster-using.html' title='Search Available Domains Faster Using Domize'/><link rel='replies' type='application/atom+xml' href='http://health.bg58.com/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/7316877608927965670'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/7316877608927965670'/><author><name>baby</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-5048836253961581336.post-6709916493642630324</id><published>2008-06-01T07:55:00.001-07:00</published><updated>2008-06-01T07:55:25.301-07:00</updated><title type='text'>Spot what your Favorite Celebrities are Into</title><content type='html'>&lt;p&gt;Coolspotters is a social networking site launched to public beta a few days ago which focuses on finding and cataloging stuff that celebrities use. The service will appeal most to celebrity fans who wants to check out what their favorite stars are using. They can also contribute to the community by creating their own &amp;#8220;spots&amp;#8221;.  A &amp;#8220;spot&amp;#8221; is the term used by Coolspotters when a certain product is associated with a celebrity. Spots can be anything that is discovered in movies, magazines, TV, snap shots, paparazzi shots, etc.&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt;We all see great stuff being worn and used by our favorite celebrities - in magazines, TV, in movies - but there&amp;#8217;s never been an easy way to find out exactly what the great stuff is! So, we built one.&lt;/p&gt;&lt;/blockquote&gt; &lt;p style="text-align: center;"&gt;&lt;/p&gt; &lt;p&gt;You don&amp;#8217;t have to join Coolspotters to enjoy their service. If you just want to browse around and check out &amp;#8220;spots&amp;#8221;, registration is not needed. Serious spotters however will be required to create an account in order to contribute and enjoy other features.&lt;/p&gt;                                          &lt;p&gt;&lt;center&gt;Thanks for subscribing to &amp;copy;  http://www.orangeinks.com - visit the author for more great content.&lt;/center&gt;&lt;/p&gt;     &lt;br /&gt; &lt;br /&gt;             &lt;h3&gt;Related Reading&lt;/h3&gt;&lt;ul class="related_post"&gt;&lt;li&gt;Xobni: Email Organizer for Outlook Users (0)&lt;/li&gt;&lt;li&gt;Insoshi Introduces an Open Source Social Networking Platform (0)&lt;/li&gt;&lt;li&gt;Iron Man Movie Wallpapers Up for Grabs (0)&lt;/li&gt;&lt;li&gt;I Am Legend Global Banners (0)&lt;/li&gt;&lt;li&gt;Killer Bean Official Trailer (1)&lt;/li&gt;&lt;/ul&gt;</content><link rel='alternate' type='text/html' href='http://health.bg58.com/2008/06/spot-what-your-favorite-celebrities-are.html' title='Spot what your Favorite Celebrities are Into'/><link rel='replies' type='application/atom+xml' href='http://health.bg58.com/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/6709916493642630324'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/6709916493642630324'/><author><name>baby</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-5048836253961581336.post-2650599067896168568</id><published>2008-06-01T07:43:00.001-07:00</published><updated>2008-06-01T07:43:36.440-07:00</updated><title type='text'>Seero Releases Embed Feature in their Geotagged Video Service</title><content type='html'>&lt;p&gt;Seero is a San Francisco based startup that we introduced a while back which is the first true geo-broadcasting platform which seamlessly integrates live mobile webcasting and GPS mapping. The service is very promising especially with new features constantly being added.&lt;/p&gt; &lt;p&gt;The team just introduced their embed feature for the service which will give you the ability to broadcast live in your blogs and websites. All you need to do is to get the embed codes in your Seero profile. You can choose to embed a particular broadcast or the entire profile (This type of embed will connect to a broadcaster&amp;#8217;s live feed or on-demand playlist (if not live)) of the broadcaster and let your viewers choose which broadcast they want to watch within the embedded video. There are two format shapes to choose from (horizontal and vertical).&lt;/p&gt; &lt;p&gt;Today, Seero&amp;#8217;s Chief Creative Officer, David Rothschild, will be broadcasting live and on-location from the Where 2.0 conference (May 12 - 14).  David will provide in-depth coverage and interviews on recent advances in location-based technology as a member of the press. You can check out the live broadcast in the embedded video below.&lt;/p&gt; &lt;p&gt;&lt;center&gt;&lt;/center&gt;&lt;/p&gt;                                          &lt;p&gt;&lt;center&gt;Thanks for subscribing to &amp;copy;  http://www.orangeinks.com - visit the author for more great content.&lt;/center&gt;&lt;/p&gt;     &lt;br /&gt; &lt;br /&gt;             &lt;h3&gt;Related Reading&lt;/h3&gt;&lt;ul class="related_post"&gt;&lt;li&gt;Seero Launches to the Public (2)&lt;/li&gt;&lt;li&gt;Seero to Give Live Webcasting with GPS Mapping  (1)&lt;/li&gt;&lt;li&gt;Nissan GT-R Disengages Speed Limiter When In a Racing Circuit. (6)&lt;/li&gt;&lt;/ul&gt;</content><link rel='alternate' type='text/html' href='http://health.bg58.com/2008/06/seero-releases-embed-feature-in-their.html' title='Seero Releases Embed Feature in their Geotagged Video Service'/><link rel='replies' type='application/atom+xml' href='http://health.bg58.com/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/2650599067896168568'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/2650599067896168568'/><author><name>baby</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-5048836253961581336.post-211358570800654297</id><published>2008-06-01T07:16:00.001-07:00</published><updated>2008-06-01T07:16:32.924-07:00</updated><title type='text'>Xobni: Email Organizer for Outlook Users</title><content type='html'>&lt;p&gt;Xobni (Inbox spelled backwards) is a Microsoft Outlook plugin that helps you manage and organize your emails by utilizing existing Outlook features and creating an email-based social network within your email client. Bill Gates quoted Xobni as &amp;#8220;The next generation of social networking.&amp;#8221; The plugin features; quick e-mail searches, quick attachment discovery, automatic extraction of phone numbers, automatic schedule creator and email conversation threading. Check out the video demo below for a more detailed explanation on how Xobni works.&lt;/p&gt; &lt;p&gt;&lt;center&gt;&lt;/center&gt;&lt;/p&gt; &lt;p&gt;This is a new and interesting way of managing your emails if you are using Outlook (the most popular email client in the world). The plugin is currently available for Outlook 2003 and Outlook 2007 and they are planning on releasing Xobni in other email clients and platforms. This is a great idea for Xobni to create an application/plugin to make Outlook users&amp;#8217; life a little easier. Think of the time that one can save by using this plugin. This will allow the users to be more productive and have easier time managing information in their emails.&lt;/p&gt;                                          &lt;p&gt;&lt;center&gt;Thanks for subscribing to &amp;copy;  http://www.orangeinks.com - visit the author for more great content.&lt;/center&gt;&lt;/p&gt;     &lt;br /&gt; &lt;br /&gt;             &lt;h3&gt;Related Reading&lt;/h3&gt;&lt;ul class="related_post"&gt;&lt;li&gt;Backup to Email: Useful Backup Tool for your Files (0)&lt;/li&gt;&lt;li&gt;Help Find Cure for Diseases by Playing Foldit (0)&lt;/li&gt;&lt;li&gt;Spot what your Favorite Celebrities are Into (2)&lt;/li&gt;&lt;li&gt;Type Mathematical Formulas with Ease Using LyX (0)&lt;/li&gt;&lt;li&gt;Use Multiple Online Language Translators with Translate.Net (3)&lt;/li&gt;&lt;/ul&gt;</content><link rel='alternate' type='text/html' href='http://health.bg58.com/2008/06/xobni-email-organizer-for-outlook-users.html' title='Xobni: Email Organizer for Outlook Users'/><link rel='replies' type='application/atom+xml' href='http://health.bg58.com/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/211358570800654297'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/211358570800654297'/><author><name>baby</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-5048836253961581336.post-1308504339976643854</id><published>2008-06-01T04:13:00.000-07:00</published><updated>2008-06-01T04:43:50.436-07:00</updated><title type='text'>Create Your Own Video Sharing Site with StartYourTube</title><content type='html'>&lt;p&gt;Want to know what it feels like to have your own YouTube? StartYourTube is the Ning of video sharing sites. It lets you easily create your own video site without hassles. There is no installation needed, no servers and other technical stuff. It&amp;#8217;s just like creating a blog in Blogspot. Actually the procedure is very similar to creating a Blogspot account where you create an account, customize your site (upload logos, change theme colors etc), use your own domain name and advertise (where they keep 40 percent of the revenues for the free account).&lt;/p&gt; &lt;p style="text-align: center;"&gt;&lt;/p&gt; &lt;p&gt;Being a video sharing site, StartYourTube lets you have your own members where they sign up and share their tubes in your created tube site. The service is free but will only allow you to have 10 thousand page views per month and upload a maximum of 200 videos which should not exceed 2 GB of storage space. You also get to have a &amp;#8220;Powered by StartYourTube&amp;#8221; mention in your pages and you cannot disable advertisements. This is not a bad deal considering that you are paying them nothing but it is not enough to survive a Digg effect if ever one of your videos gets dugg. However, a paid account will let you get a bigger storage space and bandwidth, remove the StartYourTube mention, run your own ads and keep all the profit.&lt;/p&gt; &lt;p&gt;The trick is to start free play around with a niched video site and eventually upgrade your account if your site becomes popular. This is another interesting service and a potentially useful one (if they can offer larger bandwidths and storage) for people who wants to start a niched tube site.&lt;/p&gt;                                          &lt;p&gt;&lt;center&gt;Thanks for subscribing to &amp;copy;  http://www.orangeinks.com - visit the author for more great content.&lt;/center&gt;&lt;/p&gt;     &lt;br /&gt; &lt;br /&gt;             &lt;h3&gt;Related Reading&lt;/h3&gt;&lt;ul class="related_post"&gt;&lt;li&gt;Flickr Launches Video Service for Pro Users (2)&lt;/li&gt;&lt;li&gt;Photoshop 3D Layers Tutorial (2)&lt;/li&gt;&lt;li&gt;Photoshop Patch Tools and Levels Tutorial (0)&lt;/li&gt;&lt;li&gt;Create a Flash-Based Website Online Using Wix (2)&lt;/li&gt;&lt;li&gt;Fix a Website using GreaseMonkey and Firebug (0)&lt;/li&gt;&lt;/ul&gt;</content><link rel='alternate' type='text/html' href='http://health.bg58.com/2008/06/create-your-own-video-sharing-site-with.html' title='Create Your Own Video Sharing Site with StartYourTube'/><link rel='replies' type='application/atom+xml' href='http://health.bg58.com/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/1308504339976643854'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/1308504339976643854'/><author><name>baby</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-5048836253961581336.post-6453208847705757869</id><published>2008-06-01T04:12:00.000-07:00</published><updated>2008-06-01T04:42:55.055-07:00</updated><title type='text'>Mento: A Fresh New Bookmarking Service</title><content type='html'>&lt;p&gt;There are lots of link sharing sites out there but Mento thinks that it could be better and simpler for users. Mento provides a lightweight, non-intrusive solution for easy bookmarking, sharing and tagging.&lt;/p&gt; &lt;p&gt;To use Mento, just register and download the Firefox or Internet Explorer extensions, or use their bookmarklet which works on all browsers. When you click the bookmarklet or Mento button, a small popup window will appear asking which Mento service you would like to use. The send feature will allow you to send the links (along with images and comments) to your Mento friends, groups, tags or email buddies. The save feature will generally save the link to your mento profile allowing you to place tags, images and notes along with the link. The reply feature will allow you to comment on the link(s) provided that it has already been saved by somebody in your network. This will also keep track of the linking activities of your Mento friends whether they have previously saved a particular link which will prevent duplicate link sharing in your network. The site also keeps track on how many times a link you&amp;#8217;ve shared has been clicked, and which members have clicked it.&lt;/p&gt; &lt;p style="text-align: center;"&gt;&lt;/p&gt; &lt;p&gt;Mento also offers outside link sharing by allowing you to publish links to del.icio.us, FriendFeed, Magnolia, Tumblr, and Twitter. They also have a Facebook app that allows friends to view and comment on your links without having to install the application themselves. You can also use the AddThis widget to publish your links on other bookmarking sites. Talk about not being selfish.&lt;/p&gt; &lt;p style="text-align: center;"&gt;&lt;/p&gt; &lt;p&gt;Mento is another addition to the numerous social bookmarking services in the internet. The site is fresh looking and packed with sharing features which are also user friendly. If you are in the market for an alternative bookmarking service, Mento is definitely worth checking out.&lt;/p&gt;                                          &lt;p&gt;&lt;center&gt;Thanks for subscribing to &amp;copy;  http://www.orangeinks.com - visit the author for more great content.&lt;/center&gt;&lt;/p&gt;     &lt;br /&gt; &lt;br /&gt;             &lt;h3&gt;Related Reading&lt;/h3&gt;&lt;ul class="related_post"&gt;&lt;li&gt;Fix a Website using GreaseMonkey and Firebug (0)&lt;/li&gt;&lt;li&gt;Iminta What?  (4)&lt;/li&gt;&lt;li&gt;Test Websites on Differrent Browsers and Operating Systems using CrossBrowserTesting (3)&lt;/li&gt;&lt;li&gt;Get Blogging Suggestions for your Content Using Zemanta (2)&lt;/li&gt;&lt;li&gt;Get Instant Phone Text Answers for your Questions with Mosio (1)&lt;/li&gt;&lt;/ul&gt;</content><link rel='alternate' type='text/html' href='http://health.bg58.com/2008/06/mento-fresh-new-bookmarking-service.html' title='Mento: A Fresh New Bookmarking Service'/><link rel='replies' type='application/atom+xml' href='http://health.bg58.com/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/6453208847705757869'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/6453208847705757869'/><author><name>baby</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-5048836253961581336.post-4414380554702786526</id><published>2008-06-01T03:44:00.001-07:00</published><updated>2008-06-01T03:44:11.806-07:00</updated><title type='text'>Yard sale web site portal - Website Design Freelance Job</title><content type='html'>The site will be a portal site for adding yard sales and helping people market such sales.... here is the basics you may contact me for any clarifications here, it will involve some simple database programming as well---let me stress this ...WE ARE LOOKING FOR A COMPLETE TURN KEY JOB HERE...thanks  below is the copy and paste of the word doc...I will attach it as well for easier reading...  Daily Yard Sales   The site needs to have the following functions:  1) Homepage.   a. User Login In i. Must provide a "create user area" –they can either create themselves as a "Shopper" or "Seller" 1. Once created the USER DATA BASE information will be created—this will define the following: a. Type of User ("Shopper" or "Seller") b. Name &amp; Mailing Address &amp; Email Address c. If seller: i. Location of Sale ii. Estimate on number of sales per year they have d. If shopper: i. Number of sales attended per year  ii. Category of Shopping 1. Clothing  2. Books 3. Childrens Toys 4. Baby Toys 5. Video Games 6. Electronics 7. OTHER CATS b. Interactive Google Map i. Google map must show by CITY &amp; STATE(picked by drop down) with pin points of all available sales in that area 1. A "FEATURED" mouse over for ad sites so that when their pin is moused over there is an additional "Featured picture" for the sale 2. Get directions drop down to use map to coordinate a "route" between users address and other sales ii.   c. Featured Sales i. When the "Shopper Picks" their state, the FOUR FEATURED below the MAP on the home page will become active for that CITY &amp; STATE  (this will have to be programmed in such a way for users who come directly to the site via the "city.dailyyardsells.com" to be able to navigate directly to the page for the appropriate city  ii. The featured sales will be distinguished by a star or icon on the map  iii. Featured sales will have a Clickable page that will link to the interiorior pages…  2) Interior Pages  1. Silver ($7.99 per listing per week)  a. One Featured Item with downloadable picture (that user can implement) and a text box to explain the item b. 5 Featured Items (Bulleted TEXT template) c. a 500 character box to list additional information  2. Gold  (13.99 per listing per week) a. Three (3) Featured Listings with accompanying text boxes for the user to control and implement  b. 10 Featured Items (Bulleted text area) c. A 1000 character text box  d. Featured Map Button which links to a Google map and show the address of the sale  3. Platinum ($16.99 per week) a. Ten  (10) Featured Listings with accompanying text boxes b. 20 Featured Items (Bulleted text area) c. A 5000 character text box d. Featured Map Button which links to Google to show the address of the sale e. An email account with will forward to their normal email –without putting that email in the "public domain" (all you will have to program here is a contact page for the platinum sign ups that will notify our email admin to set them up a "  4. 4.  Platinum  Plus ($24.99 per week) a. Twenty  (20) Featured Listings with accompanying text boxes b. 20 Featured Items (Bulleted text area) c. A 5000 character text box d. Featured Map Button which links to Google to show the address of the sale e. An email account with will forward to their normal email –without putting that email in the "public domain" (all you will have to program here is a contact page for the platinum sign ups that will notify our email admin to set them up a " f. Online "store" with up to twenty listings to get paid via pay pal link for items g. Auto emails to our data base when an item is updated in your featured listings area to "shoppers" who have expressed an interest in this type product  3) Additional Feature a. Newsletter sign up on Homepage b. Add page that will link to our Godaddy store with will allow for ad selection and payment  c. Contact page</content><link rel='alternate' type='text/html' href='http://health.bg58.com/2008/06/yard-sale-web-site-portal-website.html' title='Yard sale web site portal - Website Design Freelance Job'/><link rel='replies' type='application/atom+xml' href='http://health.bg58.com/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/4414380554702786526'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/4414380554702786526'/><author><name>baby</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-5048836253961581336.post-6230429321373723732</id><published>2008-06-01T03:02:00.001-07:00</published><updated>2008-06-01T03:02:24.974-07:00</updated><title type='text'>Excel sheet - Data Entry Freelance Job</title><content type='html'>Here is a project of data entry in excel sheet. delivery in 3 days. Please send the total fees.   Objective:  1.Creating/Setting formula to all required fields.  2.Creating combo box ( Scroll)  3.Generating 02 kind of reports one is numeric and the other is graphs.  â€¢In case there is source code or worksheet pass word, then you have to advise it to me  before release final payment.   Introduction:  All required action to be done by you  has explained by inserted comment on every field of Excel file attached.   I have created an Excel file with one field each of 38columns in sheet 0ne and one field each of 37 columns in sheet 03.  Sheet 01 contained A to T field of daily data entry for each record starting with date.  Sheet 02 contained list of companyâ€™s names and companyâ€™s number.  All company names alphabetical (Tickers) has number also for example: company name is RIBL and the same companyâ€™s number is 1010.   You will notice that the default direction has set on Right â€" to â€" Left due to that all English text in all fields will be replaced to Arabic language after finished creating the objective therefore Do not escrow the Excel worksheet.  The language change will be done by service buyer.   To avoid writing name each time and some time with errors I want to be scrolling combo box of name and tickers number, that once I start name with S for example all tickerâ€™s name starting with Saudi Hollandi, Saudi Fransi, Sabic etc, will be listed. And so on with other letters. Also by number if I start with 1 then all 1010, 1020, 1030 etc.  Next, once I selected either one by number or by alphabetic, then both fields will paste name &amp; the related number.   Box date will appear once the curser reached to date field, infect, I have created already box date but half of the box is hided which need to be fix.   In each day I will add/use around 2 to 5 rows with new date and it will continue going on regardless when will stop probably for next several years, therefore please make sure that the setting formulas are valid for all rows in this book/file.   From this work sheet I want to generate 03reports, 02 are numeric and the other has Excel chart.  In some field I have use Cell instead of field but both are the same meaning.   Reports:  1-Transfer selected data from sheet 01 to reports.  â€¢Closed record reports:  Select date from &amp; to then search all closed record and loaded  template report.  â€¢What to do tomorrow:  Select date of record from 01Feb 2008 to 01Feb 2008 for one day  which I have created in sheet 01 or from 01 Feb 2008 to 02 Feb 2008  for more than 01 day and transfer to report template   2- Indexes Charts Reports of (Date)  â€¢Transfer selected data of Passed, Remaining &amp; balance fields  representing each index individually of 09 Indexes from sheet 03 to  sheet 1 and translate the same to Excel graphs with loading to report  template.  â€¢This job to be done within 3 day.       More explanations: 1-Please select  Name along with ticker number directly and loaded to the table and create combo scroll box. 2-All text in table, it mean's table heading in sheet one plus three, non numeric fields like F5 for example in sheet one. Consequently all reports which generated from the Arabic text on sheet one will load to Arabic text also. 3-Correction in sheet one, In field B13 click comment, please delete row 8 and put B7 instead /replacement of row 8..</content><link rel='alternate' type='text/html' href='http://health.bg58.com/2008/06/excel-sheet-data-entry-freelance-job.html' title='Excel sheet - Data Entry Freelance Job'/><link rel='replies' type='application/atom+xml' href='http://health.bg58.com/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/6230429321373723732'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/6230429321373723732'/><author><name>baby</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-5048836253961581336.post-6495688929017092449</id><published>2008-05-14T12:11:00.005-07:00</published><updated>2008-05-14T12:11:50.158-07:00</updated><title type='text'>Laser Removal Equipment Website (B2B) - I need content - Web Content Writing Freelance Job</title><content type='html'>Hello,  My plan is to open a Business to Business Laser Hair Removal equipment/Tattoo Removal machine website that also offers many skin products and a full-turn key solution for customers who want to open and operate thier own laser hair removal salon or business.  We are selling the machines and equipment but also sell skin products as well.  I need a full outline on what laser hair removal is, the emergence of med-spas, the overall technology on how it works, and I need a full outline of what Laser Hair Removal is, what the difference is between different types of Lasers...the full package.  Example...... What is the process?  -- "Imagine having no hair -- not having to shave anymore....this is all possible thanks to the new technology of Laser Hair Removal.  Your customers will have the ultimate experience etc...."  What is Tattoo Removal? What is Skin Rejuvanation? What is a Photofacial? What is the difference between a Yag Laser and an IPL laser? How does an IPL work? (the whole process)  I need some research about what this system and technology is all about and I need it explained for customers on my web site.  I am looking also to sell creams and lotions so I would need some articles explaining different skin conditions and how they can be avoided and treated by using certain materials or creams.   We plan on selling the equipment and also the full turn-key solution to set up a customer with a full salon plan.  I am looking for at least 7-10 artices  What is ? PERMANENT HAIR REMOVAL - SKIN REJUVENATION  - SCARS REMOVAL - ROSACEA - ACNE - ANGIOMA - ERYTHROSIS  - PSORIASIS - VITILIGO - DERMATITIS - KELOIDS - PIGMENTATION  - STRETCH MARKS - WRINKLE REDUCTION -</content><link rel='alternate' type='text/html' href='http://health.bg58.com/2008/05/laser-removal-equipment-website-b2b-i.html' title='Laser Removal Equipment Website (B2B) - I need content - Web Content Writing Freelance Job'/><link rel='replies' type='application/atom+xml' href='http://health.bg58.com/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/6495688929017092449'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/6495688929017092449'/><author><name>baby</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-5048836253961581336.post-6508565054059530394</id><published>2008-05-14T12:11:00.003-07:00</published><updated>2008-05-14T12:11:30.361-07:00</updated><title type='text'>Have Punch Lines, Need Your Drawings - Cartoon Illustration Freelance Job</title><content type='html'>Greetings and thanks for reading this request. I have imagination and wit (but seem to be lacking in modesty) and seek to marry my ideas for cartoons (including captions) with your drawing expertise. My preference for cartoons is generally the simple type with fewer drawing lines that are often found in popular magazines.   My vision is for us to both invest the time and the effort to submit hundreds of cartoons to various publications over a period of months in hopes of seeing a number of them published. I know nothing about this business (that ought to make you feel pretty good) but I would hope that through our good work we could earn contracts with publications, or at a minimum, be regular contributors.   I would estimate that I could submit at least 7 ideas per week, but if it turned out to be as much fun as I think it might be, and you are up to it, perhaps we could put out many more than that.    You could pretty much live anywhere, and we would use e-mail to communiate with one another. Should we make any money, which is certainly a goal, I would envision us splitting it equally. Only your name need appear on the work, though if you want to give me a little credit when you are interviewed by Larry King that would be okay too. My preference is for you to manage the business of submitting and tracking, and if you'll do that perhaps you could take 55%.  We could split the costs of postage, envelopes, paper, etc. We would not have to establish a business per se, but rather we could be pooling our work as 2 independent contractors without any long term commitment to one another unless of course we put our names on the line at some future date for some kind of commitment we both agree to. As needed I can provide you with numerous business and character references; I believe in fair and honest dealings. And, you should know that the only work I am interested in teaming with you is okay for all ages.    So, if you're saying to yourself "wow, what an opportunity, to team with a guy who I have never heard of, who admits he has no experience, who is not willing to pay me anything out of pocket for my time...I',m sure glad I read this one", then maybe we're a match. Will you please send me some sample drawings and advise me of any questions or comments that you might have.   I am most appreciative of your time and consideration.   With Regards,   Doug Fowler</content><link rel='alternate' type='text/html' href='http://health.bg58.com/2008/05/have-punch-lines-need-your-drawings.html' title='Have Punch Lines, Need Your Drawings - Cartoon Illustration Freelance Job'/><link rel='replies' type='application/atom+xml' href='http://health.bg58.com/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/6508565054059530394'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/6508565054059530394'/><author><name>baby</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-5048836253961581336.post-6455784580581637377</id><published>2008-05-14T12:11:00.001-07:00</published><updated>2008-05-14T12:11:27.651-07:00</updated><title type='text'>Vtiger Signup script - Vtiger / PHP / MySQL / LAMP / DNS / BIND / APACHE - Website Programming Freelance Job</title><content type='html'>Vtiger / PHP / MySQL / LAMP / DNS / BIND / APACHE / CRON  PART 1: Vtiger signup automation script.  The purpose of the script is to automate new account creation for a free hosted Vtiger service. A new user should be able to create a new Vtiger instance and installation for a company form his browser by entering:  Page 1: Username Password - Strong (Ajax)? Pasword confirmation Empresa or autónomo? (radio button)  Page 2: Based on radiobutton:  - Case Empresa:  Company name Commercial name Company CIF Contact Name Contact Surnames (2): Contact Phone Contact Mobile phone Contact Email  -  Valid (Ajax)? Are you human?   - Case autónomo: Name  Surnames (2) User NIF Commercial name Contact Phone Contact Mobile phone Contact Email  -  Valid (Ajax)? Are you human?  Page 3: Account creation successful? Not: Derivate to support window Yes: Welcome and service agreement/contract  When the user clicks on the confirmation link:   - A new folder is created in apache server and the vtiger files are copied into it.  - A new customer is created in our own vtiguer  - A new virtual host is created in apache server using the suggested URL.  - Vtiger is configured and ready to use (no manual installation required)  - An admin account is created with the username, password and email provided.  Bizboost is our own domain where the service will be hosted.  Option A: apache Virtual hosts: URL: companyname.bizboost.es  -  Available? - An email is sent to customer with a confirmation link.  Option B: Subdirectory structure: URL: crm.bizboost.es/companyname  -  Available? - An email is sent to customer with a confirmation link.  Option C: Own Domain: URL: crm.companydomain.tld  In option C, the domain is an existing one and is owned by the company signing up for our service.   - Welcome email with username, password, contact info and access URL.  PART 2: Vtiger interstitial and internal advertising:  Objective is to ad advertising on login page and inside Vtiger, just over the actual Vtiger interface or even better just above main horizontal menu. No frames can be used because of advertisement networks not accepting it so it must be embedded in actual vtiguer´s pages  a) Incorporate to the login page Full size (800 x 600) advertising (interstitial, obtrusive) not allowing the user to login for some seconds. After 8 seconds the login form shows (or fades) up so the user is able to login.  b) Full size "screen saver" page overlay with an ad, (same way as login). After some time of inactivity on any page of the Vtiger app, a screen saver shows, with a full size ad and the login form. It is very important that the user never looses actual work in progress or data already introduced in any Vtiger form, so make screensaver run in a layer over actual CRM page.  c) Integrate 1 Leaderboard (728 x 90 pixel) "banner spot" inside Vtiger. - Top position.  d) Integrate 1 Large Rectangle (336 x 280 pixel) "banner spot" inside Vtiger - Middle position. (only for main page)  d) ) Integrate 1 Wide Skyscraper (160 x 600 pixel)  "banner spot" inside Vtiger  - Right position.  All positions will have support for static media, rich media, video, rich media/video and Google ad sense.  Banners on/off on a per installation basis.  There is an Open Source ad server in our web server, you can download it and play to see if the ads fit right and don't distort the user interface. Download at: http://www.openx.org/    PART 3: Vtiger internal tabs/buttons:   Personalization of vtiger internal labels: Objective is to have some new tabs in the standard Vtiger interface bar to inform users about existing external services.  Destination pages are shown inside Vtiger and need no special design. Just let CSS flow?  1) Add E-learning button. With a link to a static "about: e-learning" page with a text and a link to actual E-learning app.  3) Add shop button. With a link to a static "about: shop" page with a text and a link to actual ecommerce site.  4) Add support button. With a link to the support page witch will lists contacts and support options.  5) Add 2 new rows to the vtiger´s company profile.  6) Add 2 new rows to the Invoice.  7) Account cancellation link in the vtiger admin section. (rename directory?)  Payment options:  a) 100% escrow. or b)  50% when showing working aplication on your server + 50% after 3 days testing in our servers.</content><link rel='alternate' type='text/html' href='http://health.bg58.com/2008/05/vtiger-signup-script-vtiger-php-mysql.html' title='Vtiger Signup script - Vtiger / PHP / MySQL / LAMP / DNS / BIND / APACHE - Website Programming Freelance Job'/><link rel='replies' type='application/atom+xml' href='http://health.bg58.com/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/6455784580581637377'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/6455784580581637377'/><author><name>baby</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-5048836253961581336.post-3838662240619177959</id><published>2008-05-08T07:42:00.001-07:00</published><updated>2008-05-08T07:42:35.897-07:00</updated><title type='text'>Updated VSTS VPC Available</title><content type='html'>&lt;p&gt;Brian Randell has just given the official word that there is a new VSTS/TFS 2008 VPC available:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;It's no April's Fool day joke.&lt;/em&gt;  &lt;p&gt;&lt;em&gt;A new &lt;/em&gt;&lt;em&gt;all-up image &lt;/em&gt;&lt;em&gt;has been posted. It's been updated with Office SP1, the December 2007 TFS Power Tools, and all Windows Updates.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Also available with it are some labs to help you look at the various aspects of Team System.&amp;nbsp; And, for that final bit of good news, it won't expire until December 31st, 2008.  &lt;p&gt;Don't forget, you can use Free Download Manager to help you queue up and download all the different ZIP files.  </content><link rel='alternate' type='text/html' href='http://health.bg58.com/2008/05/updated-vsts-vpc-available.html' title='Updated VSTS VPC Available'/><link rel='replies' type='application/atom+xml' href='http://health.bg58.com/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/3838662240619177959'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/3838662240619177959'/><author><name>baby</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-5048836253961581336.post-4907284085823162127</id><published>2008-05-08T06:18:00.001-07:00</published><updated>2008-05-08T06:18:42.235-07:00</updated><title type='text'>DirectX MVP 2008</title><content type='html'>&lt;p&gt;This would not have been possible if it wasn&amp;#39;t for the people in the community.&lt;/p&gt;&lt;p&gt;Thank you to everyone, SADeveloper.NET, Gamedev.net and the XNA community over at http://creators.xna.com/. These are the communities that have made this possible! Thank you!&lt;/p&gt;&lt;p&gt;If you would like me to come and present a session on XNA or Game Development concepts, please don&amp;#39;t hesitate to contact me!&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Thank you once again to everyone!&amp;nbsp;&lt;/p&gt; Share this post: email it! |  bookmark it! |  digg it! |  reddit! |  kick it! |  live it!</content><link rel='alternate' type='text/html' href='http://health.bg58.com/2008/05/directx-mvp-2008.html' title='DirectX MVP 2008'/><link rel='replies' type='application/atom+xml' href='http://health.bg58.com/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/4907284085823162127'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/4907284085823162127'/><author><name>baby</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-5048836253961581336.post-3968590057149704306</id><published>2008-05-08T06:01:00.000-07:00</published><updated>2008-05-08T06:02:01.734-07:00</updated><title type='text'>Visual Studio Team Suite vNext "Rosario Express" will be FREE</title><content type='html'>&lt;p&gt; Auf der MIX-Konferenz in Las Vegas hatte ich die Gelegenheit für eine exklusive Vorstellung im Akquaknox-Restaurant [1] im The Venetian Hotel. Zusammen mit anderen Microsoft Regional Directors und dem neuen Vice President Scott Guthrie durfte ich einen ersten Blick auf die letzten Bits des Visual Studio 2008 Codename "Rosario" werfen. Es handelte es sich hierbei aber nicht um die öffentlich verfügbare CTP-Version [2], sondern um die neue Visual Studio Team System "&lt;em&gt;Rosario Express&lt;/em&gt;" Version, die vollständig kostenfrei sein wird.  &lt;/p&gt; &lt;p&gt; Die VSTS Express Edition ist auf ein Team von 5 Personen beschränkt und kann nur mit dem TFS Workgroup Edition an einem Standort betrieben werden. Einzige Beschränkung sind maximal 10.000 Work Items pro Solution, mehr werden aber die meisten Projekte onehin nicht brauchen. Die Entscheidung finde ich sehr spannend, insbesondere da die meisten kleinen Teams die Team System Funktionalität sehr wohl benötigen und gut gebrauchen können. Diese Entscheidung wird definitiv zur Verbreitung von Team System beitragen.  &lt;/p&gt; &lt;p&gt; Eine öffentliche CTP wird voraussichtlich Ende April verfügbar sein. Vielleicht klappt es noch rechtzeiig zur TeamConf. Aber, wie immer mit den Releases, erstmal abwarten. &lt;/p&gt; &lt;p&gt; [1] http://www.venetian.com/AQUAKNOX.aspx &lt;br&gt; [2] http://www.microsoft.com/downloads/details.aspx?familyid=8450eff5-24ad-44c3-ab91-1ed88ef2f4f0&amp;amp;displaylang=en &lt;/p&gt; </content><link rel='alternate' type='text/html' href='http://health.bg58.com/2008/05/visual-studio-team-suite-vnext-rosario.html' title='Visual Studio Team Suite vNext &quot;Rosario Express&quot; will be FREE'/><link rel='replies' type='application/atom+xml' href='http://health.bg58.com/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/3968590057149704306'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/3968590057149704306'/><author><name>baby</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-5048836253961581336.post-6440309449867411362</id><published>2008-05-08T04:20:00.000-07:00</published><updated>2008-05-08T04:51:11.562-07:00</updated><title type='text'>Setting up authentication in asp.net MVC</title><content type='html'>&lt;p&gt;I wanted to setup user authentication in asp.net MVC, and I wanted it to tie in with the built-in IIdentity and IPrincipal support that is already in asp.net, but I did not want to have to setup asp.net membership services. I wanted to have my own user objects, and I wanted to save/retrieve them through my user repository just like my other domain objects. All of this was done for a demo, so it is certainly not production quality code, but I hope it helps you.&lt;/p&gt; &lt;p&gt;First off I setup my User table in my database, it looks like this:&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;This is obviously just a start, but it is enough to get the job going. I have dragged this database table onto the Linq To Sql designer and it created my User object like so:&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;Next in my UserRepository class I have a method that looks like this:&lt;/p&gt; &lt;pre style="margin: 0px"&gt;public User GetUserByUsername(string username)&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;{&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RecipeZoneDataContext context = ContextFactory.GetRecipeZoneContext();&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (from u in context.Users where u.UserName == username select u).SingleOrDefault();&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;}&lt;/pre&gt; &lt;p&gt;This way when someone tries to login, I can pass their username into this method and it tries to look that user up. You will notice that we use a "SingleOrDefault" method in order to return a single user or "null" in case there is no user by that name. Next I have created a method on my UserController named "Login" that looks like this:&lt;/p&gt; &lt;pre style="margin: 0px"&gt;public void Login()&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;{&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _viewData.Redirect = Request.QueryString["redirect"];&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RenderView("Login", _viewData);&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;}&lt;/pre&gt; &lt;p&gt;Here we are looking for a query string parameter named "redirect" that is going to contain a url that we will redirect to upon successful login. We assign this to our UserControllerViewData class and then pass that to RenderView. The UserControllerViewData is just a class that I use to hold view data for most of the actions on my UserController class.&lt;/p&gt; &lt;p&gt;My Login view is then rendered:&lt;/p&gt; &lt;pre style="margin: 0px"&gt;&amp;lt;asp:Content ID="Content1" ContentPlaceHolderID="MainContentPlaceHolder" runat="server"&amp;gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;%= Html.RenderUserControl("~/Views/Shared/ErrorMessages.ascx") %&amp;gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;%using (Html.Form&amp;lt;UserController&amp;gt;(c =&amp;gt; c.LoginValidate(RedirectUrl)))&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { %&amp;gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;table&amp;gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Username:&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/td&amp;gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;%=Html.TextBox("User.UserName")%&amp;gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/td&amp;gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Password:&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/td&amp;gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;%=Html.Password("User.Password")%&amp;gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/td&amp;gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/td&amp;gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;%=Html.SubmitButton("login", "Login")%&amp;gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/td&amp;gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/table&amp;gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;% } %&amp;gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;lt;/asp:Content&amp;gt;&lt;/pre&gt; &lt;p&gt;Here we are using a few of our Html helper methods. We use the Html.Form helper method in order to create our html form as well as to render our url that the form will post back to. I am using the overload that takes an Expression and then renders the url based on the controller type and method that you call on it in the expression. You can see that we are posting back to a different action called "LoginValidate" and we are passing the "RedirectUrl" as a parameter to it.&lt;/p&gt; &lt;p&gt;The LoginValidate controller action looks like this:&lt;/p&gt; &lt;pre style="margin: 0px"&gt;public void LoginValidate(string redirect)&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;{&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (Models.User.ValidateUser(Request.Form["User.UserName"], Request.Form["User.Password"]))&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!String.IsNullOrEmpty(redirect) || String.Compare(redirect, "none", true) == 0)&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Response.Redirect(redirect, true);&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RedirectToAction("", "");&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _viewData.ErrorMessages.Add("Invalid username or password.");&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RenderView("Login", _viewData);&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;}&lt;/pre&gt; &lt;p&gt;First we pass our UserName and Password to our User.ValidateUser method. If the user is validated then we check for a redirect and if one exists then we redirect. Otherwise we redirect to a default controller and action. Here we have entered no defaults, you would want to fill them in. If we don't succeed then we add an error message to the view data and redirect back to our Login action. There is a bit of data we have to put into the web.config first though:&lt;/p&gt; &lt;pre style="margin: 0px"&gt;&amp;lt;authentication mode="Forms"&amp;gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp; &amp;lt;forms name=".APPNAME" protection="All" cookieless="UseCookies" /&amp;gt;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;lt;/authentication &amp;gt;&lt;/pre&gt; &lt;p&gt;This just sets up our application to use forms authentication, and then sets a few parameters on it. After we have this setup we can now call the ValidateUser method. The ValidateUser method looks like this:&lt;/p&gt; &lt;pre style="margin: 0px"&gt;public static bool ValidateUser(string username, string password)&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;{&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var userRepository = new UserRepository();&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; User user = userRepository.GetUserByUsername(username);&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (user == null)&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (String.Compare(user.Password, password, false) == 0)&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var authTicket = new FormsAuthenticationTicket(1, username, DateTime.Now,&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DateTime.Now.AddMinutes(30), true, "");&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string cookieContents = FormsAuthentication.Encrypt(authTicket);&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, cookieContents)&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Expires = authTicket.Expiration,&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Path = FormsAuthentication.FormsCookiePath&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (HttpContext.Current != null)&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HttpContext.Current.Response.Cookies.Add(cookie);&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;}&lt;/pre&gt; &lt;p&gt;We pull the user and if it doesn't exist then we immediately return. Then we compare passwords (yes, there is no encryption at this point, like I said, demo) and if they match then we create our authentication ticket. This is part of the forms authentication system and it lets us specify which user is currently logged in. We create a cookie with our data and write it out, then return true. Pretty simple! This saves our username that is logged in, but what about our roles? We need to be able to tell if someone is a normal user or an administrator. In order to do this we have to implement the Application_AuthenticateRequest method in the global.asax file.&lt;/p&gt; &lt;pre style="margin: 0px"&gt;protected void Application_AuthenticateRequest(Object sender, EventArgs e)&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (authCookie != null)&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var identity = new GenericIdentity(authTicket.Name, "Forms");&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var principal = new CustomPrincipal(identity);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Context.User = principal;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;}&lt;/pre&gt; &lt;p&gt;Here you see how we are pulling the authentication ticket out of the cookie (if it exists) and we are creating a GenericIdentity object (this is because we don't need any additional functionality for our IIdentity class) and then we create an instance of our CustomPrincipal class which is just a class we have created which implements IPrincipal. This interface has the methods for checking roles. In this application I have just put in some simple code to test for roles since I wanted to keep it simple. This class looks like this:&lt;/p&gt; &lt;pre style="margin: 0px"&gt;public class CustomPrincipal : IPrincipal&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public CustomPrincipal(IIdentity identity)&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Identity = identity;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public bool IsInRole(string role)&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (String.Compare(role, "admin", true) == 0)&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (Identity.Name == "JustinEtheredge");&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public IIdentity Identity&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get; private set;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;}&lt;/pre&gt; &lt;p&gt;As you can see we just check for one role, "admin", and I hardcoded it against my username. I could obviously create a table to manage this, but I have not done so. So, now that we all of this setup, how are we going to use these roles? Well, we are going to create custom ActionFilterAttributes! Of course! I want to be able to protect my controller actions like this:&lt;/p&gt; &lt;pre style="margin: 0px"&gt;[UserInRole("Admin")]&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;public void List(int? page)&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;{&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _viewData.Users = _userRepository.GetUsers();&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RenderView("List", _viewData);&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;}&lt;/pre&gt; &lt;p&gt;This UserInRoleAttribute will now make sure that you are authenticated and that you are in the "admin" role before it will let you access this controller action. If you aren't authenticated then it will forward you to the login page with a redirect to send you back to where you came from. This attribute looks like this:&lt;/p&gt; &lt;pre style="margin: 0px"&gt;public class UserInRoleAttribute : ActionFilterAttribute&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;{&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private readonly string roleName;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public UserInRoleAttribute(string roleName)&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.roleName = roleName;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override void OnActionExecuting(FilterExecutingContext filterContext)&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (filterContext.HttpContext.User.IsInRole(roleName)) return;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //use reflection until they expose this method&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MethodInfo methodInfo = filterContext.Controller.GetType()&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .GetMethod("RedirectToAction",&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BindingFlags.ExactBinding |&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BindingFlags.NonPublic |&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BindingFlags.Instance, null,&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new[]&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; typeof (RouteValueDictionary)&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }, null);&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; methodInfo.Invoke(filterContext.Controller,&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new object[]&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new RouteValueDictionary(&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; controller = "User",&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; action = "Login",&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; redirect = filterContext.HttpContext.Request.Url.AbsolutePath&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; })&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;}&lt;/pre&gt; &lt;p&gt;This class is actually very simple. The constructor simply takes a roleName and saves it. When the action is called the OnActionExecuting method is called and we simply test the current user to see if they are in the saved role. Otherwise we use some reflection in order to call "RedirectToAction" on the controller class since it is private. Hopefully they will implement this method in the ActionFilterAttribute base class, or they will make it public on the Controller class. But for right now this is the easiest way I could find to call it.&lt;/p&gt; &lt;p&gt;So, what else do we need? Well, we need some way for a user to logout. For this I simply added a Logout action that looks like this:&lt;/p&gt; &lt;pre style="margin: 0px"&gt;public void Logout()&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;{&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FormsAuthentication.SignOut();&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RedirectToAction("List");&lt;/pre&gt;&lt;pre style="margin: 0px"&gt;}&lt;/pre&gt; &lt;p&gt;That is all. You just call SignOut and then redirect to whatever action you want. You could also add a redirect parameter here if you wanted, so you could return to whatever page you clicked "logout" on.&lt;/p&gt; &lt;p&gt;So, there you have it. I'm sure that there is something that I am forgetting, but this post is pretty long and I am tired. :) Please let me know if you see anything that I did wrong or could have done differently! I hope you enjoyed it!&lt;/p&gt; &lt;p&gt;&lt;/p&gt;    </content><link rel='alternate' type='text/html' href='http://health.bg58.com/2008/05/setting-up-authentication-in-aspnet-mvc.html' title='Setting up authentication in asp.net MVC'/><link rel='replies' type='application/atom+xml' href='http://health.bg58.com/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/6440309449867411362'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/6440309449867411362'/><author><name>baby</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-5048836253961581336.post-7689322934260914378</id><published>2008-05-08T00:04:00.001-07:00</published><updated>2008-05-08T00:04:43.184-07:00</updated><title type='text'>How To: Use the XmlDataSource object load XML data to a GridView</title><content type='html'>&lt;p&gt; Last week I showed you how to read an XML file, load it to a DataSet and assign those values into a GridView. Today I'll show you how you can read an XML file using the XmlDataSource object. &lt;/p&gt; &lt;p&gt; Let's assume that we have an XML file called Symbols.xml&amp;nbsp;in our App_Data folder &lt;/p&gt; &lt;p&gt;  &lt;/p&gt; &lt;p&gt; that contains the following data &lt;/p&gt; &lt;pre&gt;&amp;lt;?xml version="1.0" encoding="utf-8" ?&amp;gt; &amp;lt;Symbols&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Symbol ExecutionSymbol="ATT" Name="AT&amp;amp;amp;T"&amp;gt;&amp;lt;/Symbol&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Symbol ExecutionSymbol="MSFT" Name="Microsoft"&amp;gt;&amp;lt;/Symbol&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Symbol ExecutionSymbol="GOOG" Name="Google"&amp;gt;&amp;lt;/Symbol&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Symbol ExecutionSymbol="CSCO" Name="Cisco"&amp;gt;&amp;lt;/Symbol&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Symbol ExecutionSymbol="IP" Name="International Paper Co."&amp;gt;&amp;lt;/Symbol&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Symbol ExecutionSymbol="MF" Name="MF Global"&amp;gt;&amp;lt;/Symbol&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Symbol ExecutionSymbol="Q" Name="Qwest Communications International Inc."&amp;gt;&amp;lt;/Symbol&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Symbol ExecutionSymbol="BMC" Name="BMC Software Inc."&amp;gt;&amp;lt;/Symbol&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Symbol ExecutionSymbol="WCI" Name="WCI Communities Inc."&amp;gt;&amp;lt;/Symbol&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Symbol ExecutionSymbol="SPY" Name="SDRs"&amp;gt;&amp;lt;/Symbol&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Symbol ExecutionSymbol="LEH" Name="Lehman Brothers Holdings Inc."&amp;gt;&amp;lt;/Symbol&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Symbol ExecutionSymbol="XLF" Name="Financial Select Sector SPDR"&amp;gt;&amp;lt;/Symbol&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Symbol ExecutionSymbol="QQQQ" Name="PowerShares QQQ TR 1"&amp;gt;&amp;lt;/Symbol&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Symbol ExecutionSymbol="IWM" Name="IShare Rus 2000 INDX"&amp;gt;&amp;lt;/Symbol&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Symbol ExecutionSymbol="GE" Name="General Electric Co."&amp;gt;&amp;lt;/Symbol&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Symbol ExecutionSymbol="MER" Name="Merrill Lynch Co., Inc."&amp;gt;&amp;lt;/Symbol&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Symbol ExecutionSymbol="BAC" Name="Bank of America Corporation"&amp;gt;&amp;lt;/Symbol&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Symbol ExecutionSymbol="INTC" Name="Intel Corp"&amp;gt;&amp;lt;/Symbol&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Symbol ExecutionSymbol="F" Name="Ford Motor Co."&amp;gt;&amp;lt;/Symbol&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Symbol ExecutionSymbol="QID" Name="UltraShort QQQ ProShares"&amp;gt;&amp;lt;/Symbol&amp;gt; &amp;lt;/Symbols&amp;gt;&lt;/pre&gt; &lt;p&gt; and we want to load it to a GridView with no server-side code and a quick and easy way. The answer is to use the XmlDataSource object. The XmlDataSource control is an ASP.NET control that allows you to automatically read XML Data and make that data readily available to any ASP.NET control. &lt;/p&gt; &lt;p&gt; To start using this control, go to your Toolbox and drag the XmlDataSource control to your page. &lt;/p&gt; &lt;p&gt;  &lt;/p&gt; &lt;p&gt; Once the control is on the page it would popup a dialog that has configuration options for our XmlDataSource control. Click the "Configure Data Source" button to configure our XmlDataSource &lt;/p&gt; &lt;p&gt;  &lt;/p&gt; &lt;p&gt; A popup like below will come up that allows you to select the Xml file you want to your XmlDataSource object to read. It also gives you the option to select the XSL file. You can also specify an XPath expression to use to filter the data in our Xml. &lt;/p&gt; &lt;p&gt;  &lt;/p&gt; &lt;p&gt; Click the "Browse" button for the "Data File" option to select an XML file. &lt;/p&gt; &lt;p&gt; A new dialog will appear that will let you navigate the folder tree to select your desired XML file &lt;/p&gt; &lt;p&gt;  &lt;/p&gt; &lt;p&gt; Click "Ok" and you'll be taken back to the "Configure Data Source" screen. Click "Ok" again to finalize the XML data assignment. &lt;/p&gt; &lt;p&gt; Now that we have the file set in to our XmlDataSource control we need assign it to a control. We can do that by dragging a GridView control to our form. &lt;/p&gt; &lt;p&gt;  &lt;/p&gt; &lt;p&gt; Next, we need to assign the XmlDataSource control as the data source for our GridView. We can do this by selecting our XmlDataSource from the "Choose Data Source" dropdownlist. &lt;/p&gt; &lt;p&gt;  &lt;/p&gt; &lt;p&gt; Click "XmlDataSource1" and you will notice that our GridView was automatically updated and now shows the contents of our XML file. &lt;/p&gt; &lt;p&gt;  &lt;/p&gt; &lt;p&gt; Easy huh? Next up, Consuming Web Services in ASP.NET &lt;/p&gt; &lt;p&gt; &amp;nbsp; &lt;/p&gt; </content><link rel='alternate' type='text/html' href='http://health.bg58.com/2008/05/how-to-use-xmldatasource-object-load.html' title='How To: Use the XmlDataSource object load XML data to a GridView'/><link rel='replies' type='application/atom+xml' href='http://health.bg58.com/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/7689322934260914378'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/7689322934260914378'/><author><name>baby</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-5048836253961581336.post-6485864791130373449</id><published>2008-05-07T21:38:00.000-07:00</published><updated>2008-05-07T21:39:14.633-07:00</updated><title type='text'>FxCop Now Targeting Speeding</title><content type='html'>&lt;p&gt; Almost two months ago, at the February Adelaide Geek Dinner, I was expressing my frustration at one of my Visual Studio solutions taking too long to build and how I would like Visual Studio to build using multiple processors just like the new MSBuild /m parameter. &lt;/p&gt; &lt;p&gt; Paul Stovell made the comment that even with the improvement that multi-core builds was giving me, my solution really shouldn't be taking that long to build. Given that Paul wasn't familiar with my particular project layout and I naturally didn't have a copy with me, the conversation quickly went onto other topics. &lt;/p&gt; &lt;p&gt; However, Paul's comment stayed with me for days after, bugging me every time I waited for the latest build to complete. Then, while staring at the VS Output window during a build, I noticed that most of the time seemed to be spent running FxCop on each project. &lt;/p&gt; &lt;p&gt; I decided to rebuild the solution but this time disabling code analysis via the appropriate build switch. I watched the build time drop from 40 seconds to just 10 seconds by skipping the FxCop process. &lt;/p&gt; &lt;p&gt; Excellent! But given that our entire team runs with Option Strict On, Treat Warnings As Errors, and the Code Analysis Check-in Policy, how could I possibly revert to such a lax build process for the sake of decreased build time? &lt;/p&gt; &lt;p&gt; The answer is to disable Code Analysis in each project's settings (and unfortunately the check-in policy too) but leave it enabled in the Team Build script so it runs and gets reported via the continuous integration build that runs after each check-in. Luckily we've also been running with FxCop for so long that we tend to avoid writing code that would cause violations in the first place. &lt;/p&gt; &lt;p&gt; I met with Paul over the weekend and mentioned my success with better build times. When I told him I had been running FxCop with every build, he just laughed, amazed. &lt;/p&gt; </content><link rel='alternate' type='text/html' href='http://health.bg58.com/2008/05/fxcop-now-targeting-speeding.html' title='FxCop Now Targeting Speeding'/><link rel='replies' type='application/atom+xml' href='http://health.bg58.com/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/6485864791130373449'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/6485864791130373449'/><author><name>baby</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-5048836253961581336.post-7385525843622658778</id><published>2008-05-07T17:52:00.001-07:00</published><updated>2008-05-07T17:52:20.716-07:00</updated><title type='text'>Juggle.com</title><content type='html'>&lt;p&gt;Well, I can finally start releasing the name of our product / company / web site since 1 - we are officially expanding the team and hiring more people, 2 - the placeholder page is up at juggle.com, and 3 - the CEO accidentally updated her LinkedIn profile two weeks ago.  Oops.  But I can't tell you what we are building yet.&lt;/p&gt;  &lt;p&gt;Hey, here is a good way to find out.  Join the company!&lt;/p&gt;  &lt;p&gt;Hiring in St. Louis&lt;/p&gt;  &lt;p&gt;We are a small web development group looking to expand our team. Plain and simple, we are looking for great developers. We are focused on finding people who have a passion for development and are excited to be part of a team that is developing a leading semantic web application. There's no Ruby, Java or PHP here… Microsoft only.&lt;/p&gt;  &lt;p&gt;You will be working in a fast paced environment that deals with a lot of Web 2.0 (I really hate that term) technology.  We value team members who make the internet a part of their lives, not just a place they send their hard work for other people to use.  Here's a quick test.  Which search engine just threw in the towel?  What do Alex and Kevin sit on?  What's the point of Twitter?  What should manager Rob write himself?&lt;/p&gt;  &lt;p&gt;What to expect from our environment?  &lt;br /&gt;    &lt;br /&gt;We have one core rule:  Create great software.  There is no team of red tape police who have locked down your workstation and blocked 50% of the sites on the internet.  No crazy rules about reading blogs or blocking IM.  &lt;br /&gt;    &lt;br /&gt;Each Monday we start a new development iteration where you will commit to the amount of work you can get done for the week.  Thursday's are code reviews, so no sneaking in a DataSet to get the job done quick.  Friday's are iteration review meeting day where you will demo what you finished during the week.  And every morning is a quick standup meeting.    &lt;br /&gt;    &lt;br /&gt;Qualifications:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;You should know C# or VB.NET (but you will be using C#), ASP.NET 2.0 or higher and SQL Server 2005.&lt;/li&gt;    &lt;li&gt;It would be helpful if you also knew AJAX and how to write unit tests.&lt;/li&gt;    &lt;li&gt;It would be really great if you already knew CSLA or ComponentArt.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The Joel Test results: 11 out of 12.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Do you use source control? (YES)&lt;/li&gt;    &lt;li&gt;Can you make a build in one step? (YES)&lt;/li&gt;    &lt;li&gt;Do you make daily builds? (YES+)  We believe in continuous integration.  No breaking the build.&lt;/li&gt;    &lt;li&gt;Do you have a bug database? (YES)&lt;/li&gt;    &lt;li&gt;Do you fix bugs before writing new code? (YES)&lt;/li&gt;    &lt;li&gt;Do you have an up-to-date schedule? (YES)&lt;/li&gt;    &lt;li&gt;Do you have a spec? (YES)&lt;/li&gt;    &lt;li&gt;Do programmers have quiet working conditions? (NO) You will be working in an open area with 4 other developers.&lt;/li&gt;    &lt;li&gt;Do you use the best tools money can buy? (YES)&lt;/li&gt;    &lt;li&gt;Do you have testers? (YES)&lt;/li&gt;    &lt;li&gt;Do new candidates write code during their interview? (YES)&lt;/li&gt;    &lt;li&gt;Do you do hallway usability testing?  (YES)&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Still interested even after #11?  Then send me an e-mail using the contact form or scott.kuhl@juggle.com.&lt;/p&gt;  Technorati Tags: hiring,st. louis,asp.net,juggle.com&lt;p&gt;&lt;/p&gt; </content><link rel='alternate' type='text/html' href='http://health.bg58.com/2008/05/jugglecom.html' title='Juggle.com'/><link rel='replies' type='application/atom+xml' href='http://health.bg58.com/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/7385525843622658778'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/7385525843622658778'/><author><name>baby</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-5048836253961581336.post-1045427375131201719</id><published>2008-05-07T16:11:00.001-07:00</published><updated>2008-05-07T16:11:43.562-07:00</updated><title type='text'>Dynamic lookup</title><content type='html'>&lt;p&gt;A while back Charlie Calvert and Mads Torgersen wrote about dynamic lookup being part of the plans for C# 4.0. A code block specified with the &amp;quot;dynamic&amp;quot; key word will allow dynamic lookup with syntax like follows:&lt;/p&gt;  &lt;pre style="overflow: auto; width: 440px"&gt;static void Main(string[] args) {     dynamic     {         object myDynamicObject = GetDynamicObject();         myDynamicObject.SomeMethod();         // call a method            myDynamicObject.someString = &amp;quot;value&amp;quot;; // Set a field         myDynamicObject[0] = 25;              // Access an indexer     } }&lt;/pre&gt;  &lt;p&gt;While this is a welcome feature &lt;em&gt;I want it now! &lt;/em&gt;Of course I could resort to reflection but it gets tiresome writing all the code needed just to get a simple field or property so I made a little library that lets me write the previous example as follows:&lt;/p&gt;  &lt;pre style="overflow: auto; width: 440px"&gt;static void Main(string[] args) {     dynamic     {         object myDynamicObject = GetDynamicObject();         myDynamicObject.Member(&amp;quot;SomeMethod&amp;quot;).Call();			// call a method            myDynamicObject.Member(&amp;quot;someString&amp;quot;).Set(&amp;quot;value&amp;quot;).Call();	// Set a field         myDynamicObject.Member(&amp;quot;Item&amp;quot;)[0].Set(25).Call();		// Access an indexer     } }&lt;/pre&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;This also allows me to access private, protected or internal members of objects and on top of that it can compile functions for invoking the member on several instances of the same type.&lt;/p&gt;  &lt;p&gt;I provide the code here but I'm sure there are several bugs in it so please don't use it in your applications as is. Actually please don't use it for anything like that without asking permission first...&lt;/p&gt;  &lt;pre style="overflow: auto; width: 440px; height: 350px"&gt;#region Using Directives using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Globalization; using System.Reflection.Emit; </content><link rel='alternate' type='text/html' href='http://health.bg58.com/2008/05/dynamic-lookup.html' title='Dynamic lookup'/><link rel='replies' type='application/atom+xml' href='http://health.bg58.com/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/1045427375131201719'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5048836253961581336/posts/default/1045427375131201719'/><author><name>baby</name><email>noreply@blogger.com</email></author></entry></feed>