<?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>DeHamerspace &#187; programming</title>
	<atom:link href="http://dehamerspace.com/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://dehamerspace.com</link>
	<description></description>
	<lastBuildDate>Tue, 01 Jun 2010 16:11:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Microsoft PDC Day 3</title>
		<link>http://dehamerspace.com/2008/10/30/microsoft-pdc-day-3/</link>
		<comments>http://dehamerspace.com/2008/10/30/microsoft-pdc-day-3/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 15:11:05 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://dehamerspace.com/2008/10/30/microsoft-pdc-day-3/</guid>
		<description><![CDATA[Surprisingly, the most interesting thing that I saw today had absolutely nothing to do with .NET, Windows or cloud computing. Rich Rashid from Microsoft Research was the keynoter today and he walked through a number of really cool things that they&#8217;re working on, but the project that really stood out for me was something called [...]]]></description>
			<content:encoded><![CDATA[<p>Surprisingly, the most interesting thing that I saw today had absolutely nothing to do with .NET, Windows or cloud computing. Rich Rashid from Microsoft Research was the keynoter today and he walked through a number of really cool things that they&#8217;re working on, but the project that really stood out for me was something called Boku.</p>
<p><a href="http://microsoftpdc.com/View.aspx?post=http://channel9.msdn.com/posts/PDCNews/Boku-Turning-Programming-Into-Kids-Stuff/">Boku</a> is an application designed to introduce kids to computer programming. Using an entirely icon-based programming language, Boku lets your build your own game consisting of different elements that you can program to interact with each other.&nbsp; It&#8217;s really hard to really describe just how cool this is in words so I encourage you to check out <a href="http://research.microsoft.com/projects/boku/video/silent/boku_programming_1600_download_silent.wmv">this video</a>.</p>
<p>I may just be rationalizing my own biases, but I like to think that teaching kids to program isn&#8217;t just about producing the next generation of nerds, but actually teaches some useful life skills as well: critical thinking, problem solving, etc. And I love the idea of exposing kids to programming concepts in a form that they&#8217;re likely already familiar with: computer games. In fact I was having a conversation with one of <a href="http://nerdguru.net">my co-workers</a> just the other day about how to get kids interested in engineering and this seems like an awesome tool for sparking that interest.</p>
<p>This reminds me a lot of something I played with awhile back called <a href="http://scratch.mit.edu/">Scratch</a> from the MIT Media Lab. I think the primary goal of Boku and Scratch is probably the same (i.e. create a kid-friendly programming environment), but Boku seems far more polished and sophisticated.</p>
<p>Scratch is available now (for free) while I think they said that Boku would be available early next year &#8212; I can&#8217;t wait to get my hands on it and start programming with my kids.</p>
<p><a href="http://dehamerspace.com/wp-content/uploads/2008/10/programming-ui.jpg"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="282" alt="Boku UI" src="http://dehamerspace.com/wp-content/uploads/2008/10/programming-ui-thumb.jpg" width="504" border="0"></a> </p>
<p>At the other end of the programming spectrum, I also attended Anders Hejlsberg&#8217;s session on the <a href="http://channel9.msdn.com/pdc2008/TL16/">Future of C#</a>. There was so much interest in this session that it was one of the few that was actually scheduled to run twice during the week. I&#8217;m not sure if people are really excited about C# or if they just wanted to see the father of C# in person &#8212; either way, it was a great session.</p>
<p>There&#8217;s lots of cool stuff coming in C# 4.0 like optional parameters and better COM interoperability but the thing that really &#8220;wowed&#8221; the crowd was the support for dynamically typed objects. Through the use of the new <code>dynamic</code> keyword you can ask C# to resolve names at runtime instead of compile time. This opens-up a bunch of very interesting scenarios like the one that Anders showed in his demo where he was able to invoke methods on both Javascript and Python objects from C# just as if they were native C# classes.</p>
<p><a href="http://dehamerspace.com/wp-content/uploads/2008/10/tl16.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="379" alt="C# 4.0 Dynamically Typed Objects" src="http://dehamerspace.com/wp-content/uploads/2008/10/tl16-thumb.png" width="504" border="0"></a></p>
<p>Apparently, this capability is being built on top of the same Dynamic Language Runtime (DLR) component that they put in place to build the dynamic CLR languages like IronPython and IronRuby.</p>
<p>&nbsp;<a href="http://dehamerspace.com/wp-content/uploads/2008/10/dlr.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="379" alt="DLR" src="http://dehamerspace.com/wp-content/uploads/2008/10/dlr-thumb.png" width="504" border="0"></a> </p>
<p>That final thing I want to mention from day 3 was an interesting session entitled &#8220;<a href="http://channel9.msdn.com/pdc2008/ES31/">How HP Built Their Magcloud Service on Windows Azure</a>&#8220;. This one caught my attention cause I had initially dismissed Azure as something that HP (my employer) would not be interested in. Given that HP has been making a big deal about how great they are at building and operating world-class data centers it seemed kind of strange that we&#8217;d take one of our applications and host it on Microsoft&#8217;s infrastructure.</p>
<p>Well, after sitting through the session it became apparent that we didn&#8217;t <em>build</em> our <a href="http://magcloud.com/home">Magcloud</a> application on Windows Azure as much as we took a portion of the existing Magcloud application and ported it to Azure as a proof of concept. No part of the production Magcloud app is actually running on Azure. Looks like this may have been nothing more than a way to keep Microsoft (an important partner of HP) happy while also getting HP some visibility at PDC.</p>
<p>It&#8217;ll be interesting to keep an eye on this relationship and see if anything really happens here. Perhaps HP is hoping to persuade Microsoft to run the Azure platform in one of its &#8220;next generation data centers&#8221;.</p>
<p>That&#8217;s all from day three. Looking forward to wrapping up tomorrow and heading home.</p>
]]></content:encoded>
			<wfw:commentRss>http://dehamerspace.com/2008/10/30/microsoft-pdc-day-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://research.microsoft.com/projects/boku/video/silent/boku_programming_1600_download_silent.wmv" length="21925785" type="video/x-ms-wmv" />
		</item>
		<item>
		<title>Microsoft PDC Day 2</title>
		<link>http://dehamerspace.com/2008/10/29/microsoft-pdc-day-2/</link>
		<comments>http://dehamerspace.com/2008/10/29/microsoft-pdc-day-2/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 02:18:45 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://dehamerspace.com/2008/10/29/microsoft-pdc-day-2/</guid>
		<description><![CDATA[A big part of day 2 was an introduction to Windows 7, the successor to Windows Vista. Not surprisingly, there&#8217;s been plenty of coverage on this topic so I&#8217;m not going to discuss the announcements in any great detail (you can also watch the complete keynote). However, let me quickly mention a couple of things [...]]]></description>
			<content:encoded><![CDATA[<p>A big part of day 2 was an introduction to Windows 7, the successor to Windows Vista. Not surprisingly, there&#8217;s been plenty of <a href="http://www.winsupersite.com/win7/">coverage</a> on this topic so I&#8217;m not going to discuss the announcements in any great detail (you can also <a href="http://channel9.msdn.com/pdc2008/KYN02/">watch the complete keynote</a>). However, let me quickly mention a couple of things that made an impression on me:</p>
<ul>
<li>Steven Sinofsky (SVP of Windows and Windows Live) pretty much admitted that Vista didn&#8217;t really deliver. They made a big deal about learning from the mistakes of Vista. We&#8217;ll see.
<li>Big improvements to the task bar with regard to the way that you launch applications and interact with running applications.
<ul>
<li>The ability to pin applications to the taskbar. No more stupid Quick Launch area.
<li>Multiple windows from the same application automatically folded into a single taskbar icon.
<li><strong>Complete</strong> control over the junk in the notification area (AKA the tray). By default no icons get placed in the tray &#8212; users must explicitly request that an icon by placed in the tray. Additionally, for items that are in the tray, you can specify that those annoying balloon pop-ups are completely suppressed. </li>
</ul>
<li>Support for VHD files (the virtual hard drive format used by Microsoft&#8217;s virtualization products) built directly into the OS. Apparently, a VHD can be mounted as if it were a physical drive and the boot manager has been augmented to give you the ability to boot directly from a VHD at startup.
<li>They were really encouraging developers to deliver 64-bit apps. I&#8217;d love to think that I&#8217;d have a 64-bit version of every app I use by the time that Windows 7 ships.</li>
</ul>
<p>The other exciting part of the day was getting to talk with <a href="http://haacked.com/">Phil Haack</a> from the ASP.NET team. I wanted to ask Phil about his ASP.NET MVC presentation. If you read my <a href="http://dehamerspace.com/2008/10/28/microsoft-pdc-day-1/">post from day 1</a> you&#8217;ll note that I had some concerns about the use of some pretty ugly C# code in the view layer of the framework. I asked Phil what sort of plans they had for enabling developers to create codeless views. He was quick to point out that there&#8217;s no rule stating that you can&#8217;t have code in your views &#8212; I completely agree with that (after all, what is a JSP tag library but a fancy wrapper on some Java code) but from a readability and aesthetic perspective it still seems wrong to have raw C# code in your view.</p>
<p>Phil did seem to agree that the aesthetics of inline C# code in the ASPX left something to be desired (hope I&#8217;m not putting any words in your mouth here Phil) and said that they were looking at creating some declarative wrappers around the <code>HtmlHelper</code> class. Turns out that these &#8220;declarative wrappers&#8221; are really nothing more than good ol&#8217; ASP.NET server controls. The one thing that I didn&#8217;t really grok until I talked with Phil was that WebForms server controls will work in the MVC environment . . . as long as they aren&#8217;t dependent on any WebForm-specific concepts like ViewState or the page lifecycle.</p>
<p>Turns out that I&#8217;ve done some server control development so I might just take a crack at creating some of my own wrappers just to see how it works. Stay tuned for more on this.</p>
<p>The other thing to point out is that you aren&#8217;t limited to using ASPX pages as your view engine &#8212; since all of this stuff is loosely coupled you&#8217;re free to plug in whatever engine you like. At the moment, there are a handful of alternative engines available including <a href="http://www.codeplex.com/MVCContrib/Wiki/View.aspx?title=Brail&amp;referringTitle=Documentation">Brail</a>, <a href="http://www.codeplex.com/MVCContrib/Wiki/View.aspx?title=NHaml&amp;referringTitle=Documentation">NHaml</a>, and <a href="http://www.codeplex.com/MVCContrib/Wiki/View.aspx?title=NVelocity&amp;referringTitle=Documentation">NVelocity</a>.</p>
<p>Thanks to Phil for taking the time to talk with me &#8212; much appreciated.</p>
]]></content:encoded>
			<wfw:commentRss>http://dehamerspace.com/2008/10/29/microsoft-pdc-day-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Microsoft PDC Day 1</title>
		<link>http://dehamerspace.com/2008/10/28/microsoft-pdc-day-1/</link>
		<comments>http://dehamerspace.com/2008/10/28/microsoft-pdc-day-1/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 15:01:37 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://dehamerspace.com/2008/10/28/microsoft-pdc-day-1/</guid>
		<description><![CDATA[I&#8217;ve traveled all the way from San Diego, CA to Los Angeles, CA this week to attend Microsoft&#8217;s Professional Developer&#8217;s Conference &#8212; watch out L.A. you&#8217;re about to be overrun by some pretty serious nerds!
I guess the big announcement of the day was Microsoft&#8217;s new Windows Azure cloud computing platform. This is their answer to [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve traveled all the way from San Diego, CA to Los Angeles, CA this week to attend Microsoft&#8217;s Professional Developer&#8217;s Conference &#8212; watch out L.A. you&#8217;re about to be overrun by some pretty serious nerds!</p>
<p>I guess the big announcement of the day was Microsoft&#8217;s new <a href="http://www.microsoft.com/azure/default.mspx">Windows Azure</a> cloud computing platform. This is their answer to things like <a href="http://aws.amazon.com/ec2/">Amazon&#8217;s EC2</a> or <a href="http://code.google.com/appengine/">Google&#8217;s App Engine</a>. The technology seemed pretty cool and may be something I use for future side-projects, but I didn&#8217;t dive into it too deeply today since HP (my employer) is unlikely to be outsourcing their datacenters to Microsoft anytime soon (HP fancies itself to be quite the datacenter expert these days).</p>
<p>For me, the most interesting session of the day was <a href="http://haacked.com/">Phil Haack&#8217;s</a> talk on the new <a href="http://www.asp.net/MVC/">ASP.NET MVC</a> framework (<a href="http://channel9.msdn.com/pdc2008/PC21/">session replay</a>). This is something that I&#8217;ve been interested in for some time now, but haven&#8217;t yet had the opportunity to play with. As someone who splits his time pretty evenly between Java and .NET programming, there&#8217;s always been a major mental context switch that I have to go through when moving from Struts or Spring MVC in the Java world to ASP.NET Web Forms in the .NET world. The programming models are radically different.</p>
<p>On the other hand, ASP.NET MVC now brings to the .NET platform all of the things that I know and love about the MVC development model:</p>
<ul>
<li>Clear separation of concerns.
<li>Complete control over the structure of my URLs with a robust routing framework.
<li>Complete control over my generated markup (some people may lament the lack of support for WebForm-style server controls, but I&#8217;m happy to be rid of ViewState).
<li>Unit-testability. </li>
</ul>
<p>I&#8217;ve looked at a lot of the ASP.NET MVC sample code that have been released and the one that I did find disturbing was the amount of code present in the views. MVC is able to leverage the good ol&#8217; ASPX page as a view layer and you&#8217;ll often see things like this is the samples:</p>
<pre>&lt;p&gt;Please fill out the following form:&lt;/p&gt;
&lt;% using(Html.Form("Home", "Index")) { %&gt;
	&lt;input type="text" name="firstname"&gt;
	...
&lt;% } %&gt;</pre>
<p>In the Java world we&#8217;ve been told for years &#8220;keep Java code out of your JSPs&#8221;, yet here we&#8217;ve got some pretty strange looking C# code mingling with our HTML markup (this is actually a pretty clever use of the IDisposable pattern to create a form-scope within the page, but really this sort of code has no business in the view). In Java, this sort of scenario is typically handled by using things like the Java Standard Tag Library (JSTL), the JSP Expression Language or a custom tag library. These things don&#8217;t have any counterparts in the ASP.NET MVC world . . . yet.</p>
<p>I was very encouraged to hear Phil say that one of the things they are going to work on is a set of &#8220;declarative helpers&#8221; that will serve as an alternative to inline C# code within the ASPX view. If true, this would eliminate the one reservation that I currently have about using the ASP.NET MVC framework. Phil is supposed to be in the expo hall this afternoon answering questions and I&#8217;m hoping to talk to him about their plans in this area.</p>
<p>Great stuff!</p>
]]></content:encoded>
			<wfw:commentRss>http://dehamerspace.com/2008/10/28/microsoft-pdc-day-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
