<?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/"
	xmlns:series="http://unfoldingneurons.com/"
	>

<channel>
	<title>MisfitGeek  (Joe Stagner)</title>
	<atom:link href="http://www.misfitgeek.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.misfitgeek.com</link>
	<description>The Original Opinionated Misfit Geek !</description>
	<lastBuildDate>Fri, 27 Apr 2012 20:15:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Add HTML5 Audio to your App</title>
		<link>http://www.misfitgeek.com/2012/04/add-html5-audio-to-your-app/</link>
		<comments>http://www.misfitgeek.com/2012/04/add-html5-audio-to-your-app/#comments</comments>
		<pubDate>Mon, 09 Apr 2012 20:20:17 +0000</pubDate>
		<dc:creator>JoeStagner</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.misfitgeek.com/?p=4826</guid>
		<description><![CDATA[When we think of sound in an HTML application we might think of two things: We remember all those sites that started playing loud obnoxious background music when the page loads and then we think about music playing apps. Sound can however be much more: when building immersive app experiences it can be a crucial [...]]]></description>
			<content:encoded><![CDATA[<p>When we think of sound in an HTML application we might think of two things: We remember all those sites that started playing loud obnoxious background music when the page loads and then we think about music playing apps.</p>
<p>Sound can however be much more: when building immersive app experiences it can be a crucial attribute. It can enhance tactile feedback or communicate activity or changes in state to the user. A ping sound when a new email arrives or a dismissive sound when there was an error can make things much more obvious for the end user.</p>
<p>Prior to HTML5 most developers had to resort to plug-in technologies like Flash, Quicktime, Real player or Windows Media Player to play audio. These, of course, required that these technologies were installed on the users&#8217; machines and the plugins being active.</p>
<p>With HTML5, we have an <a title="HTML5 Audio Element" href="https://developer.mozilla.org/en/HTML/Element/audio">audio element</a> that natively supports sound playback. As with any HTML element, you can even play nice with older technologies by providing fallback content. For example by simply linking to the audio file:</p>
<hr />
<pre class="brush: jscript; html-script: true; title: ; notranslate">
&lt;/pre&gt;
&lt;audio width=&quot;300&quot; height=&quot;32&quot; controls=&quot;controls&quot; src=&quot;intro.mp3&quot;&gt;
 &lt;a href=&quot;intro.mp3&quot;&gt;Introduction to HTML5 (10:12) - MP3 - 3.2MB&lt;/a&gt;
 &lt;/audio&gt;
&lt;pre&gt;
</pre>
<hr />
<p>As not all browsers support the same audio formats (MP3 not being a free format makes it impossible to decode it in an open source browser) you can provide the same audio in different formats:</p>
<p>Example:</p>
<hr />
<pre class="brush: jscript; html-script: true; title: ; notranslate">
  &lt;audio width=&quot;300&quot; height=&quot;32&quot; controls=&quot;controls&quot;&gt;
     &lt;source src=&quot;MySound.ogg&quot; type=&quot;audio/ogg&quot; /&gt;
     &lt;source src=&quot;MySound.mp3&quot; type=&quot;audio/mp3&quot; /&gt;
     &lt;a href=&quot;MySound.mp3&quot;&gt;The recording - MP3 - 2.3MB&lt;/a&gt;
   &lt;/audio&gt;
</pre>
<hr />
<p>If you really need to provide a player for all browsers &#8211; including the ones that don&#8217;t understand HTML5 &#8211; <a title=" Play Sound in HTML5 and cross browser support with backward compatability." href="http://www.misfitgeek.com/2011/08/play-sound-in-html5-and-cross-browser-support-with-backward-compatability/">I collected some information in this blog post</a>.</p>
<p>When your application checked that HTML5, Canvas and all the other things needed for your functionality is supported then backward compatibility is less of a concern, however you may still have cross-browser compatibility concerns since browser vendors are not fully converged on common feature implementation. That said, <a title="Can I use audio table" href="http://caniuse.com/#feat=audio" target="_blank">basic support for audio is available across all major browsers</a>.</p>
<p>You don&#8217;t need to have an audio element in your HTML, you can also create them on the fly in your JavaScript:</p>
<hr />
<pre class="brush: jscript; html-script: true; title: ; notranslate">
   var aSound = document.createElement('audio');
   aSound.setAttribute('src', 'PlayMe.ogg');
   aSound.load()
</pre>
<hr />
<p>However, there may be advantages to using the <code></code> tag in your HTML.</p>
<ul>
<li>Using the tag adds to the semantic integrity of your markup.</li>
<li>It makes your code easier to read and understand.</li>
<li><a title="Audio Tag Controls Spec" href="http://www.w3schools.com/html5/att_audio_controls.asp" target="_blank"> The <code></code> tag can display controls</a> so the user can play the audio and seek in it with native controls that are also keyboard accessible</li>
<li>The <code></code> tag has an optional <code>preload</code> attribute that tells to the browser to load the audio before users start playing it.</li>
<li>Browsers have a distinct loading sequence of referenced assets. By leveraging that sequence, it iss possible for you to help improve the performance of your app.</li>
</ul>
<p>Here are some examples for using the <code></code> tag in HTML5.</p>
<hr />
<pre class="brush: jscript; html-script: true; title: ; notranslate">
&lt;/pre&gt;
&lt;audio id=&quot;MySound&quot; width=&quot;300&quot; height=&quot;32&quot; src=&quot;MySound.ogg&quot; preload=&quot;auto&quot;&gt;
 &lt;/audio&gt;
&lt;pre&gt;
</pre>
<hr />
<p>In this instance the audio element is not visible and MySound.ogg will only be played by calling the play method on the element instance.</p>
<pre lang="javascript">document.getElementById('MySound').play();</pre>
<p>By adding a <code>controls</code> attribute you can display the player controls so that the user can play the audio file by interacting with them.</p>
<hr />
<pre class="brush: jscript; html-script: true; title: ; notranslate">
   &lt;audio id=&quot;MySound&quot; width=&quot;300&quot; height=&quot;32&quot; src=&quot;MySound.ogg&quot;
          preload=&quot;auto&quot; controls=&quot;controls&quot;&gt;
 &lt;/audio&gt;
</pre>
<hr />
<p>These controls differ from browser to browser and operating system to operating system, but all have the same features as shown in the following image:</p>
<p><img class="alignnone size-medium wp-image-12337" src="http://hacks.mozilla.org/wp-content/uploads/2012/04/audiotagplayercontrols-250x45.png" alt="audio player with controls" width="250" height="45" /></p>
<p>You can easily hide or display the audio element’s controls whenever appropriate (like when the UI state changes) with a simple bit of JavaScript:</p>
<hr />
<pre class="brush: jscript; html-script: true; title: ; notranslate">
var myAudio = document.getElementById( &quot;TimerBellSound&quot; );
if ( myAudio.hasAttribute(&quot;controls&quot;) ) {
  myAudio.removeAttribute(&quot;controls&quot;) ;
}
else {
  myAudio.setAttribute(&quot;controls&quot;, &quot;controls&quot;)
}
</pre>
<hr />
<p><a href="http://terrillthompson.com/blog/32" target="_blank">As Terrill Thompson explains in his blog post HERE</a>, we can easily create a custom player as well. Not only does this provide us with the flexibility of defining our own user interface but it lets us address accessibility concerns as well. His player looks like this and has a consistent look and feel across browsers and operating systems:</p>
<p><img class="alignnone size-medium wp-image-12338" src="http://hacks.mozilla.org/wp-content/uploads/2012/04/customhtml5audiocontrol-250x28.png" alt="" width="250" height="28" /></p>
<p>So what could sound do in your app? As an example, consider the follow application prototype:</p>
<p><img class="alignnone size-large wp-image-12339" src="http://hacks.mozilla.org/wp-content/uploads/2012/04/TimerPreview-500x296.png" alt="" width="500" height="296" /></p>
<p>This application will be a timer for athletes. When in use, the athletes won’t be sitting in front of the device that is running the app. It will be running on their computer, tablet or phone and, while they may glance at it to check the time, for the most part they will rely on audible feedback for when to start working out, when to rest, and when to increase or decrease the intensity of their workout.</p>
<p>The audio element in HTML5 makes adding sound to your app both easy and straight forward.</p>
<hr />
]]></content:encoded>
			<wfw:commentRss>http://www.misfitgeek.com/2012/04/add-html5-audio-to-your-app/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Run Firefox Daily and make the web better! &#8211; Ubuntu Install Steps.</title>
		<link>http://www.misfitgeek.com/2012/04/how-to-install-firefox-daily-on-ubuntu/</link>
		<comments>http://www.misfitgeek.com/2012/04/how-to-install-firefox-daily-on-ubuntu/#comments</comments>
		<pubDate>Mon, 02 Apr 2012 19:42:35 +0000</pubDate>
		<dc:creator>JoeStagner</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[FireFox]]></category>

		<guid isPermaLink="false">http://www.misfitgeek.com/?p=4798</guid>
		<description><![CDATA[If you are any kind of a techie you run some pre-release software. Since joining Mozilla I&#8217;ve been amazed at how much work gets done by such a small group of people. One of the ways this happens is that the Open Source community helps and not just by writing code. Testing new features and [...]]]></description>
			<content:encoded><![CDATA[<p>If you are any kind of a techie you run some pre-release software.</p>
<p>Since joining Mozilla I&#8217;ve been amazed at how much work gets done by such a small group of people.</p>
<p>One of the ways this happens is that the Open Source community helps and not just by writing code. Testing new features and filing bugs is vastly important too.</p>
<p>Plus, you get to use the latest and greatest features.</p>
<p>As a truely Open Source project, the daily build (actually the NIGHTLY builds) of Firefox are available each day.</p>
<p><a title="Download Firefox Nightly Builds." href="http://nightly.mozilla.org/" target="_blank">You can download the Nightly Firefox Builds HERE </a></p>
<p><a href="http://nightly.mozilla.org/"><img class="alignnone" title="Downloading the Firefox Nightly Builds" src="http://misfitgeek.com/postimages/DLFFNightly.png" alt="Downloading the Firefox Nightly Builds" width="580" height="383" /></a></p>
<p>The Mac and Windows builds give you installers but, as Linux wizzards know, Linux works a bit differently. </p>
<p>The easier way to do it is to open a Terminal window and use the following three separate commands.</p>
<hr />
<pre class="brush: jscript; html-script: true; title: ; notranslate">
sudo add-apt-repository ppa:ubuntu-mozilla-daily/ppa
sudo apt-get update
sudo apt-get install firefox-trunk
</pre>
<hr />
<p>Then you can use the automatically installed launcher to run Firefox Nightly.</p>
<p><img class="alignnone" title="Launch Firefox Nightly Build" src="http://misfitgeek.com/postimages/NightlyLauncher.png" alt="Launch Firefox Nightly Build" /></p>
<p>Tada !</p>
<hr />
]]></content:encoded>
			<wfw:commentRss>http://www.misfitgeek.com/2012/04/how-to-install-firefox-daily-on-ubuntu/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>How to set up Ubuntu Linux for Android Development</title>
		<link>http://www.misfitgeek.com/2012/03/how-to-set-up-ubuntu-linux-for-android-development/</link>
		<comments>http://www.misfitgeek.com/2012/03/how-to-set-up-ubuntu-linux-for-android-development/#comments</comments>
		<pubDate>Thu, 29 Mar 2012 09:46:21 +0000</pubDate>
		<dc:creator>JoeStagner</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://www.misfitgeek.com/?p=4718</guid>
		<description><![CDATA[I&#8217;ve been developing cross platform apps using HTML5 for deployment across Desktops, Tablets, and Phones. Lots of interesting apps can be built without talking to the hardware but sooner or later, we always want to go deeper. Mozilla is working Won an exciting &#8220;Web Runtime&#8221; ( read more here ) and there is a version [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" title="Adroinf Development on Ubuntu" src="http://misfitgeek.com/postimages/androbuntu.png" alt="" width="400" height="200" /></p>
<p>I&#8217;ve been developing cross platform apps using HTML5 for deployment across Desktops, Tablets, and Phones. Lots of interesting apps can be built without talking to the hardware but sooner or later, we always want to go deeper. Mozilla is working Won an exciting &#8220;Web Runtime&#8221; ( <a title="Raed about building Open Web Apps" href="https://developer.mozilla.org/en/Apps" target="_blank">read more here</a> ) and there is a version of Firefox for Android.</p>
<p>Though I don&#8217;t want to build native Android Apps, I do want to get under the covers and experiment with building the Open Web Apps runtime components (it&#8217;s so cool working for an organization where EVERYTHING we build is open source and available for download WHILE it&#8217;s being developed.)</p>
<p>Since I hit a couple of snags getting things set up I though I&#8217;d share the steps that I used in the hopes that it would help someone else who is just getting started.</p>
<p>Though there are good commercial Java / Android Development tools available, the standard is to use Eclipse and the ADT, so that&#8217;s what I&#8217;ll be setting up in the steps below.</p>
<p>Eclipse is itself a Java App. On my Ubuntu machine the default Java Runtime was OpenJDK which is not recommended for running Eclipse.</p>
<p>So the first thing that we want to do is make sure that we have our Ubuntu system up to date, the latest version of the Java run-time and JDK installed and our Ubuntu box configured to use the Sun versions by default.</p>
<p>Start by opening up a terminal window.</p>
<p>If you are brand new to Ubuntu you can find any application (including apps you haven&#8217;t yet installed) by using the Unity Launcher Bar</p>
<p><img class="alignnone" title="The Ubuntu Unity Task Launcher" src="http://misfitgeek.com/postimages/UbuntuAppFind.png" alt="The Ubuntu Unity Task Launcher" width="580" height="377" /></p>
<ol>
<li>Click on the Ubuntu App Button on the top.</li>
<li>Start typing the name of the application you are looking for.</li>
<li>If it appears in Installed Apps &#8211; click to run it. If it appears in available apps, install it.</li>
</ol>
<p>Terminal will be installed. Click on it to run.</p>
<hr />
<pre class="brush: jscript; html-script: true; title: ; notranslate">

sudo apt-get update
</pre>
<hr />
<p>Enter your password when the sudo command in the terminal prompts you for it.</p>
<p>Leave the terminal window open when the command completes.</p>
<p>Next run upgrade.</p>
<hr />
<pre class="brush: jscript; html-script: true; title: ; notranslate">

sudo apt-get upgrade
</pre>
<hr />
<p>Now we need to get the Java JDK</p>
<p>You can install it from your open terminal:</p>
<hr />
<pre class="brush: jscript; html-script: true; title: ; notranslate">

sudo apt-get install sun-java6-jdk
</pre>
<hr />
<p>The command above installs only the JDK. I wanted to make user everything Java was installed on my machine and up to date to avoid problems with unresolved dependencies later on so I ran this command:</p>
<hr />
<pre class="brush: jscript; html-script: true; title: ; notranslate">

sudo apt-get install sun-java6-bin sun-java6-jre

sudo sun-java6-jdk sun-java6-plugin sun-java6-source
</pre>
<hr />
<p>You can run them all at once but I broke them up for formatting here on my blog.</p>
<hr />
<p>Now we want to check and confirm that Java and the JDK / Java Compiler installed and being used are the latest. This is necessary because you can have as many different versions installed on your machine but only one will be the default.</p>
<hr />
<pre class="brush: jscript; html-script: true; title: ; notranslate">

java -version

javac -version
</pre>
<hr />
<p>And you should see something like this.</p>
<div class="wp-caption alignnone" style="width: 581px"><img title="Check Java Versions on Ubuntu" src="http://misfitgeek.com/postimages/Ubuntu-Java-Cur-Versions.png" alt="Check Java Versions on Ubuntu" width="571" height="212" /><p class="wp-caption-text">Check Java Versions on Ubuntu</p></div>
<hr />
<p>If some other version appears (like the Open JDK) then you can change the default by running this command and choosing the version that you just installed.</p>
<hr />
<pre class="brush: jscript; html-script: true; title: ; notranslate">

sudo update-alternatives --config java
</pre>
<hr />
<p>Once done, we need to instal lthe Adroid SDK.</p>
<p>Get it here : <a title="Android Developer SDK" href="http://developer.android.com/sdk/" target="_blank">http://developer.android.com/sdk/ </a></p>
<p><a href="Downloading the Android SDK"><img class="alignnone" title="Downloading the Android SDK" src="http://misfitgeek.com/postimages/DLAndroidSDK.png" alt="Downloading the Android SDK" width="580" height="525" /></a>Downloading the Android SDK</p>
<p>You can decompress the files and place them in a location that makes sense for your Linux usage.</p>
<p>I put mine in <strong>/usr/apps/android-sdk</strong></p>
<p>We also want to add the Android SDK to our shell path.</p>
<p>To do this, open a Nautilus instance (File Explorer) and navigae to your Home directory.</p>
<p>&#8220;<strong>/home/joesstagner</strong>&#8221; in my case.</p>
<p>Then use the menu to select View-&gt;Show Hidden Files</p>
<div class="wp-caption alignnone" style="width: 590px"><img title="Ubuntu Show Hiden FIles" src="http://misfitgeek.com/postimages/ShowAllFIles-Ubuntu.png" alt="Ubuntu Show Hiden FIles" width="580" height="460" /><p class="wp-caption-text">Ubuntu Show Hiden FIles</p></div>
<p>Find the <strong>.bashrc</strong> file and open it with the text editor of your choice.</p>
<p>Append the following line, changing the entry to reflect the location that you chose for the Android SDK</p>
<hr />
<pre class="brush: jscript; html-script: true; title: ; notranslate">
export PATH=${PATH}:/home/apps/android-sdk/tools
</pre>
<hr />
<p>Save and close the file.</p>
<p>Now we can install Eclipse.</p>
<p>There are two ways that you can do this &#8211; but the important part is that you install &#8220;<strong>Eclipse for Java Developers</strong>&#8220;.</p>
<p>If you install the bare bones version of Eclipse you may find yourself in dependency hell when you try to set Eclipse up for Android.</p>
<p>You can download Eclipse for Java from <a title="Download Eclipse" href="http://www.eclipse.org" target="_blank">www.eclipse.org </a></p>
<div class="wp-caption alignnone" style="width: 590px"><img title="Download Eclipse for Java" src="http://misfitgeek.com/postimages/DLEclipseforJava.png" alt="Download Eclipse for Java" width="580" height="735" /><p class="wp-caption-text">Download Eclipse for Java</p></div>
<p>In my case I will use Ubuntu&#8217;s synaptic package manager to install Eclipse.</p>
<p>You can find and run the Synaptic Package Manager using the technique referenced above.</p>
<div class="wp-caption alignnone" style="width: 590px"><img title="Install Eclipse with the Synaptic Package Manager on Ubuntu" src="http://misfitgeek.com/postimages/SynapticForEclipse.png" alt="Install Eclipse with the Synaptic Package Manager on Ubuntu" width="580" height="335" /><p class="wp-caption-text">Install Eclipse with the Synaptic Package Manager on Ubuntu</p></div>
<p>Note that I installed both Eclipse and Java development components.</p>
<p>Now we are ready to download and install the Eclipse plugin for Android Development.</p>
<p>1. Start Eclipse, then select Help -&gt; Software Updates….<br />
2. In the dialog that appears, select the Available Software tab.<br />
3. Click Add Site…<br />
4. Enter the Location: http://dl-ssl.google.com/android/eclipse/</p>
<p>Note: It&#8217;s probably better to use https for the download but I had problems in doing so.</p>
<div class="wp-caption alignnone" style="width: 590px"><img title="Add the Android Developer Tools to Eclipse" src="http://misfitgeek.com/postimages/EclipseAddADT.png" alt="Add the Android Developer Tools to Eclipse" width="580" height="441" /><p class="wp-caption-text">Add the Android Developer Tools to Eclipse</p></div>
<p>Then select the tools :</p>
<div class="wp-caption alignnone" style="width: 590px"><img title="Add ADT - Select Tools" src="http://misfitgeek.com/postimages/EclipseAddAdt-2.png" alt="Add ADT - Select Tools" width="580" height="593" /><p class="wp-caption-text">Add ADT - Select Tools</p></div>
<p>Click next until you get to the EULA and agree to it (click yes)</p>
<p>Eclipse will download and install the ADT.</p>
<div class="wp-caption alignnone" style="width: 590px"><img title="Installing the Android Developers Kit - ADT" src="http://misfitgeek.com/postimages/InstallingEclipseADT.png" alt="Installing the Android Developers Kit - ADT" width="580" height="255" /><p class="wp-caption-text">Installing the Android Developers Kit - ADT</p></div>
<p>You may see a warning that the code to be downloaded is unsigned.</p>
<div class="wp-caption alignnone" style="width: 590px"><img title="ADT Unsigned Security Warning" src="http://misfitgeek.com/postimages/ADTSecurityWarning .png" alt="ADT Unsigned Security Warning" width="580" height="165" /><p class="wp-caption-text">ADT Unsigned Security Warning</p></div>
<p>I chose to install anyway.</p>
<p>When everything is installed, Eclipse will prompt you to re-start Eclipse.</p>
<div class="wp-caption alignnone" style="width: 590px"><img title="Restart Eclipse" src="http://misfitgeek.com/postimages/EclipseUpdatesRestartNow.png" alt="Restart Eclipse" width="580" height="166" /><p class="wp-caption-text">Restart Eclipse</p></div>
<p>When you restart, Eclipse may ask you about updating the Android SDK</p>
<div class="wp-caption alignnone" style="width: 590px"><img title="Eclipse Add Reference to Android SDK" src="http://misfitgeek.com/postimages/ReferenceTheAndroidSDK.png" alt="Eclipse Add Reference to Android SDK" width="580" height="503" /><p class="wp-caption-text">Eclipse Add Reference to Android SDK</p></div>
<p>Eclipse will ask you a couple of permission questions &#8211; say yes.</p>
<p>When it&#8217;s all done we can select New -&gt; Project</p>
<div class="wp-caption alignnone" style="width: 590px"><img title="New Android Project in Eclipse" src="http://misfitgeek.com/postimages/NewAndroidProject.png" alt="New Android Project in Eclipse" width="580" height="500" /><p class="wp-caption-text">New Android Project in Eclipse</p></div>
<p>Now we&#8217;re ready to start building an Android App !</p>
<hr />
]]></content:encoded>
			<wfw:commentRss>http://www.misfitgeek.com/2012/03/how-to-set-up-ubuntu-linux-for-android-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML5: The difference between an App and a Page.</title>
		<link>http://www.misfitgeek.com/2012/03/html5-the-difference-between-an-app-and-a-page/</link>
		<comments>http://www.misfitgeek.com/2012/03/html5-the-difference-between-an-app-and-a-page/#comments</comments>
		<pubDate>Wed, 28 Mar 2012 17:26:43 +0000</pubDate>
		<dc:creator>JoeStagner</dc:creator>
				<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://www.misfitgeek.com/?p=4756</guid>
		<description><![CDATA[Cross-posted from my entry to the Mozilla Developer Network &#8211; HTML5: The difference between an App and a Page. HTML5 is only one part of the&#8221;Stack&#8221; HTML5 is really more than one thing. In the strictest sense, HTML5 is fifth major revision of the W3C specification of the markup language that is used to create [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Cross-posted from my entry to the Mozilla Developer Network &#8211; <a title="On Mozilla Hacks" href="https://hacks.mozilla.org/2012/03/html5-the-difference-between-an-app-and-a-page/" target="_blank">HTML5: The difference between an App and a Page.</a></p></blockquote>
<p><strong>HTML5 is only one part of the&#8221;Stack&#8221;</strong></p>
<p>HTML5 is really more than one thing. In the strictest sense, HTML5 is fifth major revision of the W3C specification of the markup language that is used to create web pages.</p>
<p>But in a practical sense, HTML5 is far more than that. For developers, HTML is a wave of technologies that are evolving and gaining browser implementations along roughly the same time-line as the markup language itself. Many of the related technologies are being spearheaded by the Web Hypertext Application Technology Working Group (whatwg.org), but still other technologies in this genre are driven from elsewhere. For example WebGL, the 3D rendering en/Apps/Getting_Started)engine for Web Apps, is driven at Khronos (<a href="http://www.khronos.org/)">http://www.khronos.org/)</a>, and Mozilla&#8217;s WebAPI team (<a href="https://wiki.mozilla.org/WebAPI)">https://wiki.mozilla.org/WebAPI)</a> is leading a collection of relevant API work including a comprehensive array of device-specific APIs. And the W3C was a Device APIs Working Group ( <a href="http://www.w3.org/2009/dap/">http://www.w3.org/2009/dap/</a>] )</p>
<p>Mozilla is also investing heavily in an initiative to facilitate the use of standards-based Web technologies to build applications that can be installed and used in the same way a “native” applications would be.</p>
<p>There are many reasons that doing so might be desirable, not the least of which is the ability to build much or all of your application for use on many different devices and platforms using a single set of development technologies.</p>
<p>Developers can already build HTML Applications (with help from the HTML5 Apps documentation <a href="https://developer.mozilla.org/en-US/apps">https://developer.mozilla.org/en-US/apps</a> ) and submit their applications to the Mozilla Marketplace (<a href="https://marketplace.mozilla.org/">https://marketplace.mozilla.org/</a> ).</p>
<p><strong>App versus Page ?</strong></p>
<p>When people start talking about building apps with HTML5, one of the early questions that comes to the conversation is “What&#8217;s the difference between an app and a page?”</p>
<p>This is bit of a difficult question to answer because of the very wide range of answers which can all be true, but which may be completely different.</p>
<p>While your HTML5 app <em>should</em> be more than a simple HTML5 page, technically speaking it doesn&#8217;t have to be. Using the steps outlined in the guide “Getting Started with making (HTML5) apps” (<a href="https://developer.mozilla.org/en/Apps/Getting_Started">https://developer.mozilla.org/en/Apps/Getting_Started</a> ), you could simply create an apps manifest file and submit your HTML page as an app.</p>
<p><span id="more-4756"></span></p>
<p>When an Open Web app runs, the Mozilla Web Runtime installs local copies of the HTML5 markup and all of the other web assets that are resolvable via the DOM, just like you might do by using an HTML5 Cache Manifest (<a href="https://developer.mozilla.org/en/Offline_resources_in_Firefox">https://developer.mozilla.org/en/Offline_resources_in_Firefox</a> ). In fact, you may choose to use both the default Mozilla App mechanism and the HTML Application Cache: use the Mozilla Web Runtime for all environments that currently support it (at the time of this writing: Windows, Mac, Linux with the latest Firefox Nightly build or Android with the SOUP runtime installed), and the HTML Application Cache for other environments.</p>
<p>If a Web page is dynamically generated, as in an ASP.NET, PHP, etc., application, any cached version represents a snapshot of a single point in time. [&lt;--Not sure why this sentence is here. It seems to signal a change of topic, but then the topic doesn't change.] When submitted as an app, the page actually “becomes” an app, getting a launcher item similar to native apps on whatever the host operating system is. When the app is launched, the local assets are used if there is no Internet connection or if the caching mechanism determines that the assets have not changed since they were last downloaded.</p>
<p>By doing the above we have not added any additional functionality to our application. All we have done by declaring our page to be an app is to get the run-time to copy the bits locally and to run those local bits if the device is off line or if the bits haven&#8217;t changed.</p>
<p><strong>Does this get us anything ? </strong></p>
<p><strong>Is there value in just this simple step ?</strong></p>
<p>Yes, it gets us three valuable improvements:</p>
<ul>
<li>Users can see our page even if they are not connected because the run-time renders the cached version if there is no Internet connection.</li>
<li>Processor cycles and bandwidth consumption from our infrastructure or hosting are greatly reduced because new bits are only fetched when they are needed.</li>
</ul>
<p>Many organizations are starting with this approach because very little technical effort is necessary and it can be done very quickly. In most cases all you need to do is to create an app manifest file (see:<a href="https://developer.mozilla.org/en/Apps/Getting_Started)">https://developer.mozilla.org/en/Apps/Getting_Started</a><a href="https://developer.mozilla.org/en/Apps/Getting_Started)">)</a> and to submit the app to the marketplace. (Developers can submit apps now at <a href="https://marketplace.mozilla.org/en-US/login?to=/en-US/developers/">https://marketplace.mozilla.org/en-US/login?to=/en-US/developers/</a> so that they will be available to consumers when the “buy side” of the marketplace opens later this year.)</p>
<p>But if that&#8217;s all you do with your app, you are missing the opportunity.</p>
<p>Take a look at <a href="http://caniuse.com/">http://caniuse.com/</a> for a snapshot view of technologies that are available to developers using the modern web runtime.</p>
<p>Whether we are building a real Open Web App from scratch or we are converting an HTML page to an app and then adding modern features, HTML5 era technologies let us really start to developer client / server applications that utilize the browser and its host resources, thereby reducing our server requirements while improving the end user&#8217;s experience.</p>
<p>Developers can do things like :</p>
<ul>
<li>Read and write data locally and sync with a server when appropriate.</li>
<li>Run multiple threads of execution at the same time.</li>
<li>Exchange content with other applications, or share logic with them.</li>
<li>Interact with the device on which their app is running.
<ul>
<li>Touch user interface</li>
<li>GPS</li>
<li>Camera</li>
<li>Richly integrate multimedia.</li>
<li>And much more&#8230;..</li>
</ul>
</li>
</ul>
<p>Since apps&#8217; source code is deployed to a single URL and is updated on the device on which the app runs only when updates are necessary, versioning is low cost and friction free. This makes it easy to start by making a page and then iteratively adding features one after another.</p>
<p><strong>Lets do it !</strong></p>
<p>Since this model makes it so easy to get started, why not give at a try?</p>
<p>Follow the guidance here : <a href="https://developer.mozilla.org/en/Apps/Getting_Started">https://developer.mozilla.org/en/Apps/Getting_Started</a></p>
<p>And submit your app here : <a href="https://marketplace.mozilla.org/">https://marketplace.mozilla.org/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.misfitgeek.com/2012/03/html5-the-difference-between-an-app-and-a-page/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Back to Technical Evangelism</title>
		<link>http://www.misfitgeek.com/2012/03/back-to-evangelis/</link>
		<comments>http://www.misfitgeek.com/2012/03/back-to-evangelis/#comments</comments>
		<pubDate>Sat, 24 Mar 2012 18:40:56 +0000</pubDate>
		<dc:creator>JoeStagner</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.misfitgeek.com/?p=4701</guid>
		<description><![CDATA[I joined Mozilla about 5 months ago. My manager, Stormy, warned me that getting up to speed at Mozilla would be more difficult than I expected, and of course, I didn&#8217;t really believe her. My manager at Microsoft told me the same thing on my first day of work there, and it wasn&#8217;t really true. [...]]]></description>
			<content:encoded><![CDATA[<p>I joined Mozilla about 5 months ago.</p>
<p>My manager, Stormy, warned me that getting up to speed at Mozilla would be more difficult than I expected, and of course, I didn&#8217;t really believe her. My manager at Microsoft told me the same thing on my first day of work there, and it wasn&#8217;t really true. Microsoft was just big, not hard to adjust to.</p>
<p>Mozilla is DIFFERENT.</p>
<p>When I interviewed with Mozilla, my impressions were the same as most people who are not participating Mozillians.</p>
<p>Mozilla makes FireFox and Thunderbird and is Open Source, does standards stuff, etc. It all sounded cool and I “thought” I “got it”, but I didn&#8217;t. In truth, I still don&#8217;t completely, but learning is fun.</p>
<p>During the interview process I was impressed with everyone&#8217;s passion about “The Mission”, though, even having read “The Mission Statement”, I still had no idea what it all meant. The passion, though, was clear to see.</p>
<p>My first day of work at Mozilla was day one of the organization&#8217;s yearly “all hands” gathering. That event lasted a week and I met literally hundreds of my new co-workers. I also came to begin to understand that “The Mission” had almost nothing to do with “products” and everything to do with helping to change the world by propelling the Open Internet.</p>
<p>People at Mozilla tend to be idealistic in that they believe they actually can change the world. After just spending a decade at Microsoft this seemed unrealistic to me. The funny thing is that in the short five months that I have been here at Mozilla, I&#8217;ve actually seen a number of examples where Mozilla IS changing the world !</p>
<p>I flew home after the ALl Hands Week and I expected that, on Monday, I would start my efforts helping people learn and use open web technologies.</p>
<p>Instead, by the end of that Monday, I had been hijacked to work with the Business Development Team for the new Mozilla Marketplace. It made sense, I was new – so I had time, and I do have a “technology in business” background as well as much experience consulting with organizations large and small about solving there specific problems, using specific technologies.</p>
<p>So, over the past five months I&#8217;ve talked with hundreds of great organizations, large and small. Organizations that are doing amazing and NEW things with the Web. I&#8217;ve attended events in the USA, England and Spain and, unexpectedly learned more than I ever expected about Mobile computing. (I was never really interested in Mobile prior to coming to Mozilla)</p>
<p>Now after five months – I&#8217;m getting back to “Technical Evangelism”. The Apps Business Development team has had a bit of time to catch it&#8217;s breath and start to distribute the “partner engineering” function and my hope is that this will let me detach from all the “consulting” and tech support that I&#8217;ve been going and get back to building and offering GUIDANCE.</p>
<p>I&#8217;ve become very passionate about both HTML5 and multi device development and I think there is great opportunity to help people that are new to HTML/JavaScript/CSS, as well as people that are experienced but adapting their skill sets to HTML5 “Apps” development.</p>
<p>So my plan is to continue to focus on HTML5 from an Applications perspective. You will be surprised at how much you think you can NOT do with HTML5 that you actually can do. I know I&#8217;m surprised every day.</p>
<p>So, how about some help ?</p>
<p>What questions / problems do you need solved or answered that fit in the following question/statement.</p>
<p>I&#8217;m building an Application using HTML 5 and I don&#8217;t think it&#8217;s possible to (fill in here).</p>
<p>Example: Example: Protect my source code.</p>
<p>I&#8217;m building an Application using HTML 5 – how do I (fill in here)?</p>
<p>Example: Include my Twitter Feed without a Server Proxy</p>
<p>I&#8217;ll post articles here on MisfitGeek.com, but I&#8217;ll also post them on Mozilla Hacks (<a href="http://hacks.mozilla.org/">http://hacks.mozilla.org/</a>) you should read them on Hacks because you get articles from ALL the folks in MDN !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.misfitgeek.com/2012/03/back-to-evangelis/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Where are you Joe ?</title>
		<link>http://www.misfitgeek.com/2012/01/where-are-you-joe/</link>
		<comments>http://www.misfitgeek.com/2012/01/where-are-you-joe/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 15:30:30 +0000</pubDate>
		<dc:creator>JoeStagner</dc:creator>
				<category><![CDATA[Op-Ed]]></category>

		<guid isPermaLink="false">http://www.misfitgeek.com/?p=4648</guid>
		<description><![CDATA[I&#8217;ve had a couple of email recently asking what I&#8217;m up to. Which, of course, means that I&#8217;ve been remis with my blogging. I&#8217;ve been traveling, sick, growing ever sicker of tooth problems, etc. &#8211; but I&#8217;ve also been immersed HTML5 App building and helping organizations all around the world get started in building Apps [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had a couple of email recently asking what I&#8217;m up to.</p>
<p>Which, of course, means that I&#8217;ve been remis with my blogging.</p>
<p>I&#8217;ve been traveling, sick, growing ever sicker of tooth problems, etc. &#8211; but I&#8217;ve also been immersed HTML5 App building and helping organizations all around the world get started in building Apps for the Mozilla App store. (https://developer.mozilla.org/en/Apps/Getting_Started)</p>
<p>I still get an email or two a day from people who are just realizing that I&#8217;ve left Microsoft.</p>
<p>I&#8217;m planning to getting back to writing articles and doing videos in the next few weeks. Though I won&#8217;t be doing ASP.NET.)</p>
<p>So, feel free to post your thoughts on what content I should work on.</p>
<p>I&#8217;m planning an HTML5 podcast as well.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.misfitgeek.com/2012/01/where-are-you-joe/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Building Apps and deploying them from GitHub</title>
		<link>http://www.misfitgeek.com/2011/12/serving-apps-from-github/</link>
		<comments>http://www.misfitgeek.com/2011/12/serving-apps-from-github/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 17:51:32 +0000</pubDate>
		<dc:creator>JoeStagner</dc:creator>
				<category><![CDATA[Apps]]></category>
		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://www.misfitgeek.com/?p=4607</guid>
		<description><![CDATA[Those guys at GitHub have always been forward thinking and Open friendly ! So you ave probably heard that Mozilla is getting into &#8220;Apps&#8221; in a big way (https://apps.mozillalabs.com/) There are couple of things about HTML5 apps that are different than conventional native apps. First, because they are web technology they want to live somewhere [...]]]></description>
			<content:encoded><![CDATA[<p>Those guys at <a href="https://github.com/">GitHub </a>have always been forward thinking and Open friendly !</p>
<p>So you ave probably heard that Mozilla is getting into &#8220;Apps&#8221; in a big way (<a href="https://apps.mozillalabs.com/">https://apps.mozillalabs.com/</a>)</p>
<p>There are couple of things about HTML5 apps that are different than conventional native apps.</p>
<p>First, because they are web technology they want to live somewhere on the web. Second, each app has a manifest (<a href="https://developer.mozilla.org/en/Apps/Manifest">https://developer.mozilla.org/en/Apps/Manifest</a>) and that manifest needs to be served with a new, specific MIME type.</p>
<p>Now, if you self host on Linux this is trivial. You can just add an entry to the .htaccess file, but if you don&#8217;t want your app to have it&#8217;s own web presence there is another option.</p>
<p>This clever guy on my team, Rob Hawkes (<a href="http://rawkes.com/">http://rawkes.com/)</a> is the Developer Community Gaming Lean on my team and he  worked with GitHub to add the ability to serve Mozilla Apps Manifests directly from your GitHub repository.</p>
<p>COOL !</p>
<p>Then, an independent game developer, Jerome Etienne (<a href="http://jetienne.com/">http://jetienne.com/</a>) tested it by publishing a game in the Mozilla Labs Developer Preview Apps Store.</p>
<p>The game is called marbleSoccer and the GitHub is here -<a href="https://github.com/jeromeetienne/marbleSoccer "> https://github.com/jeromeetienne/marbleSoccer </a></p>
<p>To install and run the game, start by installing the Mozilla Labs Apps  Runtime (we&#8217;re in preview, this step won&#8217;t always be necessary)</p>
<p><img class="alignnone" title="InstallFFAppsAdOnn.png" src="http://misfitgeek.com/postimages/InstallFFAppsAdOnn.png" alt="" width="520" height="401" /></p>
<p><a href="https://addons.mozilla.org/en-US/firefox/addon/app-runtime/" target="_blank">https://addons.mozilla.org/en-US/firefox/addon/app-runtime/ </a></p>
<p>Then you need to log in to the store at :</p>
<p><img class="alignnone" title="MozAppsStoreLogIn.png" src="http://misfitgeek.com/postimages/MozAppsStoreLogIn.png" alt="" width="520" height="241" /></p>
<p>You need a BrowserID to log in (which everyone should want to have, anyway) <img src='http://www.misfitgeek.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>https://browserid.org/</p>
<p><img class="alignnone" title="BrowserID-Mozilla-Firefox019.png" src="http://misfitgeek.com/postimages/BrowserID-Mozilla-Firefox019.png" alt="" width="520" height="324" /></p>
<p>After logging in search the store for MarbleSoccer.</p>
<p><img class="alignnone" title="FindMarbleSoccer.png" src="http://misfitgeek.com/postimages/FindMarbleSoccer.png" alt="" width="520" height="321" /></p>
<p>Once you have it installed you&#8217;re good to go.</p>
<p><img class="alignnone" title="PlayingMarbleSoccer.png" src="http://misfitgeek.com/postimages/PlayingMarbleSoccer.png" alt="" width="520" height="325" /></p>
<p>There you go &#8211; game installed and running &#8211; hosted at GitHub</p>
<p>Great job guys !</p>
<p>&nbsp;</p>
<hr />
]]></content:encoded>
			<wfw:commentRss>http://www.misfitgeek.com/2011/12/serving-apps-from-github/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>I Moved ! &#8211; Selecting a New Hosting Provider</title>
		<link>http://www.misfitgeek.com/2011/12/selecting-a-new-hosting-provider/</link>
		<comments>http://www.misfitgeek.com/2011/12/selecting-a-new-hosting-provider/#comments</comments>
		<pubDate>Tue, 20 Dec 2011 16:33:06 +0000</pubDate>
		<dc:creator>JoeStagner</dc:creator>
				<category><![CDATA[Op-Ed]]></category>

		<guid isPermaLink="false">http://www.misfitgeek.com/?p=4602</guid>
		<description><![CDATA[I woke up this morning to a series of email and Twitter messages letting me know that my web site (www.MisfitGeek.com) was gone ! My site was (until this afternoon) hosted at Site5. (http://www.site5.com/) Now, I&#8217;m going to tell you what happened and how Site5&#8242;s process makes them an undesirable choice for my needs. Before [...]]]></description>
			<content:encoded><![CDATA[<p>I woke up this morning to a series of email and Twitter messages letting me know that my web site (<a href="../">www.MisfitGeek.com</a>) was gone !</p>
<p>My site was (until this afternoon) hosted at Site5. (<a href="http://www.site5.com/">http://www.site5.com/</a>) Now, I&#8217;m going to tell you what happened and how Site5&#8242;s process makes them an undesirable choice for my needs. Before I do that – a disclaimer. Site5 is a pretty good service with good folks working there. They did restore my site and engaged me in public discussion on Twitter about the event and their desire to help me. I don&#8217;t “blame them” per se. They have emailed asking to discuss what happened and how they could improve their services.</p>
<p>Running a high quality, low cost hosting service is very difficult, especially the “service” part. The hosting business is based on low margin and high volume. Each support person on parole causes a distinct increase in the shared hosting site density required to turn a profit. I do sympathize.</p>
<p>So here is what happened.</p>
<p>After receiving notices from my Tweeples that my site was down I logged in to my Site5 hosting account and they had opened a support ticket telling me they had turned off web access to my site due to “excessive CPU utilization”.</p>
<p>My Site5 account is “Unlimited” storage and bandwidth, but it&#8217;s a shared account, so if my disk space / band width use causes too much CPU use &#8211; it&#8217;s a problem.</p>
<p>There is no phone number for direct support so I went to the Site5 site to use “on-line” chat. Unfortunately, Site5&#8242;s on-line chat was “not available”.</p>
<p>So I added a reply to the support ticket and waited.</p>
<p>Site5 later replied that my site was turned off due to too many requests for the index.php page of my WordPress blog from a single IP address in Hungary. They explained that they only turn off a site as a last resort and they had to do it because it was a shared account and the CPU use was effecting the performance of other sites on the machine.</p>
<p>Fair enough.</p>
<p>Now, my web site isn&#8217;t important, like, say FEMA or CNN, but it&#8217;s part of how I feed my family so a default support policy of unplugging my site because ONE IP ADDRESS is spamming my site with requests seems like a really poor support policy.</p>
<p>It&#8217;s also not the first time I&#8217;ve experienced a DoS attack against one of my blogs and I&#8217;ve never had a host simply turn off my site as a result. While Site5 support said it was a “last resort” no one could tell me what steps had been made BEFORE turning off my site to attempt to solve the problem.</p>
<p>Not only was my site unplugged, but it was done in an “ugly” way. Visitors did not get a temporary landing page telling them there was a temporary problem, visitors didn&#8217;t even see an error. It just looked like the site had been deleted.</p>
<p>Site5 first suggested that the inex.php page was the problem and it was probably because I had added a new plug-in to my WordPress instance. They instructed me to try installing a cache plugin for WordPress. (I hadn&#8217;t added a plugin to WordPress since it&#8217;s original installation.)</p>
<p>Then they explained that they had identified the inbound request flood from a single IP address – which again made me wonder what other actions had been attempted before executing the “last resort” of unplugging my site.</p>
<p>I later got a detailed explanation of how difficult it is to identify attacks in real time. I&#8217;m sure the person who emailed me was not aware that 5 of my 10 years at Microsoft were spent focusing largely on cyber-security and I thought offering to help him implement a strategy to identify such attacks would not be well received. In fact, when I ran Microsoft&#8217;s ASP.NET site we identified DoS attempts on an almost daily basis and other “entry level” hosting providers have been able to do so with my accounts as well.</p>
<p>I was also told that even if they had identified the source of the issue they would block an IP address because that could be “bad”.</p>
<p>Still, it wasn&#8217;t this one time issue – in and of itself – that caused me to change service providers.</p>
<p>I was worried about the NEXT TIME.</p>
<p>Site5 turned my site off as a “last resort” but wasn&#8217;t able to explain what other steps were attempted.</p>
<p>Visitors to my site received NOTHING – no, “Temporarily Off Line” message, nothing !</p>
<p>Doesn&#8217;t that mean that anyone who was so inclined could cause anyone else&#8217;s site, if it was hosted at Site5, to be turned of by simple flooding it with requests. Even when the requests stop, my site is still down. Why not block the IP spammer ?</p>
<p>Anyway, I kept trying to gat someone on support chat, sometime later I did. I was told that Tier 1 did not have authority to actually make changes to my account (like turn web access back on) and that someone else was “looking into” what was going on, but customers weren&#8217;t allowed to talk to “those” support people.</p>
<p>I also found it bothersome that the problem was being looked into only AFTER turning my account off.</p>
<p>After some dialog I understood that the on-line support people serve as middle-men who can not touch an account and that “higher level” support staff and managers do not talk to customers on the phone or chat with them directly. My only recourse was to wait until someone replied to my question on the support ticket.</p>
<p>After complaining via the support ticket system and an ongoing conversation on twitter, the service manager emailed me to say that he was sorry and he explained that, while they could tell the problem was coming from a Hungarian IP Address after the fact, apparently their real time monitoring is not sophisticated enough to identify such an attack in real time. He also told me that they wouldn&#8217;t block an IP address under such circumstances as that might have negative results, though I can&#8217;t see how they feel turning of my entire site was a less negative result that blocking a single IP address that had been identified as flooding my site.</p>
<p>As I&#8217;m 100% focused on the HTML5 Apps space this is especially problematic for me. Turning a site off completely could have cascading negative effects if I&#8217;m using that site to host an App being distributed through store and would make it easy for competitors and objectors to kill my App&#8217;s success simply by spamming my home page. (Which, by the way is so trivial easy to do, and script kiddie can do it and it&#8217;s pretty easy to do it anonymously as well.)</p>
<p>So, while the folks at Site5 were very nice, the fact that turning off a site in this manner, in response to a fairly common issue – coupled with the fact that there is no way to interact in real time with someone who has the authority to make a change on my account – simply makes this level of service less than my minimum requirement.</p>
<p>This is especially true as I start developing guidance for Apps developers and making hosting recommendations.</p>
<p>I don&#8217;t mean to sound overly harsh about Site5. Most people wouldn&#8217;t ever experience this problem. My Mom&#8217;s blog doesn&#8217;t get that much traffic and she&#8217;s not likely to attract the attention of someone who would try to mess with were web site. I wouldn&#8217;t hesitate to recommend Site5 with those criteria.</p>
<p>But, service needs vary.</p>
<p>So &#8211; I&#8217;m researching a number of options for hosting HTML5 “Apps” but in the mean time I needed to move my site to a host where the events I experienced today would not be repeated.</p>
<p>Over he past decade I&#8217;ve used hosting services from more than a dozen companies, most of the economically priced ones have been poor performers in the customer service and up-time departments.</p>
<p>Though I already have a reseller account at another hosting provider (which I&#8217;ve had for 6 or 7 years) I originally set up an account at Site5 because they advertised unlimited bandwidth and I was leaving Microsoft so I needed a place to host podcast audio files.</p>
<p>I made a list of features I wanted in a hosting company and discovered that one of my existing hosts already met my criteria and I&#8217;ve had 7 years of great service experience with them.</p>
<p>So, what is my hosting criteria ?</p>
<ul>
<li>A wide variety of Individual Shared, Reseller, Virtual Private and MANAGED Virtual Private, and Dedicated account options with multiple levels for each and reasonable pricing at each level</li>
<li>The ability to move domains between account types and assistance available to do so.</li>
<li>The ability to have my own custom NDS names.</li>
<li>Support for developing apps with PHP, Python / Django, Perl, Ruby Rails, and NODE.js</li>
<li>Multiple Database options</li>
<li>A guaranteed service level (99% up time, etc)</li>
<li>A support ticket system.</li>
<li>On-line chat support that is ALWAYS manned.</li>
<li>Telephone support options for when things are really critical.</li>
</ul>
<p>Then there are some additional “nice to have” items.</p>
<ul>
<li>Shared SSL Support</li>
<li>Individual SSL options</li>
<li>Source Control Hosting Options</li>
<li>Free default WebMail</li>
<li>Customizable Control Panel</li>
<li>Some kind of domain / account manager</li>
<li>SSH access</li>
</ul>
<p>It turns out that I&#8217;m already using a hosting company that meets all those critera – though I didn&#8217;t realise it until yesterday.</p>
<p>The company is A2 Hosting &#8211; <a href="http://www.a2hosting.com/">http://www.a2hosting.com/</a></p>
<p>Now let me be clear. I&#8217;ve been using A2 for 6-7 years. I started using them while working at Microsoft so I kept my use of their Linux based hosting pretty quiet. A2 has never provided me with any incentive to endorse them in any way, they don&#8217;t know I&#8217;m writing this, and I have always paid full retail prioce for the services that I have received from them – so my experience as a customer has been the same that you or anyone else is likely to experience.</p>
<p>When I signed up for my A2 “reseller” account it was because I wanted to host a bunch of little web sites and didn&#8217;t want to have a bunch of different accounts. Though I have a reseller account, I only use it to host my own sites. I choose A2 because I though their reseller account offered a lot for a very reasonable price. Because of the way that I started with them I guess I always thought of them as a “low end” provider.</p>
<p>I signed up for Site5 because of their unlimited bandwidth option.</p>
<p>As I started yesterday researching an alternative, I remembered the great service I&#8217;ve received from A2.</p>
<p>My A2 account is a “low cost” account, and there HAVE been issues and down time. But in all the years I&#8217;ve used them any issue has been solved quickly.</p>
<p>There is always someone in the on-line chat support and that someone can actually solve problems. IN fact, the chat based support people are so good – in all the years I&#8217;ve hosted with them I&#8217;ve never had to call the 24/7/365 phone based tech support.</p>
<p>They have always known what was happening and what the eta to fix it was – or they could do it themselves.</p>
<p>I couldn’t remember the last time I had been to the A2 web site – they&#8217;ve added lots of services.</p>
<p>They now have hosting starting at $3.35 a month (unlimited disk and bandwidth) all the way up to high end, managed, dedicated servers with Cloud options.</p>
<p>So I moved my blog before it was even back on line at Site. It took me about 30 minutes to get all the content,the code and the database moved. There was one thing I couldn&#8217;t figure out because the DNS change had not propagated yet, but I chatted the on-line support and Erin had the answer (thanks Erin) !</p>
<p>My web sites are often PHP apps like WordPress or Drupal but my Apps stuff is moving towards Node.js and Python – I was thrilled to discover that A2 supports both. <img src='http://www.misfitgeek.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>So for now I&#8217;ve consolidated all my hosted stuff to A2. (I still need to choose a Cloud based PaaS provider for some work.)</p>
<p>I&#8217;ll be using A2 for a bunch of my Apps learning content since my account gives me the flexibility to create sub domains for all the test apps I want to build. Heck, with Virtual Private instances starting at $13.95 per month I could even host test Apps with Java back ends if I really wanted to.</p>
<p>Anyway, I though this was a fairly significant experience and that sharing it might be useful to some of my readers.</p>
<p>Choosing a hosting company is a bit like cheering for your favorite sports team.</p>
<p>Either : Mine is the best and yours sucks!</p>
<p>Or: Yours sucks and mine sucks TOO !</p>
<p>And: If you ask me tomorrow I may feel differently about mine !</p>
<hr />
]]></content:encoded>
			<wfw:commentRss>http://www.misfitgeek.com/2011/12/selecting-a-new-hosting-provider/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Choosing a CSS Framework</title>
		<link>http://www.misfitgeek.com/2011/12/choosing-a-css-framework/</link>
		<comments>http://www.misfitgeek.com/2011/12/choosing-a-css-framework/#comments</comments>
		<pubDate>Sun, 18 Dec 2011 16:57:25 +0000</pubDate>
		<dc:creator>JoeStagner</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.misfitgeek.com/?p=4593</guid>
		<description><![CDATA[I&#8217;ve been building web applications since the beginning of the World Wide Web and yet I&#8217;ve never become very knowledgeable about CSS. I&#8217;ve listened to the arguments about page layout (styles versus tables) and hacked my way through enough CSS but always found myself more frustrated than enthralled. JavaScript frustrated me in the early days [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been building web applications since the beginning of the World Wide Web and yet I&#8217;ve never become very knowledgeable about CSS.</p>
<p><img class="alignnone" title="blueprint.jpg" src="http://misfitgeek.com/postimages/blueprint.jpg" alt="" width="500" height="385" /></p>
<p>I&#8217;ve listened to the arguments about page layout (styles versus tables) and hacked my way through enough CSS but always found myself more frustrated than enthralled.</p>
<p>JavaScript frustrated me in the early days too. Compared to C++, Java, C#, etc it left “dirty” to me but I&#8217;ve grown to enjoy and embrace JavaScript and I know that I need to do the same thing with CSS.</p>
<p>CSS is very powerful but you need embrace it to really Grok (http://en.wikipedia.org/wiki/Grok) it.</p>
<p>But, I have some issues :</p>
<ul>
<li>I&#8217;m in a hurry – I need to be building apps now.</li>
<li>I don&#8217;t think aesthetically – I&#8217;m a bits and bytes guy.</li>
<li>I&#8217;m a pragmatist – I don&#8217;t care about purist type elegance.</li>
</ul>
<p>So I&#8217;m choosing a “CSS Framework”.</p>
<p>If you search the web you can find lots of discussions about why NOT to use a CSS framework. Purists say that a CSS Framework is a contradiction in terms, but I suspect that 99% of developers doing significant client side work are using a CSS framework, even if their framework of choice is a collection of code that they wrote themselves (as opposed to someone else&#8217;s formal framework).</p>
<p>There are some basic criteria when choosing any framework.</p>
<ul>
<li>Rich Functionality</li>
<li>The flexibility to extend and modify features</li>
<li>Understandable code</li>
<li>Good Documentation</li>
<li>Good usage examples</li>
<li>A vibrant community</li>
<li>An implementation that works the way I want to work</li>
</ul>
<p>When it comes to choosing a CSS framework there are some additional criteria.</p>
<ul>
<li>Reset Strategy</li>
<li>Typography Implementation</li>
<li>Semantic Naming</li>
</ul>
<p>Especially “Semantic Naming” becomes incredibly important the more complex your markup becomes.</p>
<p>There is a cyclic relationship between HTML Elements as Identified by “Id”, CSS Classes that are applied to those elements and the JavaScript code that is executed against those elements, often that are found by way of the classes assigned to them.</p>
<p>Random naming of CSS classes or a set of naming conventions that lack logical value can turn the whole stack into a mess.</p>
<p>So, good naming strategy is crucial to a usable CSS framework and a way to customize naming in conjunction with your application&#8217;s problem domain is even better.</p>
<p>There are LOTS of CSS frameworks to choose from and several dozens of blog posts on the web listing the popular ones.</p>
<p>Rather than enumerate all the ones that I did NOT choose, I though I&#8217;d share some reasons for choosing the one that I did choose.</p>
<p><img class="alignnone" title="blueprint_css_logo.png" src="http://misfitgeek.com/postimages/blueprint_css_logo.png" alt="" width="412" height="100" /></p>
<p>My criteria seems to be best met by Blueprint CSS (<a href="http://blueprintcss.org/">http://blueprintcss.org/</a>)</p>
<ul>
<li>A CSS reset that eliminates the discrepancies across browsers.</li>
<li>CSS Reset based on Eric Meyer&#8217;s (http://meyerweb.com/eric/tools/css/reset/)</li>
<li>A solid grid that can support the most complex of layouts.</li>
<li>Typography CSS that implements a baseline grid.</li>
<li>Form styles.</li>
<li>Print styles.</li>
<li>A Plugin model and a collection of available plugins.</li>
<li>En ecosystem for use in different development. (WordPress, Drupal, etc)</li>
<li>Tools, editors, and templates.</li>
</ul>
<p>While the checklist seems complete is the combinatorial effect that we end up being interested in.</p>
<p>For example, using a CSS reset by itself nullifies browser defaults (which all tend to look different to the user) but using a CSS reset by itself, especially one as complete as Eric Meyer&#8217;s, means there is a lot of default behavior to be re-defined. Of course Blueprint CSS handles this for us.</p>
<p>For my needs there is one more very important feature of using Blueprint CSS.<br />
Blueprint CSS comes with a Ruby script that lets you customize Blueprint style sheets using your own semantic class names.</p>
<p>This isn&#8217;t a matter of purism for me. UI code and markup can get very complex and maintainability, as well as debugging, can be drastically effected by semantic naming.</p>
<p>Standard framework names like these :</p>
<hr />
<pre class="brush: xml; title: ; notranslate">
&lt;div class=&quot;span-9 last&quot;&gt;
&lt;div class=&quot;grid_6 alpha&quot;&gt;
</pre>
<hr />
<p>… are learn-able, but just have no RELATIVE meaning inside our own application.</p>
<p>Here is some good information on CSS Semantics and using the Blueprint CSS customizer.</p>
<p><a href="http://joshuaclayton.me/blueprints_compress_a_walkthrough.html">http://joshuaclayton.me/blueprints_compress_a_walkthrough.html</a><br />
<a href="http://www.sitepoint.com/css-frameworks-semantic-class-names/">http://www.sitepoint.com/css-frameworks-semantic-class-names/</a></p>
<p>More to come&#8230;..</p>
<hr />
]]></content:encoded>
			<wfw:commentRss>http://www.misfitgeek.com/2011/12/choosing-a-css-framework/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Building Apps with HTML5 &#8211; Desktop, Tablet, Phone !</title>
		<link>http://www.misfitgeek.com/2011/12/building-apps-with-html5/</link>
		<comments>http://www.misfitgeek.com/2011/12/building-apps-with-html5/#comments</comments>
		<pubDate>Mon, 12 Dec 2011 21:04:35 +0000</pubDate>
		<dc:creator>JoeStagner</dc:creator>
				<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://www.misfitgeek.com/?p=4579</guid>
		<description><![CDATA[Disclaimer : As a reminder, this post represents only my own personal opinion and is not presented as an endorsed or official position by anyone but myself. Few evolutions of developer technology have resulted in as much discussion and speculation as “HTML5”. In this post I’m going to write about building APPLICATIONS with HTML5, not [...]]]></description>
			<content:encoded><![CDATA[<p>Disclaimer : As a reminder, this post represents only my own personal opinion and is not presented as an endorsed or official position by anyone but myself.</p>
<p><img class="alignnone" title="HTML5_Logo2.jpg" src="http://misfitgeek.com/postimages/HTML5_Logo2.jpg" alt="" width="289" height="174" /></p>
<p>Few evolutions of developer technology have resulted in as much discussion and speculation as “HTML5”.</p>
<p>In this post I’m going to write about building APPLICATIONS with HTML5, not sites or pages.</p>
<p>Two weeks ago I was in London at the Apps World Conference where I witnessed an interesting dichotomy.  The few HTML5 sessions were PACKED. There wasn’t even standing room left. But, almost every other session included commentary to the effect that HTML5 is “nor ready for prime time, though it is going to be really important in two or three years.</p>
<p>If you’re a cross platform tools vender, out-source developer, or consulting shop working in the mobile application space, then that’s probably what you want to believe. (Or at least what you want the industry to believe.) If you’re a  “native” developer you’re probably in the same boat.</p>
<p>I’ve talked to many “Native” / desktop application developers over the years who just don’t like the “Web Stack”.  They tend to discount HTML5 out of hand.</p>
<p>You hear one liners like :</p>
<p>HTML5 Apps can’t get good performance.<br />
JavaScript sucks !<br />
You can’t access the necessary hardware in HTML5.<br />
You can’t optimize battery life in HTML5.</p>
<p>There is no question that there are some kinds of applications that you would not try to write using Web development technologies. You wouldn’t write Adobe Photoshop, Apple Final Cut Pro, or Audacity in JavaScript for example.</p>
<p>But I believe there are LOTS of applications that can be written in HTML5 / Web technologies and that there are significant advantages to doing so when your application scenario makes a Web stack appropriate.</p>
<p>Lets first fix what I think is a problem with the vocabulary.</p>
<p>“HTML5” is not really HTML 5.0. “HTML5” is a wave of technologies of which version 5 of the hypertext Markup language is only one part.</p>
<p>You can read the W3C HTML5 Draft Specification here : http://dev.w3.org/html5/spec/</p>
<p>While the HTML5 specification enhancements are important we, should be equally interested in the work being done by the What Working Group &#8211; http://www.whatwg.org/</p>
<p>But to get the whole picture we need to consider other evolutions in web technology as well.</p>
<p>There is the CSS3 specification &#8211; http://www.w3.org/Style/CSS/specs which is part of the wave.</p>
<p>I also think that jQuery is in important part of the piece, especially now that browser venders are leveraging the performance experience of other scripting language makers and building significant optimizations into their respective “Web Stacks”.</p>
<p>So, in this post I will refer all of the technologies that we would use to build a Web Standards Based Application collectively as “The Web Runtime”.</p>
<p>Before I start to talk about what we can to with The Web Runtime, let me suggest that none of the corporate entities will want you to believe that you can build great  applications that will thrill customers by using only standards based technologies.</p>
<p>Why ? Because web technology runs on every platform that matters, is not controlled by any single entity and can be delivered by a wide variety of mechanisms.</p>
<p>Apple wouldn&#8217;t be thrilled by the success of The Web Run Time. Apple changed both the phone and the information industry with iOS, but their sustained success is, at least partially, predicated on the head start they achieved by being first to the market space.</p>
<p>While (in my opinion) iOS, as a device operating system, is still slightly better than Android at this stage of Android’s evolution, it is only marginally so and Android is evolving rapidly. What’s more, the iPhone is no longer the number one phone from a hardware perspective.There are many Android phones that are more advanced. (Like the Galaxy S2 Skyrocket). Apple can’t innovate on the hardware as quickly as the entire phone and tablet manufacturing industry and folks have angst over whether or not Apple can keep up with the pace. Expected announcement of the iPhone 5 this fall never materialized.</p>
<p>Still, the iPhone is staying strong in the market because the “Apps” are there. iOS is a proprietary platform. Apps that run on iOS do not run anywhere else. For most consumers, the only way to get Apps on your iPhone or iPad is through the Apple store where Apple gets a good percentage of the purchase price, subscription fee or in application purchases. (Yes, we geeks can jailbreak or iPhones, but that does cause other concerns.)</p>
<p>If Web Runtime Apps started to enjoy adoption Apple would loose it’s head start as well as it’s monopoly on the sales and distribution process. Developers could build an application once and consumers could run that app on whatever great bit of hardware they wanted. Moving from one platform to another would be FAR less painful.</p>
<p>It’s been suggested to me that the performance of HTML/JavaScript in Safari on iOS has intentionally been made slower than it needs to be in order to help maintain the disparity between “Web Apps” and native iOS apps.</p>
<p>Microsoft probably wants “Web Runtime” applications to succeed even less.</p>
<p>Though Microsoft has more than one profitable product, Windows is still the mainstay of Microsoft’s revenue stream and the combination of Windows and Office (which has almost no success outside of Windows) probably still represent more than half of Microsoft annual revenue (thought that is a guess on my part).</p>
<p>Operating systems have nearly no direct value to the average consumer of computing devices (Servers, Laptops, Tables, Phones, TVs, etc) An operating system is only as interesting as the applications that are available to run on it.</p>
<p>In the early days of Microsoft Bill Gates and company had a brilliant long term success strategy of embracing developers and the development process to get them to target Windows for all kinds of applications.</p>
<p>That strategy has worked well. We had and CP/M and Apple computers well before the first PCs hit the street and the IBM PC with MS-DOS surpassed them all. We later got IBM’s OS2 and NextSTEP, which were technically better than the versions of Microsoft Windows that were available in their day, but did neither succeeded against Windows.</p>
<p>Even today, Apple’s OSX is a more consumer friendly Operating System than Windows,  and Linux is far more performant and stable than Windows, but yet Windows is far more popular than both OSX and Linux combined on the consumer’s desktop &#8211; why?</p>
<p>There are three reasons.</p>
<p>Application Availability. Microsoft has done a better job than Apple, or the Linux community, of exposing a set of developer technologies that make developing Windows Desktop applications easy enough for a broad variety of developers.<br />
Microsoft has grown monopolistic market share and successfully maintained it which makes Windows the largest potential market segment for application developers.<br />
They have leveraged their monopoly market share to manipulate the hardware OEM space to propagate that majority market share.<br />
<span id="more-4579"></span><br />
So, it makes sense that Microsoft would be extremely concerned about anything that helped bring rich, powerful cross platform applications to prominence in the industry. In the years I worked at Microsoft we often implemented a pseudo-embrace competitive strategy. We “embraced” the popularity of Java and then tried to subvert Java on Windows so that it would become a Windows specific technology. Apps written for Microsoft&#8217;s version of Java would not run anywhere but Windows.</p>
<p>A similar thing happened when open web development languages surpassed ASP.NET as the premier web development choices.  Microsoft did some work around PHP to make it “almost good enough”, and worked on implementations of Python and Ruby &#8211; both of which have been pretty much abandoned.</p>
<p>Microsoft is now doing the same thing with HTML5 and JavaScript. Embracing some of the standards, leveraging the popularity of their great Visual Studio Tool set and extending the standards based technology with “Windows Only” extensions.</p>
<p>Apps that run on anything other than Windows is BAD for Microsoft and choosing this development model includes betting on Windows 8 to be so good on the desktop and on Tablets / Devices that adoption of Windows 8 across all form factors will be nearly ubiquitous (making the market segment of non-Windows devices too small to be of interest to developers.)</p>
<p>Apple &amp; Microsoft combine to represent nearly complete dominance in the desktop operating system space and both see “device based computing” as huge threats to that dominance. (As evidenced by the aggressive legal actions that both have been taking in attempts to thwart the success of Android.)</p>
<p>The more that user’s find utility in internet capable computing devices that are NOT conventional personal computers, the more fragile their respective dominance becomes.</p>
<p>And it’s not just operating system developers that look to leverage the exploding apps space to maintain their historic success. Google, for example, built a pretty good apps platform that only works in their Chrome browser. Why would they care? Because their success is based on search which starts, for the vast majority of users, IN THE BROWSER. So, controlling the majority of the browser market share helps their core mission.</p>
<p>Amazon restricts what yo can install on their brilliant Kindle and Kindle Fire devices because their business is based on the digital acquisition process (Apps, Books, Video, Audio, etc)<br />
All these examples represent the very nature of business.</p>
<p>But in a perfect world, what would be best for the REST of us ?</p>
<p>The retail consumer who purchases applications and the small developer who sells them are the ones who would benefit most from an industry move to standards based applications that could be purchased once and run anywhere the purchaser wanted to run those apps.</p>
<p>It is for these reasons that the OPEN Web Community (including Mozilla) is so interested in “Standards based applications development”.  As a non-profit organization, Mozilla&#8217;s mission is to promote openness, innovation and opportunity on the web.</p>
<p>So, what might a “Web Run Time” based application look like? </p>
<p>Well, in many cases it will look like a native application.</p>
<p>It will run while the host device is connected to the internet &#8211; and when it’s not.</p>
<p>This is done in part by creating an application manifest that supplies a list of resources to the host (an HTML5 enabled browser or similar runtime) specifying what files need to be saved in the cache for use when off line.</p>
<p>Of course, this means that many web developers will need to change the way they think of web development.</p>
<p>ASP.NET, PHP, Python, Ruby, Perl (did I miss anything important ?) developers are used to writing code the executes on the SERVER with very little code on the client. Usually the JavaScript code in these applications implements some user interface behavior but no real business logic.</p>
<p>In the new “Web Run Time” model we’ll shift our architectural perspective to one who’s logic executes on the CLIENT and gets updates from the server when the server is  available. Those updates can be data, markup, or even code.</p>
<p>Those updates can be determined and delivered by any server side technology that can send data over HTTP, so the old standards like PHP and ASP.NET can be used, or we could choose a newer construct like Node.js.</p>
<p>Application specific data can be written to the cloud, as is becoming more prevalent, and can be written on the client when an internet connection is not present. The “Web Run Time (HTML5) offers several methods for local storage.</p>
<p>Local Storage<br />
Session Storage<br />
The FIleSystem API<br />
IndexedDB (Only implemented in FireFox at the moment)</p>
<p>The application itself can mange storage choices in performant ways, using practices very much like those in multi-threaded designs, by determining the availability of the internet, making I/O decisions and handling persistence execution in “Web Workers”. (Read more here: http://dev.w3.org/html5/workers/ )</p>
<p>What’s more, the combination of Web Workers and Web Sockets can go a long way to finding the performance opportunities that web developers may have struggled with in the past.</p>
<p>In the near future, HTML5 Apps will be able to detect whether they are running in the foreground or the background and select different threads of execution based on this state.</p>
<p>More and more, HTML5 implementations, and the containers in which they run, will expose standard interaction APIs for both hardware (like camera, mic, GPS) and software services (like mail, calendaring, etc).</p>
<p>All these things reduce the scope of applications that would require native access to the operating system API.</p>
<p>If HTML5 provides the user interface structure of our application and JavaScript is what we use to implement it’s imperative logic, then CSS is what we use to define the appearance of our applications.</p>
<p>Clever use of CSS3 will not only let us implement elegant UI behaviors but dynamically applying different CSS style sheets will let us taylor the same markup and code for execution on any specific form factor (Phone, Tablet, PC, big screen television.)</p>
<p>So I’m embarking on a journey n which I’ll explore Application Building in HTML5, sharing with you what I learn and what difficulties I encounter.</p>
<p>What examples of obstructions have you experienced in building real Apps with HTML5?  (Please don’t offer speculations but rather issues discovered in your own hands on development work.)<br />
</p>
<hr />
]]></content:encoded>
			<wfw:commentRss>http://www.misfitgeek.com/2011/12/building-apps-with-html5/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
	</channel>
</rss>

