<?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/"
	>

<channel>
	<title>devmorgan.com</title>
	<atom:link href="http://www.devmorgan.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.devmorgan.com/blog</link>
	<description>Code Monkey and Grad Student Extraordinaire</description>
	<pubDate>Thu, 02 Jul 2009 22:25:02 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>My Cheesy Garlic Bread by Dave Morgan</title>
		<link>http://www.devmorgan.com/blog/2009/07/02/my-cheesy-garlic-bread-by-dave-morgan/</link>
		<comments>http://www.devmorgan.com/blog/2009/07/02/my-cheesy-garlic-bread-by-dave-morgan/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 22:22:40 +0000</pubDate>
		<dc:creator>dave</dc:creator>
		
		<category><![CDATA[food]]></category>

		<guid isPermaLink="false">http://www.devmorgan.com/blog/?p=168</guid>
		<description><![CDATA[I can&#8217;t quite come up with a good name. Dave&#8217;s Cheesy Garlic Bread is a little too generic, and Devmorgan&#8217;s Cheesy Garlic Bread is a little weird sounding.. so, I&#8217;ll go with My Cheesy Garlic Bread (by Dave Morgan).
No, this isn&#8217;t particularly geeky, and has nothing to do with technology or computers - but it&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>I can&#8217;t quite come up with a good name. Dave&#8217;s Cheesy Garlic Bread is a little too generic, and Devmorgan&#8217;s Cheesy Garlic Bread is a little weird sounding.. so, I&#8217;ll go with My Cheesy Garlic Bread (by Dave Morgan).</p>
<p>No, this isn&#8217;t particularly geeky, and has nothing to do with technology or computers - but it&#8217;s my favorite thing to cook for people if I want to pretend to look like I can cook.</p>
<p>Start to Finish: About 45-50 mins</p>
<p>So, first things first.. Ingredients (makes about 8 pieces)</p>
<ul>
<li>1 loaf of pane Italian bread</li>
<li>1.5 sticks of butter (or 2 if you want even LESS healthy. or 1 if you want more healthy)*</li>
<li>Grated mozzarella cheese (I usually get away with the 16oz bag - can grate yourself though)</li>
<li>2 tablespoons of minced garlic (do it yourself, or buy the little glass jar at the store)</li>
</ul>
<p>* = I make no claim that this is healthy no matter how much butter you do or don&#8217;t use.</p>
<p>Now, for the directions. Some variances can apply, I will note them. Also, some steps can be done concurrently, I bet you&#8217;re smart enough to figure out you can melt butter and slice bread at the same time ;).</p>
<ol>
<li>Pre-heat your oven to 375 degrees.</li>
<li>Slice your bread
<div class="wp-caption aligncenter" style="width: 510px"><a href="/sandbox/bread/large/Cheesy Bread 004.jpg"><img title="Sliced Bread" src="/sandbox/bread/Cheesy Bread 004.jpg" alt="Slice about 8 slices out (1-1.5 inches thick)." width="500" height="375" /></a><p class="wp-caption-text">Slice about 8 slices out (1-1.5 inches thick).</p></div></li>
<li>Melt Your butter. I tend to melt half a stick first, put a tablespoon of garlic in, then melt the rest, and put the other tablespoon in. I used to do this in the microwave - now I actually do it in a sauce pan. I think the butter seems to get more of the garlic&#8217;s flavor this way. I could be wrong. Results may vary.
<p><div class="wp-caption aligncenter" style="width: 510px"><a href="/sandbox/bread/large/Cheesy Bread 012.jpg"><img title="Melting butter and Mixing Garlic" src="/sandbox/bread/Cheesy Bread 012.jpg" alt="Mix this all together until it melts completely and let it simmer a min or two." width="500" height="375" /></a><p class="wp-caption-text">Mix this all together until it melts completely and let it simmer a min or two.</p></div></li>
<li>Place your sliced bread on a cookie sheet (I wrap it with tin-foil to save on clean-up later).
<p><div class="wp-caption aligncenter" style="width: 510px"><a href="/sandbox/bread/large/Cheesy Bread 006"><img title="Bread on tray" src="/sandbox/bread/Cheesy Bread 006.jpg" alt="Better to have them closer rather than farther apart, but not touching." width="500" height="375" /></a><p class="wp-caption-text">Better to have them closer rather than farther apart, but not touching.</p></div></li>
<li>Now, use a spoon to scoop out the garlic from the pan and evenly distribute it onto the bread slices (I sometimes make one half of the tray more garlic heavy if some people don&#8217;t like garlic as much).  Scoop all the loose garlic out first.
<p><div class="wp-caption aligncenter" style="width: 510px"><a href="/sandbox/bread/large/Cheesy Bread 014.jpg"><img title="Scooping Garlic" src="/sandbox/bread/Cheesy Bread 014.jpg" alt="Dont worry - we use the butter soon enough. Just garlic for now though." width="500" height="375" /></a><p class="wp-caption-text">Don&#39;t worry - we use the butter soon enough. Just garlic for now though.</p></div></li>
<li>Now pour the butter onto the bread. Pour slowly and let it soak into the bread. Use all the butter. It&#8217;s okay if some runs off the bread.
<p><div class="wp-caption aligncenter" style="width: 510px"><a href="/sandbox/bread/large/Cheesy Bread 016.jpg"><img title="Pouring butter" src="/sandbox/bread/Cheesy Bread 016.jpg" alt="Yes. This is artery clogging goodness." width="500" height="375" /></a><p class="wp-caption-text">Yes. This is artery clogging goodness.</p></div>
<div class="wp-caption aligncenter" style="width: 510px"><a href="/sandbox/bread/large/Cheesy Bread 017.jpg"><img title="After pouring" src="/sandbox/bread/Cheesy Bread 017.jpg" alt="The bread should be saturated with the butter." width="500" height="375" /></a><p class="wp-caption-text">The bread should be saturated with the butter.</p></div></li>
<li>Place the bread in the over for about 15 mins (this will start to make it a little more like toast).</li>
<li>Pull the bread out and now place your cheese on the bread&#8230; liberally. Mound the cheese on each slice of bread. No, more than that. Even more.. Little more.. Alright, thats good.
<p><div class="wp-caption aligncenter" style="width: 510px"><a href="/sandbox/bread/large/Cheesy Bread 020.jpg"><img title="Mound Cheese" src="/sandbox/bread/Cheesy Bread 020.jpg" alt="The more cheese the more delicious." width="500" height="375" /></a><p class="wp-caption-text">The more cheese the more delicious.</p></div>
<p><div class="wp-caption aligncenter" style="width: 510px"><a href="/sandbox/bread/large/Cheesy Bread 021.jpg"><img title="Lots of Cheese" src="/sandbox/bread/Cheesy Bread 021.jpg" alt="I tend to pour it over, and a lot gets lost to the tray. Thats ok. Just make sure the bread has lots of cheese on it." width="500" height="375" /></a><p class="wp-caption-text">I tend to pour it over, and a lot gets lost to the tray. Thats ok. Just make sure the bread has lots of cheese on it.</p></div></li>
<li>Bake for another 15-20 mins. Pull the bread out when the cheese starts to brown on the edges and a little on the top.
<p><div class="wp-caption aligncenter" style="width: 510px"><a href="/sandbox/bread/large/Cheesy Bread 023.jpg"><img title="Finished Bread" src="/sandbox/bread/Cheesy Bread 023.jpg" alt="This is how it should look, more or less. Its what delicious looks like." width="500" height="375" /></a><p class="wp-caption-text">This is how it should look, more or less. It&#39;s what delicious looks like.</p></div></li>
</ol>
<p>I tend to serve this with spaghetti or sometimes steak. It&#8217;s not healthy, but it is DELICIOUS. Plus, it&#8217;s ok if you make too much - it tastes pretty delicious out of the fridge the next day.</p>

]]></content:encoded>
			<wfw:commentRss>http://www.devmorgan.com/blog/2009/07/02/my-cheesy-garlic-bread-by-dave-morgan/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Seuss-ifying a Nursery</title>
		<link>http://www.devmorgan.com/blog/2009/06/29/seuss-ifying-a-nursery/</link>
		<comments>http://www.devmorgan.com/blog/2009/06/29/seuss-ifying-a-nursery/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 15:47:47 +0000</pubDate>
		<dc:creator>dave</dc:creator>
		
		<category><![CDATA[house]]></category>

		<category><![CDATA[life]]></category>

		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.devmorgan.com/blog/?p=153</guid>
		<description><![CDATA[So, this past week has been one of painting - not so much of coding like usual&#8230;
Lots of painting.
I would like to thank Jess&#8217; parents for coming up and helping us by painting our family room, office, and nursery. Having the help made getting so much work done possible.
This post however, is less about that [...]]]></description>
			<content:encoded><![CDATA[<p>So, this past week has been one of painting - not so much of coding like usual&#8230;</p>
<p>Lots of painting.</p>
<p>I would like to thank Jess&#8217; parents for coming up and helping us by painting our family room, office, and nursery. Having the help made getting so much work done possible.</p>
<p>This post however, is less about that particular bit of painting, but more about the amazing work that my sister Michelle was able to do when she came up this weekend. Now, my sister is artistic - but I never imagined how nicely our Dr. Seuss nursery would turn out.</p>
<p>First things first, we had to start with a blank canvas.</p>
<div class="wp-caption aligncenter" style="width: 517px"><img title="Blank Canvas 1" src="/sandbox/seuss/blankcanvas1.jpg" alt="This is the side of the room on the left as you enter. Near the door." width="507" height="380" /><p class="wp-caption-text">This is the side of the room on the left as you enter. Near the door.</p></div>
<div class="wp-caption aligncenter" style="width: 517px"><img title="Blank Canvas 2" src="/sandbox/seuss/blankcanvas2.jpg" alt="This is the corner that is kitty corner to the door. The focal point in the room." width="507" height="380" /><p class="wp-caption-text">This is the corner that is kitty corner to the door. The focal point in the room.</p></div>
<p>Now, this beautiful blue base was painted by Jess&#8217; parents, and it came out great&#8230; but it doesn&#8217;t look much like a Dr. Seuss themed room, does it?</p>
<p><span id="more-153"></span></p>
<p>Also, I thank my co-worker Terry for letting me borrow his projector. We were able to project the images we wanted on the wall.</p>
<div class="wp-caption aligncenter" style="width: 517px"><img title="Tracing with Projector" src="/sandbox/seuss/projectortrace.jpg" alt="Fox with Socks. Much easier to trace than freehand." width="507" height="587" /><p class="wp-caption-text">Fox in Socks. Much easier to trace than freehand.</p></div>
<p>We we&#8217;re able to do this for every character we wanted to add to the room. It took us a little while to get the sizes we wanted, and positioning the project was a pain - but it made everything go MUCH faster as we progressed.</p>
<p>We started to paint the characters on the wall, such as Fox in Socks:</p>
<div class="wp-caption aligncenter" style="width: 517px"><img title="Fox in Socks" src="/sandbox/seuss/foxhalfdone.jpg?" alt="No socks quite yet" width="507" height="676" /><p class="wp-caption-text">No socks quite yet</p></div>
<p>We also started to paint Thing 1 and Thing 2 (on opposite sides of the room):</p>
<div class="wp-caption aligncenter" style="width: 517px"><img title="Thing" src="/sandbox/seuss/thinghalfdone.jpg" alt="Lacks the pop without the color to the hair." width="507" height="676" /><p class="wp-caption-text">Lacks the pop without the color to the hair.</p></div>
<p>We then get to the Seuss-iconic Cat in the Hat:</p>
<div class="wp-caption aligncenter" style="width: 517px"><img title="Cat in the Hat" src="/sandbox/seuss/cathalfdone.jpg" alt="Not quite the same without black." width="507" height="676" /><p class="wp-caption-text">Not quite the same without black.</p></div>
<p>Of course, then we had to get Sam from Green eggs and Ham in the room too:</p>
<div class="wp-caption aligncenter" style="width: 517px"><img title="Sam" src="/sandbox/seuss/samhalfdone.jpg" alt="Sexy, Sexy, Green Eggs and Ham" width="507" height="380" /><p class="wp-caption-text">Sexy, Sexy, Green Eggs and Ham</p></div>
<div class="wp-caption aligncenter" style="width: 517px"><img title="Sam" src="/sandbox/seuss/davepaintingsam.jpg" alt="Me painting Sam" width="507" height="380" /><p class="wp-caption-text">Me painting Sam</p></div>
<p>&#8230;and now for the focal point of the room, we drew Horton.</p>
<div class="wp-caption aligncenter" style="width: 517px"><img title="Horton" src="/sandbox/seuss/hortonhalfdone.jpg" alt="Horton miraculously floats!" width="507" height="380" /><p class="wp-caption-text">Horton miraculously floats!</p></div>
<div class="wp-caption aligncenter" style="width: 517px"><img title="Writing the quote" src="/sandbox/seuss/quotewriting.jpg" alt="A persons a person no matter how small." width="507" height="380" /><p class="wp-caption-text">A person&#39;s a person no matter how small.</p></div>
<p>So, over the course of the weekend (afternoon of Saturday until afternoon of Sunday), my sister Michelle, my nephew Sam, and I we&#8217;re painting the room (Jess wasn&#8217;t allowed to, since acrylic paint is bad if you are pregnant - like everything else).</p>
<p>Below will be several of the &#8220;finished&#8221; pictures of the characters, then a video that walks you through the room. We have bought a crib and we&#8217;ll show the room and how it looks with furniture soon - but we want to get everything in there first!</p>
<div class="wp-caption aligncenter" style="width: 517px"><img title="Thing and Fox" src="/sandbox/seuss/thingandfox.jpg" alt="Thing 2 and Fox" width="507" height="676" /><p class="wp-caption-text">Thing 2 and Fox</p></div>
<div class="wp-caption aligncenter" style="width: 517px"><img title="Cat and Sam" src="/sandbox/seuss/catandsam.jpg" alt="Cat in the Hat and Sam" width="507" height="380" /><p class="wp-caption-text">Cat in the Hat and Sam</p></div>
<div class="wp-caption aligncenter" style="width: 517px"><img title="Trees and Horton" src="/sandbox/seuss/treesandhorton.jpg" alt="Truffula Trees and Horton" width="507" height="380" /><p class="wp-caption-text">Truffula Trees and Horton</p></div>
<div class="wp-caption aligncenter" style="width: 517px"><img title="Horton" src="/sandbox/seuss/hortonandquote.jpg" alt="Horton and a Quote" width="507" height="380" /><p class="wp-caption-text">Horton and a Quote</p></div>
<div class="wp-caption aligncenter" style="width: 517px"><img title="The Whos" src="/sandbox/seuss/thewhos.jpg" alt="Whos above the closet." width="507" height="380" /><p class="wp-caption-text">Whos above the closet.</p></div>
<div class="wp-caption aligncenter" style="width: 517px"><img title="Thing 1" src="/sandbox/seuss/thething.jpg" alt="Thing 1 hanging out." width="507" height="676" /><p class="wp-caption-text">Thing 1 hanging out.</p></div>
<p>And now, for your viewing pleasure, a quick video walk through of the room.</p>
<p align="center"><object width="500" height="375" data="http://geekfile.googlepages.com/flvplay.swf" type="application/x-shockwave-flash"><param name="salign" value="lt" /><param name="quality" value="high" /><param name="scale" value="noscale" /><param name="wmode" value="transparent" /><param name="FlashVars" value="&amp;streamName=http://www.devmorgan.com/sandbox/SeussifyingNursery059.flv&amp;skinName=http://geekfile.googlepages.com/flvskin&amp;autoPlay=false&amp;autoRewind=true" /><param name="src" value="http://geekfile.googlepages.com/flvplay.swf" /><param name="flashvars" value="&amp;streamName=http://www.devmorgan.com/sandbox/SeussifyingNursery059.flv&amp;autoPlay=false&amp;autoRewind=true&amp;skinName=http://geekfile.googlepages.com/flvskin" /></object></p>

]]></content:encoded>
			<wfw:commentRss>http://www.devmorgan.com/blog/2009/06/29/seuss-ifying-a-nursery/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Buying a House</title>
		<link>http://www.devmorgan.com/blog/2009/06/04/buying-a-house/</link>
		<comments>http://www.devmorgan.com/blog/2009/06/04/buying-a-house/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 15:31:28 +0000</pubDate>
		<dc:creator>dave</dc:creator>
		
		<category><![CDATA[house]]></category>

		<category><![CDATA[life]]></category>

		<guid isPermaLink="false">http://www.devmorgan.com/blog/?p=147</guid>
		<description><![CDATA[So, I&#8217;ve been gone for a little longer than I would like to admit. What it really comes down to is being busy. Of course. I have a real excuse though! I&#8217;m going to be getting married. I&#8217;m going to be a dad. I just bought a house. I just started a new job. Things [...]]]></description>
			<content:encoded><![CDATA[<p>So, I&#8217;ve been gone for a little longer than I would like to admit. What it really comes down to is being busy. Of course. I have a real excuse though! I&#8217;m going to be getting married. I&#8217;m going to be a dad. I just bought a house. I just started a new job. Things are moving fast and I haven&#8217;t had time to write.</p>
<div class="wp-caption aligncenter" style="width: 490px"><img title="Front of House" src="/sandbox/house/frontofhouse.jpg" alt="The front of our house" width="480" height="640" /><p class="wp-caption-text">The front of our house</p></div>
<p>Now, I have more pictures - but they are on my camera, and well, I haven&#8217;t had any time since we closed to really do anything except work at U of R, travel, and work on the house.  So, I can only share the ones that are on my phone.</p>
<p>I have gone from programmer to &#8220;house guy&#8221; lately, so I promise to update when I get some time. Maybe I&#8217;ll post details of some of my projects here.. hmm..</p>

]]></content:encoded>
			<wfw:commentRss>http://www.devmorgan.com/blog/2009/06/04/buying-a-house/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Damn it, get PISSED.</title>
		<link>http://www.devmorgan.com/blog/2009/04/03/damn-it-get-pissed/</link>
		<comments>http://www.devmorgan.com/blog/2009/04/03/damn-it-get-pissed/#comments</comments>
		<pubDate>Fri, 03 Apr 2009 05:22:21 +0000</pubDate>
		<dc:creator>dave</dc:creator>
		
		<category><![CDATA[rambling]]></category>

		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.devmorgan.com/blog/?p=135</guid>
		<description><![CDATA[Time Warner Cable announced the other day that they are going to be placing low usage based caps on usage in select markets, one of which being Rochester, NY.
Hey, the twitterverse is already pissed. I&#8217;m pissed. But lets think about this for a moment.
Media-on-demand providers should be pissed. Their service requires that end users have [...]]]></description>
			<content:encoded><![CDATA[<p>Time Warner Cable announced the other day that they are going to be placing <a href="http://www.businessweek.com/technology/content/mar2009/tc20090331_726397.htm?chan=top+news_top+news+index+-+temp_top+story" target="_blank">low usage based caps</a> on usage in select markets, one of which being Rochester, NY.</p>
<p>Hey, the <a href="http://www.twitter.com" target="_blank">twitterverse</a> is already pissed. I&#8217;m pissed. But lets think about this for a moment.</p>
<p>Media-on-demand providers should be pissed. Their service requires that end users have expendable bandwidth. High Definition movies are over several gigs a piece.</p>
<p>Families and Roommates should be pissed. Every computer you have on the net will be consuming that bandwidth. I live with 2 friends, and yes we&#8217;re techies, but we each have a computer. We have an xbox media center (for watching movies and such), a wii (which we utilize the internet for games such as mario kart), and we all have iPod touches that we use day to day for various reasons. All of these go through our pipe. Just imagine if we played online games! My World of Warcraft addiction would start to cost me more than the monthly fee.</p>
<p>People with a home office should be pissed. It&#8217;s highly doubtful you have a business line into your home, especially if you do less than 50% of your work at home, so you will be affected. Sure, it depends on what you do in your office&#8230; but if you use services like Skype (for conference calls), or are involved transfering documents, all that data is counted as well.</p>
<p>Friends that come over with their laptops should be pissed. What happens when Steve your buddy from freshman year comes by to say hi and you have to tell him &#8220;Sorry dude, I can&#8217;t let you connect to my wifi&#8230; I&#8217;m at my limit.&#8221;  or &#8220;sure, can you give me a buck or two to cover for your bandwidth?&#8221; Even worse, what happens when someone leeches your wifi?</p>
<p>Well, lets address some of the issues&#8230;</p>
<p>In Rochester, there is no real competition to Time Warner for broadband service. Frontier doesn&#8217;t have the infrastructure, and other services are just reselling Time Warner infrastructure.</p>
<p>Of course, &#8217;shit ain&#8217;t free&#8217;, I agree, and I totally understand. However, a strange thing happens when companies become the only really shop in town&#8230; they charge more then they need to. Numbers that I have read vary, from 3 cents to 5 cents, but that is the approximate cost for Time Warner to have a gigabyte of data pass over their network. The means, at the high end of those numbers, it costs Time Warner two dollars for 40GB of data. Then, they are going to charge me a dollar for every gigabyte I go over? Does that seem fair to you? Ok Ok&#8230; Support costs? Fine. You know what though? The average person who will constantly go over, doesn&#8217;t use support&#8230; unless Time Warner screws up their network.</p>
<p>Should someone that barely uses the internet have to pay the same as me? No. I agree again. You know what? Offer people the choice. Usage based consumption, or all inclusive. Usage based should be cheaper, and it should be FAIR. You wanna set up low limits? Fine. But charge reasonable overages. Still worried about the &#8220;all inclusive&#8221; plan being abused by people who transfer truely massive amounts of data? Fine. Limit them. Write it in their contracts that consistantly going over 1TB of data transfer will cause their service to be discontinued - but let it be a truely masive amount, and only if it&#8217;s really a problem should it be addressed.  There are better ways.</p>
<p>Really, the crux of the matter is this&#8230; You may not use all that bandwidth yet. You may even think one dollar of overages aren&#8217;t that bad. What needs to be realized though, is that our world is becoming a truely connected world. Data transfer is what is making much of this possible. Limiting access to this data will stifle our economy more, and will cause a decline in the utilization of the internet for all of its purposes&#8230; and believe it or not, thats a BAD thing.</p>
<p>Just remember, even reading this brings you a little bit closer to your cap. Don&#8217;t worry though, to be considerate I decided not to include any images that might needless cost you more.</p>

]]></content:encoded>
			<wfw:commentRss>http://www.devmorgan.com/blog/2009/04/03/damn-it-get-pissed/feed/</wfw:commentRss>
		</item>
		<item>
		<title>April Fools Redux</title>
		<link>http://www.devmorgan.com/blog/2009/04/02/april-fools-redux/</link>
		<comments>http://www.devmorgan.com/blog/2009/04/02/april-fools-redux/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 16:05:26 +0000</pubDate>
		<dc:creator>dave</dc:creator>
		
		<category><![CDATA[life]]></category>

		<guid isPermaLink="false">http://www.devmorgan.com/blog/?p=126</guid>
		<description><![CDATA[I wasn&#8217;t able to get this post up yesterday, but I wanted to make sure I got it up today. Sorry for the interruption of the DyDL stuff. It&#8217;ll come out more soon.
This year we had another successful April Fools. Zack and I were able to pull off 2 fairly successful pranks. The two pranks [...]]]></description>
			<content:encoded><![CDATA[<p>I wasn&#8217;t able to get this post up yesterday, but I wanted to make sure I got it up today. Sorry for the interruption of the DyDL stuff. It&#8217;ll come out more soon.</p>
<p>This year we had another successful April Fools. Zack and I were able to pull off <strong>2 </strong>fairly successful pranks. The two pranks this year were new course offering and course cancellation posters and implementation of upside-down-ternet.</p>
<p>So, lets start off with the simple one, the posters:</p>
<div class="wp-caption aligncenter" style="width: 410px"><img title="The Posters" src="/sandbox/thespread.jpg" alt="There was 23 total" width="400" height="300" /><p class="wp-caption-text">There was 23 total</p></div>
<p>Each one of the posters by themselves were mildly amusing, but when taken together, it provided for some hilarity. One thing that was requested last year was a list of all of the name tags we made, so this year I am providing a list of all the posters and where they were located (to the best of my reccolection).</p>
<p><strong>Course Offerings:</strong></p>
<p>Introduction to Hygiene (Men&#8217;s Bathroom Door)<br />
(4002-039-01)<br />
Course Description:<br />
Learn about hygiene and why it affects you as a professional. Course is restricted to Computer Science majors until 4/13.</p>
<p>Advanced Googling (Posting Board)<br />
(4002-501-04)<br />
Course Description:<br />
Students in this course will familiarize themselves with the advanced search functionality of google. Prerequisites: Introduction to Googling (4002-005) and Introduction to the Internet (4002-006)</p>
<p>Introduction to DOS gaming (Posting Board)<br />
(4080-001-01)<br />
Course Description:<br />
An introduction to developing games for the new DOS platform. Topics include Virtual Memory management and writing BASIC</p>
<p>Introduction to the Internet (Posting Board)<br />
(4002-006-01)<br />
Course Description:<br />
This course will discuss usage of applications such as Web Browsers and Chat Clients, and topics such as pr0n, games, and LOLcats.</p>
<p>Inventing Incomprehensible Jargon (Posting Board)<br />
(4002-009-01)<br />
Course Description:<br />
BC IDK, WTF. People L2Talk. LOL Internets.</p>
<p>Gold Farming (Gaming Lab Door)<br />
(4080-003-10)<br />
Course Description:<br />
Develop an understanding of the economics behind gold farming, as well as nurture skills in gold farming. Students must be taking less than 12 credit hours to take this course.</p>
<p>Introduction to ASCII porn (Posting Board)<br />
(4002-002-69)<br />
Course Description:<br />
Topics include subjective determination of ASCII characters to their genitalia similarity, arranging multiple characters for genitalia, and using characters to describe sexual events.</p>
<p>Daemon Summoning (Airgapped Security Lab Door)<br />
(4002-009-01)<br />
Course Description:<br />
Call on the powers of Rut and Baash to control first your machines, and then the world!  A working knowledge of Linux and lesser daemons like the Oracle is helpful but not a prerequisite.</p>
<p>CAT5 Basket Weaving (Posting Board outside of Networking&#8217;s Main office)<br />
(4002-007-01)<br />
Course Description:<br />
This trade skill course will train students in the fine art of basket weaving using only CAT5 cables.</p>
<p>Fundamentals of Notepad (Posting Board in Lobby area)<br />
(4002-004-01)<br />
Course Description:<br />
Topics include: Creating a new file, Opening an existing file, Saving a file you just opened, Saving a file you just opened as another file, and Printing.</p>
<p>Advanced Topics in Notepad (Posting Board in Lobby area)<br />
(4002-200-01)<br />
Course Description:<br />
Topics include: Copying text, Pasting text, Cutting text, Printing to a non-default printer, Word-wrap, Changing font, and using the Find command.</p>
<p>Designing VCR Programming Controls (Posting Board)<br />
(4002-008-01)<br />
Course Description:<br />
Make VCRs not suck. Because you&#8217;re tired of your parents calling for help.</p>
<p><strong>Course Cancellations: </strong></p>
<p>Advanced Molecular Computing and Informatics (Medium Database Lab Door)<br />
(4002-023-01)<br />
Professor Thireos has been talking to someone for the past hour, and we don&#8217;t think he&#8217;ll make it to class on time.</p>
<p>Advanced Programming for New Media Kids (Media Lab near Bridge Door)<br />
(4002-018-01)<br />
Not enough interest.</p>
<p>&#8220;Alternative Medicines&#8221; to help Coding. (Lecture Room Door South Hallway)<br />
(4002-021-01)<br />
Professor Sonstein&#8217;s class will not be held until more snacks are available.</p>
<p>Cooking in a Digital Age (Lecture Room Door South Hallway)<br />
(4002-017-01)<br />
Professor Perry&#8217;s class has been canceled because there is not enough interest. Most students only eat fast food, pizza, and drink jolt or mountain dew anyway.</p>
<p>Being Big and Tough (Media Lab near Bridge Door)<br />
(4002-016-01)<br />
Professor Bogaard&#8217;s class has been canceled because his minivan broke down and he fainted and broke his chin.</p>
<p>Somber Programming (IMM Lab Door)<br />
(4002-053-01)<br />
Professor Jacobs is still sad he didn&#8217;t have a name tag last year, so in that memory, class will be postponed until tomorrow.</p>
<p>Flash Physics at the University Level (New Media Lab Door)<br />
(4002-057-01)<br />
Professor Kurtz was busy determining the rate at which a falling body falls. He should be out of the cast next Monday.</p>
<p>How to attract the opposite sex for INFOTECH (Lecture Room East Hallway)<br />
(4002-100-10)<br />
Has been canceled because no professors with course knowledge are available.</p>
<p>Fighting Shortness (IMM Lab Door)<br />
(4002-023-01)<br />
Professor Lawley and Oyzon&#8217;s team taught class will not be held today. Class will recommence  when platform shoes become fashionable again.</p>
<p>Using Documentation for Programming (Big Database Lab Door)<br />
(4002-067-01)<br />
Professor Kang is out sick today. Apparently his friend, the javadoc, had the flu.</p>
<p>Drinking for Programmers (Medium Database Lab Door)<br />
(4002-050-01)<br />
Professors Whittington and Zilora have already decided that it&#8217;s 5 o&#8217;clock somewhere.</p>
<div class="wp-caption aligncenter" style="width: 410px"><img title="Posting up the posters" src="/sandbox/daveposting.jpg" alt="It was a blast putting them up" width="400" height="300" /><p class="wp-caption-text">It was a blast putting them up</p></div>
<p>The second prank was much more involved. We implemeneted <a href="http://www.ex-parrot.com/~pete/upside-down-ternet.html" target="_blank">Upside-Down-Ternet</a> in all three of the database labs. This prank took us late in to the night to try to figure out how to do it. We used a combination of ARP poisoning and DNS spoofing to make it happen.</p>
<div class="wp-caption aligncenter" style="width: 410px"><img title="Zack Pondering" src="/sandbox/zackponderingupsidedownternet.jpg" alt="Ok, Zack did most of the work" width="400" height="300" /><p class="wp-caption-text">Ok, Zack did most of the work</p></div>
<p>We ran into a few problems - that really show us how caring of pranksters we are. We had to modify the scripts we were using to allow for the students to continue to connect to class resources without disruption. It took us a while, and we had a few bugs, but we pulled it off.</p>
<div class="wp-caption aligncenter" style="width: 410px"><img title="Upside Down!" src="/sandbox/upsidedown.jpg" alt="If only it flipped flash too..." width="400" height="300" /><p class="wp-caption-text">If only it flipped flash too...</p></div>
<p>We had it running on and off for most of the day. During peak hours, having everyone redirected through our server bogged down the internet - so we had to turn it off, but we were able to turn it back on later. Towards the end of the day, Zack turned it into a <a href="http://twitpic.com/2p21t" target="_blank">Burleson-Net</a> (a famous Oracle blogger) to make some of the database classes laugh.</p>
<p>Overall, a great day. I was able to see many student laughing, and many professors laughing as well.</p>

]]></content:encoded>
			<wfw:commentRss>http://www.devmorgan.com/blog/2009/04/02/april-fools-redux/feed/</wfw:commentRss>
		</item>
		<item>
		<title>DyDL - Part 3: Dynamic Binding with mysqli in PHP</title>
		<link>http://www.devmorgan.com/blog/2009/03/27/dydl-part-3-dynamic-binding-with-mysqli-php/</link>
		<comments>http://www.devmorgan.com/blog/2009/03/27/dydl-part-3-dynamic-binding-with-mysqli-php/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 17:08:13 +0000</pubDate>
		<dc:creator>dave</dc:creator>
		
		<category><![CDATA[coding]]></category>

		<category><![CDATA[data]]></category>

		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.devmorgan.com/blog/?p=102</guid>
		<description><![CDATA[So, before I sit back and talk about all of the actual methods on the MagicDB object, we need to talk about a problem that is specific to PHP and the mysqli extension.
Now, the basic idea I had was to build something that could generate prepared statements dynamically. This will (if done correctly) help protect [...]]]></description>
			<content:encoded><![CDATA[<p>So, before I sit back and talk about all of the actual methods on the MagicDB object, we need to talk about a problem that is specific to <a href="http://www.php.net/" target="_blank">PHP</a> and the <a href="http://www.php.net/mysqli" target="_blank">mysqli</a> extension.</p>
<p>Now, the basic idea I had was to build something that could generate prepared statements dynamically. This will (if done correctly) help protect against SQL injection, and ideally help speed up a few frequently run queries (as long as the SQL structure is always consistent). We need to select mysqli because it has the <span class="methodname"><strong>mysqli_stmt::prepare</strong></span> ( <span class="methodparam"><span class="type">string</span> <tt class="parameter">$query</tt></span> ) function.</p>
<p>Ok, so, now we come to the binding parts of the process&#8230; and here is where it gets sticky. We are presented with these two methods:</p>
<p><span class="methodname"><strong>mysqli_stmt::bind_param</strong></span> ( <span class="methodparam"><span class="type">string</span> <tt class="parameter">$types</tt></span> , <span class="methodparam"><span class="type"><a class="type mixed" href="http://us.php.net/manual/en/language.pseudo-types.php#language.types.mixed">mixed</a></span> <tt class="parameter reference">&amp;$var1</tt></span> [, <span class="methodparam"><span class="type"><a class="type mixed" href="http://us.php.net/manual/en/language.pseudo-types.php#language.types.mixed">mixed</a></span> <tt class="parameter reference">&amp;$...</tt></span> ] )<span class="methodname"><strong><br />
mysqli_stmt::bind_result</strong></span> ( <span class="methodparam"><span class="type"><a class="type mixed" href="http://us.php.net/manual/en/language.pseudo-types.php#language.types.mixed">mixed</a></span> <tt class="parameter reference">&amp;$var1</tt></span> [, <span class="methodparam"><span class="type"><a class="type mixed" href="http://us.php.net/manual/en/language.pseudo-types.php#language.types.mixed">mixed</a></span> <tt class="parameter reference">&amp;$...</tt></span> ] )</p>
<p>This presents us with a problem. Notice how both methods (which are required for prepared statements) allow for multiple parameters. This is handy &#8212; wait.. really.. it&#8217;s never handy. I really don&#8217;t know why they designed it this way. In fact.. Damn those PHP people. OK.. so maybe I do know why,  but it gets in to reference/value discussion.. so.. lets move on and just figure out a way to fix it.</p>
<p>In an ideal world, for being dynamic, the functions should be designed something more like this:</p>
<p><span class="methodname"><strong>mysqli_stmt::bind_param</strong></span> ( <span class="methodparam"><span class="type">string</span> <tt class="parameter">$types</tt></span> ,  <span class="methodparam"><span class="type">array</span> <tt class="parameter">&amp;$params</tt></span> )<span class="methodname"><strong><br />
mysqli_stmt::bind_result</strong></span> (  <span class="methodparam"><span class="type">array</span> <tt class="parameter">&amp;$results </tt></span>)</p>
<p>Instantly this becomes a lot better. Since the parameters/results are stored as an array, they can be dynamically generated and of any length.  To address this concern, we need to tackle both functions a little bit differently. First off, the bind_param function:</p>
<p>I wrote a simple private function that is included in MagicDB that will accept a mysqli_stmt object, and a list of parameters. From it, the function will call the bind_param method with the proper values and return the statement object.</p>
<p><script src="http://embed.snipt.org/Mnj"></script> Now, lets discuss the major concern with this code. The data types of the parameter array that is passed in are used for truth. So, as a developer you need to be careful. This will not cause any security risks, but it may reject your parameter if the wrong data type is used. This is a known concern, but one that I am not worried about since I know to pass an int when I need an int.  The beauty of this code is in the last couple lines. I use the php variable-variable-name functionality to generate a dynamic variable reference. I call each variable $bind#, and then assign the parameter to it. I then can use the &amp; symbol to add the variable by reference to the array.  Using  the PHP function call_user_func_array, we can get around the multiple parameter problem by simple passing an object reference, a method name, and an array of parameters.</p>
<p>Now for the binding of the result. This code isn&#8217;t stored in a function, although it could be. It&#8217;s stored in my &#8220;get&#8221; method on the MagicDB object. Some variables are out of scope, but here is the snip.  <script src="http://embed.snipt.org/Mno"></script></p>
<p>So here, without getting into too much detail about how the get() function works, we want to return an object of the type that $object is.  The object should have all the values populated with the results of the database. We bind the variables in the same manner that we bound the parameters in the previous function.  Where it gets fancy is in the use of reflection. We get the type of the object, and pass it into what is called a ReflectionClass.</p>
<p>This will generate a generic class of the type we specify. We must then instantiate the object by calling newInstanceArgs() method. This allows us to pass an array with the parameters for the constructor. This is why the constructor is required in all of the data objects. We do this for each iteration of the fetch, and return the array of objects.</p>
<p>Sexy eh?</p>
<p>Next up we talk about the API and how the MagicDB functions actually work.</p>

]]></content:encoded>
			<wfw:commentRss>http://www.devmorgan.com/blog/2009/03/27/dydl-part-3-dynamic-binding-with-mysqli-php/feed/</wfw:commentRss>
		</item>
		<item>
		<title>DyDL - Part 2: What is MagicDB?</title>
		<link>http://www.devmorgan.com/blog/2009/03/21/dydl-part-2-what-is-magicdb/</link>
		<comments>http://www.devmorgan.com/blog/2009/03/21/dydl-part-2-what-is-magicdb/#comments</comments>
		<pubDate>Sat, 21 Mar 2009 16:17:22 +0000</pubDate>
		<dc:creator>dave</dc:creator>
		
		<category><![CDATA[coding]]></category>

		<category><![CDATA[data]]></category>

		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.devmorgan.com/blog/?p=89</guid>
		<description><![CDATA[MagicDB is the codename for the Dynamic Data Layer that I built to help me with my much larger project, my fabled &#8220;Capstone&#8221; for my Masters of Science Degree. First a couple technical details:

MagicDB currently runs on PHP 5.x.
MagicDB currently only interfaces with MySQL.
MagicDB is built using an Object-Oriented paradigm.
MagicDB uses PHP&#8217;s mysqli engine.

Understanding the [...]]]></description>
			<content:encoded><![CDATA[<p>MagicDB is the codename for the Dynamic Data Layer that I built to help me with my much larger project, my fabled &#8220;Capstone&#8221; for my Masters of Science Degree. First a couple technical details:</p>
<ul>
<li>MagicDB currently runs on <a href="http://www.php.net" target="_blank">PHP</a> 5.x.</li>
<li>MagicDB currently only interfaces with <a href="http://www.mysql.com/" target="_blank">MySQL</a>.</li>
<li>MagicDB is built using an Object-Oriented paradigm.</li>
<li>MagicDB uses PHP&#8217;s <a href="http://www.php.net/mysqli" target="_blank">mysqli</a> engine.</li>
</ul>
<p>Understanding the technical bits will explain why some decisions have to be made. PHP is used pragmatically for myself, since that is the language I used to build my capstone with. It&#8217;s free. That helps. MySQL is also free, and one of the most common companions with PHP. The mysqli engine is used primarily because it provides the support for prepared statements. Using a prepared statement allows us to curb SQL injection attacks, which addresses one of our main concerns with security.</p>
<p>MagicDB has only a couple rules that need to be followed.</p>
<ol>
<li>Data Objects (PHP) must follow specific naming requirements.</li>
<li>Data Objects (PHP) and Data Tables (MySQL) must follow specific structural requirements.</li>
</ol>
<p><strong>Naming Requirements</strong> are actually pretty simple. All data objects used with MagicDB need to follow the pattern [Prefix]TableName. The prefix can be whatever the developer wants. For my capstone project (codename: TWiG), I used the prefix &#8220;TWiGdb_&#8221;. This means for a table in my database named &#8220;Entry&#8221;, I have a corresponding data object with the class name of TWiGdb_Entry.</p>
<p><strong>Structural Requirements</strong> are a little more in-depth. Originally, the structures were required to be identical. This meant that for every column in the database, the data object should have a column for that as well. I improved upon this by adding a column to every database table (but not the data object) called &#8220;exist&#8221;. This column is a flag to show if the row was removed from the database, it has a default value of true. This allows us to &#8220;remove&#8221; data, without deleting it (although functionality is built to actually DELETE data), in case we require that data later.</p>
<p>Another structural requirement is that the first column in the data object MUST be the primary key for the table. In the table, the first column must be the primary key as well. This allows us to issue UPDATE commands easily. A constructor with all the attributes as parameters is also required. Order of the parameters and attributes must also match across the board.</p>
<p>The final requirement is that each attribute of the data object MUST be using the same exact name as the corresponding column in the table.</p>
<p>For example the table User would be described like this:<br />
<script src="http://embed.snipt.org/Mlj"></script><br />
 The corresponding data object would look like this: <script src="http://embed.snipt.org/Mlk"></script><br />
Once we can build the structure of the database, and the corresponding data objects, we can begin to discuss how the DyDL works. MagicDB itself really has a simple interface to use.<br />
<script src="http://embed.snipt.org/Mln"></script><br />
In the next few posts we&#8217;ll discuss each of these methods, and talk about some of the private methods that power the implementation.</p>

]]></content:encoded>
			<wfw:commentRss>http://www.devmorgan.com/blog/2009/03/21/dydl-part-2-what-is-magicdb/feed/</wfw:commentRss>
		</item>
		<item>
		<title>DyDL - Part 1: Overview</title>
		<link>http://www.devmorgan.com/blog/2009/03/19/dydl-part-1/</link>
		<comments>http://www.devmorgan.com/blog/2009/03/19/dydl-part-1/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 20:39:56 +0000</pubDate>
		<dc:creator>dave</dc:creator>
		
		<category><![CDATA[coding]]></category>

		<category><![CDATA[data]]></category>

		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.devmorgan.com/blog/?p=80</guid>
		<description><![CDATA[So, I figure it&#8217;s about time I actually talk a little bit about code. I know many of my readers aren&#8217;t programmers, so my apologies. For my capstone work I have been playing around a lot with data, and I want to share my experiences.
So, first things first. Lets talk about Dynamic Database Layers. We [...]]]></description>
			<content:encoded><![CDATA[<p>So, I figure it&#8217;s about time I actually talk a little bit about code. I know many of my readers aren&#8217;t programmers, so my apologies. For my capstone work I have been playing around a lot with data, and I want to share my experiences.</p>
<p>So, first things first. Lets talk about Dynamic Database Layers. We want to build a database layer that is as dynamic as possible and flexible, but provides understandable structure and expected results. We want something that is secure, but also usable. So lets break it down:</p>
<p>What are the goals?</p>
<ol>
<li>Ease of use.</li>
<li>Low learning curve.</li>
<li>Clear and understandable &#8220;rules&#8221;</li>
<li>Secure</li>
<li>Solves routine problems naturally.</li>
<li>Allows non-routine problems to be solved easily.</li>
</ol>
<p><strong>Ease of use</strong>. The first and foremost goal we have for our DyDL is that its easily usable. Ideally, it should make accessing the data simple and trivial. If you need to write lines upon lines of code just to invoke simple calls, developers won&#8217;t use it. Make easy things easy. If a developer needs to do something more complicated, try to make it easy - but they&#8217;ll be willing to do more work to accomplish it.</p>
<p><strong>Low learning curve</strong>. One of the most difficult tasks as a programmer is to adapt to new technology. Understanding the lingo, the structure, and the benefits is required to be efficient. Don&#8217;t make it difficult to use. Use common paradigms to make entry into use easy. This leads us into the next requirement..</p>
<p><strong>Clear and understandable &#8220;rules&#8221;</strong>. Make how the software layer works straight forward and simple. Don&#8217;t build an application that has situations where if you want to do one thing, you have to do it differently than another thing. Make it clear to the developer what each function is actually doing. If all data objects require certain structure, make it clear. Giving meaningful messages and documentation for the layer.</p>
<p><strong>Secure</strong>. This is straight forward. Make your best attempt to make the code secure. If you can prevent SQL injections, do so. Build as much structure to the framework such that you can limit the ways to exploit it. Don&#8217;t trust unknown data.</p>
<p><strong>Solves routine problems naturally</strong>. Make simple stuff simple. If you need to do a simple access of data based on a few parameters, make it so that is one simple call. Try to abstract your calls so the developer doesn&#8217;t need to know the SQL that is being run underneath. Allow simple complexity by allowing the developer to do so, but don&#8217;t require them to.</p>
<p><strong>Allows non-routine problems to be solved easily</strong>. Always allow the developer to decide if their way is better. Provide a simple interface such that a developer can still use your engine to do things that you haven&#8217;t accounted for. If you can, try to make it easier. If you can&#8217;t, don&#8217;t stand in their way.</p>
<p>For a portion of my capstone, I have implemented what I believe is an excellent start of a DyDL, codenamed MagicDB.  I will be writing about this project more in the coming weeks, and will be showing bits of code, and explaining decisions made. Hope I don&#8217;t bore anyone.</p>

]]></content:encoded>
			<wfw:commentRss>http://www.devmorgan.com/blog/2009/03/19/dydl-part-1/feed/</wfw:commentRss>
		</item>
		<item>
		<title>&#8220;Congratulations&#8221;</title>
		<link>http://www.devmorgan.com/blog/2009/02/27/congratulations/</link>
		<comments>http://www.devmorgan.com/blog/2009/02/27/congratulations/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 05:33:20 +0000</pubDate>
		<dc:creator>dave</dc:creator>
		
		<category><![CDATA[life]]></category>

		<category><![CDATA[relationships]]></category>

		<category><![CDATA[travel]]></category>

		<guid isPermaLink="false">http://www.devmorgan.com/blog/?p=75</guid>
		<description><![CDATA[I have heard this word a lot lately. It partially explains why my writing has been more sporatic lately. So, for that, my apologies.
So. A few big things have happened in my life, some of which geekier than others. First things first: I&#8217;m engaged! This is very exciting, and well, pretty much awesome. For the [...]]]></description>
			<content:encoded><![CDATA[<p>I have heard this word a lot lately. It partially explains why my writing has been more sporatic lately. So, for that, my apologies.</p>
<p>So. A few big things have happened in my life, some of which geekier than others. First things first: I&#8217;m engaged! This is very exciting, and well, pretty much awesome. For the record, I didn&#8217;t do anything too fancy, but I did do the one knee thing.</p>
<p>Now on to the geeky things! I have been working on a research project for about a year now, involving Data Mining and Data Warehousing. Dr. Jai Kang, his son, and I have written a paper based on the research, and it was accepted to a conference! In Italy! So, come May, I will be heading out to Milan to present the paper with Dr. Kang. Very exciting time indeed. I will likely make a copy of the paper available here after it is presented.</p>
<p>I am also working on my capstone. I am staying pretty quiet about it online right now, but I can tell you it will be really cool. It will involve a visualization, and will be available as a web application, and of course, I will allow access it from here.</p>
<p>I also have had several interviews, hopefully I&#8217;ll be getting a nice development job in the coming months.</p>
<p>I guess the long and the short of it is, I will be posting more soon I hope. I just need to catch up with everything that is going on in my life. So, until then, adios.</p>

]]></content:encoded>
			<wfw:commentRss>http://www.devmorgan.com/blog/2009/02/27/congratulations/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Technical Difficulties</title>
		<link>http://www.devmorgan.com/blog/2009/01/28/technical-difficulties/</link>
		<comments>http://www.devmorgan.com/blog/2009/01/28/technical-difficulties/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 02:35:18 +0000</pubDate>
		<dc:creator>dave</dc:creator>
		
		<category><![CDATA[coding]]></category>

		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.devmorgan.com/blog/?p=74</guid>
		<description><![CDATA[Another call from the parents, wanting to get something working correctly on their computer.
You&#8217;d think we&#8217;d be past this&#8230; but we aren&#8217;t. That&#8217;s the problem with technology today. We are SO close to having things &#8220;just work&#8221;. In fact, I&#8217;ll admit, Apple is closer. The problem is, we aren&#8217;t there yet, even for the mac.
My [...]]]></description>
			<content:encoded><![CDATA[<p>Another call from the parents, wanting to get something working correctly on their computer.</p>
<p>You&#8217;d think we&#8217;d be past this&#8230; but we aren&#8217;t. That&#8217;s the problem with technology today. We are SO close to having things &#8220;just work&#8221;. In fact, I&#8217;ll admit, Apple is closer. The problem is, we aren&#8217;t there yet, even for the mac.</p>
<p>My parents are smart people. They don&#8217;t understand computers, but they are smart people. In fact, my father is one of the most intelligent people I know. He has a mechanical mind like none other. Once we start talking how to use the computer though, things get increasingly difficult. I wish I didn&#8217;t have such a short fuse, but I get frustrated easily with technical questions. Sorry guys. The problem still remains, when things get plugged in, and installed&#8230; they don&#8217;t always just work.</p>
<p>The reality is, will we ever get there? Sure, things are more and more user friendly, but sometimes the learning curve is just going to be difficult. Trying to explain how to get video conferencing is hard when the person who is being told is miles away and doesn&#8217;t understand <em>why </em>the computer needs to reboot to recognize the drivers, or <em>where </em>the unmute settings are.</p>
<p>This isn&#8217;t meant to be a rant - wait - I guess it is, but as software developers we always need to strive to make things &#8220;just work&#8221;. A lot of times, this isn&#8217;t the focus. Sometimes hardware is the limitation. Sometimes software is.  Sometimes the focus is quick development, and not quick learning curve. Sometimes we just specify a &#8220;requirement&#8221; on the system to avoid something that will cause the program to break. Although, every day we get closer!</p>
<p>What I worry about is that more and more, I need to explain to many of my students that things are &#8220;magic&#8221; and it just works. This is great - but it&#8217;s also scary. We need to be able to develop things that &#8220;just work&#8221;, but at the same time have a very clear and logical paradigm that is associated with them, so they can be understood. I don&#8217;t know how to solve this problem. Hell, I can barely think of examples. But, it&#8217;s been a month since I&#8217;ve written and I figured I&#8217;d say something.</p>
<p>Perhaps a few more days in the oven and this thought will be a little more cooked.</p>

]]></content:encoded>
			<wfw:commentRss>http://www.devmorgan.com/blog/2009/01/28/technical-difficulties/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
