<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss1full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:cc="http://web.resource.org/cc/" xmlns="http://purl.org/rss/1.0/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">

<channel rdf:about="http://www.wrightin.gs/">
<title>wrightin.gs</title>
<link>http://www.wrightin.gs/</link>
<description>Adding more nerdiness to the internet...</description>
<dc:language>en-US</dc:language>
<dc:creator />
<dc:date>2010-05-22T14:40:01-04:00</dc:date>
<admin:generatorAgent rdf:resource="http://www.typepad.com/" />


<items>
<rdf:Seq><rdf:li rdf:resource="http://www.wrightin.gs/2010/05/your-aspnet-web-forms-can-have-a-cool-3-letter-design-pattern-too.html" />
<rdf:li rdf:resource="http://www.wrightin.gs/2010/02/intro-to-aspnet-mvc-with-a-splash-of-jquery-presentation.html" />
<rdf:li rdf:resource="http://www.wrightin.gs/2009/12/living-with-your-vms-in-the-cloud.html" />
<rdf:li rdf:resource="http://www.wrightin.gs/2009/11/coderush-template-for-csla-properties.html" />
<rdf:li rdf:resource="http://www.wrightin.gs/2009/07/nerd-crib.html" />
<rdf:li rdf:resource="http://www.wrightin.gs/2009/06/social-media-breakfast-thoughts.html" />
<rdf:li rdf:resource="http://www.wrightin.gs/2009/05/demo-code-from-nwnug-may-19th-meeting.html" />
<rdf:li rdf:resource="http://www.wrightin.gs/2009/04/demo-code-from-west-michigan-net-university.html" />
<rdf:li rdf:resource="http://www.wrightin.gs/2009/03/hp-2710-tablet-for-sale.html" />
<rdf:li rdf:resource="http://www.wrightin.gs/2009/02/issues-with-linq-2-sql-designers.html" />
</rdf:Seq>
</items>

<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rdf+xml" href="http://feeds.feedburner.com/wrightin_gs" /><feedburner:info uri="wrightin_gs" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>41.707649</geo:lat><geo:long>-83.643635</geo:long><feedburner:emailServiceId>wrightin_gs</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname></channel>

<item rdf:about="http://www.wrightin.gs/2010/05/your-aspnet-web-forms-can-have-a-cool-3-letter-design-pattern-too.html">
<title>Your ASP.NET Web Forms can have a cool 3 letter design pattern too</title>
<link>http://feedproxy.google.com/~r/wrightin_gs/~3/5olgMMe9iOk/your-aspnet-web-forms-can-have-a-cool-3-letter-design-pattern-too.html</link>
<description>I just gave a talk on using the Model View Presenter pattern with ASP.NET web forms. The first third of the talk goes into a deep discussion about the pattern and why it is important and how it fits into...</description>
<content:encoded><![CDATA[<p>I just gave a talk on using the Model View Presenter pattern with ASP.NET web forms. The first third of the talk goes into a deep discussion about the pattern and why it is important and how it fits into ASP.NET web forms applications. The second third demonstrates how to implement the pattern within an existing ASP.NET web forms application. The last third demostrates how to implement the pattern using the WebFormsMVP.</p>
<p>I have attached the code and the database for the demo that I give in the talk and the slides in pdf format.</p>
<p>If you have any issues or questions with the code or the demo, or if you would like to hear this talk at your user group or meeting, please email me at jamie AT brilliantfantastic DOT com.</p>
<p><strong><span style="FONT-SIZE: 14px"><span style="FONT-SIZE: 15px"><span style="FONT-SIZE: 16px"><span style="FONT-SIZE: 17px"><span style="FONT-SIZE: 18px"><span style="FONT-SIZE: 19px"><span style="FONT-SIZE: 20px">Abstract</span></span></span></span></span></span></span></strong></p>
<p><span style="FONT-SIZE: 14px"><span style="FONT-SIZE: 15px"><span style="FONT-SIZE: 16px"><span style="FONT-SIZE: 17px"><span style="FONT-SIZE: 18px"><span style="FONT-SIZE: 19px"><span style="FONT-SIZE: 20px"><font size="2">ASP.NET Web Forms have been getting the short end of the stick lately with the introduction of ASP.NET MVC. We will take a look at how you can implement the Model View Presenter (MVP) pattern with your web forms projects. This will make for a better testable, more organized and maintainable Web Forms application.&#0160; </font></span></span></span></span></span></span></span></p>
<p><span style="FONT-SIZE: 14px"><span style="FONT-SIZE: 15px"><span style="FONT-SIZE: 16px"><span style="FONT-SIZE: 17px"><span style="FONT-SIZE: 18px"><span style="FONT-SIZE: 19px"><span style="FONT-SIZE: 20px"></span></span></span></span></span></span></span><span style="FONT-SIZE: 14px"><span style="FONT-SIZE: 15px"><span style="FONT-SIZE: 16px"><span style="FONT-SIZE: 17px"><span style="FONT-SIZE: 18px"><span style="FONT-SIZE: 19px"><span style="FONT-SIZE: 20px"><font size="2">We will first look at what the MVP pattern is, why it is useful, how we can implement the MVP pattern in Web Forms manually and then take a look at the WebForms MVP library and how the MVP concepts are implemented into a great set of libraries.</font></span></span></span></span></span></span></span></p>
<p><span style="FONT-SIZE: 14px"><span style="FONT-SIZE: 15px"><span style="FONT-SIZE: 16px"><span style="FONT-SIZE: 17px"><span style="FONT-SIZE: 18px"><span style="FONT-SIZE: 19px"><span style="FONT-SIZE: 20px"><span style="FONT-SIZE: 21px">Bio</span></span></span></span></span></span></span></span></p>
<p><span style="FONT-SIZE: 14px"><span style="FONT-SIZE: 15px"><span style="FONT-SIZE: 16px"><span style="FONT-SIZE: 17px"><span style="FONT-SIZE: 18px"><span style="FONT-SIZE: 19px"><span style="FONT-SIZE: 20px"><span style="FONT-SIZE: 21px"><font size="2"><span style="FONT-SIZE: 14px"><span style="FONT-SIZE: 15px"><span style="FONT-SIZE: 16px"><span style="FONT-SIZE: 17px"><span style="FONT-SIZE: 18px"><span style="FONT-SIZE: 19px"><span style="FONT-SIZE: 19px"><span style="FONT-SIZE: 18px"><span style="FONT-SIZE: 17px"><span style="FONT-SIZE: 16px"><span style="FONT-SIZE: 15px"><span style="FONT-SIZE: 14px"><span style="FONT-SIZE: 13px">Jamie Wright is president of <a href="http://brilliantfantastic.com">Brilliant Fantastic</a>, a software development consulting service provider and ISV for software management applications. He has over ten years software development experience in Microsoft technologies and has developing in .NET since the first beta release. He specializes in application architecture, design patterns, object-oriented design, and business objects using the .NET framework. He loves spending time with his family, blogging at <a href="http://ww.wrightin.gs">http://ww.wrightin.gs</a>&#0160;and he is currently getting therapy for his gadget addiction.</span></span></span></span></span></span> </span></span></span></span></span></span></span></font></span></span></span></span></span></span></span></span></p>
<p><span style="FONT-SIZE: 14px"><span style="FONT-SIZE: 15px"><span style="FONT-SIZE: 16px"><span style="FONT-SIZE: 17px"><span style="FONT-SIZE: 18px"><span style="FONT-SIZE: 19px"><span style="FONT-SIZE: 20px"><span style="FONT-SIZE: 21px"><font size="2"><span style="FONT-SIZE: 14px"><span style="FONT-SIZE: 15px"><span style="FONT-SIZE: 16px"><span style="FONT-SIZE: 17px"><span style="FONT-SIZE: 18px"><span style="FONT-SIZE: 19px"><span style="FONT-SIZE: 19px"><span class="asset asset-generic at-xid-6a00d83420db0253ef013481788cf1970c"><a href="http://wrightings.typepad.com/files/asp.net-mvp.zip">Download ASP.NET MVP Demo Application MVP</a></span></span></span></span></span></span></span></span></font></span></span></span></span></span></span></span></span></p>
<p><span style="FONT-SIZE: 14px"><span style="FONT-SIZE: 15px"><span style="FONT-SIZE: 16px"><span style="FONT-SIZE: 17px"><span style="FONT-SIZE: 18px"><span style="FONT-SIZE: 19px"><span style="FONT-SIZE: 20px"><span style="FONT-SIZE: 21px"><font size="2"><span style="FONT-SIZE: 14px"><span style="FONT-SIZE: 15px"><span style="FONT-SIZE: 16px"><span style="FONT-SIZE: 17px"><span style="FONT-SIZE: 18px"><span style="FONT-SIZE: 19px"><span style="FONT-SIZE: 19px"><span class="asset asset-generic at-xid-6a00d83420db0253ef0133ee48d088970b"><a href="http://wrightings.typepad.com/files/benjaminsbackup.zip">Download ASP.NET MVP Database Backup</a></span></span></span></span></span></span></span></span></font></span></span></span></span></span></span></span></span></p>
<p><span style="FONT-SIZE: 14px"><span style="FONT-SIZE: 15px"><span style="FONT-SIZE: 16px"><span style="FONT-SIZE: 17px"><span style="FONT-SIZE: 18px"><span style="FONT-SIZE: 19px"><span style="FONT-SIZE: 20px"><span style="FONT-SIZE: 21px"><font size="2"><span style="FONT-SIZE: 14px"><span style="FONT-SIZE: 15px"><span style="FONT-SIZE: 16px"><span style="FONT-SIZE: 17px"><span style="FONT-SIZE: 18px"><span style="FONT-SIZE: 19px"><span style="FONT-SIZE: 19px"><span class="asset asset-generic at-xid-6a00d83420db0253ef0133ee48d088970b"><span class="asset asset-generic at-xid-6a00d83420db0253ef0133ee48d206970b"><a href="http://wrightings.typepad.com/files/asp.net-mvp.pdf">Download Slides MVP</a></span></span></span></span></span></span></span></span></span></font></span></span></span></span></span></span></span></span></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/wrightin_gs?a=5olgMMe9iOk:fqRQiYSP4Xg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/wrightin_gs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/wrightin_gs?a=5olgMMe9iOk:fqRQiYSP4Xg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/wrightin_gs?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/wrightin_gs/~4/5olgMMe9iOk" height="1" width="1"/>]]></content:encoded>


<dc:subject>.NET</dc:subject>
<dc:subject>Presentations</dc:subject>

<dc:creator>jwright</dc:creator>
<dc:date>2010-05-22T14:40:01-04:00</dc:date>
<feedburner:origLink>http://www.wrightin.gs/2010/05/your-aspnet-web-forms-can-have-a-cool-3-letter-design-pattern-too.html</feedburner:origLink></item>
<item rdf:about="http://www.wrightin.gs/2010/02/intro-to-aspnet-mvc-with-a-splash-of-jquery-presentation.html">
<title>Intro to ASP.NET MVC with a splash of jQuery Presentation</title>
<link>http://feedproxy.google.com/~r/wrightin_gs/~3/JEFW22ur7t8/intro-to-aspnet-mvc-with-a-splash-of-jquery-presentation.html</link>
<description>One of the talks I give is an introduction to ASP.NET MVC with a splash of jQuery. The first 3/4 of the talk is an introduction to ASP.NET MVC and the last 1/4 is an introduction to jQuery and how...</description>
<content:encoded><![CDATA[<p>One of the talks I give is an introduction to <a href="http://asp.net/mvc">ASP.NET MVC</a> with a splash of <a href="http://jquery.com/">jQuery</a>. The first 3/4 of the talk is an introduction to ASP.NET MVC and the last 1/4 is an introduction to jQuery and how the 2 technologies can be used together to create current web applications.</p>
<p>I have attached the code for both demos that I give in the talk, the database used for the demo ASP.NET MVC application, and the slides in pdf format.</p>
<p>If you have any issues or questions with the code or the demo, or if you would like to hear this talk at your user group or meeting, please email me at jamie AT brilliantfantastic DOT com.</p>
<p><span style="FONT-SIZE: 14px; FONT-FAMILY: "><span style="FONT-SIZE: 15px; FONT-FAMILY: "><span style="FONT-SIZE: 16px; FONT-FAMILY: "><span style="FONT-SIZE: 17px; FONT-FAMILY: "><span style="FONT-SIZE: 18px; FONT-FAMILY: "><span style="FONT-SIZE: 19px; FONT-FAMILY: "><span style="FONT-SIZE: 20px; FONT-FAMILY: "><strong>Abstract</strong></span></span></span></span></span></span></span></p>
<p><span class="Normal" id="dnn_ctr1603_HtmlModule_lblContent">The ASP.NET MVC framework and the jQuery javascript framework work very well together in order to build up to date, rich client web applications with no need for silly plugins.</span></p><span class="Normal"></span><span class="Normal">
<p><br />ASP.NET MVC is a alternative to the traditional ASP.NET web forms from Microsoft. They both use ASP.NET as the mechanism to talk between a web browser and IIS but the patterns they implement are far different.</p>
<p><br />ASP.NET MVC is modeled after popular model-view-controller web frameworks such as Ruby on Rails. It was not built to replace ASP.NET web forms but rather as an alternative to the viewstate/post back model of web forms.</p>
<p><br />We will look at the patterns of the ASP.NET MVC framework and explore the work flow of requests and responses to and from a server as well as how it differs from the traditional web forms applications. </p>
<p><br />jQuery is a javascript framework that is designed to make cross-browser DOM programming easier and make developing with javascript suck less. In this presentation, we will go over the basics of jQuery which will allow you to go home and get started right away. We will cover concepts such as DOM manipulation, CSS manipulation, ajax requests, and user interface effects. jQuery makes performing these tasks trivial and allows you to add ajax calls and Flash-like effects to your web site easily.</p></span>
<p><span style="FONT-SIZE: 14px; FONT-FAMILY: "><span style="FONT-SIZE: 15px; FONT-FAMILY: "><span style="FONT-SIZE: 16px; FONT-FAMILY: "><span style="FONT-SIZE: 17px; FONT-FAMILY: "><strong><span style="FONT-SIZE: 18px; FONT-FAMILY: "><span style="FONT-SIZE: 19px; FONT-FAMILY: "><span style="FONT-SIZE: 20px; FONT-FAMILY: ">Bio</span></span></span></strong></span></span></span></span></p>
<p><span style="FONT-SIZE: 14px; FONT-FAMILY: "><span style="FONT-SIZE: 15px; FONT-FAMILY: "><span style="FONT-SIZE: 16px; FONT-FAMILY: "><span style="FONT-SIZE: 17px; FONT-FAMILY: "><span style="FONT-SIZE: 18px; FONT-FAMILY: "><span style="FONT-SIZE: 19px; FONT-FAMILY: "><span style="FONT-SIZE: 19px; FONT-FAMILY: "><span style="FONT-SIZE: 18px; FONT-FAMILY: "><span style="FONT-SIZE: 17px; FONT-FAMILY: "><span style="FONT-SIZE: 16px; FONT-FAMILY: "><span style="FONT-SIZE: 15px; FONT-FAMILY: "><span style="FONT-SIZE: 14px; FONT-FAMILY: "><span style="FONT-SIZE: 13px; FONT-FAMILY: ">Jamie Wright is president of <a href="http://brilliantfantastic.com/">Brilliant Fantastic</a>, a software development consulting service provider and ISV for software management applications. He has over ten years software development experience in Microsoft technologies and has developing in .NET since the first beta release. He specializes in application architecture, design patterns, object-oriented design, and business objects using the .NET framework. He loves spending time with his family, blogging at <a href="http://wrightin.gs/">http://wrightin.gs</a> and he is currently getting therapy for his gadget addiction.</span></span></span></span></span></span> </span></span></span></span></span></span></span></p>
<p><span style="FONT-SIZE: 14px; FONT-FAMILY: "><span style="FONT-SIZE: 15px; FONT-FAMILY: "><span style="FONT-SIZE: 16px; FONT-FAMILY: "><span style="FONT-SIZE: 17px; FONT-FAMILY: "><span style="FONT-SIZE: 18px; FONT-FAMILY: "><span style="FONT-SIZE: 19px; FONT-FAMILY: "><span style="FONT-SIZE: 19px; FONT-FAMILY: "><span class="asset asset-generic at-xid-6a00d83420db0253ef012877b44701970c"><a href="http://wrightings.typepad.com/files/asp.net-mvc.zip"><span style="FONT-SIZE: 12px; FONT-FAMILY: ">Download ASP.NET MVC Demo Application</span></a></span></span></span></span></span></span></span></span></p>
<p><span style="FONT-SIZE: 14px; FONT-FAMILY: "><span style="FONT-SIZE: 15px; FONT-FAMILY: "><span style="FONT-SIZE: 16px; FONT-FAMILY: "><span style="FONT-SIZE: 17px; FONT-FAMILY: "><span style="FONT-SIZE: 18px; FONT-FAMILY: "><span style="FONT-SIZE: 19px; FONT-FAMILY: "><span style="FONT-SIZE: 19px; FONT-FAMILY: "><span class="asset asset-generic at-xid-6a00d83420db0253ef0120a8b17781970b"><a href="http://wrightings.typepad.com/files/benjamins-1.bak"><span style="FONT-SIZE: 12px; FONT-FAMILY: ">Download ASP.NET MVC Database Backup</span></a></span></span></span></span></span></span></span></span></p>
<p><span style="FONT-SIZE: 14px; FONT-FAMILY: "><span style="FONT-SIZE: 15px; FONT-FAMILY: "><span style="FONT-SIZE: 16px; FONT-FAMILY: "><span style="FONT-SIZE: 17px; FONT-FAMILY: "><span style="FONT-SIZE: 18px; FONT-FAMILY: "><span style="FONT-SIZE: 19px; FONT-FAMILY: "><span style="FONT-SIZE: 19px; FONT-FAMILY: "><span class="asset asset-generic at-xid-6a00d83420db0253ef012877b44822970c"><span style="FONT-SIZE: 12px; FONT-FAMILY: "><a href="http://wrightings.typepad.com/files/jquery.zip">Download JQuery Demo Application</a></span></span></span></span></span></span></span></span></span></p>

<p><span style="FONT-SIZE: 14px; FONT-FAMILY: "><span style="FONT-SIZE: 15px; FONT-FAMILY: "><span style="FONT-SIZE: 16px; FONT-FAMILY: "><span style="FONT-SIZE: 17px; FONT-FAMILY: "><span style="FONT-SIZE: 18px; FONT-FAMILY: "><span style="FONT-SIZE: 19px; FONT-FAMILY: "><span style="FONT-SIZE: 19px; FONT-FAMILY: "><span class="asset asset-generic at-xid-6a00d83420db0253ef012877b44822970c"><span class="asset asset-generic at-xid-6a00d83420db0253ef012877b464ea970c"><a href="http://wrightings.typepad.com/files/asp.net-mvc-jquery.pdf"><span style="font-size: 13px; ">Download Slides</span></a></span><br /></span></span></span></span></span></span></span></span></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/wrightin_gs?a=JEFW22ur7t8:YP-2qV1yC3Y:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/wrightin_gs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/wrightin_gs?a=JEFW22ur7t8:YP-2qV1yC3Y:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/wrightin_gs?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/wrightin_gs/~4/JEFW22ur7t8" height="1" width="1"/>]]></content:encoded>


<dc:subject>.NET</dc:subject>
<dc:subject>Presentations</dc:subject>

<dc:creator>jwright</dc:creator>
<dc:date>2010-02-18T10:18:12-05:00</dc:date>
<feedburner:origLink>http://www.wrightin.gs/2010/02/intro-to-aspnet-mvc-with-a-splash-of-jquery-presentation.html</feedburner:origLink></item>
<item rdf:about="http://www.wrightin.gs/2009/12/living-with-your-vms-in-the-cloud.html">
<title>Living with your Microsoft VMs "in the cloud" on a Mac</title>
<link>http://feedproxy.google.com/~r/wrightin_gs/~3/5t0pSp-EmN0/living-with-your-vms-in-the-cloud.html</link>
<description>Some Background So I am a software development consultant. This often requires me to have several different environments setup for several different customers. The best way to accomplish this that I have found is to have a virtual machine setup...</description>
<content:encoded><![CDATA[<p><strong><span style="text-decoration: underline;"><span style="font-size: 18px; "><span style="font-family: Tahoma;">Some Background</span></span></span></strong></p><p><span style="font-family: Tahoma;">So I am a software development consultant. This often requires me to have several different environments setup for several different customers. The best way to accomplish this that I have found is to have a virtual machine setup for each customer. This also requires that I have a copy of that vm on a laptop and at my home setup since sometimes I travel to the customer&#39;s office with my laptop.</span></p><p><span style="font-family: Tahoma; font-size: 15px; "><span style="text-decoration: underline;">Old Environment</span></span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">Apple FanBoy is another adjective that describes who I am. I make money writing code in Microsoft .NET and in the Windows environment but I use the Mac side for everything else. I use a 13&quot; Macbook for client visits and a MacPro beast at home. I placed each client&#39;s Windows environment in a VMWare VM with the necessary tools like Visual Studio, Subversion, Git, SQL Server, etc. I would then keep the VM on an external drive and run he VM from my MacPro at home or my MacBook on the road. If I knew that I was going to be at a client for a long time, I would copy that VM locally to my MacBook since it would run faster from my laptops SSD drive. Once I worked at the client site a couple of days, I would copy that VM back to my external drive to run from both at home and at a client site.</span></p><p><span style="font-family: Tahoma; font-size: 16px; "><span style="text-decoration: underline;">Some Issues with Old Environment</span></span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">There were a lot of issues that I did not like with this setup of copying vms. The first issue was that this was substantially inefficient. Copying 30 gig vm files from external drive to internal drive on various computers took around 20 minutes a piece. This made it hard to quickly get out to a client site for a meeting or to quickly copy the VM back for a &quot;quick fix&quot;.</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">Another issue related to copying vms was that Windows Software Authentication which makes sure you&#39;re not using the latest China build is horrible. When copying the vm from one machine to another and/or running the vm on an external drive from different host machines, the horrible satanic &quot;Genuine Advantage&quot; would get confused and de-authenticate your OS since the hardware is changing so much.</span></p><p><span style="font-family: Tahoma; font-size: 15px; "><span style="text-decoration: underline;">The New Environment</span></span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">The new environment eliminates the issues with the old environment. With the new environment, I still run all of my customer setups in&#0160;separate&#0160;VMs. The difference is that these VMs are always run from home on my MacPro. This 8-core, 16G Ram machine is perfectly fine with running multiple (anywhere from 5 - 8) VMs at a time. When I bounce to a client site I still run these VMs from my home computer and I connect to them over </span><a href="http://www.apple.com/downloads/macosx/networking_security/remotedesktopconnectionclient.html">Windows Remote Desktop Connection for the Mac</a><span style="font-family: Tahoma, Verdana, sans-serif;">.</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">You really do not see any difference with running this way. The advantage is that I do not need to copy the VMs onto my laptop anymore and I do not get bothered with the software authentication anymore. I don&#39;t have to worry about having multiple copies of the same VM on different machines and a portable drive. The biggest advantage is the state of the VM is always constant. I can close my laptop at anytime and know that when I get home, the VM will be in the exact state as I have left it when I closed my laptop. This is especially useful with long running scripts or builds that need to be run and you have to split.</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">There are a few disadvantages that mostly deal with connection issues. You may have spotty Wifi coverage that causes some lag but the Windows Remote Desktop software is really well written for those scenarios. I have used a VM over a Sprint 3G connection many-o-times without any issues.&#0160;</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">Another issue is that I cannot get any Windows Aero features since Windows does not like you to use those features over RDC. This is not a big deal for me but it may be for you.</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">I still carry a portable VM with me just in case of an emergency. If I can&#39;t connect for some reason, I still have VMWare installed on my laptop and I can get some version of the customer VM from the local drive.</span></p><p><span style="font-family: Tahoma; font-size: 18px; "><strong><span style="text-decoration: underline;">How to setup the New Environment</span></strong></span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">There are 3 steps to getting this new environment setup on your VM.</span></p><p></p><ol>
<li><span style="font-family: Tahoma, Verdana, sans-serif;">Setup your guest virtual machine<br /></span></li>
<li><span style="font-family: Tahoma, Verdana, sans-serif;">Setup your host machine &amp; router</span></li>
<li><span style="font-family: Tahoma, Verdana, sans-serif;">Create a dynamic DNS to connect over the internet</span></li>
</ol>
<p><span style="font-family: Tahoma; font-size: 15px; "><span style="text-decoration: underline;">Setup your guest virtual machine</span></span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">I am using </span><a href="http://www.vmware.com/products/fusion/">VMWare Fusion</a><span style="font-family: Tahoma, Verdana, sans-serif;"> on my Mac and the screenshots below are from that application. I am sure all virtual machine software apps have these features so use what you like such as </span><a href="http://www.parallels.com/products/desktop/">Parallels</a><span style="font-family: Tahoma, Verdana, sans-serif;"> or </span><a href="http://www.virtualbox.org/">Virtual Box</a><span style="font-family: Tahoma, Verdana, sans-serif;">.</span></p><p></p><ul>
<li><span style="font-family: Tahoma, Verdana, sans-serif;"><strong>Change wireless settings on VM to use a bridged connection</strong><br /></span></li>
</ul>
<p><span style="font-family: Tahoma, Verdana, sans-serif;">In order for your host machine to pass the connection on from the internet to your VM, your VM must have it&#39;s network settings on Bridged. I believe the default for Fusion is NAT and so you to change this to Bridged.&#0160;</span></p><p><span style="font-size: 11px; ">[DISCLAIMER: I am horrible at network administration and so some of this may not be needed or wrong. Please check with a certified network person thingy. I am not responsible for you fucking your stuff up.]</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">From Fusion, select your VM from you want to make available from the interwebs and select Virtual Machine -&gt; Settings (CMD+E). Select Network and make sure your settings are like the following:</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;"><a href="http://wrightings.typepad.com/.a/6a00d83420db0253ef012876bb9912970c-popup" onclick="window.open( this.href, &#39;_blank&#39;, &#39;width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0&#39; ); return false" style="display: inline;"><img alt="VMWare Network Settings" border="0" class="asset asset-image at-xid-6a00d83420db0253ef012876bb9912970c image-full " src="http://wrightings.typepad.com/.a/6a00d83420db0253ef012876bb9912970c-800wi" title="VMWare Network Settings" /></a> <br /><br /></span></p><p></p><ul>
<li><span style="font-family: Tahoma, Verdana, sans-serif;"><strong>Change Remote Settings on your Windows VM</strong></span></li>
</ul>
<p><span style="font-family: Tahoma, Verdana, sans-serif;">On your guest machine, you need to setup Windows to allow for remote connections for remote desktop.</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">From the Control Panel, browse to System and Maintenance -&gt; System. On the left hand side, select Remote settings.</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;"><a href="http://wrightings.typepad.com/.a/6a00d83420db0253ef012876bb9a8c970c-popup" onclick="window.open( this.href, &#39;_blank&#39;, &#39;width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0&#39; ); return false" style="display: inline;"><img alt="Control Panel -&gt; Remote Settings" border="0" class="asset asset-image at-xid-6a00d83420db0253ef012876bb9a8c970c image-full " src="http://wrightings.typepad.com/.a/6a00d83420db0253ef012876bb9a8c970c-800wi" title="Control Panel -&gt; Remote Settings" /></a> <br />&#0160;<br /></span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">On the Remote settings screen, check &quot;Allow Remote Assistance connections to this computer&quot; and check &quot;Allow connections from computers running any version of Remote Desktop (less secure).&quot;</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;"><a href="http://wrightings.typepad.com/.a/6a00d83420db0253ef0120a7b91c16970b-popup" onclick="window.open( this.href, &#39;_blank&#39;, &#39;width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0&#39; ); return false" style="display: inline;"><img alt="Remote Settings" border="0" class="asset asset-image at-xid-6a00d83420db0253ef0120a7b91c16970b " src="http://wrightings.typepad.com/.a/6a00d83420db0253ef0120a7b91c16970b-800wi" title="Remote Settings" /></a> <br />&#0160;<br /></span></p><ul>
<li><span style="font-family: Tahoma, Verdana, sans-serif;"><strong>Turn off IPv6 [if needed] on your Windows VM</strong><br /></span></li>
</ul>
<p><span style="font-family: Tahoma, Verdana, sans-serif;">OK, I am unsure why you need to do this but I did in my case. You may not need to do this or you may have to change other settings. Again, I am an idiot when it comes to network administration.</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">From the Control Panel, browse to Network and Internet -&gt; Network and Sharing Center. On the lef hand side, select Manage network connections.</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;"><a href="http://wrightings.typepad.com/.a/6a00d83420db0253ef0120a7b91d0d970b-popup" onclick="window.open( this.href, &#39;_blank&#39;, &#39;width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0&#39; ); return false" style="display: inline;"><img alt="Control Panel -&gt; Manage Networks" border="0" class="asset asset-image at-xid-6a00d83420db0253ef0120a7b91d0d970b image-full " src="http://wrightings.typepad.com/.a/6a00d83420db0253ef0120a7b91d0d970b-800wi" title="Control Panel -&gt; Manage Networks" /></a> <br />&#0160;<br /></span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">Right-click on your active network connection, and select Properties.&#0160;Uncheck &quot;Internet Protocol Version 6 (TCP/IPv6)&quot;.</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;"><a href="http://wrightings.typepad.com/.a/6a00d83420db0253ef0120a7b91e59970b-popup" onclick="window.open(this.href,&#39;_blank&#39;,&#39;scrollbars=no,resizable=yes,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0&#39;); return false" style="display: inline;"><img alt="Uncheck IPv6" border="0" class="asset asset-image at-xid-6a00d83420db0253ef0120a7b91e59970b " src="http://wrightings.typepad.com/.a/6a00d83420db0253ef0120a7b91e59970b-800wi" title="Uncheck IPv6" /></a> <br />&#0160;<br /></span></p><ul>
<li><span style="font-family: Tahoma, Verdana, sans-serif;"><strong>Set static IP address on your Windows VM</strong><br /></span></li>
</ul>
<p><span style="font-family: Tahoma, Verdana, sans-serif;">You need to setup a static IP address for your VM instead of using a DHCP server which is normally the default. This is an internal static IP address for your internal network. These usually start with 10.0.1.XX. I make sure that the XX will be the same number as the port that I am going to be using to identify the VM later. I start with port 85 and go up from there (skipping 89). You can use any number for XX as long as it does not conflict with other devices in your house such as a Slingbox or another FileServer, etc.</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">From the Control Panel, browse to&#0160;Network and Internet -&gt; Network and Sharing Center. On the right hand side, select Manage network connections (same as above).</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">Right-click on your active network connection, and select Properties (same as above).<br /></span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">Click on &quot;Internet Protocol Version 4 (TCP/IPv4)&quot; and click Properties. In the following window, click on &quot;Use the following IP address&quot; and set your IP address according to the recommendations above.</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">In this instance, I used 10.0.1.90 to identify this machine since I will connect to it over port 3390. Make sure you remember what this is as you will need it in a little bit.</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;"><a href="http://wrightings.typepad.com/.a/6a00d83420db0253ef0120a7b91f99970b-popup" onclick="window.open( this.href, &#39;_blank&#39;, &#39;width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0&#39; ); return false" style="display: inline;"><img alt="IPv4 Settings" border="0" class="asset asset-image at-xid-6a00d83420db0253ef0120a7b91f99970b " src="http://wrightings.typepad.com/.a/6a00d83420db0253ef0120a7b91f99970b-800wi" title="IPv4 Settings" /></a> <br />&#0160;<br /></span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;"><span style="font-family: &#39;Trebuchet MS&#39;, Verdana, sans-serif; "></span></span></p><p style="margin-top: 11px; margin-right: 0px; margin-bottom: 11px; margin-left: 0px; "><span style="font-family: Tahoma, Verdana, sans-serif;">You should now be able to ping your VM from another computer in your house and from your host machine. Try to ping your static IP address that you set. If you are unsuccessful, carefully follow the steps above again.<br /></span></p><p></p><p style="margin-top: 11px; margin-right: 0px; margin-bottom: 11px; margin-left: 0px; "><span style="font-family: Tahoma, Verdana, sans-serif;"><span style="font-family: &#39;Trebuchet MS&#39;, Verdana, sans-serif; "></span></span></p><ul>
<li><span style="font-family: Tahoma, Verdana, sans-serif; "><strong>Update Registry settings on your Windows VM</strong></span></li>
</ul>
<p style="margin-top: 11px; margin-right: 0px; margin-bottom: 11px; margin-left: 0px; "><span style="font-family: Tahoma, Verdana, sans-serif;">In order to connect to your multiple VMs from the internet, you need to change the port number that they are connecting to. By default, Remote Desktop connections occur over port 3389 and we will change this default port since we will have multiple VMs. Another advantage of doing this is that if you are a customer site, some customer sites block outgoing port 3389 requests and this will get around that.</span></p><p></p><p style="margin-top: 11px; margin-right: 0px; margin-bottom: 11px; margin-left: 0px; "><span style="font-family: Tahoma, Verdana, sans-serif;">Start the Registry Editor by going to Start -&gt; and type regedit and click enter.</span></p><p style="margin-top: 11px; margin-right: 0px; margin-bottom: 11px; margin-left: 0px; "><span style="font-family: Tahoma, Verdana, sans-serif;">Browse to&#0160;<span style="font-family: Verdana, Arial, Helvetica, sans-serif; line-height: 13px; font-size: 11px; "><strong class="uiterm" style="-webkit-box-sizing: border-box; ">HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TerminalServer\WinStations\RDP-Tcp\PortNumber.</strong></span></span></p><p style="margin-top: 11px; margin-right: 0px; margin-bottom: 11px; margin-left: 0px; "><span style="font-family: Tahoma, Verdana, sans-serif;"><span style="font-family: Verdana, Arial, Helvetica, sans-serif; line-height: 13px; font-size: 11px; "><strong class="uiterm" style="-webkit-box-sizing: border-box; "><span style="font-family: Tahoma, Verdana, sans-serif;"><span style="font-weight: normal; line-height: 16px; font-size: small;">Change the value to the port number you want to use. In this instance, I used 3390 as the port number.</span></span></strong></span></span></p><p style="margin-top: 11px; margin-right: 0px; margin-bottom: 11px; margin-left: 0px; "><span style="font-family: Tahoma, Verdana, sans-serif;"><span style="font-family: Verdana, Arial, Helvetica, sans-serif; line-height: 13px; font-size: 11px; "><strong class="uiterm" style="-webkit-box-sizing: border-box; "><span style="font-family: Tahoma, Verdana, sans-serif;"><span style="font-weight: normal; line-height: 16px; font-size: small;"><a href="http://wrightings.typepad.com/.a/6a00d83420db0253ef0120a7b9213e970b-popup" onclick="window.open( this.href, &#39;_blank&#39;, &#39;width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0&#39; ); return false" style="display: inline;"><img alt="Registry Entry" border="0" class="asset asset-image at-xid-6a00d83420db0253ef0120a7b9213e970b " src="http://wrightings.typepad.com/.a/6a00d83420db0253ef0120a7b9213e970b-800wi" title="Registry Entry" /></a> <br />&#0160;<br /></span></span></strong></span></span></p><p style="margin-top: 11px; margin-right: 0px; margin-bottom: 11px; margin-left: 0px; "><span style="font-family: Tahoma, Verdana, sans-serif;">Here is another article on changing your RD listening port: </span><a href="http://support.microsoft.com/kb/306759">http://support.microsoft.com/kb/306759</a><span style="font-family: Tahoma, Verdana, sans-serif;">.</span></p><ul>
</ul>
<ul>
<li><span style="font-family: Tahoma, Verdana, sans-serif;"><strong>Add Firewall port exceptions on your Windows VM</strong></span></li>
</ul>
<p><span style="font-family: Tahoma, Verdana, sans-serif;">You need to add TCP and UDP exceptions to the Windows Firewall in order to connect to your VM over RD for the port that you specified above.&#0160;</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">From the Control Panel, browse to Network and Internet -&gt; Windows Firewall. On the left hand side, select &quot;Allow a program through Windows Firewall&quot;.</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;"><a href="http://wrightings.typepad.com/.a/6a00d83420db0253ef012876bba037970c-popup" onclick="window.open( this.href, &#39;_blank&#39;, &#39;width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0&#39; ); return false" style="display: inline;"><img alt="Windows Firewall Settings" border="0" class="asset asset-image at-xid-6a00d83420db0253ef012876bba037970c image-full " src="http://wrightings.typepad.com/.a/6a00d83420db0253ef012876bba037970c-800wi" title="Windows Firewall Settings" /></a> <br />&#0160;<br /></span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">Click on the Exceptions tab and then click the &quot;Add port...&quot; button. On the following window, set the name to &quot;Remote Desktop TCP (3390)&quot; (or the port number you used), set Port number to the one you specified above, and set the Protocol to TCP. Here is what it should look like in this instance:</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;"><a href="http://wrightings.typepad.com/.a/6a00d83420db0253ef012876bba0de970c-popup" onclick="window.open( this.href, &#39;_blank&#39;, &#39;width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0&#39; ); return false" style="display: inline;"><img alt="TCP Settings" border="0" class="asset asset-image at-xid-6a00d83420db0253ef012876bba0de970c " src="http://wrightings.typepad.com/.a/6a00d83420db0253ef012876bba0de970c-800wi" title="TCP Settings" /></a> <br />&#0160;<br /></span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">You will want to do the same thing for UDP. Here is what that should look like in this instance:</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;"><a href="http://wrightings.typepad.com/.a/6a00d83420db0253ef0120a7b92316970b-popup" onclick="window.open( this.href, &#39;_blank&#39;, &#39;width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0&#39; ); return false" style="display: inline;"><img alt="UDP Settings" border="0" class="asset asset-image at-xid-6a00d83420db0253ef0120a7b92316970b " src="http://wrightings.typepad.com/.a/6a00d83420db0253ef0120a7b92316970b-800wi" title="UDP Settings" /></a> <br />&#0160;<br /></span></p>
<p></p><p><span style="font-family: Tahoma; font-size: 15px; "><span style="text-decoration: underline;">Setup your host machine / router</span></span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">OK, the hard part is done. Now in order to connect to your VM from the internets, you need to be able to route your request in your router for the specified port number to the appropriate VM. To do this, you need to map your port to the appropriate VM. I will show you how to do this for the </span><a href="http://www.apple.com/airportextreme/">Apple Airport Extreme</a><span style="font-family: Tahoma, Verdana, sans-serif;"> / </span><a href="http://www.apple.com/timecapsule/">Time Capsule</a><span style="font-family: Tahoma, Verdana, sans-serif;"> since that is what I am using. I am sure it is easy to find information on port mapping for your specific router on the internet, just Google it.</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">Open up your Airport Utility and click on Manual Setup for your router.</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;"><a href="http://wrightings.typepad.com/.a/6a00d83420db0253ef012876bbb4bc970c-popup" onclick="window.open( this.href, &#39;_blank&#39;, &#39;width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0&#39; ); return false" style="display: inline;"><img alt="Manual Setup" border="0" class="asset asset-image at-xid-6a00d83420db0253ef012876bbb4bc970c image-full " src="http://wrightings.typepad.com/.a/6a00d83420db0253ef012876bbb4bc970c-800wi" title="Manual Setup" /></a> <br />&#0160;<br /></span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">Click on the Advanced tab and click on Port Mapping (it may take a few seconds to be enabled).</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;"><span style="font-family: &#39;Trebuchet MS&#39;, Verdana, sans-serif; "><a href="http://wrightings.typepad.com/.a/6a00d83420db0253ef0120a7b93857970b-popup" onclick="window.open( this.href, &#39;_blank&#39;, &#39;width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0&#39; ); return false" style="display: inline;"><img alt="Port Mapping" border="0" class="asset asset-image at-xid-6a00d83420db0253ef0120a7b93857970b " src="http://wrightings.typepad.com/.a/6a00d83420db0253ef0120a7b93857970b-800wi" title="Port Mapping" /></a> <br />&#0160;</span>&#0160;</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">Click on the small + at the bottom of the Allow list.</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">Enter your port number (3390 in this case) in the public and private UDP ports and the public and private TCP ports. Enter your internal static IP address (10.0.1.90 in this case).</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;"><a href="http://wrightings.typepad.com/.a/6a00d83420db0253ef0120a7b938b6970b-popup" onclick="window.open( this.href, &#39;_blank&#39;, &#39;width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0&#39; ); return false" style="display: inline;"><img alt="Port Mapping Setup Assistant" border="0" class="asset asset-image at-xid-6a00d83420db0253ef0120a7b938b6970b image-full " src="http://wrightings.typepad.com/.a/6a00d83420db0253ef0120a7b938b6970b-800wi" title="Port Mapping Setup Assistant" /></a> <br />&#0160;<br /></span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">Click Continue.</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">Enter a description here and click done. I usually use the name of my client followed by &quot; Windows VM&quot; as the name.</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">That is it for the port mapping. Continue adding all the VMs you want to allow with different ports and IP addresses. Make sure that they do not collide with other devices and services on your network.</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">The next step is to download the Remote Desktop Client for the Mac on your laptop or other device where you want to access these VMs remotely. You can get the software </span><a href="http://www.microsoft.com/mac/downloads.mspx" target="_blank">here</a><span style="font-family: Tahoma, Verdana, sans-serif;">. The Remote Desktop client is at the bottom listed under products (horrible page, I know). You then want the latest version.</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;"><a href="http://wrightings.typepad.com/.a/6a00d83420db0253ef0120a7b93938970b-popup" onclick="window.open( this.href, &#39;_blank&#39;, &#39;width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0&#39; ); return false" style="display: inline;"><img alt="RD Download" border="0" class="asset asset-image at-xid-6a00d83420db0253ef0120a7b93938970b image-full " src="http://wrightings.typepad.com/.a/6a00d83420db0253ef0120a7b93938970b-800wi" title="RD Download" /></a> <br />&#0160;<br /></span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">You should be able to connect to your VMs over the internet now. Using your current outside IP address (you can find out what it is by going to&#0160;</span><a href="http://checkip.dyndns.com/">http://checkip.dyndns.com/</a><span style="font-family: Tahoma, Verdana, sans-serif;">) and the port number, you can connect via Remote Desktop Client. Just use the format XX.XXX.XX.X:3390 (or your port number) and click connect. It will then ask you for your Windows username and password. <strong>Bam! Your living in the cloud man</strong>.</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">You can save each connection via the RD Client. I do this by saving via customer name and then use the Recent Connections menu item to switch back and forth.</span></p><p><span style="font-family: Tahoma; font-size: 15px; "><span style="text-decoration: underline;">Create a dynamic DNS to connect over the internet</span></span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">The final thing you need is a static IP address if you do not already have one through your ISP. The good news is that there is a free service which allows you to use your dynamic IP address that is usually what your ISP will give you for free. They usually don&#39;t change this often but when they do, you will not be able to connect to your VMs anymore.</span></p><p><a href="http://www.dyndns.com/">DynDNS</a><span style="font-family: Tahoma, Verdana, sans-serif;"> allows you to specify a domain name and you can use this domain name to link to your dynamic ip address. The trick is that you download a small application on your host machine which notifies DynDNS when your IP address has changed so that it can update where it points the domain to. The free account is pretty easy to use. The only catch is that DynDNS will send you an email once a month with a link that you need to verify that you are still using the service. If that is too much trouble for you, feel free to pay for it using their pricing services.</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">The signup is pretty self&#0160;explanatory. You can download the client at&#0160;</span><a href="https://www.dyndns.com/support/clients">https://www.dyndns.com/support/clients</a><span style="font-family: Tahoma, Verdana, sans-serif;">. The client is not needed as they have a web interface as well if you don&#39;t want to clutter up your system. I did not install it as the dynamic IP address does not change at all for me.</span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;"><br /></span></p><p><span style="font-family: Tahoma, Verdana, sans-serif;">I know this was long but I wanted to make it detailed enough to follow pretty easy. It&#39;s really nice to work this way once it is set up properly. Happy living...</span></p><p></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/wrightin_gs?a=5t0pSp-EmN0:EFCEbxQJKI4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/wrightin_gs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/wrightin_gs?a=5t0pSp-EmN0:EFCEbxQJKI4:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/wrightin_gs?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/wrightin_gs/~4/5t0pSp-EmN0" height="1" width="1"/>]]></content:encoded>


<dc:subject>.NET</dc:subject>
<dc:subject>Business</dc:subject>
<dc:subject>Nerd Crib</dc:subject>

<dc:creator>jwright</dc:creator>
<dc:date>2009-12-16T08:00:00-05:00</dc:date>
<feedburner:origLink>http://www.wrightin.gs/2009/12/living-with-your-vms-in-the-cloud.html</feedburner:origLink></item>
<item rdf:about="http://www.wrightin.gs/2009/11/coderush-template-for-csla-properties.html">
<title>CodeRush Template for CSLA Properties [Updated]</title>
<link>http://feedproxy.google.com/~r/wrightin_gs/~3/fTWSiETVK9k/coderush-template-for-csla-properties.html</link>
<description>[Update: Thanks to Mark Miller's comments below, I have changed the templates and added a link to the new ones below marked as version 2. The new templates fix some bugs and add some additional functionality. You can now use...</description>
<content:encoded><![CDATA[<p style="COLOR: #0060bf">[Update: Thanks to Mark Miller&#39;s comments below, I have changed the templates and added a link to the new ones below marked as version 2. The new templates fix some bugs and add some additional functionality. You can now use nullables and generics in your type definition without issue. I changed the shortcuts as well as added additional shortcuts. I have outlined these below:</p>
<ol>
<li id=""><strong>krp</strong> -&gt; [Roc<span style="text-decoration: underline">k</span>y Lhot<span style="text-decoration: underline">k</span>a <span style="text-decoration: underline">R</span>egister <span style="text-decoration: underline">P</span>roperty] <em>Registers a CSLA property</em></li>
<li><strong>kdp</strong> -&gt; [Roc<span style="text-decoration: underline">k</span>y Lhot<span style="text-decoration: underline">k</span>a <span style="text-decoration: underline">D</span>eclare <span style="text-decoration: underline">P</span>roperty] <em>Declares a CSLA property</em></li>
<li><strong>krdp</strong> -&gt; [Roc<span style="text-decoration: underline">k</span>y Lhot<span style="text-decoration: underline">k</span>a <span style="text-decoration: underline">R</span>egister and&#0160;<span style="text-decoration: underline">D</span>eclare <span style="text-decoration: underline">P</span>roperty] <em>Declare and Register a CSLA property</em></li>
<li><strong>krp&lt;Type&gt;</strong> -&gt; <em>Registers a CSLA property with a specified type</em> where you only have to fill in the property name. For example krpi will create a registered property of type int. There are a lot of type shortcuts that ship with CodeRush.</li>
<li><strong>kdp&lt;Type&gt;</strong> -&gt; <em>Declares a CSLA property with a specified type</em>. Works similar to#4 above except it declares the property.</li>
</ol>
<p style="COLOR: #0060bf">]</p>
<p>Version 3.0 of <a href="http://lhotka.net/cslanet">CSLA.NET</a> brought a new way of declaring fields and properties within business objects. This was done in order to reduce the amount of code that needed to be written and to reduce the possibility of creating runtime exceptions.</p>
<p>Before version 3.0 of CSLA.NET, the business object developer would have to ensure that certain lines of code were present in order for state tracking and validation to work correctly. The following lines of code are an example of how business object properties were written previous to version 3.0.</p>
<p></p>
<div class="csharpcode"><pre class="alt"><span class="lnum"> 1: </span>[Serializable()]</pre><pre><span class="lnum"> 2: </span><span class="kwrd">public</span> <span class="kwrd">class</span> Customer : Csla.BusinessBase&lt;Customer&gt;</pre><pre class="alt"><span class="lnum"> 3: </span>{</pre><pre><span class="lnum"> 4: </span> <span class="kwrd">private</span> <span class="kwrd">string</span> _firstName;</pre><pre class="alt"><span class="lnum"> 5: </span>&#0160;</pre><pre><span class="lnum"> 6: </span> <span class="kwrd">public</span> <span class="kwrd">string</span> FirstName</pre><pre class="alt"><span class="lnum"> 7: </span> {</pre><pre><span class="lnum"> 8: </span> get</pre><pre class="alt"><span class="lnum"> 9: </span> {</pre><pre><span class="lnum"> 10: </span> CanReadProperty(<span class="kwrd">true</span>);</pre><pre class="alt"><span class="lnum"> 11: </span> <span class="kwrd">return</span> _firstName;</pre><pre><span class="lnum"> 12: </span> }</pre><pre class="alt"><span class="lnum"> 13: </span> set</pre><pre><span class="lnum"> 14: </span> {</pre><pre class="alt"><span class="lnum"> 15: </span> CanWriteProperty(<span class="kwrd">true</span>);</pre><pre><span class="lnum"> 16: </span> <span class="kwrd">if</span> (_firstName != <span class="kwrd">value</span>)</pre><pre class="alt"><span class="lnum"> 17: </span> {</pre><pre><span class="lnum"> 18: </span> _firstName = <span class="kwrd">value</span>;</pre><pre class="alt"><span class="lnum"> 19: </span> PropertyHasChanged();</pre><pre><span class="lnum"> 20: </span> }</pre><pre class="alt"><span class="lnum"> 21: </span> }</pre><pre><span class="lnum"> 22: </span> }</pre><pre class="alt"><span class="lnum"> 23: </span>&#0160;</pre><pre><span class="lnum"> 24: </span> <span class="kwrd">private</span> Customer()</pre><pre class="alt"><span class="lnum"> 25: </span> {</pre><pre><span class="lnum"> 26: </span> }</pre><pre class="alt"><span class="lnum"> 27: </span>}</pre></div>
<p></p>
<p>You can see this is pretty standard property/field declaration that you would see in any object (before <a href="http://msdn.microsoft.com/en-us/library/bb384054.aspx">Auto-Implemented properties</a>). Let me explain what the various CSLA.NET specific calls do.</p>
<p>In line 10, there is a call to a base class method CanReadProperty. This method checks the current roles that are assigned to the user that is logged and makes sure that the current user has the rights to read this specific property. Property level authorization is another feature of CSLA.NET which I will explain at a later date. The parameter of true that is passed to the call specifies that the application should throw an exception at this point if the user is not authorized to read the property.</p>
<p>Similar functionality for authorizing a property setter is found in line 15 with a call to the base method of CanWriteProperty.&#0160;</p>
<p>The last bit of functionality that this code sample demonstrates is the ability for CSLA to perform state tracking and validation. Business objects in CSLA have the ability to let the client of the business layer to determine if an object is dirty, new, or saved to the data store. A key piece of this functionality is implemented with a call to the PropertyHasChanged method as shown in line 19 above. This call does 2 things. First it marks the object as being dirty. Therefore, when the client application calls Save, the business object knows that it needs to perform an update or an insert into the data store. Second, the business object performs validation for all the validation rules based on that property. For example, if the Customer object contained a business rule stating that the FirstName property needed to have a non null or empty value and the client application assigned a string.Empty, the object would then be marked as invalid. If the user then tried to save the object, a ValidationException would be thrown by the business object.</p>
<p>As you can see, these steps of simply retrieving and setting property values have a large impact on how the CSLA business object operates. Skipping one of these steps or performing one of these steps at the wrong time can easily lead to logical errors. Because of this, <a href="http://lhotka.net/">Rocky Lhotka</a> introduced the concept of registering properties in CSLA version 3, a la Windows Workflow properties.</p>
<p>Here is an example of the how a business object developer would write the same functionality in CSLA version 3.0 and above:</p>
<p></p>
<div class="csharpcode"><pre class="alt"><span class="lnum"> 1: </span>[Serializable()]</pre><pre><span class="lnum"> 2: </span><span class="kwrd">public</span> <span class="kwrd">class</span> Customer : Csla.BusinessBase&lt;Customer&gt;</pre><pre class="alt"><span class="lnum"> 3: </span>{</pre><pre><span class="lnum"> 4: </span> <span class="kwrd">private</span> <span class="kwrd">static</span> PropertyInfo&lt;<span class="kwrd">string</span>&gt; FirstNameProperty = RegisterProperty&lt;<span class="kwrd">string</span>&gt;(<span class="kwrd">typeof</span>(Customer), <span class="kwrd">new</span> PropertyInfo&lt;<span class="kwrd">string</span>&gt;(<span class="str">&quot;FirstName&quot;</span>));</pre><pre class="alt"><span class="lnum"> 5: </span>&#0160;</pre><pre><span class="lnum"> 6: </span> <span class="kwrd">public</span> <span class="kwrd">string</span> FirstName</pre><pre class="alt"><span class="lnum"> 7: </span> {</pre><pre><span class="lnum"> 8: </span> get</pre><pre class="alt"><span class="lnum"> 9: </span> {</pre><pre><span class="lnum"> 10: </span> <span class="kwrd">return</span> GetProperty&lt;<span class="kwrd">string</span>&gt;(FirstNameProperty);</pre><pre class="alt"><span class="lnum"> 11: </span> }</pre><pre><span class="lnum"> 12: </span> set</pre><pre class="alt"><span class="lnum"> 13: </span> {</pre><pre><span class="lnum"> 14: </span> SetProperty&lt;<span class="kwrd">string</span>&gt;(FirstNameProperty, <span class="kwrd">value</span>);</pre><pre class="alt"><span class="lnum"> 15: </span> }</pre><pre><span class="lnum"> 16: </span> }</pre><pre class="alt"><span class="lnum"> 17: </span>&#0160;</pre><pre><span class="lnum"> 18: </span> <span class="kwrd">private</span> Customer()</pre><pre class="alt"><span class="lnum"> 19: </span> {</pre><pre><span class="lnum"> 20: </span> }</pre><pre class="alt"><span class="lnum"> 21: </span>}</pre></div>
<p></p>
<p>As you can see, this is a lot less code and it performs the same amount of functionality as the code listed above. The code at line 10 makes a call to a base class GetProperty method. This method internally makes a call to CanReadProperty just as above. The code at line 14 makes a call to SetProperty. This methon internally makes a call to CanWriteProperty and PropertyHasChanged respectively.</p>
<p>Although the latter implementation requires less code and is less error prone, it is still very verbose and it requires a lot of typing. Since declaring properties is what a business object developer does a lot of, I decided that a code template would be great to implement. I am a huge fan of <a href="http://devexpress.com/Products/Visual_Studio_Add-in/Coding_Assistance/">CodeRush</a> and <a href="http://devexpress.com/Products/Visual_Studio_Add-in/Refactoring/">Refactor</a> as I have been using those productivity tools for a while now. I decided to write a <a href="http://tv.devexpress.com/CodeRushAdvancedTemplates.movie">custom CodeRush template</a> for declaring properties in CSLA. </p>
<p>Creating a field, or in this case, registering a property on a class, only requires a user to type RP (<span style="text-decoration: underline">R</span>egister <span style="text-decoration: underline">P</span>roperty), followed by the type and name of the property. Creating a property only requires a user to type DRP (<span style="text-decoration: underline">D</span>eclare <span style="text-decoration: underline">R</span>egistered <span style="text-decoration: underline">P</span>roperty), followed by the type and name of the property. </p>
<p>I demonstrate their use in the video below. [NOTE: In the video, I make reference to generics when I really meant nullable types. I was obviously on something.].</p>
<p></p>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" height="293" id="viddler_6fa01e5c" width="437"><param name="_cx" value="11562" /><param name="_cy" value="7752" /><param name="FlashVars" value="" /><param name="Movie" value="http://www.viddler.com/simple/6fa01e5c/" /><param name="Src" value="http://www.viddler.com/simple/6fa01e5c/" /><param name="WMode" value="Window" /><param name="Play" value="-1" /><param name="Loop" value="-1" /><param name="Quality" value="High" /><param name="SAlign" value="LT" /><param name="Menu" value="-1" /><param name="Base" value="" /><param name="AllowScriptAccess" value="always" /><param name="Scale" value="ShowAll" /><param name="DeviceFont" value="0" /><param name="EmbedMovie" value="0" /><param name="BGColor" value="" /><param name="SWRemote" value="" /><param name="MovieData" value="" /><param name="SeamlessTabbing" value="1" /><param name="Profile" value="0" /><param name="ProfileAddress" value="" /><param name="ProfilePort" value="0" /><param name="AllowNetworking" value="all" /><param name="AllowFullScreen" value="true" />
<embed allowfullscreen="true" allowscriptaccess="always" height="293" name="viddler_6fa01e5c" src="http://www.viddler.com/simple/6fa01e5c/" type="application/x-shockwave-flash" width="437" /></object>
<p></p>
<p>If you use CodeRush and you would like to install these templates, I outlined the steps below.</p>
<ol>
<li>Download the attached xml file 
<li>Open Visual Studio 
<li>Browse to DevExpress -&gt; Options 
<li>On the left hand, find Editor -&gt; Templates 
<li>Create a folder called Custom Templates if it is not already created 
<li>
<ol>
<li>Right-click on the folder structure and click New Root Category... 
<li>Name the folder Custom Templates </li>
</li></ol>
<li>Import attached template (xml file) 
<li>
<ol>
<li>Right click on Custom Templates and click Import Templates... </li>
</ol>
</li>
</li></li></li></li></li></li></li></ol>
<p>You will now be able to use the RP and DRP custom templates as shown above. You may need to restart Visual Studio for these templates to take effect.</p>
<p>There are also <a href="http://www.codesmithtools.com/">Codesmith</a> templates available if you would rather use Codesmith templates as there are a lot of these available for CSLA. You can check the templates out <a href="http://www.codesmithtools.com/generate-csla-code-with-templates.aspx">here</a>.</p>
<p><span class="asset asset-generic at-xid-6a00d83420db0253ef012875f5b40f970c"><a href="http://wrightings.typepad.com/files/csharp_custom-templates_csla-3.0.xml">Download CodeRush Template (XML file)</a></span></p>
<p><span class="asset asset-generic at-xid-6a00d83420db0253ef012875f5b40f970c"><span class="asset asset-generic at-xid-6a00d83420db0253ef012875fd284d970c"><a href="http://wrightings.typepad.com/files/csharp_custom-templates_csla-3.0-1.xml">Download CodeRush Template Version 2 (see update above) (XML file)</a></span></span></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/wrightin_gs?a=fTWSiETVK9k:bYl1hT061a8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/wrightin_gs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/wrightin_gs?a=fTWSiETVK9k:bYl1hT061a8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/wrightin_gs?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/wrightin_gs/~4/fTWSiETVK9k" height="1" width="1"/>]]></content:encoded>


<dc:subject>.NET</dc:subject>

<dc:creator>jwright</dc:creator>
<dc:date>2009-12-01T09:41:03-05:00</dc:date>
<feedburner:origLink>http://www.wrightin.gs/2009/11/coderush-template-for-csla-properties.html</feedburner:origLink></item>
<item rdf:about="http://www.wrightin.gs/2009/07/nerd-crib.html">
<title>Nerd Crib</title>
<link>http://feedproxy.google.com/~r/wrightin_gs/~3/sgP3bcsi5Fo/nerd-crib.html</link>
<description>I wanted to test out the video on my iPhone 3GS when I got it and so here is a quick tour of my nerd crib, a.k.a., my home office. Here are some of the items from the tour: Desktop...</description>
<content:encoded><![CDATA[<p>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="437" height="266" id="viddler_c108de30"><param name="movie" value="http://www.viddler.com/simple/c108de30/" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><embed src="http://www.viddler.com/simple/c108de30/" width="437" height="266" type="application/x-shockwave-flash" allowScriptAccess="always" allowFullScreen="true" name="viddler_c108de30"></embed></object>
</p><p>

I wanted to test out the video on my iPhone 3GS when I got it and so here is a quick tour of my nerd crib, a.k.a., my home office.</p><p>Here are some of the items from the tour:</p><p>Desktop Computer: <a href="http://www.apple.com/macpro/">Mac Pro</a></p><p>Laptop Computer: <a href="http://www.apple.com/macbookpro/">MacBook 13"</a></p><p>30" Monitor: <a href="http://accessories.us.dell.com/sna/products/Monitors/productdetail.aspx?c=us&amp;l=en&amp;s=dhs&amp;cs=19&amp;sku=222-7175">Dell 30" Flat Panel</a></p><p>(2) 20" Monitor: <a href="http://accessories.us.dell.com/sna/products/Displays/productdetail.aspx?c=us&amp;l=en&amp;s=dhs&amp;cs=19&amp;sku=320-7976">Dell 20" Flat Panel</a></p><p>Printer: <a href="http://www.epson.com/cgi-bin/Store/consumer/consDetail.jsp?BV_UseBVCookie=yes&amp;oid=63076679">Epson Workforce 600</a> </p><p>Keyboard: <a href="http://store.apple.com/us/product/MB110LL/A?fnode=MTY1NDA1Mg&amp;mco=NDE4NTQ3NQ">Apple Keyboard</a></p><p>Mouse: <a href="http://www.logitech.com/index.cfm/mice_pointers/mice/devices/130&amp;cl=us,en">Logitech MX Revolution</a></p><p>Speakers: <a href="http://www.bose.com/controller?url=/shop_online/speakers/computer_speakers/companion_3/index.jsp">Bose Companion 3</a> </p><p>Microphone: <a href="http://bluemic.com/bluebird/">Blue Bluebird</a> </p><p>External Drive: <a href="http://www.wdc.com/en/products/Products.asp?DriveID=606">Western Digital My Book Mac Edition</a> </p><p>USB Hub: <a href="http://catalog.belkin.com/IWCatProductPage.process?Product_Id=357387">Belkin USB Hub</a> </p><p>Label maker: <a href="http://www.brother-usa.com/Ptouch/ModelDetail.aspx?ProductID=PT1880">Brother P-Touch</a> </p><p>Laptop stand: <a href="http://www.raindesigninc.com/mstand.html">Rain Design mStand</a> </p><p>Desks: <a href="http://www.roomandboard.com/rnb/product/detail.do?productGroup=19581&amp;category=rm_workspaces&amp;subcategory=desk_worktable">Room and Board Parsons Workdesk</a> </p><p>Chair: <a href="http://www.hermanmiller.com/Products/Aeron-Chairs">Herman Miller Aeron</a> </p><p>Wall Cabinet: <a href="http://www.ikea.com/us/en/catalog/products/40134050">IKEA BESTA</a> </p><p>LED lights: <a href="http://www.ikea.com/us/en/catalog/products/50119407">IKEA DIODER</a> </p><p>Mini-refrigerator: <a href="http://products.geappliances.com/ApplProducts/Dispatcher?REQUEST=SPECPAGE&amp;SKU=GMR06AAPBB&amp;SITEID=GEA">GE Spacemaker Compact</a> </p><p>City Photography Picture: <a href="http://www.ikea.com/us/en/catalog/products/20114901">IKEA PREMIAR (by Angelo Cavalli)</a> </p><p>Fake plant thingy: <a href="http://www.ikea.com/us/en/catalog/products/70067997">IKEA KARENS Vase</a> +&nbsp; <a href="http://www.ikea.com/us/en/catalog/products/80079443">IKEA TORKA</a> </p><p>Laptop bag: <a href="http://www.timbuk2.com/tb2/products/bagbuilder/custom-laptop-messenger">Timbuk2 Small Messenger</a> </p><p>Skateboard Art Book: <a href="http://www.disposablethebook.com/">Disposable : A History of Skateboard Art</a> </p><p>Web Designers Idea Book: <a href="http://www.amazon.com/Web-Designers-Idea-Book-Ultimate/dp/1600610641">Web Designers IDEA Book</a> </p><p>Dynamic HTML book: <a href="http://oreilly.com/catalog/9780596527402/">O'Reilly Dynamic HTML</a> </p><p>Best drink in America: <a href="http://www.redbull.com/">Redbull</a></p><p></p><p>Do you want your nerd crib featured? <a href="mailto:jwright@wrightin.gs">Let me know</a>, I would be happy to come by and talk nerd with you. If you have already toured your nerd crib, link it up on the comments.</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/wrightin_gs?a=sgP3bcsi5Fo:sEZGuIwFzLI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/wrightin_gs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/wrightin_gs?a=sgP3bcsi5Fo:sEZGuIwFzLI:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/wrightin_gs?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/wrightin_gs/~4/sgP3bcsi5Fo" height="1" width="1"/>]]></content:encoded>


<dc:subject>Nerd Crib</dc:subject>
<dc:subject>Personal</dc:subject>

<dc:creator>jwright</dc:creator>
<dc:date>2009-07-01T23:22:07-04:00</dc:date>
<feedburner:origLink>http://www.wrightin.gs/2009/07/nerd-crib.html</feedburner:origLink></item>
<item rdf:about="http://www.wrightin.gs/2009/06/social-media-breakfast-thoughts.html">
<title>Social Media Breakfast Thoughts</title>
<link>http://feedproxy.google.com/~r/wrightin_gs/~3/7Nly4Xbgh6g/social-media-breakfast-thoughts.html</link>
<description>I recently attended the Social Media Breakfast Toledo meeting on the morning of Friday, June 5th. The Social Media Breakfast is a national group. The local Toledo group holds monthly events that consist of 45 minutes of networking time, a...</description>
<content:encoded><![CDATA[<p>I recently attended the <a href="http://www.socialmediabreakfast.com/category/smb-toledo/">Social Media Breakfast Toledo</a> meeting on the morning of Friday, June 5th. The Social Media Breakfast is a national group. The local Toledo group holds monthly events that consist of 45 minutes of networking time, a half hour talk, and fifteen minutes of Q &amp; A. The topic for this particular day was the &quot;<a href="http://daverigotti.com/dos-and-donts-of-business-blogging">Do&#39;s and Dont&#39;s of Business Blogging</a>&quot; by <a href="http://daverigotti.com/">Dave Rigotti</a>.</p><p>I have to admit that I expected a lot from this session since it does require a payment of $15 to attend. I think that is a lot to pay for a half hour talk, especially when I am used to attending <a href="http://dayofdotnet.org/">excellent programming conferences for free</a>. Even though I expected a lot, I was a little skeptical. I&#39;m always skeptical with &quot;social media&quot; events. I knew that the networking would be worth the price of admission though and I was right as I met some great people (<a href="http://twitter.com/mikebrice">@mikebrice</a>, <a href="http://twitter.com/scottradcliff">@scottradcliff</a>, <a href="http://twitter.com/8thLopez">@8thLopez</a>, <a href="http://twitter.com/7son75">@7son75</a>, <a href="http://twitter.com/kfish29">@kfish29</a>).</p><p>After the talk by Dave Rigotti was over, my suspicions were correct, I was afraid. The talk was good, well prepared, and well presented. My issue was with the content. The content was accurate and very clear but my issue was that it was focused on the HOW of blogging instead of the WHY. I thought that the audience would of benefited more from a talk on the why rather then the how. The how can be found on the internet within a few hours of some searches. </p><p>At one point, someone asked, &quot;If my company started blogging, what should I expect my ROI to be?&quot;. It was at this point that I was sure some of the audience members did not grasp why blogging was important and could of benefited more from a talk on why you should be blogging. Dave answered this question well but it was very political in my opinion. I don&#39;t think that got the point across to the person that asked the question. That person needed to be told that hustle gives you return on investment. Don&#39;t expect more customers cause you put out a 300 word blog post one afternoon. You need to put a lot of work into the post, create great content, and listen to the feedback and respond to your audience. I think that there should of been at least 10 minutes of time spent to answer that question. The answer should not of been &quot;it depends&quot;. </p><p>I feel a lot of companies, especially local companies, do not get the reason why they blog. I think they just do it because they see their competitors doing it. Dave gave some great case studies of blogs that work. He gave the examples of <a href="http://www.freshbooks.com/blog/">Freshbooks</a> and <a href="http://www.37signals.com/svn">37 Signals</a>, both of which I have been following for a long time. His points about why these companies have great blogs was a little misleading in my opinion though. He gave examples about layout and other extraneous reasons on why the blog is great. The only reason I follow their blogs is not because of their layout, or anything else on their physical site (I just get their content via RSS). I follow them because of their content. They have excellent content which showcases their beliefs and their work. Dave did touch a bit on their content but I think it should of been the focus of the case studies. Your content showcases your company beliefs, what is important to you, and what type of customers you want to serve. If you agree with your vendor views, you will likely turn into customers.</p><p>I hope that the SMB Toledo gives us attendees a little more advanced topics for future events for our money. I think this event was well prepared for but I feel it was a starter topic and I was expecting something more advanced. I would like to see more opinionated topics covered. I would like to hear from people who have strong opinions on various topics. I find the opinioned talks are a lot more engaging, even if I don&#39;t agree with the speakers.</p><p>Dave will be joining Microsoft on the <a href="http://bing.com">Bing</a> team in the near future. With the recent success that the Bing search engine has been having, I look forward to hearing what he has to say about Microsoft and the service in the future. It&#39;s going to be hard work when you are a competitor to Google.</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/wrightin_gs?a=7Nly4Xbgh6g:dlFZ8P34j8c:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/wrightin_gs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/wrightin_gs?a=7Nly4Xbgh6g:dlFZ8P34j8c:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/wrightin_gs?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/wrightin_gs/~4/7Nly4Xbgh6g" height="1" width="1"/>]]></content:encoded>


<dc:subject>Current Affairs</dc:subject>
<dc:subject>Web/Tech</dc:subject>

<dc:creator>jwright</dc:creator>
<dc:date>2009-06-07T20:27:06-04:00</dc:date>
<feedburner:origLink>http://www.wrightin.gs/2009/06/social-media-breakfast-thoughts.html</feedburner:origLink></item>
<item rdf:about="http://www.wrightin.gs/2009/05/demo-code-from-nwnug-may-19th-meeting.html">
<title>Demo Code from NWNUG May 19th Meeting</title>
<link>http://feedproxy.google.com/~r/wrightin_gs/~3/mvCtxXUbGV0/demo-code-from-nwnug-may-19th-meeting.html</link>
<description>Last Tuesday, I presented on jQuery at the Northwest Ohio .NET User Group meeting. There was a large turnout (more then usual) due to some people Tweeting about the meeting and that was a very good surprise. I have attached...</description>
<content:encoded><![CDATA[<p>Last Tuesday, I presented on <a href="http://jquery.com">jQuery</a> at the <a href="http://www.nwnug.com">Northwest Ohio .NET User Group</a> meeting. There was a large turnout (more then usual) due to some people Tweeting about the meeting and that was a very good surprise.</p><p>I have attached the sides and demo application from the meeting at the bottom of the post. If anyone who attended has any questions from the demonstration or if you did not attend and want to know more about jQuery, please hit me up at jamie AT brilliantfantastic DOT com. If you just want to talk or get in touch, you can email me as well or @reply me on Twitter at <a href="http://twitter.com/jwright">@jwright</a>.</p><p><span class="at-xid-6a00d83420db0253ef01156fb00573970c"><a href="http://wrightings.typepad.com/files/jquery-nwnug.pdf">Download Slides [PDF]</a></span><br /><span class="at-xid-6a00d83420db0253ef01156fb005bd970c"><a href="http://wrightings.typepad.com/files/nwnug.zip">Download Demo Code [ZIP]</a></span></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/wrightin_gs?a=mvCtxXUbGV0:SNCji7-eLLw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/wrightin_gs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/wrightin_gs?a=mvCtxXUbGV0:SNCji7-eLLw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/wrightin_gs?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/wrightin_gs/~4/mvCtxXUbGV0" height="1" width="1"/>]]></content:encoded>



<dc:creator>jwright</dc:creator>
<dc:date>2009-05-25T15:41:06-04:00</dc:date>
<feedburner:origLink>http://www.wrightin.gs/2009/05/demo-code-from-nwnug-may-19th-meeting.html</feedburner:origLink></item>
<item rdf:about="http://www.wrightin.gs/2009/04/demo-code-from-west-michigan-net-university.html">
<title>Demo Code from West Michigan .NET University</title>
<link>http://feedproxy.google.com/~r/wrightin_gs/~3/P0qkekMHpeQ/demo-code-from-west-michigan-net-university.html</link>
<description>[Update: Added backup of database below that is needed to run the application.] Last Saturday, I drove up to Grand Rapids, Michigan and spoke on "Intermediate Web Development" with Cary Payette. This was a one day event put on by...</description>
<content:encoded><![CDATA[<p>[Update: Added backup of database below that is needed to run the application.]</p>
<p>Last Saturday, I drove up to Grand Rapids, Michigan and spoke on &quot;Intermediate Web Development&quot; with <a href="http://codingbandit.com/">Cary Payette</a>. This was a&#0160;one day event&#0160;put on by <a href="http://cloudsocket.com/">Chris Woodruff</a> and others from the <a href="http://www.wmdotnet.org/">West Michigan .NET Users group</a> and they did a fantastical job. They did a lot of work and I heard great comments from a bunch of attendees. </p>
<p>The event was geared towards students and people who did not have a lot of experience with .NET in general. I think the event was effective and we may have added some head count to our community as a result.</p>
<p>I have attached the code for our demo applications from the event. There are three projects contained within the zip file. There is one each for the ASP.NET Web Forms demo, the jquery demo, and the ASP.NET MVC demo. A lot of people asked me for the code from the jquery demo and you can find it attached. It is a web application that embeds html and jquery code that the user enters and then allows you to run the jquery script against the html. It is an excellent way to test your jquery.</p>
<p>Feel free to contact me at jamie AT brilliantfantastic DOT com if you have any issues or questions.</p>
<p>See everyone at the Central Ohio Day of .NET....</p>
<p><a href="http://wrightings.typepad.com/files/west-michigan-.net-university-1.zip"><span class="at-xid-6a00d83420db0253ef01156ffdaf31970b">Download West Michigan .NET University Demo Code</span></a> </p>
<p><span class="at-xid-6a00d83420db0253ef0120a4dc7493970b"><a href="http://wrightings.typepad.com/files/benjamins.bak">Download Database Backup file</a></span></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/wrightin_gs?a=P0qkekMHpeQ:uBhrqjTAcCg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/wrightin_gs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/wrightin_gs?a=P0qkekMHpeQ:uBhrqjTAcCg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/wrightin_gs?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/wrightin_gs/~4/P0qkekMHpeQ" height="1" width="1"/>]]></content:encoded>


<dc:subject>.NET</dc:subject>

<dc:creator>jwright</dc:creator>
<dc:date>2009-04-07T14:10:48-04:00</dc:date>
<feedburner:origLink>http://www.wrightin.gs/2009/04/demo-code-from-west-michigan-net-university.html</feedburner:origLink></item>
<item rdf:about="http://www.wrightin.gs/2009/03/hp-2710-tablet-for-sale.html">
<title>HP 2710 Tablet for Sale</title>
<link>http://feedproxy.google.com/~r/wrightin_gs/~3/GgheojjM_pM/hp-2710-tablet-for-sale.html</link>
<description>I have recently moved to a MacBook and I am putting my tablet up for sale. I am putting it here on my blog first and then if I don't have enough interest, I am putting it up on eBay....</description>
<content:encoded><![CDATA[<p>I have recently moved to a MacBook and I am putting my tablet up for sale. I am putting it here on my blog first and then if I don&#39;t have enough interest, I am putting it up on eBay.</p><p>I have recorded a video so you can see what it looks like:</p>
<p>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" height="348" id="viddler_ce40bd7c" width="437"><param name="wmode" value="transparent" /><param name="movie" value="http://www.viddler.com/simple/ce40bd7c/" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><embed allowfullscreen="true" allowscriptaccess="always" height="348" name="viddler_ce40bd7c" src="http://www.viddler.com/simple/ce40bd7c/" type="application/x-shockwave-flash" width="437" wmode="transparent" /></object>
</p>
<p>The specs are the following:</p><p>Core 2 Duo 1.33<br />4G Ram<br />64G SSD drive<br />Built in Sprint EVDO<br />Keyboard light<br />Slice Battery<br />Docking Station with DVD burner<br />1 standard powerpack<br />1 travel powerpack with airplane adapters<br /><a href="http://www.sfbags.com/products/sleevecases/sleevecases.htm" target="_blank">Waterfield custom bag with shoulder strap</a><br />Windows Vista 32 bit</p><p>It has been very well taken care of and I will miss it. The reason I am selling it is because I am giving up on Windows and only using Windows when I need to.</p><p>This has been my exclusive development machine for the past couple months or so, so it is very capable.</p><p>I am asking $1900 and you can use PayPal (i.e. Debit or Credit Card for payment).</p><p>You can email me at jwright AT wrightin DOT gs or jamie AT brilliantfantastic DOT com for questions or your interest.</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/wrightin_gs?a=GgheojjM_pM:o1ZcQtLDBT4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/wrightin_gs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/wrightin_gs?a=GgheojjM_pM:o1ZcQtLDBT4:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/wrightin_gs?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/wrightin_gs/~4/GgheojjM_pM" height="1" width="1"/>]]></content:encoded>


<dc:subject>Personal</dc:subject>
<dc:subject>Tablet PCs</dc:subject>

<dc:creator>jwright</dc:creator>
<dc:date>2009-03-28T14:46:57-04:00</dc:date>
<feedburner:origLink>http://www.wrightin.gs/2009/03/hp-2710-tablet-for-sale.html</feedburner:origLink></item>
<item rdf:about="http://www.wrightin.gs/2009/02/issues-with-linq-2-sql-designers.html">
<title>Issues with Linq 2 SQL Designers [Video]</title>
<link>http://feedproxy.google.com/~r/wrightin_gs/~3/hAGhiQW8-zc/issues-with-linq-2-sql-designers.html</link>
<description>On a recent project, we are using Linq 2 SQL. I love Linq and Linq 2 SQL is pretty RAD as well. The problem is the designer. It sucks. Great idea, just poorly implemented. We have run into some issues...</description>
<content:encoded><![CDATA[<p>On a recent project, we are using Linq 2 SQL. I love Linq and Linq 2 SQL is pretty RAD as well. The problem is the designer. It sucks. Great idea, just poorly implemented.</p><br />
<p>We have run into some issues with using the designer that are very frusterating and through some digging and searching, we have come up with some ways around these issues. I wanted to share these with you to save you the time that I have already wasted.</p>
<p>The issues that we got around and I demonstrate are:</p>
<ol>
<li>Regeneration of the Linq 2 SQL designer code everytime causes the code you have placed in there to disappear. 
<li>
<p>Loss of the designer file when using statements are used within the .cs file.</p></li>
</li></ol>
<p>Take a gander of this video which demostrates some of these work arounds. You may want to use full screen mode to view the code easily.</p>
<p>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" height="370" id="viddler" width="437"><param name="_cx" value="11562" /><param name="_cy" value="9790" /><param name="FlashVars" value="" /><param name="Movie" value="http://www.viddler.com/player/44dca2d/3.099/" /><param name="Src" value="http://www.viddler.com/player/44dca2d/3.099/" /><param name="WMode" value="Transparent" /><param name="Play" value="-1" /><param name="Loop" value="-1" /><param name="Quality" value="High" /><param name="SAlign" value="" /><param name="Menu" value="-1" /><param name="Base" value="" /><param name="AllowScriptAccess" value="always" /><param name="Scale" value="ShowAll" /><param name="DeviceFont" value="0" /><param name="EmbedMovie" value="0" /><param name="BGColor" value="" /><param name="SWRemote" value="" /><param name="MovieData" value="" /><param name="SeamlessTabbing" value="1" /><param name="Profile" value="0" /><param name="ProfileAddress" value="" /><param name="ProfilePort" value="0" /><param name="AllowNetworking" value="all" /><param name="AllowFullScreen" value="true" />
<embed allowfullscreen="true" allowscriptaccess="always" height="370" name="viddler" src="http://www.viddler.com/player/44dca2d/3.099/" type="application/x-shockwave-flash" width="437" wmode="transparent" /></object></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/wrightin_gs?a=hAGhiQW8-zc:ywfUC-QAldk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/wrightin_gs?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/wrightin_gs?a=hAGhiQW8-zc:ywfUC-QAldk:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/wrightin_gs?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/wrightin_gs/~4/hAGhiQW8-zc" height="1" width="1"/>]]></content:encoded>


<dc:subject>.NET</dc:subject>

<dc:creator>jwright</dc:creator>
<dc:date>2009-02-20T00:15:50-05:00</dc:date>
<feedburner:origLink>http://www.wrightin.gs/2009/02/issues-with-linq-2-sql-designers.html</feedburner:origLink></item>


</rdf:RDF><!-- ph=1 --><!-- nhm:dynamic-ssi -->
