<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Mike Christensen: Web Dev Guy</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/mikechr/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/mikechr/feed.xml</link>
    <description>Web Application development on the ASP.NET Framework</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:23:11 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Castle ActiveRecord</title>
      <link>https://docs.microsoft.com/archive/blogs/mikechr/castle-activerecord</link>
      <pubDate>Tue, 18 Mar 2008 03:07:00 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mikechr/2008/03/18/castle-activerecord/</guid>
      <description><![CDATA[Lately, I’ve been playing around with Castle ActiveRecord tolearn about this particular...]]></description>
      <content:encoded><![CDATA[<!--StartFragment--><p class="MsoNormal">Lately, I’ve been playing around with Castle ActiveRecord tolearn about this particular technology.<span style="mso-spacerun: yes"> </span>For those of you who are unaware, Castle ActiveRecord is an open sourceimplementation of the ActiveRecord pattern written in .NET and built onNHibernate.</p><p class="MsoNormal">The ActiveRecord pattern represents rows in a table asinstances of a class (with column values as instance methods) while providingaccess to the table itself as static methods of the class.</p><p class="MsoNormal">For example, a database table named Users might berepresented by a class called User.<span style="mso-spacerun: yes"> </span>The User class would have a static method called FindRow which takes ina numeric value corresponding to the primary key of that table.<span style="mso-spacerun: yes">  </span>User.FindRow(5) would return aninstance of a User object, which would have various properties such as Name.</p><p class="MsoNormal">The benefit of this is it allows developers to access andmanipulate data in a database while providing a layer of abstraction from theactual database syntax.<span style="mso-spacerun: yes">  </span>This codecan be database agnostic and hide the user from SQL queries and what not.<span style="mso-spacerun: yes">  </span>It also allows simplifying databasecode and being able to perform basic database operations in one or two lines ofcode.</p><p class="MsoNormal">One of the benefits of Castle ActiveRecord is you can defineyour entire database schema using .NET code and even have the engine create thedatabase for you.<span style="mso-spacerun: yes">  </span>For example, tocreate a User table, we could use the following code:</p><p class="MsoNormal"> </p><p class="MsoNormal"><o:p> </o:p></p><p class="MsoNormal">[ActiveRecord(“Users”)]</p><p class="MsoNormal">public class User : ActiveRecordBase&lt;User&gt;</p><p class="MsoNormal">{</p><p class="MsoNormal">string name;</p><p class="MsoNormal">[Property(NotNull = true)]</p><p class="MsoNormal">public string Name {get {return name;} set {name = value;}}</p><p class="MsoNormal">}</p><p class="MsoNormal"> </p><p class="MsoNormal"><o:p> </o:p></p><p class="MsoNormal">Using various attributes, you can specify database typemappings, primary keys, foreign constraints, indexes, etc.<span style="mso-spacerun: yes">  </span>When you’re done, you can instructActiveRecord to create the database using a given connection string.</p><p class="MsoNormal">We can now create a row in this table with the followingcode:</p><p class="MsoNormal">User user = new User();</p><p class="MsoNormal">user.Name = “Mike”;</p><p class="MsoNormal">user.Create();</p><p class="MsoNormal"><o:p> </o:p></p><p class="MsoNormal">This eliminates the need to use ADO.NET or construct SQLstatements or stored procedure calls.</p><p class="MsoNormal">One interesting thing you can do is specify the relationsbetween tables.<span style="mso-spacerun: yes">  </span>If I had an Ordertable, I can specify a User that placed the order:</p><p class="MsoNormal"> </p><p class="MsoNormal">Public class Order</p><p class="MsoNormal">{</p><p class="MsoNormal">….</p><p class="MsoNormal"><o:p> </o:p></p><p class="MsoNormal">[BelongsTo(“Name”, NotNull = true)]</p><p class="MsoNormal">public User PlacedBy {get {return _placedby;}}</p><p class="MsoNormal"> </p><p class="MsoNormal">You’ll notice this method actually returns a User object, notjust an int or a guid or what not.<span style="mso-spacerun: yes"> </span>When an Order row is queried, Castle ActiveRecord joins in the Userstable and also populates the PlacedBy instance of the order.<span style="mso-spacerun: yes">  </span>You can enable a feature called “lazyloading” which will not query the Users table until the property getter isaccessed.<span style="mso-spacerun: yes">  </span>This would prevent thegeneration of queries with lots of joins.</p><p class="MsoNormal">So far, I’ve found Castle ActiveRecord to do a great jobhandling simple database operations for me, however it definitely has itsdrawbacks.<span style="mso-spacerun: yes">  </span>I’ve found it lackingin creating any sort of complicated database schema, as it doesn’t seem to beable to create indexes on foreign keys or allow the user to specify clusteredvs non-clustered indexes.<span style="mso-spacerun: yes">  </span>However,it can also generate a SQL script to create your database and output to a fileso you can make changes before provisioning your database.<span style="mso-spacerun: yes">  </span>For more complicated scenarios, I wouldnot use Castle ActiveRecord for database provisioning.</p><p class="MsoNormal">There were a few instances where I wanted to be able toreturn only certain columns from the database and control exactly what tablesget join’ed in.<span style="mso-spacerun: yes">  </span>It seems CastleActiveRecord wants to return all columns all the time, or no columns and generate new SELECTstatements every time you access a property.<span style="mso-spacerun:yes">  </span>It would be nice if we could simply specify what columns wewant to query for, and the remaining properties would remain null.<span style="mso-spacerun: yes">  </span>For these scenarios, CastleActiveRecord can create an IDbCommand and you can fire off your own storedprocedure or SQL statement.<span style="mso-spacerun: yes">  </span>I’vefound using a mix of regular ADO.NET and ActiveRecord calls for the simplerstuff is a great approach for more complicated applications.  The ActiveRecord base class also allows you to override various methods, and pretty much any part of the system can be rewritten.</p><p class="MsoNormal">One thing that has disappointed me is it seems support fortransactions is completely broken!<span style="mso-spacerun: yes"> </span>I can create a transaction like so:</p><p class="MsoNormal"> </p><p class="MsoNormal">using(TransactionScope t = new TransactionScope())</p><p class="MsoNormal">{</p><p class="MsoNormal">//Do some DB calls</p><p class="MsoNormal">t.VoteCommit();</p><p class="MsoNormal"><o:p> </o:p></p><p class="MsoNormal">}</p><p class="MsoNormal"> </p><p class="MsoNormal">In theory, if the code crashes, the transaction will neverbe committed and the Dispose method of TransactionScope will roll thetransaction back.<span style="mso-spacerun: yes">  </span>However, when Itried this, I found the SQL code isn’t getting run and no SQL errors would begenerated until the Transaction is disposed, thus making it impossible to rollback the transaction due to database errors.<span style="mso-spacerun: yes">  </span>On thesupport forums, I found several other people who ran into this problem but noone had a solution for it yet.</p><p class="MsoNormal">Overall, I think this technology is a great model for dataaccess using .NET applications and works perfectly for web applications aswell.<span style="mso-spacerun: yes">  </span>It seems they need to ironout a few minor problems, but they have a large following and an active supportcommunity.<span style="mso-spacerun: yes">  </span>It’s also open sourcewith a very flexible license, which would allow large applications to run ontheir own customized version of Castle ActiveRecord.<span style="mso-spacerun:yes">  </span>I think the pattern is very solid and at the very least,should give you some ideas for creating a database access layer from scratch for yourweb based applications.<span style="mso-spacerun: yes">  </span>I’d bevery interested in hearing from anyone using Castle ActiveRecord in theirapplications and what they like and don’t like about it.</p><p class="MsoNormal">For more information, visit: <a href="http://www.castleproject.org/activerecord/index.html">http://www.castleproject.org/activerecord/index.html</a></p><p class="MsoNormal">Mike</p><!--EndFragment-->]]></content:encoded>
    </item>
    <item>
      <title>Lowes</title>
      <link>https://docs.microsoft.com/archive/blogs/mikechr/lowes</link>
      <pubDate>Thu, 24 May 2007 17:56:00 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mikechr/2007/05/24/lowes/</guid>
      <description><![CDATA[I don't really know why I bother buying anything from Lowes anymore.&nbsp; They don't actually...]]></description>
      <content:encoded><![CDATA[<P>I don't really know why I bother buying anything from Lowes anymore.&nbsp; They don't actually install anything they sell.&nbsp; First, I buy a new Bosch tankless water heater.&nbsp; I did all the research online and found the exact unit I wanted, and Lowes had the best price.&nbsp; I purchase the unit and take it home.&nbsp; First, I call the water heater people who I've worked with before to ask if they'll install it.&nbsp; Of course not, they will only install a unit if you buy it from them.&nbsp; I call several other companies and get the same story from them.&nbsp; So I call Lowes back and ask them to please install the water heater they sold me.&nbsp; After being transferred about 900 times, I finally reach the plumbing dept.&nbsp; The guy says he'll find out if they can install it and call me back.&nbsp; A few minutes later I get a call back, and he says no, they won't install tankless water heaters and no, he doesn't know anyone who will.&nbsp; Mind you, on Lowes.com every page has links to "find out about in-home installation on this product".&nbsp; Why does Lowes sell a product they don't even install, or even know anyone who will install?&nbsp; Next, I try ServiceMagic.com - they'll find people to do anything.&nbsp; Within minutes, I have a plumber who says he'll install it and he'll be at my house in 30 minutes.&nbsp; I leave work early and head out to meet him.&nbsp; He looks at the unit like a cat looking at a UFO.&nbsp; He has to call several of his plumber friends to ask what type of venting he needs and how to install this thing.&nbsp; About 45 minutes later, after telling me how much he doesn't like the unit I bought, he gives me a quote for $1600 to install it.&nbsp; Mind you, the first company I called wanted $1800 for the unit&nbsp;<EM>and</EM> installation, and it was a way better unit than the one I bought.&nbsp; So the thing went back to the store, at least Lowes does refunds.</P>
<P>Next, I buy a Fisher &amp; Paykel drawer dishwasher from them.&nbsp; They charge me $129 for installation.&nbsp; A few days later, I get a call from their installers asking me questions such as why type of pressure release valve I have and if I have a GFCI outlet.&nbsp; They claim there will be all sorts of additional charges if they need to install a new outlet and they usually do a pre-inspection before installing these dishwashers.&nbsp; The dishwasher shows up today and the installer, as he's into the kitchen, says, "No, this won't work."&nbsp; These units don't work with a Johnson T-valve and none of the existing plumbing will work.&nbsp; Will they&nbsp;fix it?&nbsp; No, they don't do that work - I have to hire a plumber.&nbsp; If I'm going to hire a plumber, he might as well do the installation as well.&nbsp; He says these dishwashers basically don't work with any standard plumbing and it has to be setup in advance to handle this dishwasher.&nbsp; So basically Lowes will install the dishwasher for $129&nbsp;<EM>if</EM> for some ungodly reason your dishwasher hookups are <EM>exactly</EM> what's required.&nbsp; I can now see why Fisher &amp; Paykel has a $129 installation rebate on their dishwasher, because they know no installer in this solar system&nbsp;is going to install it for that price, and the only people who will buy it are people who completely gutted their kitchen and are redoing all the plumbing, and those people already have a plumber anyway.</P>
<P>Sigh.</P>
<P>Mike</P>]]></content:encoded>
    </item>
    <item>
      <title>Writing a simple managed control under IE</title>
      <link>https://docs.microsoft.com/archive/blogs/mikechr/writing-a-simple-managed-control-under-ie</link>
      <pubDate>Tue, 28 Nov 2006 05:12:00 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mikechr/2006/11/28/writing-a-simple-managed-control-under-ie/</guid>
      <description><![CDATA[Most web developers are aware of various "controls" and "applets" that can be "hosted" by...]]></description>
      <content:encoded><![CDATA[<FONT face=Arial color=#808080 size=2>
<P>Most web developers are aware of various "controls" and "applets" that can be "hosted" by "Internet Explorer" (hmm, not sure why I quoted that last thing, I guess I was on a "roll".)&nbsp; This code is compiled code that runs within the IE process and draws itself within the boundaries of the document.&nbsp; The control even has access to the outside container.&nbsp; This is useful for doing all sorts of nifty stuff that might be hard to do using pure script or HTML, such as drawing graphs, animation, creating an interactive grid, creating a chat room, etc.&nbsp; Most of these controls are written in Java or COM (ActiveX).&nbsp; Java requires a special runtime that you have to download, and ActiveX requires your users to be running one of the many ActiveX compatible web browsers (There's tons!&nbsp; IE3..&nbsp; Umm, IE4..&nbsp; IE5..&nbsp; Oh yea, IE5.5..&nbsp; IE6, just to name a few)..&nbsp; However, what if you <I>really</I> want to keep users away from your site and write a control that requires them to download a special runtime ANNNNND only be able to use one browser.&nbsp; Well, then my friend you definitely need to write your own managed controls.</P>
<P>&nbsp;Only a hand full of web developers are aware that IE (recent versions, not sure which ones) can run managed code.&nbsp; Even less than a hand full (maybe a paw of a very small cat?) can actually tell you <I>how</I> to do this.&nbsp; Provided your users have the .NET framework installed (who doesn't?) there's a special syntax of the &lt;object&gt; tag that can instantiate a managed Winforms control.&nbsp; I found information on the Internet a little sparse on this subject so I decided to write a post describing exactly how to do this.&nbsp; Not that you should, as I'm sure I'll get 32,768 comments telling me that my apps are crap, proprietary and how that mentality somehow mirrors the exact attitude of Microsoft as a whole.&nbsp; Well, let me tell you something.&nbsp; This blog is dedicated to building web based applications, not web pages.&nbsp; Applications run on a certain platform.&nbsp; That platform might be Windows, that platform might be Mac, that platform might be the Java runtime.&nbsp; It might be a Commodore PET, a cell phone, a Zune, one of those old TI-85 graphing calculators, whatever.&nbsp; This platform can also be Internet Explorer.&nbsp; In fact, one of the reasons IE became so much more popular (especially within corporate networks) over say, Netscape, is it's an actual web application <I>platform</I> - not just a browser.&nbsp; Authors of applications can write applications for whatever platform they choose, based on&nbsp;its requirements as well as the users of said application.&nbsp; I might write an IE specific application for setting up direct deposit because my IT department has rolled out IE to everyone in my company.&nbsp; It's cost effective to target a single platform.&nbsp; There exists&nbsp;a certain spectrum; on one side you can scale to many different types of users but your development/test costs go way up and/or your feature set goes way down.&nbsp; On the other side, you can write a program once for a certain platform and&nbsp; target a very specific set of users.&nbsp; It's up to developers to figure out the best spot in that spectrum for their specific application.&nbsp; So enough of my rant, let's get back to the subject.</P>
<P mce_keep="true">First, let's create a managed DLL with a single class in it.&nbsp; Since I don't feel like writing a full fledged control, all this thing will do is pop up a message box.&nbsp; Or maybe I don't actually know how to program and this whole blog's a lie.&nbsp; However, you'll get the point - you can add more controls to the child controls collection, override all sorts of events, etc.</P></FONT><FONT size=2><BR>[assembly:System.Security.</FONT><FONT color=#008080 size=2>AllowPartiallyTrustedCallersAttribute</FONT><FONT size=2>] </FONT><FONT color=#0000ff size=2><BR>namespace</FONT><FONT size=2> HostedControlTest { <BR></FONT><FONT color=#0000ff size=2>&nbsp;&nbsp; public</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>class</FONT><FONT size=2> TestControl : Control <BR>&nbsp;&nbsp; { <BR></FONT><FONT color=#0000ff size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public</FONT><FONT size=2> TestControl() <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(</FONT><FONT color=#800000 size=2>"Hello World!"</FONT><FONT size=2>); <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <BR>&nbsp;&nbsp; } <BR>} </FONT><FONT face=Arial color=#808080 size=2>
<P mce_keep="true">Compile the DLL, upload it to your web server in a location that clients have access to reach.&nbsp; You can test this by typing in the URL for the DLL and make sure the IE "Save" dialog comes up and you can download your own DLL.&nbsp; You might have certain web server security restrictions (especially if it's a Sharepoint server) that prevent users from downloading DLL files.&nbsp; It doesn't matter what web server you're using, it doesn't matter if the web server knows anything about .NET.&nbsp; It's simply a binary file sitting up on a server somewhere and it's downloaded exactly how, say, a JPG file is downloaded.&nbsp; Also, I'm pretty sure you can even use another extension other than DLL.</P>
<P mce_keep="true">Once you have this working, create a new web page.&nbsp; On the page, place an object tag that looks something like:</P>
<P mce_keep="true">&lt;OBJECT classid="HostedControlTest.dll#HostedControlTest.TestControl"&gt;</P>
<P mce_keep="true">You can replace HostedControlTest.dll with any valid relative path to your DLL.&nbsp; After the pound sign (or, octothorpe as I like to say) is the class within the DLL to load.&nbsp; Note I fully qualify the path with the namespace as well.</P>
<P mce_keep="true">Load up your page through your web browser and the control should run and you should get a popup on your screen.&nbsp; No need to sign anything, no need to click "Yes" to any security warnings, etc.&nbsp; In fact, all security is taken care of for you by Code Access Security and is enforced by the runtime's security policy on your machine.&nbsp; Your control can request permissions (such as local file access) and it's up to the client's machine what it trusts the control to do.&nbsp; If a control all of a sudden tries to do something evil, the runtime will throw an exception.</P>
<P mce_keep="true">That's all there is to it.&nbsp; Don't ask me any questions because this is all I know!&nbsp; Seriously.&nbsp; Actually, feel free to ask me questions and I'm sure I can find out the answers for you.&nbsp; Thanks!</P>
<P mce_keep="true">Mike (Web Dev Guy)</P></FONT>]]></content:encoded>
    </item>
    <item>
      <title>Housing prices</title>
      <link>https://docs.microsoft.com/archive/blogs/mikechr/housing-prices</link>
      <pubDate>Mon, 11 Sep 2006 21:42:00 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mikechr/2006/09/11/housing-prices/</guid>
      <description><![CDATA[When I moved to the Seattle area over eight years ago, I knew I wanted to make this place my...]]></description>
      <content:encoded><![CDATA[<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Arial color=#808080 size=2>When I moved to the Seattle area over eight years ago, I knew I wanted to make this place my home.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Since it was clear my residence would be permanent, it seemed like a good idea to buy something rather than rent.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Back then, I found a nice condo for around $130,000 in the Redmond area.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>At a decent interest rate, a 30 year fixed rate mortgage with a 20% down payment was about $680/month.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>It was a no brainer!<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>I was paying almost $900/month for an apartment, and had I not moved they were increasing my rent to $1090.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>I could have a bigger place for cheaper, and build equity I could later use as a down payment on a house.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>I also owned the inside walls and could do stuff like remodel the kitchen, paint, install hardwood floors, etc.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Back then, the only reasons most people continued to rent were 1) they didn’t plan on being in the area very long or 2) they had lots of debt or credit problems preventing them from getting a home loan.</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Arial color=#808080 size=2>Now days, it’s much different.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>My condo is worth about $240,000 and it’s considered a pretty low end place.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Most of the condos in the Kirkland area are $300k-$400k, and if you want down town Seattle you’ll pay even more.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>With interest rates starting to climb back up, it’s harder to justify paying $2,000/month or more for a condo.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Gone are the days of using a condo as a “stepping stone” between an apartment and a house.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>The concept of “owning is cheaper than renting” is gone, which scares away most people – especially those who aren’t too concerned about their financial future.</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Arial color=#808080 size=2>It seems the solution to this over the past couple years has been to keep lowing the interest rates until people can afford houses.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>But has this just made the problem worse?<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Most people look at a house in terms of what it costs <I style="mso-bidi-font-style: normal">them</I> per month.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>I have x dollars per month that I can afford as a house payment.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>What does this buy me?<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>As interest rates drop, the value of the house that money can buy me goes up.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>This increases the buying power of the average potential home owner.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>With so many people moving into the area over the past few years and more buyers than sellers, this allows people to offer more money on a house and causes the market value of houses to go up.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>We’ve been seeing this for a few years now, and other states like California and New York are also no stranger to this.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>When the point comes where people are having a hard time affording a house, banks do stuff they’ve never done before.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>We have 40 and 50 year mortgages now.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>We have 1-year adjustable rate mortgages.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>We have interest only loans.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Banks do whatever it takes to lower your monthly payments to attract your business, all while housing prices continue to increase.</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Arial color=#808080 size=2>Those who cannot afford to buy a home have to rent.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Land lords have to raise rents to afford their mortgages, so rents are going up as well preventing people from saving any money.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>In San Diego, a lot of apartment owners are getting the idea to turn their cheap apartments into low cost condos.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>By low cost, I mean <I style="mso-bidi-font-style: normal">only</I> $400,000 or so.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>This lowers the availability of apartments thus driving the cost of other rental units up as well. <SPAN style="mso-spacerun: yes">&nbsp;</SPAN>This ends up pushing poorer people out of the area.</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Arial color=#808080 size=2>So what’s the effect?<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Those who can get their foot into to the real estate market continue to get richer while those who are forced to rent get further and further behind.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Is this creating a wider social gap between the rich and the middle class?<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>What can be done about this?<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Obviously, raising interest rates would be a problem.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>You don’t want the house you bought a year ago for $500k to all of a sudden only fetch you $300k because none of the potential buyers can afford that mortgage.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Is this simply capitalism at work and a normal aspect of our economy, or do all Americans have the right to be able to afford a house some day?</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Arial color=#808080 size=2>I was very lucky to “get in” to the housing game before all this non-sense started, and due to the appreciation of my condo I was able to make a nice 20% down payment on a home and have some extra money left over to invest.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>I think I made a good decision to buy something seven years ago, but what about those who are just starting their lives now?<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Some people push themselves to their financial limits to buy the cheapest possible shack and become “house poor”.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Yes, they have their house but they have to live off dry noodles every night for dinner.</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Arial color=#808080 size=2>I was talking to a real estate agent friend of mine and she said the majority of her clients buying their first homesare getting the down payments from their parents, or a family member.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Does this lead to a world where social status is inherited?</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Arial color=#808080 size=2>I’m very interested in any comments you guys have.</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Arial color=#808080 size=2>Mike</FONT></P>]]></content:encoded>
    </item>
    <item>
      <title>Housing adventures</title>
      <link>https://docs.microsoft.com/archive/blogs/mikechr/housing-adventures</link>
      <pubDate>Wed, 06 Sep 2006 17:45:00 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mikechr/2006/09/06/housing-adventures/</guid>
      <description><![CDATA[I must apologize for my recent lack of blogging, but I’ve been most busy attempting to become a home...]]></description>
      <content:encoded><![CDATA[<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT size=2><FONT face=Arial><FONT color=#808080>I must apologize for my recent lack of blogging, but I’ve been most busy attempting to become a home owner.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>This is a dream I’ve had for years now, but it was put on hold for a few years due to the most rediculous litigation surrounding my condo assocation.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>One day, the association realized they were in $9 million dollars in debt and this was a problem.<SPAN style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN>Due to this unfortunate financial circumstance, my monthly home owners dues went from $117 to $330.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Since the corporate charter said they could not increase the dues by more than 10% a year, they were immediately sued by all sorts of people.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>The prices of the condos in this complex plummeted and I was forced to stay unless I wanted to take a $20,000 loss.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>After a few years, the association eventually won all the lawsuits (really good lawyers?) and the prices are finally starting to get back up to the same level as other similar condos in the area.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></FONT></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT size=2><FONT face=Arial><FONT color=#808080>I decided to resume my dream of owning a house, however I became very interested in building it myself.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>That way, I could get it just the way I wanted and use high quality materials. <SPAN style="mso-spacerun: yes">&nbsp;&nbsp;</SPAN>I wanted something small and nice which is hard to find.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>So I started looking into building a house – the first step is, of course, to find land.<o:p></o:p></FONT></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Arial color=#808080 size=2>Now, there’s a difference between a piece of land and a “lot”.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Land is simply any piece of dirt someone is willing to sell you.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>This land might be on a slope, covered with brush, or be in some way totally unable to support any type of construction.<SPAN style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN>Of course, you don’t know until you actually do a feasibility study, which could costs thousands.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Lots would already be prepped and ready to build on.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>A lot is tough to find unless you want a microscopic little tenth of an acre parsel in the middle of some yuppyville housing community.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Land around here goes for around $120,000 for anything decent.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Figure another $80,000 for leveling, escavation, clearing, permits, environmental studies, bribing public officials, etc.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>So I figured I’d be looking at $200k before I could even start building anything.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>So I called about 6 real estate agents looking for someone who would help me buy land.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>None of them returned my phone calls.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>It seems about 60% of land deals fall through and no one wants to get in that business.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>In fact, the only people that build houses anymore are insanely rich people or major housing development corporations who build <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><st1:metricconverter w:st="on" ProductID=".1 acre">.1 acre</st1:metricconverter> lot yuppyville homes with the cheapest materials and give you a list of about 3 options to choose from.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>This is not my thing.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>So once you have the land, then what?<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Well, you can buy a manufactured home.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>This is by far the cheapest way to go.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>You get these homes from companies such as Hiline Homes (</FONT><A href="http://www.hilinehomes.com/"><FONT face=Arial color=#808080 size=2>www.hilinehomes.com</FONT></A><FONT face=Arial color=#808080 size=2>) and they show up one day on the back of a rather large truck.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Those go for about $100k for a decent one, mind you they have incredibly undesirable floor plans.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>If you want something nicer, you can go with a cute little log home from someone like Lindal Cedar Homes (</FONT><A href="http://www.lindal.com/"><FONT face=Arial color=#808080 size=2>www.lindal.com</FONT></A><FONT size=2><FONT face=Arial><FONT color=#808080>).<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>I love these!<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>These things show up on another rather large truck in pieces and you hire someone to put them together for you.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>The cost is around $110/sf.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>So figure $200,000 for a good size home.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>However, this is just the outer “shell” of a house.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>The walls, ceilings, doors, little metal bracket thingies, etc.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Once you’re done with that you’d have to hire a general contractor to fill in the innards which might cost you another $100k.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Third option - if you really want something nice, you have to hire an architect to design you something from scratch and have it custom built.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Custom built houses in this area go for around $300/sf.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>So figure a nice little 2,000sf home would run you $600,000 just for construction.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Adding up these numbers makes building a house really push the budget of any average person.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>So I decided to give up on this and look for an existing house that I liked.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>One problem, I wanted a basement.<o:p></o:p></FONT></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT size=2><FONT face=Arial><FONT color=#808080>Why a basement?<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Well, where else are you gonna hide all the dead bodies?<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Actually, being a movie buff I really want to build a home theater.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>It’d be great to have a projector mounted on the ceiling, with a nice <st1:metricconverter w:st="on" ProductID="100”">100”</st1:metricconverter> screen, accoustic tile on the ceilings, carpetted walls all in a room you could get pitch black.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Since it’s underground, you wouldn’t have to worry too much about noise.<SPAN style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN>And also&nbsp;as a guitar player – well you get the point.<o:p></o:p></FONT></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT size=2><FONT face=Arial><FONT color=#808080>Here’s the problem with that idea.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>All the basements around here are daylight basements in <st1:City w:st="on">Kirkland</st1:City> (not to knock on <st1:City w:st="on"><st1:place w:st="on">Kirkland</st1:place></st1:City>, it’s a fine city but split entry houses are sooooo 70s.)<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>A daylight basement really doesn’t adapt well to my dream of having a home theater where I can crank up “The Mummy” and not have to worry about neighboring mobs showing up on my porch wielding pitch forks.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>After looking at dozens of crappy houses, I decided to scrap the idea of having a basement (maybe someday) and start to look out east of <st1:City w:st="on"><st1:place w:st="on">Redmond</st1:place></st1:City>.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Out there, you can still get a good amount of land and a decent place without having to give up your first born son.<o:p></o:p></FONT></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT size=2><FONT face=Arial><FONT color=#808080><IMG alt="My new house!" src="http://home.comcast.net/~imaudi/House.gif" align=right>Eventually, I found a great house on a big lot that I absolutely loved.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>It has an awesome kitchen, great back yard for parties, plenty of space and a living room wired for home theater stuff.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>I’ll be moving in next weekend if all goes well, and fixing up my condo to put it on the market before the holiday season.<o:p></o:p></FONT></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT size=2><FONT face=Arial><FONT color=#808080>One thing about looking for homes is it really helps you figure out what you like and what you don’t like in a house.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Walking through houses I absolutely hated was a great exercise and a most valuable experience.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>I started to get really good at narrowing down what kind of house I wanted and what features were the most important, and I eventually found out that having a basement was not as huge of a requirement as I previously thought and wasn’t worth sacrificing other characteristics I wanted.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Having a big lot and a house that didn’t look like everything else on the street was far more important in the end.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>One thing I did was take pictures of every house I visited and started to compile notes on what I liked and what I didn’t like.&nbsp; In somewhat of a "binary search" fassion, I was able to narrow down exactly what I wanted in a house.</FONT></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT size=2><FONT face=Arial><FONT color=#808080>Hopefully when the dust settles, I’ll be able to blog more again.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Stay tuned for my semi-left wing rant on housing prices (I didn’t want to make this entry too long).<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>That’s it for now!<o:p></o:p></FONT></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT size=2><FONT face=Arial><FONT color=#808080>Mike<o:p></o:p></FONT></FONT></FONT></P>]]></content:encoded>
    </item>
    <item>
      <title>Yay!  Higher gas prices!</title>
      <link>https://docs.microsoft.com/archive/blogs/mikechr/yay-higher-gas-prices</link>
      <pubDate>Fri, 28 Jul 2006 17:56:00 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mikechr/2006/07/28/yay-higher-gas-prices/</guid>
      <description><![CDATA[Now that I've caught your attention with my post title, let me explain.&nbsp; Unlike most people,...]]></description>
      <content:encoded><![CDATA[<P><FONT face=Arial color=#808080 size=2>Now that I've caught your attention with my post title, let me explain.&nbsp; Unlike most people, I'm a fan of high gas prices.&nbsp; I'm sure there's a point where I'd start walking to work, but the extra 50 cents per gallon costs me maybe $20 dollars per month.&nbsp; It's $20 dollars I could use for other stuff perhaps, but it's not the end of the world and it's not nearly as bad as the thousands I spend&nbsp;on a poorly managed social security program.&nbsp; Now, there are of course the people who 1) fill up their tanks more than I do and spend much more than $20 dollars extra per month, or 2) the people who are working their butts off to barely make ends meet.&nbsp; And, of course, gas prices affect the price of a lot of other stuff.&nbsp; This is painful, but I maintain that gas is simply not a requirement to survive (unlike water and oxygen.)&nbsp; There will come a point where Americans simply won't agree to pay for it anymore - which brings me to my argument.</FONT></P>
<P><FONT face=Arial color=#808080 size=2>Though it's unfortunate, we happen to live in a country that doesn't <EM>do</EM> anything about a problem until it actually <EM>becomes</EM> a problem.&nbsp; Now I don't like it, but that's the mentality we have as a people.&nbsp; So, these high gas prices have started to really make a difference in the priorities of consumers.&nbsp; People are looking for more gas efficient vehicles, which creates demand, which creates a market.&nbsp; Various car companies are spending lots more money on Hybrid technologies, which keep getting better and better.&nbsp; More money is being spent on alternative fuel sources such as this cool little vehicle:</FONT></P>
<P><A href="http://www.teslamotors.com/"><FONT face=Arial size=2>http://www.teslamotors.com/</FONT></A></P>
<P><FONT face=Arial color=#808080 size=2>It's a fully electric car that does 0-60 in 4 seconds and can drive 250 miles on a full charge.&nbsp; It can't replace my current car yet, as I like being able to do long road trips, but this is a huge breakthrough on previous electric cars that had a range of about 60 miles.&nbsp; Hopefully this sort of innovation will result in a huge breakthrough in energy storage (better laptop batteries, cell phone batteries, etc.)&nbsp; There will some day be a car that's cheap, does not run off gas, is quick and easy to "recharge", and drives like a Viper - and higher gas prices is going to drive that sort of innovation.&nbsp; It's either that or we wait until we run out of oil completely.</FONT></P>
<P><FONT face=Arial color=#808080 size=2>So bring on the high gas prices, it hurts now but if it results in a better world I'm all for that.</FONT></P>
<P><FONT face=Arial color=#808080 size=2>Mike</FONT></P>]]></content:encoded>
    </item>
    <item>
      <title>JScript Functions</title>
      <link>https://docs.microsoft.com/archive/blogs/mikechr/jscript-functions</link>
      <pubDate>Fri, 28 Jul 2006 17:42:00 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mikechr/2006/07/28/jscript-functions/</guid>
      <description><![CDATA[My favorite IE tip/trick of the day has to do with function pointers and anonymous...]]></description>
      <content:encoded><![CDATA[<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>My favorite IE tip/trick of the day has to do with function pointers and anonymous functions.</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p><FONT face=Arial color=#808080 size=2>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>In Jscript, there are two keywords for creating functions.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>One is “function” with a lower case “f”, and one is “Function” with an upper case “F”.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>“function” is a keyword that allows you to describe a function in-line.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>The “function” keyword creates a named function (even if you don’t specify a name) and returns a pointer to that function.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>In most cases, you simply ignore the return value:</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Arial color=#808080 size=2>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>function Foo()</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>{</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT size=2><FONT face=Arial><FONT color=#808080><SPAN style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN>window.alert(“Hi!”);</FONT></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>}</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Arial color=#808080 size=2>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>is an example of this usage.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>However, I can also say:</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Arial color=#808080 size=2>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>var myFuncPtr = Foo;</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>myFuncPtr();</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Arial color=#808080 size=2>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>To call my function as well.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Or, I can do:</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">var</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> myFunc = <SPAN style="COLOR: blue">function</SPAN> test(s)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN>window.alert(s);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>To create a named function called “test” and create a variable called myFunc which holds a pointer to that function.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>I can then say:</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Arial color=#808080 size=2>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>myFunc(‘Hello’);</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Arial color=#808080 size=2>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>To print ‘Hello’ out to the screen.</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Arial color=#808080 size=2>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>I can also say:</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">var</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> </SPAN>x<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> = <SPAN style="COLOR: blue">function</SPAN></SPAN>()</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">{</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN>window.alert('hello');</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">}</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>And have a pointer to a function with no name.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>In similar pointlessness, I can do:</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Arial color=#808080 size=2>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">function</SPAN>()</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">{</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN>window.alert('hello');</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">}</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT size=2><FONT face=Arial><FONT color=#808080>Which is perfectly valid but it does <I style="mso-bidi-font-style: normal">absolutely nothing!</I></FONT></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Arial color=#808080 size=2>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>There’s also “Function” with a capitol F which is basically a built-in Jscript function that returns a reference to a new anonymous function.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>An anonymous function is simply a function that does not have a name and walks the lands doing good deeds for strangers in need, while searching for its true identity.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Since it has no name, it must be called through a function pointer.</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Arial color=#808080 size=2>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>For example:</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">var</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> items = {};<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">items[0] = <SPAN style="COLOR: blue">new</SPAN> Function(<SPAN style="COLOR: maroon">"window.alert('A');"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">items[1] = <SPAN style="COLOR: blue">new</SPAN> Function(<SPAN style="COLOR: maroon">"window.alert('B');"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">items[2] = <SPAN style="COLOR: blue">new</SPAN> Function(<SPAN style="COLOR: maroon">"window.alert('C');"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">items[1]();<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>This allows me to create an array of anonymous functions that do different things, then call one of them through a pointer to that function.</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Arial color=#808080 size=2>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>In Jscript, functions are objects just like any object object.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>These objects can have names, can be part of arrays, can be passed to other functions, etc.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>The only difference is there’s special syntax (the parenthesis at the end) which directs the runtime to call the function rather than return a pointer to it. </FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Arial color=#808080 size=2>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>So how about IE event handlers?<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Many people take IE’s eventing model for granted, it just works.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>But taking it apart is somewhat of an educational experience.</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Arial color=#808080 size=2>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>Let’s take this simple chunk of HTML for example:</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">div</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <SPAN style="COLOR: red">id</SPAN><SPAN style="COLOR: blue">="myDiv"</SPAN> <SPAN style="COLOR: red">onclick</SPAN><SPAN style="COLOR: blue">="window.alert('foo');"&gt;</SPAN>Click Here<SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">div</SPAN><SPAN style="COLOR: blue">&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>It’s simple enough, but what is IE building in memory?<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>There’s a &lt;div&gt; object with an ID property which is a string, and there’s an onclick property with some script.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>How does this script get compiled?<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>It’s an anonymous function, right?.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>No!<SPAN style="mso-spacerun: yes">&nbsp; </SPAN><SPAN style="mso-spacerun: yes">&nbsp;</SPAN>It’s a function that’s called “anonymous” (how @#!$’ing confusing is that?!?!).<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>IE news up the function in its own compilation scope and returns it through a dispatch pointer.</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Arial color=#808080 size=2>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>The onclick property of our div object above is a pointer to a function (If you’re a COM guy I believe it’s technically an IConnectionPoint but who cares?) </FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Arial color=#808080 size=2>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>You don’t believe me?<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Let’s run this little piece of code:</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Arial color=#808080 size=2>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><FONT face=Arial><FONT color=#808080>window.alert(myDiv.onclick);<o:p></o:p></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p><FONT face=Arial color=#808080>&nbsp;</FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>Which will print out:</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>function anonymous()</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>{</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>window.alert(‘foo’);</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>}</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Arial color=#808080 size=2>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>Interesting, eh?<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>If we want to call our function through our function pointer, we can simply do:</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Arial color=#808080 size=2>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>myDiv.onclick();</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Arial color=#808080 size=2>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>Which will run the code and display “foo”.</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Arial color=#808080 size=2>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>Ok so this is all silly and confusing, and for the people who actually understand all this, they are 1) the people who read this whole article and learned nothing they didn’t already know or 2) the people who are gonna leave me comments saying how something I said wasn’t quite accurate.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Well, sorry I’m an Office developer and knowing how the scripting engines work is just a part time hobby.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Thanks for reading, and hopefully you can use function pointers and anonymous functions to change the world for the better (the cure cancer anonymous function maybe?)</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Arial color=#808080 size=2>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>Mike</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Arial color=#808080 size=2>&nbsp;</FONT></o:p></P>]]></content:encoded>
    </item>
    <item>
      <title>Great ASP.NET site</title>
      <link>https://docs.microsoft.com/archive/blogs/mikechr/great-asp-net-site</link>
      <pubDate>Wed, 28 Jun 2006 20:25:00 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mikechr/2006/06/28/great-asp-net-site/</guid>
      <description><![CDATA[Here’s a great site for developers that aggregates a bunch of other ASP.NET blogs, making it easy to...]]></description>
      <content:encoded><![CDATA[<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>Here’s a great site for developers that aggregates a bunch of other ASP.NET blogs, making it easy to find new information all on a single site.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Check it out!</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><A href="http://www.dotnetslackers.com/">http://www.dotnetslackers.com/</A></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>]]></content:encoded>
    </item>
    <item>
      <title>IE Tips and Tricks - Part 1</title>
      <link>https://docs.microsoft.com/archive/blogs/mikechr/ie-tips-and-tricks-part-1</link>
      <pubDate>Wed, 28 Jun 2006 02:03:00 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mikechr/2006/06/28/ie-tips-and-tricks-part-1/</guid>
      <description><![CDATA[It has occurred to me that I haven’t written much about client-side development and all that fun web...]]></description>
      <content:encoded><![CDATA[<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>It has occurred to me that I haven’t written much about client-side development and all that fun web browsery stuff.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Before I get branded a server only guy, I’ve decided to write an <I style="mso-bidi-font-style: normal">n </I>part series (where n is the number of articles I can write before getting bored of the subject) about my favorite HTML/CSS/Script tips and tricks.</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p><FONT face=Arial color=#808080 size=2>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>The first is none other than DHTML expressions.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>DHTML expressions were a new feature in Internet Explorer 5 (back when the IE team was still attempting to innovate), however are still not used very often because of bugginess and performance issues.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>I’ve also seen several IE bugs that cause the IE window to crash if an expression exists against an object that’s since been removed from the DOM.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>I maintain that DHTML expressions (also called CSS expressions and “dynamic properties”) are quite helpful if used in very simple solutions, where the expression is something that can be resolved quickly as the IE DOM changes.</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Arial color=#808080 size=2>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>Expressions can be declared inline using a style attribute, within a CSS selector, or using script.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>I prefer the latter two since it keeps things simple.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>One of my favorite uses of expressions is to show and hide various UI depending on the state of a check box, radio button, or dropdown value.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>It allows UI to be hidden if certain options are not selected, or allows for an easy implementation of a “Show Advanced” checkbox.</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Arial color=#808080 size=2>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>In my example, I’m creating a simple time sheet that shows hours worked per pay period, and allows the user to show various classifications of work (Actual hours worked, Planned hours, and Overtime hours.)<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>None of this uses script and it’s easy to see how it works, and doesn’t require logic complicated enough to warrant the use of a debugger (good luck debugging problems caused by expressions.)</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Arial color=#808080 size=2>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>Here’s my web page for you to copy into notepad and save locally:</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;</SPAN><SPAN style="FONT-SIZE: 8pt; COLOR: maroon; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">style</SPAN><SPAN style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN><SPAN style="COLOR: maroon">BODY</SPAN> {<SPAN style="COLOR: red">font-family</SPAN>: <SPAN style="COLOR: blue">Arial</SPAN>; <SPAN style="COLOR: red">font-size</SPAN>: <SPAN style="COLOR: blue">11px</SPAN>;}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN><SPAN style="COLOR: maroon">TABLE</SPAN> {<SPAN style="COLOR: red">width</SPAN>: <SPAN style="COLOR: blue">75%</SPAN>; <SPAN style="COLOR: red">border</SPAN>: <SPAN style="COLOR: blue">1px</SPAN> <SPAN style="COLOR: blue">solid</SPAN> <SPAN style="COLOR: blue">grey</SPAN>;}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN><SPAN style="COLOR: maroon">TH</SPAN> {<SPAN style="COLOR: red">background</SPAN>: <SPAN style="COLOR: blue">#BBBBBB</SPAN>;}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN><SPAN style="COLOR: maroon">.Total</SPAN> <SPAN style="COLOR: maroon">TD</SPAN> {<SPAN style="COLOR: red">text-align</SPAN>: <SPAN style="COLOR: blue">right</SPAN>; <SPAN style="COLOR: red">border-top</SPAN>: <SPAN style="COLOR: blue">2px</SPAN> <SPAN style="COLOR: blue">solid</SPAN> <SPAN style="COLOR: blue">#999999</SPAN>;}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN><SPAN style="COLOR: maroon">.Planned</SPAN> {<SPAN style="COLOR: red">display</SPAN>: <SPAN style="COLOR: blue">expression(cbPlanned.checked ? ''</SPAN> <SPAN style="COLOR: blue">:</SPAN> <SPAN style="COLOR: blue">'none')</SPAN>; <SPAN style="COLOR: red">background</SPAN>: <SPAN style="COLOR: blue">#BBBBFF</SPAN>; <SPAN style="COLOR: red">text-align</SPAN>: <SPAN style="COLOR: blue">right</SPAN>;}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN><SPAN style="COLOR: maroon">.Actual</SPAN> {<SPAN style="COLOR: red">display</SPAN>: <SPAN style="COLOR: blue">expression(cbActual.checked ? ''</SPAN> <SPAN style="COLOR: blue">:</SPAN> <SPAN style="COLOR: blue">'none')</SPAN>; <SPAN style="COLOR: red">background</SPAN>: <SPAN style="COLOR: blue">#BBFFBB</SPAN>; <SPAN style="COLOR: red">text-align</SPAN>: <SPAN style="COLOR: blue">right</SPAN>;}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN><SPAN style="COLOR: maroon">.Overtime</SPAN> {<SPAN style="COLOR: red">display</SPAN>: <SPAN style="COLOR: blue">expression(cbOvertime.checked ? ''</SPAN> <SPAN style="COLOR: blue">:</SPAN> <SPAN style="COLOR: blue">'none')</SPAN>; <SPAN style="COLOR: red">background</SPAN>: <SPAN style="COLOR: blue">#FFBBBB</SPAN>; <SPAN style="COLOR: red">text-align</SPAN>: <SPAN style="COLOR: blue">right</SPAN>;}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;/</SPAN><SPAN style="FONT-SIZE: 8pt; COLOR: maroon; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">style</SPAN><SPAN style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;</SPAN><SPAN style="FONT-SIZE: 8pt; COLOR: maroon; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">input</SPAN><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <SPAN style="COLOR: red">type</SPAN><SPAN style="COLOR: blue">="checkbox"</SPAN> <SPAN style="COLOR: red">id</SPAN><SPAN style="COLOR: blue">="cbPlanned"&gt;&lt;</SPAN><SPAN style="COLOR: maroon">label</SPAN> <SPAN style="COLOR: red">for</SPAN><SPAN style="COLOR: blue">="cbPlanned"</SPAN> <SPAN style="COLOR: red">style</SPAN><SPAN style="COLOR: blue">="background: #BBBBFF;"&gt;</SPAN>Show Planned<SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">label</SPAN><SPAN style="COLOR: blue">&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;</SPAN><SPAN style="FONT-SIZE: 8pt; COLOR: maroon; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">input</SPAN><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <SPAN style="COLOR: red">type</SPAN><SPAN style="COLOR: blue">="checkbox"</SPAN> <SPAN style="COLOR: red">id</SPAN><SPAN style="COLOR: blue">="cbActual"&gt;&lt;</SPAN><SPAN style="COLOR: maroon">label</SPAN> <SPAN style="COLOR: red">for</SPAN><SPAN style="COLOR: blue">="cbActual"</SPAN> <SPAN style="COLOR: red">style</SPAN><SPAN style="COLOR: blue">="background: #BBFFBB;"&gt;</SPAN>Show Actual<SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">label</SPAN><SPAN style="COLOR: blue">&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;</SPAN><SPAN style="FONT-SIZE: 8pt; COLOR: maroon; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">input</SPAN><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <SPAN style="COLOR: red">type</SPAN><SPAN style="COLOR: blue">="checkbox"</SPAN> <SPAN style="COLOR: red">id</SPAN><SPAN style="COLOR: blue">="cbOvertime"&gt;&lt;</SPAN><SPAN style="COLOR: maroon">label</SPAN> <SPAN style="COLOR: red">for</SPAN><SPAN style="COLOR: blue">="cbOvertime"</SPAN> <SPAN style="COLOR: red">style</SPAN><SPAN style="COLOR: blue">="background: #FFBBBB;"&gt;</SPAN>Show Overtime<SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">label</SPAN><SPAN style="COLOR: blue">&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;</SPAN><SPAN style="FONT-SIZE: 8pt; COLOR: maroon; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">table</SPAN><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <SPAN style="COLOR: red">cellpadding</SPAN><SPAN style="COLOR: blue">="0"</SPAN> <SPAN style="COLOR: red">cellspacing</SPAN><SPAN style="COLOR: blue">="0"</SPAN> <SPAN style="COLOR: red">rules</SPAN><SPAN style="COLOR: blue">="cols"&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">&lt;</SPAN><SPAN style="COLOR: maroon">tr</SPAN><SPAN style="COLOR: blue">&gt;&lt;</SPAN><SPAN style="COLOR: maroon">th</SPAN><SPAN style="COLOR: blue">&gt;</SPAN>Period<SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">th</SPAN><SPAN style="COLOR: blue">&gt;&lt;</SPAN><SPAN style="COLOR: maroon">th</SPAN><SPAN style="COLOR: blue">&gt;</SPAN>Date<SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">th</SPAN><SPAN style="COLOR: blue">&gt;&lt;</SPAN><SPAN style="COLOR: maroon">th</SPAN><SPAN style="COLOR: blue">&gt;</SPAN>Work<SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">th</SPAN><SPAN style="COLOR: blue">&gt;&lt;/</SPAN><SPAN style="COLOR: maroon">tr</SPAN><SPAN style="COLOR: blue">&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">&lt;</SPAN><SPAN style="COLOR: maroon">tr</SPAN> <SPAN style="COLOR: red">class</SPAN><SPAN style="COLOR: blue">="Total"&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;</SPAN>1<SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;</SPAN>1/1 - 1/7<SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;</SPAN>40h<SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;/</SPAN><SPAN style="COLOR: maroon">tr</SPAN><SPAN style="COLOR: blue">&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">&lt;</SPAN><SPAN style="COLOR: maroon">tr</SPAN> <SPAN style="COLOR: red">class</SPAN><SPAN style="COLOR: blue">="Planned"&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN> <SPAN style="COLOR: red">colspan</SPAN><SPAN style="COLOR: blue">="2"&gt;</SPAN><SPAN style="COLOR: red">&amp;nbsp;</SPAN><SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;</SPAN>40h<SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;/</SPAN><SPAN style="COLOR: maroon">tr</SPAN><SPAN style="COLOR: blue">&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">&lt;</SPAN><SPAN style="COLOR: maroon">tr</SPAN> <SPAN style="COLOR: red">class</SPAN><SPAN style="COLOR: blue">="Actual"&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;</SPAN><SPAN style="COLOR: red">&amp;nbsp;</SPAN><SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;</SPAN><SPAN style="COLOR: red">&amp;nbsp;</SPAN><SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;</SPAN>40h<SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;/</SPAN><SPAN style="COLOR: maroon">tr</SPAN><SPAN style="COLOR: blue">&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">&lt;</SPAN><SPAN style="COLOR: maroon">tr</SPAN> <SPAN style="COLOR: red">class</SPAN><SPAN style="COLOR: blue">="Overtime"&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;</SPAN><SPAN style="COLOR: red">&amp;nbsp;</SPAN><SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;</SPAN><SPAN style="COLOR: red">&amp;nbsp;</SPAN><SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;</SPAN>0h<SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;/</SPAN><SPAN style="COLOR: maroon">tr</SPAN><SPAN style="COLOR: blue">&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">&lt;</SPAN><SPAN style="COLOR: maroon">tr</SPAN> <SPAN style="COLOR: red">class</SPAN><SPAN style="COLOR: blue">="Total"&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;</SPAN>2<SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;</SPAN>1/8 - 1/14<SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;</SPAN>48h<SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;/</SPAN><SPAN style="COLOR: maroon">tr</SPAN><SPAN style="COLOR: blue">&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">&lt;</SPAN><SPAN style="COLOR: maroon">tr</SPAN> <SPAN style="COLOR: red">class</SPAN><SPAN style="COLOR: blue">="Planned"&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN> <SPAN style="COLOR: red">colspan</SPAN><SPAN style="COLOR: blue">="2"&gt;</SPAN><SPAN style="COLOR: red">&amp;nbsp;</SPAN><SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;</SPAN>40h<SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;/</SPAN><SPAN style="COLOR: maroon">tr</SPAN><SPAN style="COLOR: blue">&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">&lt;</SPAN><SPAN style="COLOR: maroon">tr</SPAN> <SPAN style="COLOR: red">class</SPAN><SPAN style="COLOR: blue">="Actual"&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;</SPAN><SPAN style="COLOR: red">&amp;nbsp;</SPAN><SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;</SPAN><SPAN style="COLOR: red">&amp;nbsp;</SPAN><SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;</SPAN>40h<SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;/</SPAN><SPAN style="COLOR: maroon">tr</SPAN><SPAN style="COLOR: blue">&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">&lt;</SPAN><SPAN style="COLOR: maroon">tr</SPAN> <SPAN style="COLOR: red">class</SPAN><SPAN style="COLOR: blue">="Overtime"&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;</SPAN><SPAN style="COLOR: red">&amp;nbsp;</SPAN><SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;</SPAN><SPAN style="COLOR: red">&amp;nbsp;</SPAN><SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;</SPAN>8h<SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;/</SPAN><SPAN style="COLOR: maroon">tr</SPAN><SPAN style="COLOR: blue">&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">&lt;</SPAN><SPAN style="COLOR: maroon">tr</SPAN> <SPAN style="COLOR: red">class</SPAN><SPAN style="COLOR: blue">="Total"&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;</SPAN>3<SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;</SPAN>1/15 - 1/21<SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;</SPAN>32h<SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;/</SPAN><SPAN style="COLOR: maroon">tr</SPAN><SPAN style="COLOR: blue">&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">&lt;</SPAN><SPAN style="COLOR: maroon">tr</SPAN> <SPAN style="COLOR: red">class</SPAN><SPAN style="COLOR: blue">="Planned"&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN> <SPAN style="COLOR: red">colspan</SPAN><SPAN style="COLOR: blue">="2"&gt;</SPAN><SPAN style="COLOR: red">&amp;nbsp;</SPAN><SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;</SPAN>40h<SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;/</SPAN><SPAN style="COLOR: maroon">tr</SPAN><SPAN style="COLOR: blue">&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">&lt;</SPAN><SPAN style="COLOR: maroon">tr</SPAN> <SPAN style="COLOR: red">class</SPAN><SPAN style="COLOR: blue">="Actual"&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;</SPAN><SPAN style="COLOR: red">&amp;nbsp;</SPAN><SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;</SPAN><SPAN style="COLOR: red">&amp;nbsp;</SPAN><SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;</SPAN>32h<SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;/</SPAN><SPAN style="COLOR: maroon">tr</SPAN><SPAN style="COLOR: blue">&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">&lt;</SPAN><SPAN style="COLOR: maroon">tr</SPAN> <SPAN style="COLOR: red">class</SPAN><SPAN style="COLOR: blue">="Overtime"&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;</SPAN><SPAN style="COLOR: red">&amp;nbsp;</SPAN><SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;</SPAN><SPAN style="COLOR: red">&amp;nbsp;</SPAN><SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;</SPAN>0h<SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: maroon">td</SPAN><SPAN style="COLOR: blue">&gt;&lt;/</SPAN><SPAN style="COLOR: maroon">tr</SPAN><SPAN style="COLOR: blue">&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;/</SPAN><SPAN style="FONT-SIZE: 8pt; COLOR: maroon; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">table</SPAN><SPAN style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>As you can see, most of the logic is within the &lt;style&gt; block.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Each planned work row has a class of “Planned”.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>In the CSS definition for the Planned class, the “display” property has an expression of whether or not the cbPlanned checkbox is checked.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>When the checkbox is un-checked, the display property of the CSS class becomes ‘none’.</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Arial color=#808080 size=2>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><A href="http://home.comcast.net/~imaudi/Expressions.htm"><FONT face=Arial color=#800080 size=2>Click Here</FONT></A><FONT face=Arial color=#808080 size=2> to load this file in your web browser.</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Arial color=#808080 size=2>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Arial color=#808080 size=2>That’s it!</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Arial color=#808080 size=2>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT size=2><FONT face=Arial><FONT color=#808080>Mike – Web Dev Guy<SPAN style="FONT-SIZE: 8pt"><o:p></o:p></SPAN></FONT></FONT></FONT></P>]]></content:encoded>
    </item>
    <item>
      <title>Question of the day...</title>
      <link>https://docs.microsoft.com/archive/blogs/mikechr/question-of-the-day</link>
      <pubDate>Mon, 26 Jun 2006 21:50:00 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mikechr/2006/06/26/question-of-the-day/</guid>
      <description><![CDATA[Here’s a hypothetical situation; you’re sucked into a worm hole and transported back to the year...]]></description>
      <content:encoded><![CDATA[<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Arial color=#808080 size=2>Here’s a hypothetical situation; you’re sucked into a worm hole and transported back to the year <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><st1:metricconverter ProductID="1300 A" w:st="on">1300 A</st1:metricconverter>.D. in Medieval Europe.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>You didn’t bring back your cell phone, or laptop, or any “more recent” invention.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>What advantages would you have over society at that time?<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Would you be able to survive, and would you be able to influence the course of history?</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Arial color=#808080 size=2>More importantly, could you build anything [from scratch] that<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>hadn’t been invented at the time?</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Arial color=#808080 size=2>I was thinking about this and it occurred to me that there’s very little I’d be able to do.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>I’m pretty sure, given enough time, I could generate electricity using magnetite or lodestone as magnets, and a coil of copper wire made from copper ore.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>This would be something that hadn’t been seen before, but perhaps wouldn’t be useful unless I could harness it for something, perhaps light or heat.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Making a light bulb might be possible given enough time, though it took Thomas Edison quite a while to make one that lasted.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>I’m not sure if I could do it.</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Arial color=#808080 size=2>How about a steam engine?<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>It’s a simple concept, but manufacturing the parts might take quite a bit of effort.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Provided you got the electrical current thing going, creating an electric motor might be the next logical step since it’s basically the opposite of an electric generator.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>However, for this to be useful to anyone you’d want a way to store energy when you can’t generate it directly.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Creating a “wet cell” battery might be fairly easy.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>What could you build to harness large amounts of current, such as a windmill or water turbine?</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Arial color=#808080 size=2>What else would be practical?</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Arial color=#808080 size=2>Any ideas?</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Arial color=#808080 size=2>Mike – Web Dev Guy/Modern Technology Specialist</FONT></P>]]></content:encoded>
    </item>
  </channel>
</rss>