<?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>Panes of Glass &#187; Software</title>
	<atom:link href="http://panesofglass.org/category/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://panesofglass.org</link>
	<description></description>
	<lastBuildDate>Mon, 30 Apr 2012 11:04:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3-aortic-dissection</generator>
		<item>
		<title>WPF DataBinding: Refreshing from Source</title>
		<link>http://panesofglass.org/software/wpf-databinding-refreshing-from-the-source/</link>
		<comments>http://panesofglass.org/software/wpf-databinding-refreshing-from-the-source/#comments</comments>
		<pubDate>Thu, 24 Jul 2008 02:40:55 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[DataBinding]]></category>
		<category><![CDATA[design patterns]]></category>
		<category><![CDATA[Linq]]></category>
		<category><![CDATA[PresentationModel]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://panesofglass.org/?p=346</guid>
		<description><![CDATA[WPF DataBinding is terrific and allows for very passive views and easy source object updates. However, triggering updates in the view based on changes in &#8230;]]></description>
			<content:encoded><![CDATA[<p><abbr title="Windows Presentation Foundation">WPF</abbr> <a href="http://blogs.msdn.com/wpfsdk/archive/2006/10/19/wpf-basic-data-binding-faq.aspx">DataBinding</a> is terrific and allows for very passive views and easy source object updates. However, triggering updates in the view based on changes in the source object can be a little tricky.</p>
<p>If you want to make sure changes to your source object are reflected in your view, your source object will need to implement <a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx">INotifyPropertyChanged</a> (<a href="http://blogs.msdn.com/wpfsdk/archive/2006/10/19/wpf-basic-data-binding-faq.aspx">see example</a>). Yet just implementing this property will not necessarily update your bindings. If your source object includes collections, and you bind to properties in those collections, you can update the source property but will not get updates from the source property, even if it is of a type that implements INotifyPropertyChanged.</p>
<p>The above scenario is common with <a href="http://msdn.microsoft.com/en-us/library/bb386976.aspx">Linq to Sql</a> when the entities are generated for you. Even tables with one-to-one mappings will be generated with lists&#8211;as SQL doesn&#8217;t have a way of representing one-to-one relationships&#8211;so be sure to edit your dbml accordingly in order to take advantage of binding to your source object&#8217;s properties. (You might also consider removing some relationships to remove issues with DataContext collisions when trying to set properties of one Linq entity to another.)</p>
<p>If you can&#8217;t fix the problem this way or want to display the collection and changes to the collection, you can always add an <a href="http://msdn.microsoft.com/en-us/library/ms668604.aspx">ObservableCollection</a> to your <a href="http://panesofglass.org/personal/rriley1/Blog/Lists/Posts/Post.aspx?ID=7">PresentationModel</a> or wrap the source object with another object that does use the ObservableCollection to display your collection.</p>
]]></content:encoded>
			<wfw:commentRss>http://panesofglass.org/software/wpf-databinding-refreshing-from-the-source/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Composite WPF Patterns</title>
		<link>http://panesofglass.org/software/composite-wpf-patterns/</link>
		<comments>http://panesofglass.org/software/composite-wpf-patterns/#comments</comments>
		<pubDate>Sat, 19 Jul 2008 20:34:53 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Composite WPF]]></category>
		<category><![CDATA[Dan Crevier]]></category>
		<category><![CDATA[design patterns]]></category>
		<category><![CDATA[John Grossman]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Model-View-ViewModel]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[Pete Weissbrod]]></category>
		<category><![CDATA[PresentationModel]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://panesofglass.org/?p=342</guid>
		<description><![CDATA[Microsoft&#8217;sComposite ApplicationÂ Guidance for WPF (Composite WPF) gives WPF a lightweight yet effective application block with which to build exciting applications. However, the biggest struggle is &#8230;]]></description>
			<content:encoded><![CDATA[<p>Microsoft&#8217;s<a href="http://msdn.microsoft.com/en-us/library/cc707819.aspx">Composite ApplicationÂ Guidance for WPF (Composite WPF)</a> gives <abbr title="Windows Presentation Foundation">WPF</abbr> a lightweight yet effective application block with which to build exciting applications. However, the biggest struggle is deciding on a pattern for applying the library. The <a href="http://blogs.sqlxml.org/bryantlikes/archive/2006/09/27/WPF-Patterns.aspx">Model-View-ViewModel (MVVM)</a>, mentioned across the web as the perfect pattern for implementing <abbr title="Model-View-Controller">MVC</abbr> with WPF, was for some reason not specifically mentioned in the Composite WPF documentation. Nevertheless, the MVVM pattern is many times used and alluded to under the name PresentationModel and is arguably the best approach in most cases.</p>
<p><a href="http://blogs.msdn.com/dancre/default.aspx">Dan Crevier</a> posted a <a href="http://blogs.msdn.com/dancre/archive/2006/10/11/datamodel-view-viewmodel-pattern-series.aspx">series of excellent articles</a> defining the pattern and giving examples of the implementation of MVVM in WPF. These were written several years ago, before development of the Composite WPF block, but they are simple to understand and can give added understanding to the objects included in Composite WPF. For example, his post on <a href="http://blogs.msdn.com/dancre/archive/2006/09/15/dm-v-vm-part-7-encapsulating-commands.aspx">encapsulating commands</a> is very similar to the <a href="http://msdn.microsoft.com/en-us/library/cc707894.aspx">DelegateCommand</a> object provided with CompositeWPF, though the latter uses lambdas to define Execute and CanExecute methods, whereas the former uses a base class and inheritance to define the methods. Using Dan&#8217;s example, the equivalent DelegateCommand, contained within the DelegateCommand&#8217;s definition, would look something like this:</p>
<pre><code>public DelegateCommand&lt;object&gt; MyCommand { get; private set; }

public Window1()
{
    InitializeComponent();
    MyCommand = new DelegateCommand&lt;object&gt;(
        p =&gt; {
                 string text = p as string;
                 // Do something with text
             },
        p =&gt; !string.IsNullOrEmpty(p as string));
}</code></pre>
<p>Dan&#8217;s definitions of the Model, which he calls DataModel, View and ViewModel match very closely with Composite WPF&#8217;s <a href="http://msdn.microsoft.com/en-us/library/cc707885.aspx">PresentationModel</a> pattern. In this case, the DataModel is a representative object that is fit for display within the View. Using the entities generated forÂ <a href="http://msdn.microsoft.com/en-us/library/bb425822.aspx">Linq to SQL</a>, you might add properties to the partial classesÂ create the necessary properties to which to bind. These classes should also implement INotifyPropertyChanged so that other DataModels can respond to changes from another, related View and update their data accordingly.</p>
<p>The View should use bindings for everything. The beauty of WPF is truly in its <a href="http://www.beacosta.com/blog/?cat=2">DataBinding</a> functionality. The observer pattern is built right into the Binding, so that whenever one view changes, other views are notified by their bindings to their DataModels. Even the actions to be performed on a user interaction with the UI can be removed to the ViewModel, DataModel, or in the case of Composite WPF, a controller, Shell, or App level, as appropriate. This leaves the View looking very <a href="http://martinfowler.com/eaaDev/PassiveScreen.html">passive</a>, indeed, which greatly helps when unit testing.</p>
<p>The <a href="http://blogs.msdn.com/dancre/archive/2006/09/17/dm-v-vm-part-8-view-models.aspx">ViewModel</a> is the actual <a href="http://msdn.microsoft.com/en-us/library/cc707885.aspx">PresentationModel</a>. It hosts the DataModel, as well as the View&#8217;s commands. ViewModel should be the object used to bind to the View&#8217;s DataContext and should implement INotifyPropertyChanged if any of the properties could change. The <a href="http://msdn.microsoft.com/en-us/library/cc707865.aspx">QuickStarts</a> and <a href="http://msdn.microsoft.com/en-us/library/cc707869.aspx">RIStockTrader</a> examples provide excellent samples of the PresentationModel, though be warned that the examples often use different patterns, if for no other reason than to show other pattern implementations.</p>
<p>That covers the MVVM pattern. However, there&#8217;s one more aspect that needs to be covered: composite regions. Composite WPF provides regions for managing the display of different modules in the Shell, but what if you need to display multiple modules or views within a &#8220;summary&#8221; view that is already on the Shell? In this case, you can use a Controller to manage the child use cases. The <a href="http://msdn.microsoft.com/en-us/library/cc707868.aspx">UIComposition QuickStart</a> shows a terrific example of creating a controller in a ViewModel for the purposes of managing child use cases. This removes the dependencies and depth of a View that includes a tab control containing a large number of child use cases. (The UIComposition QuickStart uses a <a href="http://msdn.microsoft.com/en-us/library/cc707873.aspx">Supervising Controller</a> pattern instead of the PresentationModel/MVVM pattern, so you&#8217;ll have to adjust it accordingly, but it works beautifully.)</p>
<p>The MVVM pattern is a great solution for WPF applications by allowing WPF&#8217;s DataBinding and Commanding to remove much of the logic formerly found in the View layer out to a unit testable ViewModel. The architecture stays clean and also fairly shallow in that an additional Presenter class is unnecessary (as opposed to the Supervising Controller pattern.)</p>
<p>Additional Resources:</p>
<ul>
<li><a href="http://blogs.msdn.com/johngossman/default.aspx">John Grossman &#8211; Tales from the Smart Client</a></li>
<li><a href="http://www.acceptedeclectic.com/2008/01/model-view-viewmodel-pattern-for-wpf.html">Pete Weissbrod &#8211; Model-View-ViewModel Pattern for WPF: Yet Another Approach</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://panesofglass.org/software/composite-wpf-patterns/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Too Much &#8220;Semantic&#8221; in the Semantic Web?</title>
		<link>http://panesofglass.org/software/too-much-semantic-in-the-semantic-web/</link>
		<comments>http://panesofglass.org/software/too-much-semantic-in-the-semantic-web/#comments</comments>
		<pubDate>Fri, 06 Jun 2008 17:25:45 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
				<category><![CDATA[Christianity]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[good solution]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[rdf]]></category>
		<category><![CDATA[semantic web]]></category>
		<category><![CDATA[workable solution]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[XSLT]]></category>

		<guid isPermaLink="false">http://panesofglass.org/?p=334</guid>
		<description><![CDATA[Bent Rasmussen started a terrific discussion on Twine today regarding an article titled &#8220;Never Mind the Semantic Web.&#8221; After reading Bent&#8217;s comment and the article, &#8230;]]></description>
			<content:encoded><![CDATA[<p><a title="New, Improved *Semantic* Web!" href="http://flickr.com/photos/14829735@N00/303503677"><img class="alignleft" style="float: left;" src="http://farm1.static.flickr.com/105/303503677_e83d70118f_m.jpg" alt="" /></a><a title="Bent Rasmussen's blog" href="http://xosfaere.wordpress.com/">Bent Rasmussen</a> started a terrific <a title="Never Mind the Semantic Web discussion in Twine" href="http://www.twine.com/item/116qmkylq-10v/never-mind-the-semantic-web">discussion on Twine</a> today regarding an article titled &#8220;<a title="Never Mind the Semantic Web" href="http://www.furia.com/page.cgi?type=log&amp;id=301">Never Mind the Semantic Web</a>.&#8221; After reading Bent&#8217;s comment and the article, I started thinking again about adding &#8220;semantic&#8221; markup in (X)HTML. My comment follows:</p>
<blockquote><p>I read your comment before reading the article, and I originally agreed with your comment. Then I read the article, and I can&#8217;t help agreeing with almost every point. Almost. At the same time, I still agree with your comment. I know that probably sounds ridiculous, but it&#8217;s true. Everything you said is spot on target. Maybe explaining my thoughts, having read both, would help.</p>
<p>After reading the article, I can&#8217;t help thinking that RDF really doesn&#8217;t belong within (X)HTML. This is a pretty big deal for me, but I can&#8217;t get away from it. From a truly semantic pov, (X)HTML describes a document. I realize that it has been exploded to do all sorts of amazing things, but it is, at it&#8217;s roots, a document format. Why force even more into an almost back-broken format? (X)HTML&#8217;s own tags can provide a load of semantic information about the document, and that&#8217;s really all it should provide.</p>
<p>Microformats are a great way of recognizing that and staying fairly consistent to that nature, but they really aren&#8217;t a very good solution. Creating RDF using n3 is much easier than XML, though both are fine, and are much easier to create independent of (X)HTML. Building a tool to create RDF data to store at a specific URI would allow so much more data to be placed out on the SemWeb much faster. Then, using the <code>rel</code> and <code>rev</code> attributes already in (X)HTML, you could extract triples to relate web pages (HTML) to web resources (RDF, etc.) and complete the graph without trying to force in so much more information than necessary into (X)HTML.</p>
<p>Maybe I&#8217;m a bit naive, but that seems like a really workable solution. And if you must find a way to represent all RDF as a (X)HTML, XSLT and XQuery are great tools for doing just that, keeping in mind you are now creating a document to display data for the resource. Standard templates/queries should be able to go a long way&#8211;sort of a reverse GRDDL approach.</p>
<p>Or am I just missing something huge and obvious? (I tend to do that sometimes.)</p></blockquote>
<p>If you read my previous post on <a title="The Future of Web Applications" href="http://panesofglass.org/software/the-future-of-web-applications/">the Future of Web Applications</a>, you may think I already thought this. Well, I wish I had, but at the time I hadn&#8217;t quite reached this point. After all, I thought embedding resources within (X)HTML would make everything more maintainable. However, maintaining data on a person, event, etc. is much more easily done in one place and then linked by others. Why embed something that may already exist elsewhere? And why make your web page, which may only haphazardly relate to the embedded content, the responsible source for maintaining that embedded item?</p>
<p>Rather, I&#8217;d love to see tools like <a title="WordPress homepage" href="http://wordpress.org/">WordPress</a> and others provide tools for creating and managing this content locally <em>or</em> link to resources elsewhere, such as in your Google Calendar.</p>
]]></content:encoded>
			<wfw:commentRss>http://panesofglass.org/software/too-much-semantic-in-the-semantic-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Semantic Web, Blogging and WordPress</title>
		<link>http://panesofglass.org/software/the-semantic-web-blogging-and-wordpress/</link>
		<comments>http://panesofglass.org/software/the-semantic-web-blogging-and-wordpress/#comments</comments>
		<pubDate>Thu, 22 May 2008 02:30:59 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[foaf]]></category>
		<category><![CDATA[linked data]]></category>
		<category><![CDATA[rdf]]></category>
		<category><![CDATA[rdfa]]></category>
		<category><![CDATA[semantic web]]></category>
		<category><![CDATA[SPARQL]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://panesofglass.org/?p=322</guid>
		<description><![CDATA[As any loyal reader of this blog can attest, I continually mull over whether or not maintaining a blog is a worthy pursuit. I&#8217;ve gone &#8230;]]></description>
			<content:encoded><![CDATA[<p><a title="W3C Semantic Web Activity" href="http://www.w3.org/2001/sw/"><img class="alignleft size-full wp-image-324" title="W3C Semantic Web Logo" src="http://panesofglass.org/wp/wp-content/uploads/2008/05/semweb.png" alt="W3C Semantic Web logo" width="241" height="48" /></a>As any loyal reader of this blog can attest, I continually mull over whether or not maintaining a blog is a worthy pursuit. I&#8217;ve gone on hiatus three times for several months to a year and even posted that said post was my last. I don&#8217;t do this because I have nothing to say; I rather find myself posting elsewhere in a forum or commenting on other blogs. The real battle is whether or not I should post my thoughts and contributions on my own site or on others&#8217;. <span id="more-322"></span></p>
<p>At this point, I&#8217;ve likely lost most of my readers who are here for one thing or another, except those interested in the topics in the title. And that proves the point, in the end. A personal blog is basically a lot of thoughts, asides, commentaries, etc. about a variety of topics with only one common theme: they are all about the blogger. While that may appeal to some people in some cases, generally the only people who read this are close friends and family, and that happens only so often. (On rare occasions, I&#8217;m pleasantly surprised by new visitors and contacts&#8230; Thanks!) Please also note that I&#8217;m not directing this at corporate blogs or blogs about one or a few closely related concepts.</p>
<p>Instead of such a personal blog (this one is a case-in-point), I&#8217;ve been thinking that the only reason to post publicly is to share what I&#8217;ve got. If no one reads it, however, then what good was posting it? And if I&#8217;m inconsistent or post on certain ideas only infrequently, how will anyone know or care when I&#8217;ve posted exactly what they&#8217;ve needed for days&#8211;here I&#8217;m alluding to the difficulty of finding good SharePoint development resources&#8211;when it&#8217;s my second post on the topic in six months? If I post on <a title="MSDN Forums" href="http://forums.microsoft.com/MSDN/default.aspx?siteid=1">MSDN</a> or <a title="SitePoint Forums" href="http://www.sitepoint.com/forums/">SitePoint forums</a>, however, not only will a lot of people likely see it, but I may even be able to discuss other ways of doing what I&#8217;ve suggested or even learn ways to improve.</p>
<p>I&#8217;ve come full circle once again. Why have a blog? I really can&#8217;t think of a good reason. However, I can think of a really great reason for continuing to use <a title="WordPress homepage" href="http://wordpress.org/">WordPress</a> and maintain a personal <em>site</em>: a personal site can act as a hub for all of my online activities and accounts, and at some point, potentially bring all the posts I contribute elsewhere back here for a central picture of what I do online. (Of course, sites like <a title="Twine" href="http://www.twine.com/">Twine</a> and <a title="Facebook" href="http://www.facebook.com/">Facebook</a> already do that on some level, but there&#8217;s nothing like having your own, decrufted domain name!)</p>
<p>The only problem, at this point, is that WordPress does not tie into the Semantic Web at the moment. This is changing with goodies like <a title="BuddyPress - social networking with WordPress mu" href="http://buddypress.org/">BuddyPress</a>, <a title="SparqlPress" href="http://wiki.foaf-project.org/SparqlPress">SparqlPress</a>, <a title="wp-openid Plugin" href="http://wordpress.org/extend/plugins/openid/">wp-openid</a>, etc. I&#8217;m most excited about SparqlPress, which will really tie WordPress into the Semantic Web by pulling user information from <a title="Friend of a Friend" href="http://www.foaf-project.org/">FOAF</a> profiles using <a title="SPARQL - think of the web as your database" href="http://en.wikipedia.org/wiki/SPARQL">SPARQL</a> queries (see the <a title="SparqlPress example from Alexandre Passant" href="http://apassant.net/blog/tag/sparqlpress/">example</a>).</p>
<p>However, even with these great steps forward, I&#8217;m still missing something. WordPress is a personal publishing platform, but it doesn&#8217;t publish semantic data in the form that can be used to link to data on other sites. What I want to do is create a plugin to allow WordPress to embed <a title="RDF on Wikipedia" href="http://en.wikipedia.org/wiki/Resource_Description_Framework">RDF</a> <a title="RDFa embeds RDF triples into HTML" href="http://en.wikipedia.org/wiki/RDFa">metadata into every post, page and link</a> on my site using standard rules. I&#8217;ve started evaluating which content type works best for various types of data (see my list of &#8220;Online Accounts&#8221; links in the sidebar). At some point I&#8217;ll figure out<br />
how to pull my content elsewhere back into my personal feed (i.e. &#8220;blog&#8221;), but that&#8217;ll remain for a later task.</p>
<p>Anyway, I&#8217;ll probably keep posting some stuff here, but it&#8217;ll really be thoughts that don&#8217;t seem to be better posted elsewhere. Over time, this site will start really looking like a hub about me and less like a blog&#8230; but I&#8217;ve said similar things before&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://panesofglass.org/software/the-semantic-web-blogging-and-wordpress/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>The Future of Web Applications</title>
		<link>http://panesofglass.org/software/the-future-of-web-applications/</link>
		<comments>http://panesofglass.org/software/the-future-of-web-applications/#comments</comments>
		<pubDate>Mon, 21 Apr 2008 13:00:54 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[future]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[semantic web]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[web 3.0]]></category>
		<category><![CDATA[web applications]]></category>
		<category><![CDATA[XForms]]></category>
		<category><![CDATA[XHTML]]></category>
		<category><![CDATA[XSLT]]></category>

		<guid isPermaLink="false">http://panesofglass.org/?p=290</guid>
		<description><![CDATA[I&#8217;ve been thinking about web applications and where they are heading over the past few months. I&#8217;ve become a big proponent of progressive enhancement in &#8230;]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been thinking about web applications and where they are heading over the past few months. I&#8217;ve become a big proponent of <a title="Wikipedia.org" href="http://en.wikipedia.org/wiki/Progressive_Enhancement">progressive enhancement</a> in the last year since finally leaving behind the basics of <a title="PHP" href="http://www.php.net/">PHP</a> to learn more about <a title="JavaScript Reference" href="http://www.javascript.com/">JavaScript</a>, <a title="W3C Cascading Style Sheets" href="http://www.w3.org/Style/CSS/">CSS</a>, <a title="XForms.org" href="http://xforms.org">XForms</a>, <a title="Ruby on Rails" href="http://www.rubyonrails.org/">Ruby on Rails</a> and <a title="ASP.NET" href="http://www.asp.net">ASP.NET</a>. Since then I&#8217;ve been learning more about <a title="Semantics and Design at And all that Malarkey" href="http://www.stuffandnonsense.co.uk/archives/semantics_and_design.html">semantic HTML</a>, <a title="Sitepoint's Web Site Optimization Steps" href="http://www.sitepoint.com/article/web-site-optimization-steps/3">the separation of concerns and how they help web site optimization</a>, and the role of technologies like <a title="Adobe" href="http://www.adobe.com/">Adobe</a>&#8216;s <a title="Adobe Flash" href="http://www.adobe.com/products/flash/?ogn=EN_US-gntray_prod_flash_home">Flash</a>/<a title="Adobe Flex" href="http://www.adobe.com/products/flex/?ogn=EN_US-gntray_prod_flex_home">Flex</a> and <a title="Microsoft" href="http://www.microsoft.com/">Microsoft</a>&#8216;s <a title="Microsoft Silverlight" href="http://www.silverlight.net/">Silverlight</a>.<span id="more-290"></span></p>
<p>I recently listened to <a title="Douglas Crockford's Wrrrld Wide Web" href="http://www.crockford.com/">Douglas Crockford</a>&#8216;s <a title="YDN Theater" href="http://http//developer.yahoo.net/blogs/theater/archives/2007/10/the_state_of_ajax_douglas_crockford.html">State of Ajax</a> presentation and thought he made excellent points:</p>
<ul>
<li>JavaScript is a terrific language, it&#8217;s just misunderstood</li>
<li>CSS is probably the weakest link because it was designed to layout print documents and has been made to fit flow documents (not sure I agree wholly with this, but it is a challenge)</li>
<li>HTML has reached a point of confusion with the competing improvements from the <a title="W3C" href="http://www.w3c.org/">W3C</a> (<a title="XHTML 2.0" href="http://www.w3.org/TR/xhtml2/">XHTML2</a>) and <a title="WHAT-WG" href="http://www.whatwg.org/">WHAT-WG</a> (<a title="HTML5" href="http://www.whatwg.org/specs/web-apps/current-work/">HTML5</a>)</li>
</ul>
<p>I certainly agree with point #1, that JavaScript is a terrific language. CSS&#8230; well, I&#8217;m okay with it. I fully realize I don&#8217;t understand it all that well (see the state of my current design), but I&#8217;m learning and I like it. I just don&#8217;t really understand why it&#8217;s not an XML language. (I do like that it&#8217;s not because it&#8217;s easier to write, but consistency is at least nice.)</p>
<p>With regards to HTML, I also fully agree, but almost for different reasons. HTML is a great platform for creating documents. However, all the extensions being added by WHAT-WG seem to miss the point and muddy the waters further. XHTML2 just realigns everything and adds some better links to other technologies like XForms, which is itself more a web form application language, not a document language. Thus, all the new versions make HTML more of a combination document/application platform. If that comes to pass, HTML will no longer really be good for anything in terms of semantics. It will have none and will instead lead to a new form of tag-soup: namespace soup.</p>
<p>Now, before anyone goes crazy on me, I don&#8217;t think all &#8220;web applications&#8221; break HTML. For instance, Google Maps is a great application, and I can appreciate making web-based documents (like maps) interactive, just as you might find a real map. I draw and mark up maps in real-life, so why not on the web? That makes perfect sense. A blog is also a great web app when I can edit it right there on the screen, just as though I were able to go back in my journal and either cross out or erase parts and re-write them. In some cases, web apps can be even better.</p>
<p>The part where all this breaks down, though, is admin screens and other forms. Sure, you can look at a web form as a document that needs to be submitted once complete, just like in real-life. But to then add all the javascript additions to auto-save frequently and refresh parts of the document? That&#8217;s no longer a document-style form; that is now an application, and I think that an application should be an application, not a hodge-podge of document and script.</p>
<p>I see Adobe Flash/Flex and Microsoft Silverlight (and maybe XForms, but I&#8217;ve recently lost a lot of interest there for many reasons to be explained in a bit) fitting in here well. If you&#8217;ve got an application you want to place online, you probably don&#8217;t need it to be spread across several pages. If you do, it&#8217;s not really an application but related pages. Also, if you need bookmark-ability, you can always add favorites to an application or allow the application to interpret parameters sent to the hosting web page&#8217;s address to load the application in a certain spot. Any way you swing it, your application has the following benefits:</p>
<ol>
<li>It&#8217;s source is protected by default (if you desire that sort of thing)</li>
<li>The hosting HTML page can describe the application, which keeps the HTML full of solid, semantic meaning</li>
<li>The application is self-contained and therefore provides a rich, responsive user-interface for the user</li>
<li>The application can use other documents or resources on the web instead of both being the document and the application, again increasing the semantic meaning</li>
<li>A self-contained application doesn&#8217;t pollute the web with excess semantic markup (as would XForms) but allows the hosting HTML document to provide the semantic meaning for the application</li>
</ol>
<p>I&#8217;m still thinking about all this, but with all the struggle over the future of HTML, JavaScript, and CSS, I don&#8217;t think we&#8217;ll see many innovations there (at least not cross-browser) any time soon, and I also don&#8217;t think they are really all that necessary. We&#8217;ve already got a superb foundation for building web applications. We should instead focus more on tying our applications to existing documents and resources on the web and increasing the semantic meaning of everything we do, without adding too much meaningless meaning. And we can do that today.</p>
]]></content:encoded>
			<wfw:commentRss>http://panesofglass.org/software/the-future-of-web-applications/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>coffee2code is Back with a Vengence!</title>
		<link>http://panesofglass.org/software/coffee2code-is-back-with-a-vengence/</link>
		<comments>http://panesofglass.org/software/coffee2code-is-back-with-a-vengence/#comments</comments>
		<pubDate>Thu, 03 Apr 2008 13:00:24 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://panesofglass.org/?p=296</guid>
		<description><![CDATA[Do you like WordPress plugins? Well, Scott Reilly is back with 14 days of plugins, and he&#8217;s updated the mother of all plugins for WP2.5! &#8230;]]></description>
			<content:encoded><![CDATA[<p>Do you like <a title="WordPress homepage" href="http://wordpress.org/">WordPress</a> <a title="WordPress Plugins Directory" href="http://wordpress.org/extend/plugins/">plugins</a>? Well, <a title="Scott Reilly's homepage" href="http://coffee2code.com/">Scott Reilly</a> is back with <a title="coffee2code's 14 days of plugins" href="http://coffee2code.com/archives/2008/03/30/14-days-of-plugins/">14 days of plugins</a>, and he&#8217;s updated the <a title="Customizable Post Listings" href="http://coffee2code.com/wp-plugins/customizable-post-listings/">mother of all plugins</a> for <a title="Download WordPress 2.5" href="http://wordpress.org/download/">WP2.5</a>! Check it out, and get yourself a copy while you&#8217;re at it. Great work, Scott!</p>
]]></content:encoded>
			<wfw:commentRss>http://panesofglass.org/software/coffee2code-is-back-with-a-vengence/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web Applications for Developers</title>
		<link>http://panesofglass.org/software/web-applications-for-developers/</link>
		<comments>http://panesofglass.org/software/web-applications-for-developers/#comments</comments>
		<pubDate>Wed, 02 Apr 2008 13:00:53 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[photo]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[semantic web]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[web 3.0]]></category>
		<category><![CDATA[web applications]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://panesofglass.org/?p=292</guid>
		<description><![CDATA[This is a short list of some of the amazing, new applications coming out for developers to use on the web:

Heroku for Ruby on Rails &#8230;]]></description>
			<content:encoded><![CDATA[<p>This is a short list of some of the amazing, new applications coming out for developers to use on the web:</p>
<ul>
<li><a title="Heroku homepage" href="http://heroku.com/">Heroku</a> for Ruby on Rails development</li>
<li><a title="Photoshop Express" href="http://www.photoshop.com/express">Photoshop Express</a> for image editing and sharing</li>
<li><a title="WordPress Homepage" href="http://wordpress.org">WordPress 2.5</a> for even more powerful blogging and now <a title="Example of image gallery from Matt Mullenweg's blog." href="http://ma.tt/2008/03/wordcamp-clouds/">speedy image galleries</a></li>
<li><a title="Twine homepage" href="http://www.twine.com/">Twine</a> for linking your tagged based information together (M. David Peterson has had some very interesting <a title="M. David Peterson post on Twine for SitePoint.com Blogs" href="http://www.sitepoint.com/blogs/2008/03/20/visualising-the-world-with-twine/">blog posts about Twine</a> recently.)</li>
<li><a title="Woopra homepage" href="http://woopra.com/">Woopra</a> for real-time site management that you have to see to believe; <a title="Google Analytics" href="http://www.google.com/analytics/indexu.html">Google Analytics</a>, eat your heart out!</li>
</ul>
<p>See below for some interesting screenshots:</p>

<a href='http://panesofglass.org/software/web-applications-for-developers/attachment/heroku/' title='heroku'><img width="150" height="150" src="http://panesofglass.org/wp/wp-content/uploads/2008/03/heroku-150x150.jpg" class="attachment-thumbnail" alt="Heroku application" title="heroku" /></a>
<a href='http://panesofglass.org/software/web-applications-for-developers/attachment/photoshopexpress/' title='photoshopexpress'><img width="150" height="150" src="http://panesofglass.org/wp/wp-content/uploads/2008/03/photoshopexpress-150x150.jpg" class="attachment-thumbnail" alt="panesofglass on Photoshop Express" title="photoshopexpress" /></a>
<a href='http://panesofglass.org/software/web-applications-for-developers/attachment/woopra/' title='woopra'><img width="150" height="150" src="http://panesofglass.org/wp/wp-content/uploads/2008/03/woopra-150x150.jpg" class="attachment-thumbnail" alt="Woopra viewing panesofglass.org" title="woopra" /></a>

]]></content:encoded>
			<wfw:commentRss>http://panesofglass.org/software/web-applications-for-developers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordCamp Dallas 2008</title>
		<link>http://panesofglass.org/software/wordcamp-dallas-2008/</link>
		<comments>http://panesofglass.org/software/wordcamp-dallas-2008/#comments</comments>
		<pubDate>Tue, 01 Apr 2008 13:00:53 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[training]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[wordcampdallas2008]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://panesofglass.org/?p=289</guid>
		<description><![CDATA[I seem to have misplaced my camera, so I have no photos.   However, WordCamp really got me excited about blogging, networking, and reading &#8230;]]></description>
			<content:encoded><![CDATA[<p>I seem to have misplaced my camera, so I have no <a title="wordcampdallas2008 on flickr" href="http://flickr.com/photos/laughinglizard/sets/72157604332447712/">photos</a>. <img src='http://panesofglass.org/wp/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  However, <a title="WordCamp Dallas 2008" href="http://dallas.wordcamp.org">WordCamp</a> really got me excited about blogging, networking, and reading and writing again. The new version was launched, <a title="PhotoMatt's blog" href="http://ma.tt">Matt</a> was there and discussed the future, and several other notables gave outstanding presentations on how to better blog and interact with people through blogging. <span id="more-289"></span></p>
<p>In addition, my friend <a title="Randy Hoyt's homepage" href="http://randyhoyt.com">Randy Hoyt</a> and I each got to talk with <a title="PhotoMatt's blog" href="http://ma.tt">Matt</a> one-on-one, and we both came away excited about doing things that might help WordPress grow in the future. I am planning to start working on a plug-in for including <a title="RDFa on Wikipedia" href="http://en.wikipedia.org/wiki/RDFa">RDFa</a> in WordPress (similar to <a title="Drupal homepage" href="http://drupal.org">Drupal</a>&#8216;s <a title="Drupal 7 will be a semantic web client" href="http://www.sitepoint.com/blogs/2008/03/05/drupal-7-a-living-breathing-semantic-web-citizen">announcement</a>), and Randy is wanting to build a issue tracker. This all leads to WordPress being <a title="What is a Development Framework? on panesofglass.org" href="http://panesofglass.org/software/what-is-a-development-framework/">far more than just a blogging application</a>; it really is a <a title="Full Stack definition on Wikipedia" href="http://en.wikipedia.org/wiki/Web_application_framework#Full_Stack">full stack application platform</a>.</p>
<p>Kudos to the <a title="WordPress 2.5 Release blog with list of main contributors" href="http://wordpress.org/development/2008/03/wordpress-25-brecker/">WordPress contributors</a> and all who worked so hard to put this WordCamp together. Thanks also to the <a title="City of Frisco, TX" href="http://www.ci.frisco.tx.us/">City of Frisco, TX</a>, our hosts. Their council chamber, where the event was held, was very nice and comfortable. All in all, it was terrific, and well worth the drive from Houston to Dallas. If you are interested, several people were taking video, which may turn up somewhere. Just <a title="Google Search for wordcampdallas2008" href="http://www.google.com/search?q=wordcampdallas2008&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=org.mozilla:en-US:official&amp;client=firefox-a">search for wordcampdallas2008</a>, and you should get lucky. Also, <a title="Nathan Rice's Word Camp Summary for Day 1" href="http://www.nathanrice.net/blog/wordcamp-recap-part-1/">Nathan Rice</a> had a nice summary, as did John P. from <a title="One Man's Blog" href="http://onemansblog.com">OneMansBlog.com</a> and <a title="Lorelle on WordPress" href="http://lorelle.wordpress.com/">Lorelle</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://panesofglass.org/software/wordcamp-dallas-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Macro- vs. Micro-MVC Architectures</title>
		<link>http://panesofglass.org/software/macro-vs-micro-mvc-architectures/</link>
		<comments>http://panesofglass.org/software/macro-vs-micro-mvc-architectures/#comments</comments>
		<pubDate>Thu, 06 Dec 2007 03:19:46 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[XForms]]></category>
		<category><![CDATA[XQuery]]></category>

		<guid isPermaLink="false">http://www.panesofglass.org/software-tech/xforms/macro-vs-micro-mvc-architectures/</guid>
		<description><![CDATA[I was reading today on SQLServerCentral.com about SQL Server&#8217;s XQuery capabilities. I was quite fascinated. Microsoft has seemed somewhat slow on the XML uptake, so &#8230;]]></description>
			<content:encoded><![CDATA[<p>I was reading today on <a title="SQL Server Central" href="http://www.sqlservercentral.com/">SQLServerCentral.com</a> about SQL Server&#8217;s <a title="XQuery in SQL Server" href="http://www.sqlservercentral.com/articles/SS2K5+-+XML/2840/">XQuery capabilities</a>. I was quite fascinated. Microsoft has seemed somewhat slow on the XML uptake, so including XQuery in SQL Server 2005 was somewhat of a shock.</p>
<p>However, I was struck with an idea after reading the article. This type of functionality puts SQL Server on a level with <a title="eXist XML Database" href="http://exist.sourceforge.net/">eXist</a> as an XML database server. By this I mean that lots of opportunities now open up to serving XML to a client application instead of using a lot of database resources. (For those unfamiliar with eXist, it has built in REST, SOAP, and WebDav services available out of the box; SQL Server has SOAP through the <code>CREATE ENDPOINT</code> statement.)</p>
<p>This led me to thinking again about the <a title="Model-View-Controller Pattern" href="http://martinfowler.com/eaaCatalog/modelViewController.html"><abbr title="Model-View-Controller">MVC</abbr></a> design pattern and an ideal way in which to set up that pattern. I came to the conclusion that there are macro- and micro- versions of the pattern. Most of the time MVC is mentioned, it is in the context of keeping everything relatively within one language (e.g. <a title="ASP.NET MVC Framework" href="http://weblogs.asp.net/scottgu/archive/2007/10/14/asp-net-mvc-framework.aspx">ASP.NET MVC</a>, <a title="Ruby on Rails" href="http://www.rubyonrails.org/">Ruby on Rails</a> or <a title="XForms" href="http://www.xforms.org">XForms</a>). That would be an example of a micro-MVC pattern.</p>
<p>A macro-MVC pattern could be the separation of XML documents (models), Javascript (controller), and HTML + CSS + XSLT (views) as found in the <a title="Freja MVC framework" href="http://www.csscripting.com/wiki/index.php?title=Freja">freja</a> framework. Most of those components are often seen in web development but not often considered when discussing MVC. Typically, only the language that produces the XML would be considered worthy of an MVC designation, if it also produced the other pieces.</p>
<p>Now to the point: one might use SQL Server to produce the XML models, <a title="Using C# to control RESTful controller actions" href="http://www.intertwingly.net/wiki/pie/RestAspNetExample">C# classes to perform the duties of the controller</a> (i.e. parsing URLs, XML, etc. and feeding the views), and either XForms or the HTML + CSS + XSLT trio for views. The best thing about this combination over using views with eXist is that SQL Server still stores its data in a relational database. A DBA could create the stored procedures necessary to create the XML documents and update the underlying tables, thereby keeping all of the business logic in one domain and truly separating models from controllers and views.</p>
<p>I&#8217;m going to make an attempt at using this methodology soon, probably with XForms as the view layer. I will be sure to post my experiences when I get further along.</p>
]]></content:encoded>
			<wfw:commentRss>http://panesofglass.org/software/macro-vs-micro-mvc-architectures/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Multiple-Model Forms in Rails</title>
		<link>http://panesofglass.org/software/multiple-model-forms-in-rails/</link>
		<comments>http://panesofglass.org/software/multiple-model-forms-in-rails/#comments</comments>
		<pubDate>Mon, 03 Dec 2007 12:18:10 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[progressive enhancement]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[XForms]]></category>

		<guid isPermaLink="false">http://www.panesofglass.org/software-tech/ruby-on-rails/multiple-form-models-in-rails/</guid>
		<description><![CDATA[I don&#8217;t know how many others have tried this, but trying to create a form in Rails that uses multiple models is quite a challenge. &#8230;]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t know how many others have tried this, but trying to create a form in Rails that uses multiple models is quite a challenge. It can certainly be done, but every method I&#8217;ve come across so far requires Javascript. What&#8217;s wrong with that? Nothing, unless some of your users have Javascript disabled. If you are not concerned with <a title="Progressive enhancement on Wikipedia" href="http://en.wikipedia.org/wiki/Progressive_enhancement">progressive enhancement</a> (or even <a title="Graceful degradation on Wikipedia" href="http://en.wikipedia.org/wiki/Graceful_degradation">graceful degradation</a>), you can try Ryan Bates&#8217;s excellent three-part tutorial at <a title="Railscasts with Ryan Bates" href="http://railscasts.com/">Railscasts</a> (<a title="Complex Forms Part 1" href="http://railscasts.com/episodes/73">part 1</a>, <a title="Complex Forms Part 2" href="http://railscasts.com/episodes/74">part 2</a>, <a title="Complex Forms Part 3" href="http://railscasts.com/episodes/75">part 3</a>).  If such things matter to you, however, you appear to have two options: <a title="Bamboo Blog's take on the Presenter and Conductor patterns in Rails" href="http://blog.new-bamboo.co.uk/2007/8/31/presenters-conductors-on-rails"><abbr title="Model-Conductor-Controller">MCC</abbr></a> or <a title="XForms.org" href="http://www.xforms.org/">XForms</a>.</p>
<p>I&#8217;ve so far tried Ryan Bates&#8217;s method to great effect, but it&#8217;s just not the route I want to go, and I can&#8217;t find an elegant way to start without Javascript. MCC looks really interesting, but now I&#8217;ve got to go to another layer of abstraction. Of course, with XForms, I will need a browser plugin, but I really like XForms, so I&#8217;m going to try it and see what I can make of it.</p>
<p>(Those familiar with XForms will likely point out that I&#8217;m now adding multiple levels of abstraction with XForms since it is, like Rails, also built on an MVC pattern. However, I&#8217;m choosing to look at this as constructing Rails web services and using another &#8220;app&#8221; to handle user interaction. Either way, they are probably right. I just want to have fun with it.)</p>
]]></content:encoded>
			<wfw:commentRss>http://panesofglass.org/software/multiple-model-forms-in-rails/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

