<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Zero 1 Design</title>
	
	<link>http://www.zero1design.com</link>
	<description>Mostly about 1's sometimes 0's</description>
	<lastBuildDate>Fri, 17 May 2013 00:08:42 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/zero1design/jVno" /><feedburner:info uri="zero1design/jvno" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Making an iPad app with JavaScript</title>
		<link>http://feedproxy.google.com/~r/zero1design/jVno/~3/AjfbZ1mSSFQ/</link>
		<comments>http://www.zero1design.com/2013/05/16/making-an-ipad-app-with-javascript/#comments</comments>
		<pubDate>Fri, 17 May 2013 00:07:56 +0000</pubDate>
		<dc:creator>Kelly Martinez</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Computers]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.zero1design.com/?p=1378</guid>
		<description><![CDATA[So recently at work I&#8217;ve gotten tasked with making a kids/educational game for the iPad. At the time of the project inception I hadn&#8217;t had the mobile training that I received up to this point. So, being a good web developer and JavaScript aficionado I chose a JS/HTML approach. The Framework Rather than re-invent the wheel [...]]]></description>
				<content:encoded><![CDATA[<p><span>So recently at work I&#8217;ve gotten tasked with making a kids/educational game for the <span>iPad</span>.</span></p>
<p><span>At the time of the project inception I hadn&#8217;t had the mobile training that I received up to this point. So, being a good web developer and JavaScript aficionado I chose a JS/HTML approach.</span></p>
<p><span style="text-decoration: underline;"><strong>The Framework</strong></span></p>
<p>Rather than re-invent the wheel I choose to go with a nice little app called Kiosk Pro (<a href="http://www.kioskproapp.com/">http://www.kioskproapp.com/</a><span>). This app handles all the heavy lifting as far as locking users into the application and is able to run a nice little local  web server (no <span>WiFi</span> needed). We went ahead and spent the $5 and went with Pro (as we didn&#8217;t need all the remote updating capability with Plus). An additional feature is you can drop the files right into the app with the free version of DiskAid (Mac).</span></p>
<p><span style="text-decoration: underline;"><strong>The JavaScript Libraries</strong></span></p>
<p>I used the following libraries to give it some zing:</p>
<p><strong><span><span>jQuery</span></span></strong> &#8211; used this for fast development, but if performance becomes an issue I can probably switch this out for Vanilla JS</p>
<p><strong><span><span>HammerJS</span></span></strong> &#8211; (don&#8217;t hurt &#8216;em) this library is a nice library for multi-touch and gestures (think swiping and tapping) <a href="http://eightmedia.github.io/hammer.js/"><span>http://<span>eightmedia</span>.<span>github</span>.<span>io</span>/hammer.<span>js</span>/</span></a></p>
<p><strong><span><span>iOS</span> Overlay</span></strong><span> &#8211; neat little library to display <span>iOS</span> style alerts. </span><a href="http://taitems.github.io/iOS-Overlay/"><span>http://<span>taitems</span>.<span>github</span>.<span>io</span>/<span>iOS</span>-Overlay/</span></a></p>
<p><strong><span>Move.<span>js</span></span></strong><span> &#8211; for CSS3 animations. This works well to animate the <span>HammerJS</span> gestures. Swipe left and make the screen move left. If done right it can emulate native <span>iPad</span> transitions. </span><a href="http://visionmedia.github.io/move.js/"><span>http://<span>visionmedia</span>.<span>github</span>.<span>io</span>/move.<span>js</span>/</span></a></p>
<p><strong><span><span>AudioFX</span></span></strong> &#8211; JS library for sound. <a href="https://github.com/jakesgordon/javascript-audio-fx/"><span>https://<span>github</span>.com/<span>jakesgordon</span>/javascript-audio-<span>fx</span>/</span><br />
</a></p>
<p><span style="text-decoration: underline;"><strong>Final Result</strong></span></p>
<p><span>The final result is a simple kids game running totally on JavaScript and HTML without having to learn Objective-C. Admittedly, probably not as <span>performant</span>(<span>sp</span>) as native, but the user experience is perfectly fine. </span></p>
<p>I look forward to seeing how the kids interact with the game.</p>
<div id="attachment_1379" class="wp-caption alignleft" style="width: 310px"><a href="http://www.zero1design.com/wp-content/uploads/2013/05/image.png"><img class="size-medium wp-image-1379" alt="JS iPad Game" src="http://www.zero1design.com/wp-content/uploads/2013/05/image-300x202.png" width="300" height="202" /></a><p class="wp-caption-text"><span>JS <span>iPad</span> Game</span></p></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/zero1design/jVno?a=AjfbZ1mSSFQ:vQhV9mGmyK4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/zero1design/jVno?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/zero1design/jVno?a=AjfbZ1mSSFQ:vQhV9mGmyK4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/zero1design/jVno?i=AjfbZ1mSSFQ:vQhV9mGmyK4:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/zero1design/jVno/~4/AjfbZ1mSSFQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.zero1design.com/2013/05/16/making-an-ipad-app-with-javascript/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.zero1design.com/2013/05/16/making-an-ipad-app-with-javascript/</feedburner:origLink></item>
		<item>
		<title>Mind The Gap – Overcoming the “Management Gap”</title>
		<link>http://feedproxy.google.com/~r/zero1design/jVno/~3/w2itFmRYhZo/</link>
		<comments>http://www.zero1design.com/2013/04/05/mind-the-gap-overcoming-the-management-gap/#comments</comments>
		<pubDate>Fri, 05 Apr 2013 22:10:49 +0000</pubDate>
		<dc:creator>Kelly Martinez</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Computers]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://www.zero1design.com/?p=1366</guid>
		<description><![CDATA[Have you ever had to sit down and explain to management the hows/whys starting from the very very basics of how a technology works? To the point you just want to scream? It can be a frustrating, time-consuming, seemingly non-productive experience which can be compounded even more the bigger the knowledge gap (or &#8220;management gap&#8221; [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/bibliothequedetoulouse/5389383519/"><img class="alignleft size-full wp-image-1371" alt="scream" src="http://www.zero1design.com/wp-content/uploads/2013/04/scream.jpg" width="240" height="233" /></a>Have you ever had to sit down and explain to management the hows/whys starting from the very very basics of how a technology works? To the point you just want to scream?</p>
<p>It can be a frustrating, time-consuming, seemingly non-productive experience which can be compounded even more the bigger the knowledge gap (or &#8220;management gap&#8221; as I am calling it).</p>
<p>In the web world (and even the I.T. world) we casually throw out tech terms. REST, Ajax, MVC, etc. And that makes sense to each other, but how do you even approach this with management or peers who have no concept of the fundamentals, but who are the decision makers?</p>
<p>I know of many people in the field that suggest just forgetting it and look for another job. And, I get that. Maybe you don&#8217;t have the desire to address the problem and it definitely is the easier way through.</p>
<p>But, what can you do if you DO want to attempt to make it better?</p>
<p>Here are some strategies I&#8217;ve found. If you have some to add please share in the comments as well.</p>
<p><strong>Patience</strong><br />
In I.T. we deal with this one all the time. On twitter recently someone tweeted about developers: &#8220;You might know a lot, but you don&#8217;t know everything&#8221;. My addition to this is if  our minds are so great why can&#8217;t we keep our own emotions in check enough to just have some patience? If we can&#8217;t do that then maybe we aren&#8217;t as great as we think we are.</p>
<p>Admittedly I have been guilty of this many times. I have lost my cool and felt that superiority before, but I&#8217;m aware and trying to work on it. It takes time.</p>
<p><strong>Don&#8217;t Talk Down</strong><br />
This is a hard one too. Talk to them with compassion and give them some dignity. It will go a long way in fostering your working relationship.</p>
<p><strong>Guide Them</strong><br />
It might be all you can do not to pull your hair out and want to run to your office and tune everyone out. Problem is you are still all in it together and the problem will just get worse rather than better.</p>
<p>Instead offer to have them sit down with you for a step-by-step. Offer some training. Point is if you not at least attempting to inform then you&#8217;re really not doing anything to help the problem either.</p>
<p><strong>Share Their Frustration</strong><br />
Technology can be difficult and it&#8217;s changing constantly. Relate your experiences. Remember what it was like when somebody helped you when you were new. It might give you a little more compassion and will definitely make dealing with them better.</p>
<p>There is no silver bullet and I do believe there are some gaps that are too great, especially if they are unwilling or there are roadblocks such as time or just plain ability.</p>
<p>All I can say is give it a shot and maybe things will get better.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/zero1design/jVno?a=w2itFmRYhZo:HuyFdGZ3iog:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/zero1design/jVno?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/zero1design/jVno?a=w2itFmRYhZo:HuyFdGZ3iog:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/zero1design/jVno?i=w2itFmRYhZo:HuyFdGZ3iog:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/zero1design/jVno/~4/w2itFmRYhZo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.zero1design.com/2013/04/05/mind-the-gap-overcoming-the-management-gap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.zero1design.com/2013/04/05/mind-the-gap-overcoming-the-management-gap/</feedburner:origLink></item>
		<item>
		<title>Slides for Object Relational Mapping A to Z</title>
		<link>http://feedproxy.google.com/~r/zero1design/jVno/~3/vKrGCqrTFxw/</link>
		<comments>http://www.zero1design.com/2013/03/02/slides-for-object-relational-mapping-a-to-z/#comments</comments>
		<pubDate>Sat, 02 Mar 2013 17:04:23 +0000</pubDate>
		<dc:creator>Kelly Martinez</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Computers]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://www.zero1design.com/?p=1344</guid>
		<description><![CDATA[Recently did a presentation for the Application Development Virtual Chapter for the Professional Association of SQL Server. Sorry for the tardiness of this but here is a copy of the slide deck as well as the links to the source code on Github. Slides: Object Relational Mapping from A to Z NHibernate Demo Source Entity Framework [...]]]></description>
				<content:encoded><![CDATA[<p>Recently did a presentation for the Application Development Virtual Chapter for the Professional Association of SQL Server.</p>
<p>Sorry for the tardiness of this but here is a copy of the slide deck as well as the links to the source code on Github.</p>
<p>Slides: <a href="http://www.zero1design.com/wp-content/uploads/2013/03/Object-Relational-Mapping-from-A-to-Z.pptx">Object Relational Mapping from A to Z</a></p>
<p><a href="https://github.com/anthem001/NHibernateDemo">NHibernate Demo Source</a></p>
<p><a href="https://github.com/anthem001/EntityFrameworkDemo">Entity Framework Demo Source</a></p>
<p><a href="https://github.com/anthem001/MassiveORMDemo">Massive Micro-ORM Demo Source</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/zero1design/jVno?a=vKrGCqrTFxw:UIDdzhCbBVQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/zero1design/jVno?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/zero1design/jVno?a=vKrGCqrTFxw:UIDdzhCbBVQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/zero1design/jVno?i=vKrGCqrTFxw:UIDdzhCbBVQ:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/zero1design/jVno/~4/vKrGCqrTFxw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.zero1design.com/2013/03/02/slides-for-object-relational-mapping-a-to-z/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.zero1design.com/2013/03/02/slides-for-object-relational-mapping-a-to-z/</feedburner:origLink></item>
		<item>
		<title>Getting Started with Grunt JS</title>
		<link>http://feedproxy.google.com/~r/zero1design/jVno/~3/ugtYN_yfKcU/</link>
		<comments>http://www.zero1design.com/2013/02/04/getting-started-with-grunt-js/#comments</comments>
		<pubDate>Mon, 04 Feb 2013 16:39:44 +0000</pubDate>
		<dc:creator>Kelly Martinez</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Computers]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[gruntjs nodejs]]></category>

		<guid isPermaLink="false">http://www.zero1design.com/?p=1313</guid>
		<description><![CDATA[If you&#8217;re not familiar Grunt (gruntjs.com) is a &#8220;task-based command line build tool for JavaScript&#8221; along the lines of Ant or Maven for those of you from the Java world. One big reason I love this tool is no Java is required. This is already a huge plus for me since I don&#8217;t like to [...]]]></description>
				<content:encoded><![CDATA[<p>If you&#8217;re not familiar Grunt (<a href="http://gruntjs.com">gruntjs.com</a>) is a &#8220;task-based command line build tool for JavaScript&#8221; along the lines of Ant or Maven for those of you from the Java world.</p>
<p>One big reason I love this tool is no Java is required. This is already a huge plus for me since I don&#8217;t like to run Java on my actual development machine for various reasons I won&#8217;t get into (maybe another post).</p>
<p>In any case the only dependency you have is that you have to have NodeJS installed. Not a huge deal since you already have it installed right? If you don&#8217;t no worries, just head over to <a href="http://nodejs.org">nodejs.org</a> and download the latest release.</p>
<p>If you&#8217;re on a Windows machine I also recommend that you install the latest version of <a href="http://msysgit.github.com/">Git for Windows</a>. Not only do you &#8220;get Git&#8221; (get it?) which is pure awesome, but you get some of the more useful Linux commands (VIM, grep, etc). The Windows command console will probably work as well, but I have not tested it for this example. The Node installer will also install a NodeJS shortcut that also offers a Node command-line console, this will work as well.</p>
<p>Once you have Node and your command line console you should be able to open up &#8220;git bash&#8221; (if you&#8217;re using git) and then type &#8220;node&#8221;. If you see the &gt; prompt node is ready to rock (see below)</p>
<h1>NPM and Express</h1>
<p>Not going into too much detail here as NPM and in particular <a href="http://expressjs.com/">Express</a> are larger topics that I encourage you to investigate if you&#8217;re interested in developing with Node.</p>
<p>The short of it is NodeJS has this thing called NPM (the Node Package Manager) baked into it. If you&#8217;re familiar with Nuget on .NET it&#8217;s very similar. What NPM does is allow you to install additional packages to Node that other developers have made. For the sake of getting this going I am going to install a default Express project via NPM to work with for this example. (I&#8217;m really just scaffolding something for us to look at).</p>
<p>To do this I will first Ctrl+C twice to get back to the $ prompt (or you can close the Git bash window and re-open). Then I&#8217;ll install Express globally by typing npm install express -g. Don&#8217;t worry, it won&#8217;t dump files everywhere. On my machine it created a folder called node_modules in the c:\users\kelly\appdata\Roaming\npm directory.</p>
<p>Now, in your console navigate where you want this project to reside on your file system. Then you&#8217;ll type &#8220;<strong>express test</strong>&#8220;, with &#8220;test&#8221; being the directory it will house all your project files in (see below). You&#8217;ll also want to follow the on-screen instructions and &#8220;cd&#8221; into that directory and type npm install which will install all your dependencies for express and node into a folder called node_modules.</p>
<p><img alt="" src="http://www.zero1design.com/wp-content/uploads/2013/02/020213_0838_GettingStar2.png" /></p>
<h1>Installing Grunt</h1>
<p>Installing Grunt is pretty much the same as express. Just type &#8220;<strong>npm install grunt</strong>&#8221; and hit enter. I am also going to go ahead and use the –g flag so I can run the grunt keyword via the command line anywhere as well, so type: <strong>npm install grunt –g</strong> as well.<br />
The final step is to create your gruntfile. I just put mine in the root directory of the project (with package.json and app.js, etc). This gruntfile needs to be named &#8220;grunt.js&#8221;. So go ahead and create that file (empty for now).</p>
<h1>Configuring Grunt</h1>
<p>Now the first thing we want to figure out is what we want to build. I&#8217;m going to go ahead and create a source directory (test/public/javascripts/src) and then download and dump jQuery, and Underscore javascript files in there. I am also going to go ahead and add a build directory under the javascripts folder as well. This is where my production build output for javascript is going to go. You should now have something like this</p>
<p><img alt="" src="http://www.zero1design.com/wp-content/uploads/2013/02/020213_0838_GettingStar3.png" /></p>
<p>So my plan with this structure is to perform some sort of optimization to the jquery.js and underscore.js files and move them into the build directory for the application to reference. The purpose is to reduce the amount of files the browser has to transfer from the server as well as perform any other optimizations like minification (which we will do after this).</p>
<p>The first optimization I&#8217;m going to try is to concatenate them together.</p>
<h1>Concatenating with Grunt</h1>
<p>So in your grunt.js file you&#8217;ll need the following:</p>
<pre class="brush: js">module.exports = function(grunt) {

    // Project configuration.

    grunt.initConfig({

        concat:{
            dist: {
                src: [' public/javascripts/src/jquery.js', 'public/src/underscore.js'],
                dest: ' public/javascripts/build/mybuild.js'
            }
        } 
    });
// Default task.
grunt.registerTask('default', 'concat');
};</pre>
<p>Starting from the top I have a standard NodeJS &#8220;module.exports&#8221; and function wrapping the configuration. The important bits are inside the initConfig. My first task is &#8220;concat&#8221;. This keyword is known to Grunt. There are also lint, min, watch, etc to name a few others that are built in (check the grunt site for more details).<strong> &#8212; UPDATE&#8211; Grunt 0.4.0 no longer ships with built-in tasks. Plugins now exists in under the relevant grunt-contrib name. For more detail go here: http://gruntjs.com/plugins</strong></p>
<p>The concat task first expects a name for your task. I called my dist. Then it takes src and dest arguments. The source in this case being an array of files I want to combine. Note that I don&#8217;t have to explicitly define the file names. I could&#8217;ve just said: &#8216;public/javascripts/src/*.js&#8217; and Grunt would pick up all the js files in that directory. There are other regexp matches I could do as well if I were inclined. But I will keep this simple.</p>
<p>The next item I have is the destination or dest. This is the path and the file this job will create.</p>
<p>The final thing I need to do is register the task. registerTask takes two arguments. The first is the name of the task (in this case I&#8217;m calling it default) and the second is a space delimited list of tasks for that default task (it&#8217;s a lot of &#8220;tasks&#8221; I know).<br />
For this example we&#8217;re just using the baked in concat task and I already added that above.</p>
<p>Now all that&#8217;s left to do is run the build. Type &#8220;grunt&#8221; in the command window. You should get something like this (if you don&#8217;t check the error and retry):</p>
<p><img alt="" src="http://www.zero1design.com/wp-content/uploads/2013/02/020213_0838_GettingStar4.png" /></p>
<p>Magic! It created a new file in the build directory called mybuild.js with underscore and jquery mushed together.</p>
<h1>Minifying with Grunt</h1>
<p>The last thing I will show you is how to minify. Doing this is as simple as adding the built-in &#8220;min&#8221; task to the grunt.js file like this:</p>
<pre class="brush: js">module.exports = function(grunt) {

    // Project configuration.
    grunt.initConfig({

        concat: {
            dist: {
                src: ['public/javascripts/src/jquery.js', 'public/src/underscore.js'],
                dest: 'public/javascripts/build/mybuild.js'
            }
        },

        min: {
            dist: {
                src: 'public/javascripts/build/mybuild.js',
                dest: 'public/javascripts/build/mybuild.min.js'
            }
        }
    });

// Default task.
grunt.registerTask('default', 'concat min');

};</pre>
<p>Pretty much the exact same configuration as concat. Notice I also added the &#8220;min&#8221; task to my registerTasks (tasks are run in order of appearance).</p>
<p>Now run this again with &#8220;grunt&#8221;, it will take a bit longer this time as it&#8217;s using the Uglify minifier to minify your concatenated file. You should now have these files with mybuild.min.js being the concatenated and minified version.</p>
<p><img alt="" src="http://www.zero1design.com/wp-content/uploads/2013/02/020213_0838_GettingStar5.png" /></p>
<h1>Final Thoughts</h1>
<p>There is much more you can do with Grunt not only with tasks out of the box, but with packages people have added via NPM. This is a very cool tool that takes the hassle out of having hand craft high performance javascript.<br />
Just grunt!</p>
<p>&nbsp;</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/zero1design/jVno?a=ugtYN_yfKcU:zxRbZ4lfh4g:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/zero1design/jVno?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/zero1design/jVno?a=ugtYN_yfKcU:zxRbZ4lfh4g:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/zero1design/jVno?i=ugtYN_yfKcU:zxRbZ4lfh4g:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/zero1design/jVno/~4/ugtYN_yfKcU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.zero1design.com/2013/02/04/getting-started-with-grunt-js/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.zero1design.com/2013/02/04/getting-started-with-grunt-js/</feedburner:origLink></item>
		<item>
		<title>Why I Love/Hate NoSQL and RDBMS Databases (not a versus post)</title>
		<link>http://feedproxy.google.com/~r/zero1design/jVno/~3/DrAjjGvrkp0/</link>
		<comments>http://www.zero1design.com/2013/01/21/why-i-lovehate-nosql-and-rdbms-databases-not-a-versus-post/#comments</comments>
		<pubDate>Mon, 21 Jan 2013 16:01:02 +0000</pubDate>
		<dc:creator>Kelly Martinez</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Computers]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[databases]]></category>
		<category><![CDATA[nosql]]></category>

		<guid isPermaLink="false">http://www.zero1design.com/?p=1296</guid>
		<description><![CDATA[I was browsing around last weekend and ran into a post on a fairly big tech site about how the databases you’re probably using right now “aren’t the best”. Then it went on to explain how great and cutting edge NoSQL databases are. Another veiled “NoSQL vs. RDBMS” argument really. Now I kind of got [...]]]></description>
				<content:encoded><![CDATA[<p>I was browsing around last weekend and ran into a post on a fairly big tech site about how the databases you’re probably using right now “aren’t the best”. Then it went on to explain how great and cutting edge NoSQL databases are. Another veiled “NoSQL vs. RDBMS” argument really. Now I kind of got into it a bit with the author in the comments, and for the sake of tact I’m not going to post the link here.</p>
<p>However, I felt like another article needed to be written to offset the negativity. So here it is….</p>
<p>First. Let’s get a couple things straight here. I’m not a fanboy. I do drink the Microsoft Kool-Aid© now and then, but I also have partaken in the Linux “tea” and even the Unix…umm…let’s call it an “aged vinegary wine” (kidding). My interests are varied but I always try and get to the meat of where my software requirements, budget, and future maintenance aspects converge. This, in my view, is what any I.T. person worth his/her salt does.</p>
<p>Personally I don’t see a problem being a “fan” of SQL Server/Oracle in the same breath as MongoDB/Cassandra.</p>
<p>So what is the fuss? Why does this have to be a religious debate? There are certain facts in play. Yes, a NoSQL database in all likelihood is going to outperform a RDBMS database, probably by a factor of something. But can you do OLAP cubes with NoSQL? Does it safeguard its transactions as well? Probably not without hampering the performance (which is the whole point right?)</p>
<p>Here are some back-of-napkin reasons I love/hate both:</p>
<p><strong>Why I love RDBMS:</strong></p>
<ul>
<li>Rock solid (it’s ACID man)</li>
<li>Proven and established</li>
<li>Incredible toolsets (reporting, analysis, BI, etc etc)</li>
<li>Ability to pull bits of data together to make something meaningful (JOINS, OLAP)</li>
<li>Data types (protecting users and programmers from themselves)</li>
<li>Set based which can make working with large datasets easier.</li>
</ul>
<p><strong>This I Don&#8217;t Like About RDBMS:</strong></p>
<ul>
<li>Expensive (if you have to scale at all)</li>
<li>Overkill for small databases</li>
<li>Bulky</li>
<li>User manual can be prohibitive (mountains of information to learn).</li>
<li>Fear of not having a firewall in front of it (exploits)</li>
</ul>
<p><strong>Why I love NoSQL:</strong></p>
<ul>
<li>JSON (simple, easy, and JavaScript/web ready)</li>
<li>Cheap (a couple Linux servers and you&#8217;re good to go)</li>
<li>Fast (really fast)</li>
<li>Super scale-able</li>
<li>Don’t have to sully my big RDBMS with stupid tiny databases (think online form capture)</li>
<li>Not easily hacked (it can be done though).</li>
</ul>
<p><strong>Things I Don&#8217;t Like About NoSQL:</strong></p>
<ul>
<li>You typically have to implement everything yourself (toolsets are limited, so far)</li>
<li>Can dig yourself in a hole really quick if you architect your database incorrectly (sharding)</li>
<li>Have to cobble the data to get meaningful results (reporting)</li>
<li>Can be hard to pick which flavor to use for newbies.</li>
<li>Syntax can be hard to visualize</li>
</ul>
<p>So after all that can you start to see your requirements fitting somewhere?</p>
<p>I encourage you to investigate the pros/cons and make a smart choice, not hop on a technology because its popular or &#8220;we&#8217;ve always done it that way&#8221;.</p>
<p>Leave a comment if you totally disagree (or agree), I&#8217;d love to hear it.</p>
<p>&nbsp;</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/zero1design/jVno?a=DrAjjGvrkp0:i3Ww8s45S0U:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/zero1design/jVno?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/zero1design/jVno?a=DrAjjGvrkp0:i3Ww8s45S0U:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/zero1design/jVno?i=DrAjjGvrkp0:i3Ww8s45S0U:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/zero1design/jVno/~4/DrAjjGvrkp0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.zero1design.com/2013/01/21/why-i-lovehate-nosql-and-rdbms-databases-not-a-versus-post/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://www.zero1design.com/2013/01/21/why-i-lovehate-nosql-and-rdbms-databases-not-a-versus-post/</feedburner:origLink></item>
	</channel>
</rss>
