<?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>Delivering Quality &#187; Web</title>
	<atom:link href="http://www.markdeepwell.com/category/web/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.markdeepwell.com</link>
	<description>A Software Developers View of the World</description>
	<lastBuildDate>Thu, 29 Jul 2010 16:44:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>What Will Web Development Look Like in 5 Years</title>
		<link>http://www.markdeepwell.com/2010/03/what-will-web-development-look-like-in-5-years/</link>
		<comments>http://www.markdeepwell.com/2010/03/what-will-web-development-look-like-in-5-years/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 16:40:45 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Tools]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[5 Years]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Canvas]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Future]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://www.markdeepwell.com/?p=438</guid>
		<description><![CDATA[Developing applications for the web has changed significantly over the last 5 years. Since 2005 the term AJAX has been coined, Ruby on Rails is now an open source web application framework, jQuery was created and has subsequently revolutionized JavaScript development, and now HTML5 is the top buzzword of the day. I believe the next [...]]]></description>
			<content:encoded><![CDATA[<p>Developing applications for the web has changed significantly over the last 5 years. Since 2005 the term AJAX has been coined, Ruby on Rails is now an open source web application framework, jQuery was created and has subsequently revolutionized JavaScript development, and now HTML5 is the top buzzword of the day. I believe the next 5 years will hold just as many improvements for web developers.</p>
<p>I foresee a new framework will be created to make developing fully interactive AJAX applications  as easy as it is to write current MVC applications. Current  frameworks like Ruby on Rails and Symfony provide everything you need to develop a modern application without having to build plumbing infrastructure; however, they do not provide nice components for interactive applications. In addition to a robust server core, this new framework will have   a client side JavaScript component that simplifies the process of building interactive web 2.0 applications. Some critical components would be:</p>
<ul>
<li>Form Validation. Libraries do exist to validate forms in JavaScript,  but they don&#8217;t integrate with the server side form validation. In this new framework you won&#8217;t have to write form validation code twice.</li>
<li>Paginated Lists. Almost all web applications have at least one page where data needs to be searched and listed with pagination. We need to have this same functionality in JavaScript to skip a full page reload and provide local caching of the results.</li>
<li>Animation Library. While script.aculo.us and jQuery have made simple animations and visual effects much easier to do, I believe we can go even farther. Web applications also need to gain that fluidity and soft animations that desktop applications such as Exposé have had for a couple of years.</li>
</ul>
<p>I also see huge resources being directed towards mobile development because ALL current generation smart phones are built for an incredible web browsing experience. As home users have switched from <a href="http://www.canada.com/technology/tech-biz/laptops+dominate+desktop+face+obsolescence/1151512/story.html">desktop computers</a> to <a href="http://www.google.com/trends?q=laptop%2C+desktop">laptop computers</a> in the last few years, people will slowly start switching to hand-held devices for their primary communication and Internet needs. Most likely this will have one primary effect: web frameworks will have a mobile optimized version of the site done automatically. Little to none developer intervention will be required as only resolution, text sizes, and layouts will be modified for the mobile version.</p>
<p>Lastly I see tools and libraries around 2D and 3D drawing elements. Most likely these libraries would be rendering to a <a href="https://developer.mozilla.org/en/Canvas_tutorial">Canvas</a> or a <a href="http://planet-webgl.org/">WebGL</a> element but something better could be created. Both of these are young standards right now that show a lot of promise on delivering the ability to draw pixels directly in a native HTML web page. While they will be used first in simple computer games, I am very interested to see what libraries are created to facilitate these elements being used appropriately inside next generation web applications.</p>
<p>What do you think the next 5 years will bring?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markdeepwell.com/2010/03/what-will-web-development-look-like-in-5-years/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Cost of Endorsing H.264</title>
		<link>http://www.markdeepwell.com/2010/01/the-cost-of-endorsing-h-264/</link>
		<comments>http://www.markdeepwell.com/2010/01/the-cost-of-endorsing-h-264/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 18:20:52 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[H.264]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Ogg Theora]]></category>
		<category><![CDATA[Open Web]]></category>
		<category><![CDATA[Vimeo]]></category>
		<category><![CDATA[YouTube]]></category>

		<guid isPermaLink="false">http://www.markdeepwell.com/?p=454</guid>
		<description><![CDATA[As you&#8217;ve probably heard, both YouTube and Vimeo have released beta support to their massively popular websites to play videos using the HTML5 video tag instead of Flash. While I am glad the video sites are finally switching to the native HTML video tag, I am perplexed why they have gone with the non-free option. [...]]]></description>
			<content:encoded><![CDATA[<p>As you&#8217;ve probably heard, both <a href="http://www.youtube.com/html5">YouTube</a> and <a href="http://www.vimeo.com/blog:268">Vimeo</a> have released beta support to their massively popular websites to play videos using the <a href="http://www.markdeepwell.com/2009/07/importance-of-the-html-video-tag/">HTML5 video tag</a> instead of Flash. While I am glad the video sites are <strong>finally</strong> switching to the native HTML video tag, I am perplexed why they have gone with the non-free option.</p>
<p>Firefox, Safari, Google Chrome, and soon Opera all support the HTML5 video tag with the ability to play Ogg Theora encoded videos (except Safari). On the other hand, H.264 is only supported by Google Chrome and Safari. Both of these formats do the same thing, they specify a compression standard that allows for efficient playback at relatively small file sizes. There are a number of technical differences, but generally, they <a href="http://people.xiph.org/~greg/video/ytcompare/comparison.html">preform relatively the same</a>. The big difference between the two is that Ogg Theora is royalty free and available for anybody to use, while H.264 is encumbered by patents held by the MPEG LA association. This same organization will charge anybody who uses it a <a href="http://www.streaminglearningcenter.com/articles/h264-royalties-what-you-need-to-know.html">hefty royalty fee</a> starting in 2011.</p>
<p>If you have a personal blog and want to put a video on your website using H.264 this means you need to have to hire a lawyer to create a deal with the MPEG LA to allow you to use their codec. This will either cost you a lot of money, or they will not allow you to do it. They do have the right to simply deny you if they don&#8217;t feel like it.</p>
<p>However, if you use the open <a href="http://www.theora.org/">Ogg Theora</a> format, you are free to simply upload the video to your website to start using it, the same as uploading an image. Ogg Theora is not covered by any patents and is royalty free.</p>
<p>I don&#8217;t understand why both YouTube and Vimeo are both going the non-free route. Is it simply because they have the money to pay MPEG LA? Whatever the case, endorsing H.264 encoded videos as the format for video on the web is an option for large companies with money to pay, but it&#8217;s completely the wrong choice for  blog writers and any small or medium sized organization.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markdeepwell.com/2010/01/the-cost-of-endorsing-h-264/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Wave Giveaway</title>
		<link>http://www.markdeepwell.com/2009/11/google-wave-giveaway/</link>
		<comments>http://www.markdeepwell.com/2009/11/google-wave-giveaway/#comments</comments>
		<pubDate>Thu, 26 Nov 2009 02:12:35 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.markdeepwell.com/?p=401</guid>
		<description><![CDATA[Does anybody want a google wave invite? Leave a comment and the first people to respond will get one.]]></description>
			<content:encoded><![CDATA[<p>Does anybody want a google wave invite? Leave a comment and the first people to respond will get one.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markdeepwell.com/2009/11/google-wave-giveaway/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Learning WebGL</title>
		<link>http://www.markdeepwell.com/2009/11/learning-webgl/</link>
		<comments>http://www.markdeepwell.com/2009/11/learning-webgl/#comments</comments>
		<pubDate>Sun, 15 Nov 2009 21:22:15 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[OpenGL ES]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://www.markdeepwell.com/?p=366</guid>
		<description><![CDATA[If you&#8217;re interested in programming graphics on the web I recommend subscribing to Planet WebGL; it has a lot of great tutorials and instructional material for learning how to program graphics in a web environment. WebGL is technically a JavaScript binding to OpenGL ES 2.0. If you already know OpenGL ES and JavaScript, you should [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re interested in programming graphics on the web I recommend subscribing to <a href="http://planet-webgl.org/">Planet WebGL</a>; it has a lot of great tutorials and instructional material for learning how to program graphics in a web environment.</p>
<p>WebGL is technically a JavaScript binding to OpenGL ES 2.0. If you already know OpenGL ES and JavaScript, you should be able to pick it up pretty quickly. If you know JavaScript but not OpenGL and are in a web development career, I encourage you to look into WebGL because it could be one key component of interactive web applications in the future.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markdeepwell.com/2009/11/learning-webgl/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WWW vs non-WWW Domain Names</title>
		<link>http://www.markdeepwell.com/2009/11/www-vs-non-www-domain-names/</link>
		<comments>http://www.markdeepwell.com/2009/11/www-vs-non-www-domain-names/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 02:41:24 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[domain name]]></category>
		<category><![CDATA[non-www]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://www.markdeepwell.com/?p=333</guid>
		<description><![CDATA[A fairly common website optimization that a lot of web 2.0 dot com companies are doing is to remove the leading www from the domain name. Removing the legacy www leaves you with a domain like http://delicious.com. Ok so delicious has a modern domain name but should you switch also? Reasons for non-WWW First, the [...]]]></description>
			<content:encoded><![CDATA[<p>A fairly common website optimization that a lot of web 2.0 dot com companies are doing is to remove the leading <strong>www</strong> from the domain name. Removing the legacy www leaves you with a domain like <a href="http://delicious.com/">http://delicious.com</a>. Ok so delicious has a <strong>modern </strong>domain name but should you switch also?</p>
<h3>Reasons for non-WWW</h3>
<p>First, the domain name is more concise, easier to remember and just looks better. One caveat:  you will need to setup a 301 redirect for requests with the three w&#8217;s to go to the non www version (see below).</p>
<p>Hold on, is it that simple?</p>
<p>No, it&#8217;s not, there are some disadvantages to having a domain name without a leading www.</p>
<p>Cookies are stored in a web browser at a set domain name. If you are not using the www, the cookie is saved to root: example.com. This can be quite a large disadvantage because the cookie is then passed along for every single request that browser makes for any subdomain on example.com. Even if you setup an alternate server just for serving images (images.example.com), your users browser will sent the cookie to that domain while fetching images. Sure its not a lot, but it does add up and  removes some flexibility from your setup.</p>
<p>Another area it impacts is a <a href="http://www.google.com/support/websearch/bin/answer.py?hl=en&amp;answer=136861">site specific search in google</a>. Doing a google search like the following:<strong> managing complexity site:markdeepwell.com</strong>, will not only search your main example.com website, but also all its sub-domains.</p>
<h3>Reasons for WWW</h3>
<p>Just about every person on the planet can recognize a domain name if it starts with www.something. Yes the www is redundant and not needed anymore, but it is a bit more user friendly.</p>
<p>If your site has multiple sub-domains, then I&#8217;d definitely recommend you go with a www domain to keep them all separate. Large websites benefit more from having the leading www; alternatively, if you have an extremely simple website like <a href="http://upcomingholiday.com/">upcomingholiday.com</a> it would do no harm to remove the www.</p>
<p>If you have a domain that&#8217;s been around for a few years it is possible to switch from one to the other, as long as you setup 301 redirects for SEO purposes, or else your rankings will plummet.</p>
<p>No matter what, make sure you have a 301 redirect setup so that users only see one version of your site instead of two. Be consistent by picking one and sticking with it.</p>
<p>Here are some common htaccess rules for redirecting requests to the proper domain name.</p>
<h4>Redirect www to non-www:</h4>
<pre>RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]</pre>
<h4>Redirect non-www to www:</h4>
<pre>RewriteCond %{HTTP_HOST} !^www\.
RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [R=301,L]</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.markdeepwell.com/2009/11/www-vs-non-www-domain-names/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WebGL Coming in Firefox 3.7</title>
		<link>http://www.markdeepwell.com/2009/09/webgl-coming-in-firefox-3-7/</link>
		<comments>http://www.markdeepwell.com/2009/09/webgl-coming-in-firefox-3-7/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 01:44:21 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[WebGL]]></category>
		<category><![CDATA[WebKit]]></category>

		<guid isPermaLink="false">http://www.markdeepwell.com/?p=263</guid>
		<description><![CDATA[Vladimir Vukićević, the pioneer of bringing the well known OpenGL standard to the web, has just blogged using Firefox to render Spore creatures. Check it out, it&#8217;s a pretty impressive demo of this upcoming web standard. Development on what would become WebGL started back in 2007 with Canvas 3D as an extension for Mozilla Firefox [...]]]></description>
			<content:encoded><![CDATA[<p>Vladimir Vukićević, the pioneer of bringing the well known OpenGL standard to the web, has just blogged using <a href="http://blog.vlad1.com/2009/09/21/webgl-samples/">Firefox to render Spore creatures</a>. Check it out, it&#8217;s  a pretty impressive demo of this upcoming web standard.</p>
<p>Development on what would become WebGL started back in <a href="http://blog.vlad1.com/2007/11/26/canvas-3d-gl-power-web-style/">2007 with Canvas 3D</a> as an extension for Mozilla Firefox 3.0. Since then it has grown from a single project to an open web standard through the <a href="http://www.khronos.org/news/press/releases/khronos-webgl-initiative-hardware-accelerated-3d-graphics-internet/">Khronos standards group</a>. The standard is currently under development with a target release date of <a href="http://www.khronos.org/news/press/releases/khronos-webgl-initiative-hardware-accelerated-3d-graphics-internet/">first half 2010</a>.</p>
<p>Firefox isn&#8217;t the only web browser to be experimenting with WebGL, Google and Opera have also pledged to support this standard. The WebKit source code has  recently picked up <a href="http://blog.wolfire.com/2009/09/preview-of-webkits-webgl-canvas3d/">preliminary support</a>.</p>
<p>The web has mostly stayed 2D, but with the advent of <a href="http://www.markdeepwell.com/2009/07/accelerated-css-transforms/">CSS Transforms</a> and WebGL, the browser is moving into new territory. The web is evolving into the most important platform of the future.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markdeepwell.com/2009/09/webgl-coming-in-firefox-3-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Browser Notifications with Yip</title>
		<link>http://www.markdeepwell.com/2009/08/browser-notifications-with-yip/</link>
		<comments>http://www.markdeepwell.com/2009/08/browser-notifications-with-yip/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 02:51:35 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Firefox Extension]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[notifications]]></category>

		<guid isPermaLink="false">http://www.markdeepwell.com/?p=119</guid>
		<description><![CDATA[Add support for operating system notifications to your web application through a simple JavaScript API using Yip.]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-121" title="Yip Icon" src="http://www.markdeepwell.com/wp-content/uploads/2009/08/yip-icon.jpg" alt="Yip Icon" width="197" height="205" /></p>
<p>Ever wanted your web application to be able to show notifications even if the user may be in another browser tab or application? Now you can!</p>
<p>The relatively new <a href="http://abcdefu.wordpress.com/2009/06/09/introducing-yip-an-unified-notification-system-for-the-web/">Yip  extension</a> for Firefox adds notification functionality. This is not a small JavaScript notification that pops up in the browser tab, but one that integrates directly with the users Operating System.</p>
<p>Yip uses <a href="http://www.markshuttleworth.com/archives/265">libnotify/notify-osd</a> on Ubuntu Linux, <a href="http://growl.info/">Growl</a> on Mac, and <a href="http://www.fullphat.net/">Snarl</a> or <a href="http://growlforwindows.com/gfw/">Growl for Windows</a> on Windows. If none of these notification applications are installed, it will use Firefox's simple and not as pretty  notification system. Ubuntu Linux users have notify-osd installed by default,  Growl is popular with Mac users, yet Windows users probably don't have  Snarl or Growler for Windows installed.</p>
<p>When building with notifications remember that they are meant to enhance the user experience, not require it.</p>
<p>The Yip extension supports both the Fluid and Prism APIs, but recommends Fluid because of support for an onclick callback function.</p>
<p>The API is simple and straight to the point:</p>
<div class="igBar"><span id="ljavascript-1"><a href="#" onclick="javascript:showPlainTxt('javascript-1'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">JAVASCRIPT:</span>
<div id="javascript-1">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">window.<span style="color: #006600;">fluid</span>.<span style="color: #006600;">showGrowlNotification</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; title: <span style="color: #3366CC;">"your notification title"</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; description: <span style="color: #3366CC;">"some description"</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; onclick: optionalCallbackFunction,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; icon: <span style="color: #3366CC;">"URL to an icon"</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Since Yip may not be installed on the users computer, just wrap it with a check for fluid. A complete example looks like this:</p>
<div class="igBar"><span id="ljavascript-2"><a href="#" onclick="javascript:showPlainTxt('javascript-2'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">JAVASCRIPT:</span>
<div id="javascript-2">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000066; font-weight: bold;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #000066; font-weight: bold;">typeof</span><span style="color: #66cc66;">&#40;</span>fluid<span style="color: #66cc66;">&#41;</span> !== <span style="color: #3366CC;">'undefined'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; window.<span style="color: #006600;">fluid</span>.<span style="color: #006600;">showGrowlNotification</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; title: <span style="color: #3366CC;">"Hello World"</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; description: <span style="color: #3366CC;">"The Google icon says Hi"</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; icon: <span style="color: #3366CC;">"http://www.google.com/favicon.ico"</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<h3>Related Projects</h3>
<ul>
<li><a href="http://digitarald.de/project/roar/">Roar</a>: Embed notifications into a web page (powered by MooTools).</li>
<li><a href="http://ajaxian.com/archives/growls-for-windows-and-a-web-notification-api">growl.js</a>: Windows only notifications using Growl for Windows.</li>
<li><a href="http://code.google.com/p/gears/wiki/NotificationAPI">NotificationAPI</a>: Notifications in Google Gears</li>
</ul>
<p>Of all these options, Yip is the best solution by far; its fully cross platform, has a simple to use API, and is ready to use. <a href="http://blog.abi.sh/yip-latest.xpi">Install Yip now</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markdeepwell.com/2009/08/browser-notifications-with-yip/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>An Alternative to symfony&#8217;s schema.yml</title>
		<link>http://www.markdeepwell.com/2009/08/an-alternative-to-symfonys-schema-yml/</link>
		<comments>http://www.markdeepwell.com/2009/08/an-alternative-to-symfonys-schema-yml/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 04:13:07 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[database schema]]></category>
		<category><![CDATA[Propel]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://www.markdeepwell.com/?p=96</guid>
		<description><![CDATA[The symfony web framework provides two methods for building the database model files when using the Propel Object-relational mapping (ORM) toolkit. The recommended method by the symfony team is to use the schema.yml file, where you explicitly explain your table structure. The second method is to generate a schema.xml file directly from the database. schema.yml: [...]]]></description>
			<content:encoded><![CDATA[<p>The symfony web framework provides two methods for building the database model files when using the <a href="http://propel.phpdb.org/">Propel Object-relational mapping</a> (ORM) toolkit. The  recommended method by the symfony team is to use the  <a href="http://www.symfony-project.org/book/1_2/08-Inside-the-Model-Layer#chapter_08_symfony_s_database_schema">schema.yml</a> file, where you explicitly explain your table structure. The second method is to generate a <a href="http://www.symfony-project.org/book/1_2/08-Inside-the-Model-Layer#chapter_08_sub_beyond_the_schema_yml_the_schema_xml">schema.xml</a> file directly from the database.</p>
<h3>schema.yml:<img class="alignright size-full wp-image-97" title="symfony schema yml" src="http://www.markdeepwell.com/wp-content/uploads/2009/08/symfony-schema-yml.png" alt="symfony schema yml" width="209" height="102" /></h3>
<p>Just edit config/schema.yml and list your tables, columns, column types, and foreign keys in YAML form. Build the model files by running:</p>
<pre>./symfony propel-build-model</pre>
<p>Pros:</p>
<ul>
<li> Interfaces better with  plugins because most, if not all, plugins use the schema.yml method</li>
<li>Can be used to create the database tables</li>
<li>Overall easier to use because it is the most common method</li>
</ul>
<p>Cons:</p>
<ul>
<li> Requires duplicate data by having the database structure in a text file, which can be outdated when the database is updated directly</li>
</ul>
<h3>schema.xml:</h3>
<p>To create the model files simply run:</p>
<pre>./symfony propel-build-schema xml
./symfony propel-build-model</pre>
<p>Pros:</p>
<ul>
<li>Supports ALL  database features</li>
<li>Supports the most complex schemas</li>
</ul>
<p>Cons:</p>
<ul>
<li>Errors while building the XML file are cryptic and time consuming to track down (eg: om-template)</li>
</ul>
<h3>Comparison</h3>
<p>The schema.yml method supports most projects with relative ease, but is limiting if you need to use more advanced database features that are not supported (propel only supports limited <a href="http://propel.phpdb.org/trac/wiki/Users/Documentation/1.3/ColumnTypes">column types</a>). Although, there are tricks to get around these limitations. For example, if you need to use column types that aren't supported, like ENUM, you can simply declare the column as a varchar and Propel won't know any better. This works fine for ENUM because it's simply a text field, but may work for other column types too.</p>
<p>I recommend the schema.xml file for projects that have a very complex schema that cannot be represented in the yml file, or for projects already using XML files to define the database scheme.</p>
<p>I have used both methods on different large projects and have found the schema.yml method to provide faster  application development, have more  developer support, and easier to work with. I full recommend use of the schema.yml method in all but the most exceptional projects.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markdeepwell.com/2009/08/an-alternative-to-symfonys-schema-yml/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Accelerated CSS Transforms</title>
		<link>http://www.markdeepwell.com/2009/07/accelerated-css-transforms/</link>
		<comments>http://www.markdeepwell.com/2009/07/accelerated-css-transforms/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 21:11:26 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Chrome OS]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS Transform]]></category>
		<category><![CDATA[Safari]]></category>
		<category><![CDATA[WebKit]]></category>

		<guid isPermaLink="false">http://www.markdeepwell.com/?p=49</guid>
		<description><![CDATA[Recently the WebKit team added support for CSS transformations with 3D GPU acceleration. This means that soon we can built web applications that mimic desktop applications in graphical responsiveness. Charles Ying wrote a simple image gallery application that demos this new functionality. This is definitely not yet ready for end users but it demonstrates the [...]]]></description>
			<content:encoded><![CDATA[<p>Recently the WebKit team added support for CSS transformations with 3D GPU acceleration. This means that soon we can built web applications that mimic desktop applications in graphical responsiveness. Charles Ying wrote a simple <a href="http://www.satine.org/archives/2009/07/11/snow-stack-is-here/">image gallery application</a> that demos this new functionality.</p>
<p>This is definitely not yet ready for end users but it demonstrates the power of the web platform and where it is heading. With the <a href="http://www.markdeepwell.com/2009/07/importance-of-the-html-video-tag/">native video tag</a>, <a href="http://www.techcrunch.com/2008/05/29/the-next-gen-web-browser-storage-support/">local and session storage</a>, plus much <a href="http://ejohn.org/blog/javascript-performance-rundown/">faster JavaScript engines</a>, browsers are changing from simply presenting information  to being a fully interactive platform. It's no surprise that Google is developing a web-browser operating system, called Chrome OS.</p>
<p>It is also quite encouraging to see the <a href="http://en.wikipedia.org/wiki/Browser_Wars#The_second_browser_war">second browser war</a> bring fresh ideas and increase the possibilities to the browser. Competition is great.</p>
<div id="attachment_50" class="wp-caption alignnone" style="width: 475px"><img class="size-medium wp-image-50" title="Snow Stack" src="http://www.markdeepwell.com/wp-content/uploads/2009/07/Snow-Stack-300x193.jpg" alt="Demo of CSS Transforms" width="465" height="298" /><p class="wp-caption-text">Snow Stack in WebKit Nightly r46091</p></div>
<p>The CSS Transforms were originally created at Apple by Dean Jackson, David Hyatt and Chris Marrin for the iPhone. Apple then improved the spec and submitted it to <a href="http://www.w3.org/TR/css3-3d-transforms/">standardization at the W3C</a>. Firefox 3.5 supports 2D <a href="https://developer.mozilla.org/web-tech/2008/09/12/css-transforms/">css transforms</a> but does not yet support the newer accelerated 3D animations.</p>
<p>So how does it work?</p>
<p>The images are put on the page using standard CSS and HTML, and they are then animated by JavaScript using these CSS properties:</p>
<div class="igBar"><span id="lcss-4"><a href="#" onclick="javascript:showPlainTxt('css-4'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CSS:</span>
<div id="css-4">
<div class="css">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">-webkit-transition-property: -webkit-transform;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">-webkit-transform: rotateY<span style="color: #66cc66;">&#40;</span>45deg<span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">-webkit-transition-duration: 2s; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>The transition property is set to transform, the transform is set to rotate the image in Y-space by 45 degrees, and the duration is set to 2s. With that, the web browser will take the current position of the image and rotate it by 45 degrees in 2 seconds, which produces an animation effect. How beautifully  simple it is!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markdeepwell.com/2009/07/accelerated-css-transforms/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Importance of the HTML Video Tag</title>
		<link>http://www.markdeepwell.com/2009/07/importance-of-the-html-video-tag/</link>
		<comments>http://www.markdeepwell.com/2009/07/importance-of-the-html-video-tag/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 05:34:22 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Open Web]]></category>
		<category><![CDATA[Safari]]></category>

		<guid isPermaLink="false">http://www.markdeepwell.com/?p=26</guid>
		<description><![CDATA[Since Firefox, Safari, and recently Chrome hit the browser scene, the web has been growing and improving at a much faster pace. The next evolution of the web comes in the form of HTML 5, the latest HTML standard that brings native video playback, offline storage, 2D drawing via the canvas tag among others features. [...]]]></description>
			<content:encoded><![CDATA[<p>Since Firefox, Safari, and recently Chrome hit the browser scene, the web has been  growing and improving at a much faster pace. The next evolution of the web comes in the form of HTML 5, the latest HTML standard that brings native video playback, offline storage, 2D drawing via the canvas tag among others features. Of those, the  video tag is the most important and critical to the continued success of the open web.</p>
<p><a href="https://developer.mozilla.org/en/Using_audio_and_video_in_Firefox">Native video playback</a> inside a web browser will now be as simple as embedding an image into a page:</p>
<pre>&lt;video src="http://example.com/yourvideo.ogg" controls&gt;&lt;/video&gt;</pre>
<p>The benefits of this are immediately obvious to any software developer. It's a native tag so it fits in much better to the web platform, it can be controlled through JavaScript, and no more messing around with a black-box flash embed. Side benefits of this are bringing video to all users, not just the platforms that Flash supports (stable 64 bit version + iPhone version).</p>
<p>So far only Firefox 3.5 and Safari 4 have built in support for the video tag; Opera and Chrome support is in the works.</p>
<p>The web has flourished and grown to where it is today because it is based on open standards and because it is not controlled by any one company or organization. Lets continue to keep the web open and successful by using the new video tag.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markdeepwell.com/2009/07/importance-of-the-html-video-tag/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
