<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Matt Penner</title>
	<atom:link href="http://mattpenner.info/feed/" rel="self" type="application/rss+xml" />
	<link>http://mattpenner.info</link>
	<description>All about Matt Penner - blog, work experience, project portfolio, skills, etc</description>
	<lastBuildDate>Tue, 03 Aug 2010 18:44:36 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Why we switched from WebEx to Adobe Connect</title>
		<link>http://mattpenner.info/2010/08/03/why-we-switched-from-webex-to-adobe-connect/</link>
		<comments>http://mattpenner.info/2010/08/03/why-we-switched-from-webex-to-adobe-connect/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 18:43:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cool]]></category>

		<guid isPermaLink="false">http://mattpenner.info/2010/08/03/why-we-switched-from-webex-to-adobe-connect/</guid>
		<description><![CDATA[We had been using WebEx at my work to allow us to hold online meetings.&#160; We are very small scale and only use it once or twice a month, but when we do it really comes in handy.&#160; Once a month or so we have a user group meeting with our 22 districts across Riverside [...]]]></description>
			<content:encoded><![CDATA[<p>We had been using WebEx at my work to allow us to hold online meetings.&#160; We are very small scale and only use it once or twice a month, but when we do it really comes in handy.&#160; Once a month or so we have a user group meeting with our 22 districts across Riverside County.&#160; If all our attendees came in person some of them would be driving over 4 hours roundtrip for a 2 hour meeting.&#160; Not fun nor economically and environmentally friendly.&#160; Online meeting software was definitely a requirement here.</p>
<p>WebEx was what I was used to and hadn’t seen anything better from GoToMeeting or the others.&#160; So we signed up with them.&#160; It works and we didn’t have any problem with it.&#160; It’s just a little sterile and complicated for non-techie users.&#160; Plus our vendor never returned our emails regarding renewing our contract.&#160; So much for that.&#160; We can’t even <em>give</em> them our money. <img src='http://mattpenner.info/wp-includes/images/smilies/icon_neutral.gif' alt=':|' class='wp-smiley' /> </p>
<p>One of my co-workers teaches an online class for USC.&#160; They use an online teaching tool that makes use of <a href="http://www.adobe.com/products/acrobatconnectpro/?promoid=BPDEA" target="_blank">Adobe Connect</a>.&#160; He really liked it so he told me to check it out since our WebEx contract was coming up for renewal.</p>
<p>After playing with it I really began to like it.&#160; It offers many of the same features as WebEx but it is just more fluid and has a much nicer UI.&#160; It is Flash based so it avoids many of the ActiveX or browser plug-in issues that WebEx has.&#160; Since Flash is pretty much installed on any computer it works out of the box.&#160; Also, Adobe Connect allows us to let guests enter a meeting just by connecting to the URL.&#160; This is really nice as users had to enter a password with WebEx.&#160; Password protected meetings are just one extra step to trip up non-techie users and completely unnecessary in our case.&#160; </p>
<p>Also, we can set a permanent URL for a meeting we hold regularly.&#160; This allows users to bookmark the meeting or bring it up from an old email.&#160; With WebEx we always pointed users to our general WebEx page.&#160; We usually only had one meeting on the calendar so it wasn’t that confusing, however, for larger organizations it can be a bother to sort through all the scheduled meetings.&#160; Having a permanent URL that connects you straight to the meeting is a nice touch.</p>
<p>And guess what?&#160; It’s cheaper for our account as well.&#160; WebEx basic pricing runs about $60 a month for an annual subscription, which is limited to 25 concurrent attendees.&#160; They will let more than 25 attendees connect but you will be charged for the overage.&#160; Adobe Connect basic pricing runs about $45 a month for an annual subscription and allows up to 100 concurrent attendees.</p>
<p>All in all Adobe Connect is friendlier, easier to setup and less expensive.&#160; Definitely a win for our needs.</p>
<p>If you are considering online meeting software definitely give Adobe Connect a look.&#160; Also, if you do go with Adobe Connect, consider <a href="http://www.meetingone.com" target="_blank">MeetingOne</a> as a vendor rather than contracting directly with Adobe.&#160; Check out <a href="http://mattpenner.info/2010/08/03/praise-for-meeting-one-adobe-connect-vendor/" target="_blank">my previous blog post</a> about how their personal customer service really saved our day while also getting us a cheaper rate.</p>
]]></content:encoded>
			<wfw:commentRss>http://mattpenner.info/2010/08/03/why-we-switched-from-webex-to-adobe-connect/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Praise for Meeting One &#8211; Adobe Connect vendor</title>
		<link>http://mattpenner.info/2010/08/03/praise-for-meeting-one-adobe-connect-vendor/</link>
		<comments>http://mattpenner.info/2010/08/03/praise-for-meeting-one-adobe-connect-vendor/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 18:24:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cool]]></category>
		<category><![CDATA[Adobe Connect]]></category>
		<category><![CDATA[MeetingOne]]></category>

		<guid isPermaLink="false">http://mattpenner.info/2010/08/03/praise-for-meeting-one-adobe-connect-vendor/</guid>
		<description><![CDATA[In today’s Internet world where everything is automatic and at the tip of my finger the need (and room) for personal service quickly disappears.&#160; As a fast paced individual myself I actually lean more towards automated solutions.&#160; Often I can find an answer, directions, a phone number, a solution on a development or IT problem, [...]]]></description>
			<content:encoded><![CDATA[<p>In today’s Internet world where everything is automatic and at the tip of my finger the need (and room) for personal service quickly disappears.&#160; As a fast paced individual myself I actually lean more towards automated solutions.&#160; Often I can find an answer, directions, a phone number, a solution on a development or IT problem, etc in a matter of seconds on the Internet rather than asking someone.&#160; It’s because of this, and having to deal with pushy vendors in various past, that have made me largely anti-salesman.&#160; If I can purchase something online with a credit card number and a few clicks of a mouse I’m much more inclined to go the non-human route than to get someone on the phone.&#160; I’m somewhat introverted so that may also be part of the issue. <img src='http://mattpenner.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>However, as a retail software salesman in one of my many past careers, a personal technical consultant and having dealt with many great small businesses I know that the personal touch is still very useful and worth the money.</p>
<p>In this particular case it saved my day.</p>
<p>We recently switched from WebEx to Adobe Connect for our online meeting software at my work.&#160; You can read <a href="http://mattpenner.info/2010/08/03/why-we-switched-from-webex-to-adobe-connect/" target="_blank">my post about why we switched here</a>.&#160; Mark Stevenson of <a href="http://www.meetingone.com" target="_blank">MeetingOne</a> contacted me as an authorized vendor for government contracts for Adobe Connect.&#160; He was very nice on the phone and answered all of my questions.&#160; However, I was still inclined to thank him, hang up and sign us up online through the Adobe web page.&#160; Mark was able to get us a small discount so I gave him the benefit of the doubt.&#160; </p>
<p>We are a very small contract.&#160; I am the only staff member who uses online meeting software and I only 1.5 times a month on average, yes, only 1.5 times.&#160; He had almost no incentive to give us a deal or even continue talking with me.&#160; Honestly, if this was a fortune 500 company (MeetingOne very well could be, they just don’t give off that impersonal vibe, a compliment I assure you <img src='http://mattpenner.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ) his sales lead analysis tool would probably have already told him to hang up as it wasn’t even worth his time to keep talking with me on the phone.</p>
<p>I had previously signed up online with an Adobe Connect trial account while we were researching various products.&#160; We had a meeting today but, as we are still in the middle of our purchasing process, we were forced to use our trial account.&#160; I didn’t think too much of it as there is no indication that the trial accounts are limited to the number of connected attendees.&#160; However, sure enough, after 5 attendees connected to the meeting the phone started ringing off the hook.&#160; Users were getting turned away with an error message that the account had exceeded its usage.&#160; Ouch!&#160; What to do?</p>
<p>I called up Mark right away and he saved the day.&#160; After talking over the issue and our meeting needs he set up a meeting for us under the MeetingOne account.&#160; I sent out the new link to all our users and within minutes we were up and running full steam.&#160; He even stayed in the meeting while he was working and assisted with a couple of technical issues we had while switching between presenters.</p>
<p>I have a very large suspicion that we wouldn’t have received this type of support had we contracted directly with Adobe.</p>
<p>So here is a BIG THANKS to Mark and MeetingOne.&#160; He has helped change my attitude towards vendors.&#160; The good ones are still out there, it’s just hard to find them sometimes.&#160; Fortunately Mark found us. <img src='http://mattpenner.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>If you are in the market for online meeting software, consider Adobe Connect.&#160; If you do, please consider MeetingOne.&#160; They are one of the good guys and will definitely help you out.</p>
]]></content:encoded>
			<wfw:commentRss>http://mattpenner.info/2010/08/03/praise-for-meeting-one-adobe-connect-vendor/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Apple releases its MacPaint source code to the Computer History Museum</title>
		<link>http://mattpenner.info/2010/07/21/apple-releases-its-macpaint-source-code-to-the-computer-history-museum/</link>
		<comments>http://mattpenner.info/2010/07/21/apple-releases-its-macpaint-source-code-to-the-computer-history-museum/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 15:51:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cool]]></category>
		<category><![CDATA[Fun]]></category>

		<guid isPermaLink="false">http://mattpenner.info/2010/07/21/apple-releases-its-macpaint-source-code-to-the-computer-history-museum/</guid>
		<description><![CDATA[This was a fun article I just ran across at Business Week:
http://www.businessweek.com/technology/ByteOfTheApple/blog/archives/2010/07/apple_donates_macpaint_source_code_to_computer_history_museum.html
I used Mac Paint on the Mac Plus and I would definitely call it revolutionary.&#160; Yes the Amiga, and several others, came out with competing or better products, however, for me in a new Mac world coming from the IBM PC clone world this [...]]]></description>
			<content:encoded><![CDATA[<p>This was a fun article I just ran across at Business Week:</p>
<p><a title="http://www.businessweek.com/technology/ByteOfTheApple/blog/archives/2010/07/apple_donates_macpaint_source_code_to_computer_history_museum.html" href="http://www.businessweek.com/technology/ByteOfTheApple/blog/archives/2010/07/apple_donates_macpaint_source_code_to_computer_history_museum.html">http://www.businessweek.com/technology/ByteOfTheApple/blog/archives/2010/07/apple_donates_macpaint_source_code_to_computer_history_museum.html</a></p>
<p>I used Mac Paint on the Mac Plus and I would definitely call it revolutionary.&#160; Yes the Amiga, and several others, came out with competing or better products, however, for me in a new Mac world coming from the IBM PC clone world this was amazing.&#160; </p>
<p>And, in contrast to one commenter who said it was a neat demo and nothing more, we used this in our desktop publishing all the time.&#160; We could finally create and manipulate graphics and logos for newsletters, business cards, etc.&#160; For a small business it really made us stand out.&#160; Hardly anyone in the mid-80&#8217;s had this capability for so cheap.&#160; It usually required a large print house with expensive machines.&#160; Now we could put a real professional touch on customer documents.&#160; B/W art was definitely used on probably 90% of print output at the time so having a color capable utility didn&#8217;t offer much when it came to a hard copy.&#160; MacPaint really allowed us to push the boundaries.&#160; With a Mac SE/30 and an Apple LaserWriter II we were producing high quality professional documents for clients for less than $7,000 in the late &#8217;80s, which at the time was simply amazing. </p>
<p>I&#8217;m sure others out there could have done something similar with Amigas, PCs, etc, but for us this was a game changer. <img src='http://mattpenner.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
<p>I love seeing recaps on older history like this, for any company, not just Apple.</p>
]]></content:encoded>
			<wfw:commentRss>http://mattpenner.info/2010/07/21/apple-releases-its-macpaint-source-code-to-the-computer-history-museum/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Great Resource for Different Strategies on Concatenating SQL Results</title>
		<link>http://mattpenner.info/2010/06/01/a-great-resource-for-different-strategies-on-concatenating-sql-results/</link>
		<comments>http://mattpenner.info/2010/06/01/a-great-resource-for-different-strategies-on-concatenating-sql-results/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 23:37:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cool]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[SQL 2008]]></category>
		<category><![CDATA[Concatenate]]></category>
		<category><![CDATA[T-SQL]]></category>

		<guid isPermaLink="false">http://mattpenner.info/2010/06/01/a-great-resource-for-different-strategies-on-concatenating-sql-results/</guid>
		<description><![CDATA[In every DBA’s career I think having to concatenate results happens at least a few times.&#160; Probably more than we like to admit because we tend to live in table-land.&#160;  &#160; However, there are those occasions, which are usually driven by some downstream requirement to format output.&#160; Now, I know that formatting should be [...]]]></description>
			<content:encoded><![CDATA[<p>In every DBA’s career I think having to concatenate results happens at least a few times.&#160; Probably more than we like to admit because we tend to live in table-land.&#160; <img src='http://mattpenner.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> &#160; However, there are those occasions, which are usually driven by some downstream requirement to format output.&#160; Now, I know that formatting should be handled by whatever data viewing method you are using, but sometimes that just isn’t possible or practical.&#160; Other times it may just be that we need to transform data from one system to another and that other system is not as normalized as the tables you are working with.</p>
<p>Like I said, I do it fairly infrequently, so I never remember the best way in my head.&#160; I usually end up looking at how I’ve done it in the past.&#160; I started thinking that there may be better ways then some of the convoluted strategies I’ve found in previous solutions.</p>
<p>Trusty Google sent me here:</p>
<p><a title="http://www.projectdmx.com/tsql/rowconcatenate.aspx" href="http://www.projectdmx.com/tsql/rowconcatenate.aspx">http://www.projectdmx.com/tsql/rowconcatenate.aspx</a></p>
<p>It’s an incredible (though certainly not exhaustive) list of ways to deal with this depending on your need.&#160; I like XML and chose to go with simplicity so, for this particular task, I went with Eugene Kogan’s “blackbox XML” method.&#160; It’s only a few lines and if you are familiar with XML and SQL then it’s not that hard to understand.</p>
<p>I’ve definitely bookmarked this for later reference!</p>
]]></content:encoded>
			<wfw:commentRss>http://mattpenner.info/2010/06/01/a-great-resource-for-different-strategies-on-concatenating-sql-results/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>We&#8217;re all still kids, just with bigger toys</title>
		<link>http://mattpenner.info/2010/05/04/were-all-still-kids-just-with-bigger-toys/</link>
		<comments>http://mattpenner.info/2010/05/04/were-all-still-kids-just-with-bigger-toys/#comments</comments>
		<pubDate>Tue, 04 May 2010 18:45:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cool]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[Hardware]]></category>

		<guid isPermaLink="false">http://mattpenner.info/2010/05/04/were-all-still-kids-just-with-bigger-toys/</guid>
		<description><![CDATA[I just saw this article:
http://www.tomshardware.com/news/SFF-RAID-HDD,10319.html
It’s an amazing feat by Will Urbina.&#160; He has an amazing tool shop and knowledge on how to use them.&#160; He custom built his own Small Form Factor case that holds 8 2TB drives for a total of 14 TB raided.&#160; Pretty amazing.
I would count this as a great version 1.0 [...]]]></description>
			<content:encoded><![CDATA[<p>I just saw this article:</p>
<p><a title="http://www.tomshardware.com/news/SFF-RAID-HDD,10319.html" href="http://www.tomshardware.com/news/SFF-RAID-HDD,10319.html">http://www.tomshardware.com/news/SFF-RAID-HDD,10319.html</a></p>
<p>It’s an amazing feat by Will Urbina.&#160; He has an amazing tool shop and knowledge on how to use them.&#160; He custom built his own Small Form Factor case that holds 8 2TB drives for a total of 14 TB raided.&#160; Pretty amazing.</p>
<p>I would count this as a great version 1.0 product.&#160; The two changes I would make for v2.0 would be: </p>
<p>1) Accessibility: I would mount each drive into a removable tray. Changing the drives out is going to be a bear. Having removable trays would not only make this a snap but also allow for hot swapping, a real help when dealing with RAID failures. If you can get a tray with built-in heat sinks for the drive that will lead nicely into my next recommendation.</p>
<p>2) Heat: The heat issue should easily be solved by putting heat-sinks on the drives (or heat-sink trays as mentioned above). Then simply seal the box, put vents on the front left side and channel the air through the front left, across the drives to the right and through the back. The drives will need more spacing to accommodate the trays and airflow but maybe you could switch to 2.5 drives. This will definitely take some engineering, especially to work around removable drive trays, but proper sealing and a good fan in the back would give a good airflow. May need to increase fan speed or add additional fans to the front intake.</p>
<p>&#160;</p>
<p>Awesome idea.&#160; I have a few tools in my tool shop, some of which were gifts, others bought new for projects, and others picked up on Craig&#8217;s List or garage sales.&#160; With only a 2 car garage and 3 young kids I have no workshop. <img src='http://mattpenner.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> &#160; But, I have the dream of slowly adding to my tools each year and someday building a sizable work shed in the back.&#160; I would love to be one of those dads that has tools and builds things with their kids.&#160; I always envied my friends who had this and their dad’s shop at their disposal for inspired ideas or school projects.</p>
<p>Ideas like this keep me hoping that this will be a reality someday.</p>
<p>Great job Will!</p>
]]></content:encoded>
			<wfw:commentRss>http://mattpenner.info/2010/05/04/were-all-still-kids-just-with-bigger-toys/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spell-check, suggest as you type, etc &#8211; Are we efficient or just lazy?</title>
		<link>http://mattpenner.info/2010/04/30/spell-check-suggest-as-you-type-etc-are-we-efficient-or-just-lazy/</link>
		<comments>http://mattpenner.info/2010/04/30/spell-check-suggest-as-you-type-etc-are-we-efficient-or-just-lazy/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 19:46:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cool]]></category>

		<guid isPermaLink="false">http://mattpenner.info/2010/04/30/spell-check-suggest-as-you-type-etc-are-we-efficient-or-just-lazy/</guid>
		<description><![CDATA[I’ve been using spell-check since the day it was available years ago on my first computer and word processor,&#160; a Victor 9000 with Multimate.&#160; This was back in 6th grade for me and later through my academic career.&#160; I have great belief that my lack of ability to spell complex words off the top of [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been using spell-check since the day it was available years ago on my first computer and word processor,&#160; a <a href="http://www.old-computers.com/museum/computer.asp?c=210" target="_blank">Victor 9000</a> with <a href="http://en.wikipedia.org/wiki/MultiMate" target="_blank">Multimate</a>.&#160; This was back in 6th grade for me and later through my academic career.&#160; I have great belief that my lack of ability to spell complex words off the top of my head are directly related to the fact that I didn’t have to know how to spell all the time.&#160; I used a computer for that.</p>
<p>Technology progressed from there and soon Microsoft had Word correcting misspelled words as we typed.&#160; Soon they were offering grammar suggestions too (although not very well in the beginning).&#160; Then they started correcting my tenses for me automatically, along with capitalization, correcting my case and turning off my caps key if I suddenly starting typing a sentence like “yESTERDAY I WENT TO THE STORE.”.&#160; </p>
<p>Now, sites like Google and such actually <strong><em>“guess” </em></strong>at what I’m trying to say, making it so I don’t even have to type my entire though.</p>
<p>It’s all about saving time and making us more efficient, but are we just being lazy?</p>
<p>Honestly, I love how far we have come.&#160; Non-audio communication (for my experience anyway) has always been drastically slower than audio based communication.&#160; I can put forth a concept talking with someone a hundred times faster than if I were to write it in an email or in a memo by hand.</p>
<p>In school before computers were mainstream I handed in all my written homework on a computer.&#160; In fact, if I was given a homework paper to fill out, I would either duplicate it on a computer or type it out on a typewriter.&#160; I wasn’t being neat, I hated handwriting.&#160; It was just <strong><em>too slow!&#160; </em></strong></p>
<p>So, rather than being lazy I’d call myself inpatient.&#160; Do I take this for granted?&#160; I think I actually take <strong><em>advantage </em></strong>of it. It’s not a crutch but a feature.&#160; I <strong><em>know</em></strong> Word will correct my capitalization.&#160; I <strong><em>know</em></strong> my iPhone will add a period and put my Shift key on when I enter a double space, signifying the end of a sentence and the start of another.&#160; So, I simply don’t do this anymore.&#160; It’s actually funny watching me type in a plain vanilla word processor like Notepad or an online webform, because I see how much I have come to use the built-in optimizations.&#160; I actually anticpate and take advantage of the fact that my typing is being corrected for me.&#160; Why do I need to bother holding down the shift key at the beginning of <strong>every single sentence?</strong>&#160; I know the software will do it for me so that’s one less key I have to hit every time.&#160; Why do I have to type in apostrophe’s in words like won’t, you’re, or I’ll.&#160; There is no other word these could possibly be so my iPhone puts them in for me.&#160; This is a speed boost feature, not a tool for inept typists.</p>
<p>In other areas of life we don’t even think about this.&#160; For instance, in the development world we have development environments that allow us to write lines of codes with only a few keystrokes.&#160; The software makes suggestions as we type and even makes recommendations on how to clean up our code.&#160; This isn’t considered lazy but actually considered a feature because it makes us not only faster programmers but helps us write more consistent and higher quality software.&#160; This is an investment by our employers.&#160; They don’t want to pay us to type mundane lines of code when we don’t have to.&#160; They’d rather spend an extra few $100 on our tools and pay us to think, get their product to market and start selling it faster with a higher rate of quality.&#160; They don’t think of it as giving us tools to make us lazy but to actually get a better return on their investment.</p>
<p>Enter the iPhone and it’s text input system.&#160; Since the keyboard is entirely touch screen and can be a little small it is quite common that you’ll actually hit a letter adjacent to the one you meant to type.&#160; So, what does Apple do to help this?&#160; Why, every word you type is checked against a dictionary.&#160; If it doesn’t recognize the word you type it attempts to find a match using all the letters adjacent to the ones you typed.&#160; So, for instance, if I accidentally types “hekko” it might suggest “hello” as an alternative.&#160; Other neat features are like I mentioned above.&#160; Since the screen ahs limited space, unlike a full-sized keyboard on a computer, they attempt to maximize the space they have and minimize the amount of context switching.&#160; What I mean by context switching is changing from letters to numbers or symbols, typing punctuation, using international characters, etc.&#160; For isntance, if I am filling out my email address they put the @ sign as one of the keys on the main screen.&#160; I have to use an @ sign every single time I type an email address, so why not put this on the main keyboard with the rest of my letters when entering email addresses?&#160; When I am typing in a web address they have a “.com” button.&#160; What if I want to go to a .net or .org address instead?&#160; If I hold down the .com button after a brief pause it will open up and allow me to drag to any number of common suffixes, such as .org, .net, .gov, etc.&#160; There are tons more but you get the point.</p>
<p>I never realized how awesome these little changes might be until I got my own iPhone.&#160; I type on it all the time and they are life savers.&#160; What the iPhone doesn’t due (as highly criticized by users and iPhone opponents) is that there is no spell check.&#160; I completely agree and expect Apple to remedy this shortly.&#160; Why a device that can predict what I meant to say, take video, allow me to find where I last parked, count my food intake, suggest movies near me, etc can’t even offer to spell check my words in this day and age is beyond me.&#160; But that’s another story.</p>
<p>Now, if you’ve seen the recent Samsung commercials, there is a new texting technology on their Omnia phones called <a href="http://swypeinc.com/" target="_blank">Swype</a>. It allows you to type simply by dragging your finger rather than physically pushing down and then lifting up your finger on each button.&#160; Is this faster?&#160; Well, that all depends on your typing style and comfort but I could see this being a game changer for those that like it.</p>
<p>In the end, what’s the best?&#160; Well that’s all relative, but for my money it seems like we have a lot of good ideas, <strong><em>all going in opposite directions</em></strong>!&#160; </p>
<p>Why can’t I have a Swype input that suggests as I type, corrects my spelling if I hit an adjacent letter, corrects my spelling if I misspell a word in a common way or use a grammatically incorrect tense or pluralism.&#160; that would be the best.&#160; Combine Swype with the iPhone and Microsoft and I’d be set.&#160; If I am on a standard computer with a full sized keyboard some of the options like Swype no longer make sense, but I still like the double space that converts to a period and turns my shift key on among many others.&#160; </p>
<p>That’s where my money is.&#160; Hopefully it won’t take too long.&#160; I’m sure there will be patent wars but in the end hopefully us users get the benefit of all these typing optimizations working together.</p>
]]></content:encoded>
			<wfw:commentRss>http://mattpenner.info/2010/04/30/spell-check-suggest-as-you-type-etc-are-we-efficient-or-just-lazy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building a .Net 3.5 Web App on Windows Server 2000 with only .Net 2.0</title>
		<link>http://mattpenner.info/2010/04/23/building-a-net-3-5-web-app-on-windows-server-2000-with-only-net-2-0/</link>
		<comments>http://mattpenner.info/2010/04/23/building-a-net-3-5-web-app-on-windows-server-2000-with-only-net-2-0/#comments</comments>
		<pubDate>Fri, 23 Apr 2010 19:56:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cool]]></category>
		<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://mattpenner.info/2010/04/23/building-a-net-3-5-web-app-on-windows-server-2000-with-only-net-2-0/</guid>
		<description><![CDATA[I am upgrading an older web app of ours as I referenced in my last blog post.&#160; This was originally a straight html app with no dynamic content at all.&#160; I created a .Net ASPX web app out of it and used LINQ to quickly and easily create a survey form that our users could [...]]]></description>
			<content:encoded><![CDATA[<p>I am upgrading an older web app of ours as I referenced in my <a href="http://mattpenner.info/2010/04/22/resharper-destabilizing-my-runtime-huh/" target="_blank">last blog post</a>.&#160; This was originally a straight html app with no dynamic content at all.&#160; I created a .Net ASPX web app out of it and used LINQ to quickly and easily create a survey form that our users could fill out.&#160; It worked great on my machine.</p>
<p>Unfortunately the happy ending got derailed when I deployed it to our web server.&#160; Our web server is an ancient Windows 2000 server box with IIS 5.&#160; this is because it’s where all our main apps our housed, everything works and there is great fear in changing it.&#160; &lt;sigh&gt;</p>
<p>So, I either had to figure out how to get my .Net 3.5 app running on IIS5 with .Net 2 or I had to abandon LINQ and go back to data readers (yuck!).&#160; I first tried to install .Net 3.5 on the web server but quickly found out that it requires Windows XP or Server 2003 as a minimum.&#160; OK, so that’s ruled out.</p>
<p>I knew that the asp.net framework has always been 2.0 (until the new release of 4.0 that is) and .Net 3.0 and 3.5 just added extra features on top of 2.0 but never changed the underlying base classes.&#160; So you can easily use .Net 3.5 apps on a .Net 2.0 web server.&#160; In fact, this has caused a lot of confusion because there simply is no 3.0 or 3.5 selection in IIS for the .Net framework.</p>
<p>I knew if I could just reference the required .Net 3.5 dlls then this shoudl work.&#160; Doing a quick search on Google lead me to this <a href="http://rainstorms.me.uk/blog/2009/04/22/more-details-on-installing-net-35-in-windows-2000/comment-page-1/#comment-6973" target="_blank">great article</a>.&#160; I was wondering if something like this was possible and, sure enough, it pointed me in the right direction. </p>
<p>&#160;</p>
<p>Here is what I did and it worked like a charm. </p>
<p>I first set my build target for the web app in Visual Studio 2008 to .Net 2.0.&#160; This caused VS 2008 to instantly remove any non-.Net 3.5 compatible references such as LINQ.&#160; I did a build and received numerous errors, most pertaining to my code that made use of LINQ. </p>
<p>I copied the System.core and Linq.Data DLLs into my web app’s bin folder and referenced them.&#160; After another attempt to build the solution the LINQ errors went away but it still didn&#8217;t understand my lambda expressions or my auto-properties.&#160; This makes perfect sense.&#160; These are compiler features and not referenced code.&#160; Since, by default, asp.net compiles on the server it had better understand these.&#160; I could change the autoproperties back to normal properties but there is no lambda equivalent for .Net 2.0. </p>
<p>So, I created a new project and moved all LINQ code into it and had it target .Net 3.5.&#160; Having my data access classes in a separate project felt much cleaner and probably would having been an eventual refactoring later.&#160; I removed this code from the web app and created a reference to the new project. </p>
<p>Ran a build and received the welcome success message. </p>
<p>I then deployed the web app to the web server.&#160; Upon opening one of the new pages, which runs a LINQ query to obtain some data to populate a drop down list, I received the following error:    <br /><font face="Courier New">Could not load type &#8216;System.ComponentModel.INotifyPropertyChanging&#8217; from assembly &#8216;System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&#8242; </font></p>
<p>After some googling it turns out that INotifyPropertyChanging wasn&#8217;t introduced until .Net 2.0 SP1.&#160; Sure enough, our web server had 2.0 but no service packs. </p>
<p>I installed .Net 2.0 SP2 and everything worked great! </p>
<p>&#160;</p>
<p>I am in the process of redesigning our entire department’s website and that is all built on MVC and several other current technologies.&#160; I have another web server that is running 2003 for that.&#160; I might miss out on some of the newer IIS 7 features but .Net 4 runs on it just fine so at least this is a major step forward.</p>
<p>Take care!</p>
]]></content:encoded>
			<wfw:commentRss>http://mattpenner.info/2010/04/23/building-a-net-3-5-web-app-on-windows-server-2000-with-only-net-2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ReSharper destabilizing my runtime? Huh?</title>
		<link>http://mattpenner.info/2010/04/22/resharper-destabilizing-my-runtime-huh/</link>
		<comments>http://mattpenner.info/2010/04/22/resharper-destabilizing-my-runtime-huh/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 15:43:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[ReSharper]]></category>

		<guid isPermaLink="false">http://mattpenner.info/2010/04/22/resharper-destabilizing-my-runtime-huh/</guid>
		<description><![CDATA[I’m adding some new features to an older ASP.Net Web Forms app we have.&#160; Fortunately I can take advantage of .Net 3.5, though not MVC because it’s on a Windows 2000 server with IIS 5.&#160; Anyway, this allows me to use LINQ, which has been incredible.&#160; Creating the mapping and using LINQ queries is leaps [...]]]></description>
			<content:encoded><![CDATA[<p>I’m adding some new features to an older ASP.Net Web Forms app we have.&#160; Fortunately I can take advantage of .Net 3.5, though not MVC because it’s on a Windows 2000 server with IIS 5.&#160; Anyway, this allows me to use LINQ, which has been incredible.&#160; Creating the mapping and using LINQ queries is leaps and bounds more convenient and less prone to error than our older data readers and such we used in the past.</p>
<p>I am more in the TDD camp and like to manage my own data bindings so I don’t like to use the LINQ model designer.&#160; Instead of dragging and dropping tables onto the designer and letting LINQ create the classes for me in the background I create my own concrete classes and then put attributes on the classes themselves.&#160; I know, some may not like putting attributes in their code because they argue that it makes their objects dependent on the database framework rather than being completely database agnostic.&#160; However, 100% of our apps make use of Microsoft SQL and I don’t see that ever changing in the near future.&#160; So, rather than go through the overhead and complexity of a truly database agnostic ORM setup I’ll happily add a few attributes to my code that plainly show exactly what’s going on.</p>
<p>In this particular case we have parents and students that will be filling out a survey based on when they graduated from our programs.&#160; Because we serve multiple districts, each with multiple schools, I ask the user to select which district and school they graduated from.&#160; Thus, I have a <font face="Courier New">SchoolDistrict</font> class which contains a <font face="Courier New">List</font> of <font face="Courier New">School</font> classes.&#160; In LINQ you can map a relationship using the <font face="Courier New">Association</font> attribute.&#160; I got the details and examples from Microsoft’s MSDN article here: <a title="http://msdn.microsoft.com/en-us/library/bb386950.aspx" href="http://msdn.microsoft.com/en-us/library/bb386950.aspx">http://msdn.microsoft.com/en-us/library/bb386950.aspx</a></p>
<p>Here was my initial code for <font face="Courier New">SchoolDistrict</font>:</p>
<div style="border-right: #cecece 1px solid; padding-right: 5px; border-top: #cecece 1px solid; padding-left: 5px; min-height: 40px; padding-bottom: 5px; overflow: auto; border-left: #cecece 1px solid; width: 456px; padding-top: 5px; border-bottom: #cecece 1px solid; background-color: #fbfbfb; color: #000000">
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">1:     <span style="color: #0000ff">using</span> System.Collections.Generic;</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">2:     <span style="color: #0000ff">using</span> System.Data.Linq;</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">3:     <span style="color: #0000ff">using</span> System.Data.Linq.Mapping;</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">4:</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">5:     <span style="color: #0000ff">namespace</span> App_Code.Entities</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">6: {</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">7: [Table(Name = &quot;     <span style="color: #8b0000">vw_Table_D_Current_SchoolDistricts</span> &quot;)]</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">8:     <span style="color: #0000ff">public</span>      <span style="color: #0000ff">class</span> SchoolDistrict</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">9: {</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">10:     <span style="color: #0000ff">private</span> EntitySet&lt;School&gt; Schools;</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">11:</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">12: [Column(IsPrimaryKey =     <span style="color: #0000ff">true</span> )]</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">13:     <span style="color: #0000ff">public</span>      <span style="color: #0000ff">string</span> districtCdsCode {     <span style="color: #0000ff">get</span> ;     <span style="color: #0000ff">set</span> ; }</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">14:</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">15: [Column]</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">16:     <span style="color: #0000ff">public</span>      <span style="color: #0000ff">string</span> name {     <span style="color: #0000ff">get</span> ;     <span style="color: #0000ff">set</span> ; }</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">17:</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">18: [Association(Storage = &quot;     <span style="color: #8b0000">Schools</span> &quot;, OtherKey = &quot;     <span style="color: #8b0000">districtCdsCode</span> &quot;)]</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">19:     <span style="color: #0000ff">public</span> List&lt;School&gt; schools</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">20: {</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">21:     <span style="color: #0000ff">get</span> {     <span style="color: #0000ff">return</span>      <span style="color: #0000ff">new</span> List&lt;School&gt;(Schools); }</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">22:     <span style="color: #0000ff">set</span> { Schools.Assign(     <span style="color: #0000ff">value</span> ); }</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">23: }</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">24: }</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">25: }</div>
</p></div>
<p>&#160;</p>
<p>Here was my initial code for <font face="Courier New">School</font>:</p>
<div style="border-right: #cecece 1px solid; padding-right: 5px; border-top: #cecece 1px solid; padding-left: 5px; min-height: 40px; padding-bottom: 5px; overflow: auto; border-left: #cecece 1px solid; width: 456px; padding-top: 5px; border-bottom: #cecece 1px solid; background-color: #fbfbfb; color: #000000">
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">1:     <span style="color: #0000ff">using</span>System.Data.Linq.Mapping;</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">2:</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">3:     <span style="color: #0000ff">namespace</span>App_Code.Entities</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">4: {</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">5: [Table(Name = &quot;     <span style="color: #8b0000">vw_Table_D_Current_Schools</span>&quot;)]</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">6:     <span style="color: #0000ff">public</span>     <span style="color: #0000ff">class</span>School</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">7: {</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">8: [Column(IsPrimaryKey =     <span style="color: #0000ff">true</span>)]</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">9:     <span style="color: #0000ff">public</span>     <span style="color: #0000ff">string</span> schoolCdsCode {     <span style="color: #0000ff">get</span> ;     <span style="color: #0000ff">set</span> ; }</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">10:</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">11: [Column]</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">12:     <span style="color: #0000ff">public</span>      <span style="color: #0000ff">string</span> name {     <span style="color: #0000ff">get</span> ;     <span style="color: #0000ff">set</span> ; }</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">13:</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">14: [Column]</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">15:     <span style="color: #0000ff">public</span>      <span style="color: #0000ff">string</span> districtCdsCode {     <span style="color: #0000ff">get</span> ;     <span style="color: #0000ff">set</span> ; }</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">16: }</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">17: }</div>
</p></div>
<p>&#160;</p>
<p>Everything worked great and I was rolling.&#160; Then I had ReSharper clean up a few things and I took some of its suggestions on optimizing my code.&#160; I made a few other changes and, then all of a sudden, I got this when I ran the code:</p>
<p>System.Security.VerificationException: <i><font color="#ff0000">Operation could destabilize the runtime.</font></i></p>
<p>Ugh!&#160; What’s that???!!</p>
<p>After a lot of Googling I had come up with nothing.&#160; Most of the fixes I saw related to mapping IEnumerables to IQueryables, covariance vs contravariance, etc.&#160; Nothing seemed to fit my particular scenario and none of the fixes worked.&#160; I went over my code with a fine tooth comb making sure my mappings were still correct, making sure the capitalization in my attributes were not fouling things up, etc.&#160; I came up with nothing.</p>
<p>&#160;</p>
<p>So, I went back to square one.&#160; I looked at the Microsoft example again and I found one modifier that was different.&#160; ReSharper had noted that I could mark my <font face="Courier New">Schools</font> EntitySet in my <font face="Courier New">SchoolDistrict</font> class as <font face="Courier New">readonly</font>.&#160; I removed this modifier and, voila, everything worked.&#160; Sure enough, ReSharper again started suggesting that I mark this as <font face="Courier New">readonly</font>.&#160; I did and my code broke again.&#160; I had found the culprit.</p>
<p>I had not seen this mentioned anywhere on Google and I guess, in hindsight, most people wouldn&#8217;t mark this as <font face="Courier New">readonly</font>.&#160; </p>
<p>I don’t always take ReSharper’s suggestions but this is the first time that ReSharper actually broke my code.&#160; <img src='http://mattpenner.info/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> &#160; Truth be told, ReSharper is a tool and it’s only as good as the one wielding it.&#160; If I let ReSharper perform invalid operations that’s not ReSharper’s fault but my own.&#160; However, I still didn’t like that I may not remember this key piece of information in the future.</p>
<p>So, I told ReSharper to ignore this in the future and wrote a comment as to why.&#160; That cluttered up my code and it now looks like this:</p>
<div style="border-right: #cecece 1px solid; padding-right: 5px; border-top: #cecece 1px solid; padding-left: 5px; min-height: 40px; padding-bottom: 5px; overflow: auto; border-left: #cecece 1px solid; width: 456px; padding-top: 5px; border-bottom: #cecece 1px solid; background-color: #fbfbfb; color: #000000">
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">1:     <span style="color: #008000">// ReSharper disable FieldCanBeMadeReadOnly.Local</span>   </div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">2:     <span style="color: #008000">// If set to read only this causes an &quot;Operation could destabilize the runtime&quot; exception when the query is evaluated</span>   </div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">3:     <span style="color: #0000ff">private</span>EntitySet&lt;School&gt; Schools;</div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">4:     <span style="color: #008000">// ReSharper restore FieldCanBeMadeReadOnly.Local</span>   </div>
<div style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">5:</div>
</p></div>
<p>Wow, that is ugly!&#160; I hate having to put comments in my code that are because of dependencies to frameworks.&#160; Now I have a comment in my code that’s dependent on an IDE tool, not even something required for the app itself!!!&#160; That’s just plain ugly and a major code smell if you ask me.&#160; However, that’s just the way it is for now.&#160; The app works and I’ll go on with my life.&#160; It’s not perfect but I don’t want to spend a day figuring out a better way.&#160; If someone posts a better suggestion or I find something in the future then I’ll revamp it, but for now, I’ll get the app out the door and life will go on. </p>
<p>I hope that this helps someone else out there that may run into this issue.</p>
<p>In the end ReSharper is one of the best tools I have in my toolbox, number 2 right behind Visual Studio itself.&#160; It’s incredible and I can’t imagine coding without it.&#160; It truly has helped make me a better developer than any other tool I’ve used to date (again, after VS).</p>
<p>Take care all and happy developing!</p>
]]></content:encoded>
			<wfw:commentRss>http://mattpenner.info/2010/04/22/resharper-destabilizing-my-runtime-huh/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Microsoft Intune &#8211; The Beginning of Small Business IT Management in the Cloud</title>
		<link>http://mattpenner.info/2010/04/20/microsoft-intune-the-beginning-of-small-business-it-management-in-the-cloud/</link>
		<comments>http://mattpenner.info/2010/04/20/microsoft-intune-the-beginning-of-small-business-it-management-in-the-cloud/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 19:57:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[IT]]></category>

		<guid isPermaLink="false">http://mattpenner.info/2010/04/20/microsoft-intune-the-beginning-of-small-business-it-management-in-the-cloud/</guid>
		<description><![CDATA[Microsoft just released information regarding their new cloud management service for small organizations, Microsoft Intune.&#160; you can read about it on their blog post here.
It’s geared towards smaller companies that have between 25 and 2,500 PCs that may not be able to afford a standard IT infrastructure and server deployment.&#160; Honestly, with some of my [...]]]></description>
			<content:encoded><![CDATA[<p>Microsoft just released information regarding their new cloud management service for small organizations, <a href="http://www.microsoft.com/online/windows-intune.mspx" target="_blank">Microsoft Intune</a>.&#160; you can read about it on their <a href="http://windowsteamblog.com/blogs/windows7/archive/2010/04/19/microsoft-takes-desktop-management-to-the-cloud-introducing-windows-intune.aspx" target="_blank">blog post here</a>.</p>
<p>It’s geared towards smaller companies that have between 25 and 2,500 PCs that may not be able to afford a standard IT infrastructure and server deployment.&#160; Honestly, with some of my clients using SBS 2003 with a decent IT consultant (me <img src='http://mattpenner.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ) companies with as little as 15 machines can easily make use of the standard Microsoft infrastructure.&#160; If you’re beyond 100 PCs I don’t know how you would ever manage this effectively without having Windows Server, Active Directory and many of the management tools such as WSUS and a managed virus/malware setup.&#160; But, that’s beyond the point.</p>
<p>What is Microsoft Intune and what does it do for you?&#160; Here are the basics:</p>
<ul>
<li>Manage PCs through web-based console: Windows Intune provides a web-based console for IT to administrate their PCs. Administrators can manage PCs from anywhere.</li>
<li>Manage updates: Administrators can centrally manage the deployment of Microsoft updates and service packs to all PCs.</li>
<li>Protection from malware: Windows Intune helps protect PCs from the latest threats with malware protection built on the Microsoft Malware Protection Engine that you can manage through the Web-based console.</li>
<li>Proactively monitor PCs: Receive alerts on updates and threats so that you can proactively identify and resolve problems with your PCs—before it impacts end users and your business.</li>
<li>Provide remote assistance: Resolve PC issues, regardless of where you or your users are located, with remote assistance.</li>
<li>Track hardware and software inventory: Track hardware and software assets used in your business to efficiently manage your assets, licenses, and compliance.</li>
<li>Set security policies: Centrally manage update, firewall, and malware protection policies, even on remote machines outside the corporate network. </li>
<li>Licensing to upgrade all your PCs to Windows 7 Enterprise.&#160; Includes all applicable upgrades to the latest Windows as well as downgrades while you are under the subscription.</li>
</ul>
<p>Intune is only in beta at the moment.&#160; You can sign up here until May 16th.&#160; It isn’t scheduled to be released in production until next year.&#160; At that time it will be a subscription based service, most likely ona per PC basis.&#160; </p>
<p><strong>A few things of note:</strong> </p>
<ul>
<li>The tracking of hardware and software would be nice.&#160; I don’t know if this only tracks PCs or if it also tracks hardware like printers and network appliances and I’m not sure if it tracks non-Microsoft software.&#160; We’ll have to wait and see how thorough their system is.</li>
<li>Setting of security policies seem to be limited to templates that affect security settings like Windows Firewall, updates, etc.&#160; It doesn’t seem to be a full fledged Active Directory Group Policy infrastructure.&#160; </li>
<li>Allowing the upgrading of all of your PCs to Windows 7 enterprise is a pretty great deal.</li>
</ul>
<p><strong>Not a replacement for Small Business Server</strong></p>
<p>I don’t see this as a replacement for SBS.&#160; Honestly, I don’t really see anything that can’t already be accomplished by a decent network setup by an IT consultant, and that you don’t have to pay a monthly fee for.&#160; You still have to have someone knowledgeable (or your IT consultant) to handle the setup and monitoring of Intune, so you aren’t getting rid of your IT guy, just adding the management layer on top of your current network.</p>
<p>What does SBS do that Intune doesn’t do?&#160; Pretty much everything else.&#160; It gives you a full fledged AD infrastructure, user/group/hardware authentication/authorization, shared resources such as folders/printers, Exchange, SQL Server, IAS, etc.</p>
<p>Microsoft already makes Exchange available as a subscription based service, though I don’t know if this is technically in the MS Azure cloud yet.&#160; Azure currently also is starting to handle the SQL space.&#160; </p>
<p>I think Intune will really be able to fill the small business space when I can have a SBS server locally to handle shared resources and local caching of my AD/DNS, but then offload everything else to the cloud, including my licensing management of all my MS products including Windows, Office, etc, AD management, GPO management, intranet, etc.&#160; Then this might really be a full on solution that I could see businesses shelling out $50 annually a computer for.</p>
<p>So, am I signing up for the beta?&#160; Yeah, why not.&#160; I’d really like to see how this works out and where it&#8217;s headed.&#160; One of my clients is due to renew their annual license for their virus vendor and we haven’t been that happy lately with the product.&#160; So, this will give us a chance to try out the Microsoft offering for little cost (if anything) and see if this really lets me manage the network better.&#160; Having the remote access through Silverlight will be nice.&#160; That way I don’t have to remote into the server and then remote from there.&#160; Until I see actual estimates on licensing though I will be hesitant to upgrade the PCs to Windows 7.</p>
]]></content:encoded>
			<wfw:commentRss>http://mattpenner.info/2010/04/20/microsoft-intune-the-beginning-of-small-business-it-management-in-the-cloud/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Cloud Print &#8211; Neat idea</title>
		<link>http://mattpenner.info/2010/04/19/google-cloud-print-neat-idea/</link>
		<comments>http://mattpenner.info/2010/04/19/google-cloud-print-neat-idea/#comments</comments>
		<pubDate>Mon, 19 Apr 2010 17:39:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cool]]></category>

		<guid isPermaLink="false">http://mattpenner.info/2010/04/19/google-cloud-print-neat-idea/</guid>
		<description><![CDATA[I just read this article on Mashable:
Google Cloud Print Reveals the Future of Printing
&#160;
This could eventually be combined with Google maps and location-aware apps.&#160; Then, if I am on my mobile device and I need to print a document quickly I can pull up a map and find all the nearest public printers that I [...]]]></description>
			<content:encoded><![CDATA[<p>I just read this article on Mashable:</p>
<p><a href="http://mashable.com/2010/04/16/google-cloud-print/" target="_blank">Google Cloud Print Reveals the Future of Printing</a></p>
<p>&#160;</p>
<p>This could eventually be combined with Google maps and location-aware apps.&#160; Then, if I am on my mobile device and I need to print a document quickly I can pull up a map and find all the nearest public printers that I could use, such as from Kinko&#8217;s, Staples or other office type stores near my current location or my destination.&#160; </p>
<p>&#160;</p>
<p>That would be sweet.&#160; I&#8217;m on my iPhone, get a document from a client that needs to be signed, I review it on my iPhone and then print the signature page near our meeting.&#160; I pick it up, sign it and deliver it on the spot.&#160; Cool!</p>
]]></content:encoded>
			<wfw:commentRss>http://mattpenner.info/2010/04/19/google-cloud-print-neat-idea/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
