<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Neon Rocket</title>
	<atom:link href="http://www.neonrocket.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.neonrocket.com</link>
	<description>Even Neo is Impressed</description>
	<lastBuildDate>Mon, 06 May 2013 16:22:13 +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>
		<item>
		<title>The law of Futility of Avoidance</title>
		<link>http://www.neonrocket.com/2013/05/the-law-of-futility-of-avoidance/</link>
		<comments>http://www.neonrocket.com/2013/05/the-law-of-futility-of-avoidance/#comments</comments>
		<pubDate>Mon, 06 May 2013 16:22:13 +0000</pubDate>
		<dc:creator>Bryan</dc:creator>
				<category><![CDATA[Developer Hell]]></category>
		<category><![CDATA[inevitability]]></category>
		<category><![CDATA[justice]]></category>
		<category><![CDATA[spaghetti code]]></category>
		<category><![CDATA[support]]></category>
		<category><![CDATA[unmaintainable mess]]></category>

		<guid isPermaLink="false">http://www.neonrocket.com/?p=269</guid>
		<description><![CDATA[<p>Given enough time, you will end up becoming responsible for supporting and maintaining the very system you&#8217;re the most desperate to avoid.</p><p>The post <a href="http://www.neonrocket.com/2013/05/the-law-of-futility-of-avoidance/">The law of Futility of Avoidance</a> appeared first on <a href="http://www.neonrocket.com">Neon Rocket</a>.</p>]]></description>
				<content:encoded><![CDATA[<div class="wp-caption alignleft" style="width: 162px"><a href="http://www.flickr.com/photos/60877182@N00/5020598359" target="_blank"><img class="zemanta-img-inserted zemanta-img-configured" title="Cisco Spaghetti" alt="Cisco Spaghetti" src="http://www.neonrocket.com/wp-content/uploads/zemanta/5020598359_c841d679f9_m.jpg" width="152" height="240" /></a><p class="wp-caption-text">(Photo: Christopher Macsurak)</p></div>
<p>Given enough time, you will end up becoming responsible for supporting and maintaining the very system you&#8217;re the most desperate to avoid.</p>
<div class="wp-caption alignright" style="width: 250px"><a href="http://www.flickr.com/photos/95368991@N00/413445505" target="_blank"><img class="zemanta-img-inserted zemanta-img-configured" title="Day 43" alt="Day 43" src="http://www.neonrocket.com/wp-content/uploads/zemanta/413445505_d418457dcf.jpg" width="240" /></a><p class="wp-caption-text">(Photo: craig1black)</p></div>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/?px"><img class="zemanta-pixie-img" style="border: none; float: right;" alt="Enhanced by Zemanta" src="http://img.zemanta.com/zemified_e.png?x-id=864ed61e-28e1-46d5-aa4f-4ae087e582bc" /></a></div>
<p>The post <a href="http://www.neonrocket.com/2013/05/the-law-of-futility-of-avoidance/">The law of Futility of Avoidance</a> appeared first on <a href="http://www.neonrocket.com">Neon Rocket</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.neonrocket.com/2013/05/the-law-of-futility-of-avoidance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing Internet Explorer on Mac</title>
		<link>http://www.neonrocket.com/2013/02/installing-ie7-8-and-9-on-mac/</link>
		<comments>http://www.neonrocket.com/2013/02/installing-ie7-8-and-9-on-mac/#comments</comments>
		<pubDate>Wed, 06 Feb 2013 19:14:54 +0000</pubDate>
		<dc:creator>Bryan</dc:creator>
				<category><![CDATA[tools]]></category>
		<category><![CDATA[ie7]]></category>
		<category><![CDATA[ie8]]></category>
		<category><![CDATA[ie9]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[virtualbox]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.neonrocket.com/?p=244</guid>
		<description><![CDATA[<p>When you need to develop/design a solution for the majority of corporate users, you will need to test it on Internet Explorer. If you have a Mac, setting this up on your machine is easy. The original source for this information was OSXDaily. I cleaned it up and added additional information. Intended Audience If you&#8217;re unfamiliar with using the terminal, these instructions &#8230;<span class="more-link"><a href="http://www.neonrocket.com/2013/02/installing-ie7-8-and-9-on-mac/"><span class="button">Continue reading &#8594;</span></a></span></p><p>The post <a href="http://www.neonrocket.com/2013/02/installing-ie7-8-and-9-on-mac/">Installing Internet Explorer on Mac</a> appeared first on <a href="http://www.neonrocket.com">Neon Rocket</a>.</p>]]></description>
				<content:encoded><![CDATA[<p><a href="http://deleket.deviantart.com/"><img class=" wp-image-248 alignleft" alt="IE Logo" src="http://www.neonrocket.com/wp-content/uploads/zemanta/Internet-Explorer.png" width="168" height="168" /></a>When you need to develop/design a solution for the majority of corporate users, you will need to test it on Internet Explorer. If you have a Mac, setting this up on your machine is easy.</p>
<p>The original source for this information was <a href="http://osxdaily.com/2011/09/04/internet-explorer-for-mac-ie7-ie8-ie-9-free/">OSXDaily</a>. I cleaned it up and added additional information.</p>
<h2>Intended Audience</h2>
<p><img class=" wp-image-247  alignright" alt="Terminal" src="http://www.neonrocket.com/wp-content/uploads/zemanta/mac_terminal.png" width="95" height="121" />If you&#8217;re unfamiliar with using the terminal, <strong>these instructions will not help you</strong>. The point is to allow you to install Internet Explorer on Mac for the purposes of testing and developing web applications and sites. Ideally, you are one of the following:</p>
<ul>
<li>Web Developer</li>
<li>Web Designer</li>
<li>QA Tester</li>
</ul>
<p>If you plan on running Internet Explorer for other purposes (such as working with an IE-only site), then this is probably not the best solution for your needs.</p>
<h2>Required software</h2>
<ol>
<li>Oracle <a href="https://www.virtualbox.org/wiki/Downloads">VirtualBox</a></li>
<li>curl (from Mac Ports or other)</li>
</ol>
<h2>Procedure</h2>
<p><em>Be aware</em>, this process can take HOURS to do, may crash in the middle and cause you to start over, take up inordinate amounts of disk space, etc.</p>
<h3>Install IE7 Only</h3>
<p><code>curl -s https://raw.github.com/xdissent/ievms/master/ievms.sh | IEVMS_VERSIONS="7" bash</code></p>
<h3>Install IE8 Only</h3>
<p><code>curl -s https://raw.github.com/xdissent/ievms/master/ievms.sh | IEVMS_VERSIONS="8" bash</code></p>
<h3>Install IE9 Only</h3>
<p><code>curl -s https://raw.github.com/xdissent/ievms/master/ievms.sh | IEVMS_VERSIONS="9" bash</code></p>
<h3>Install IE7, 8 and 9</h3>
<p><code>curl -s https://raw.github.com/xdissent/ievms/master/ievms.sh | bash</code></p>
<h2>Notes</h2>
<p>Once you have the virtual machines installed, fire them up, set up the Windows instance (install drivers, etc.), <strong>then take a snapshot</strong>. This is the one you will always use.</p>
<p>When you get a &#8216;you must activate&#8217; notice, open a Windows cmd line and run</p>
<pre>slmgr –rearm</pre>
<p>You can rearm two times before it won&#8217;t work anymore. At that point, roll back to your snapshot and you can rearm again when you get the message. Obviously, when you roll back to your snapshot all changes will be discarded (that&#8217;s the point), so make sure you save any data on your host&#8217;s drive.</p>
<h2>FAQ</h2>
<p><strong>Q.</strong> Where is the command line on my Mac?<br />
<strong>A.</strong> It is not recommended that you use these instructions; instead try another solution such as <a href="http://www.apple.com/findouthow/mac/#windowsmac">Apple Boot Camp</a>.</p>
<p><strong>Q.</strong> How do I install/uninstall Oracle Virtual Box?<br />
<strong>A.</strong> You can try looking for information on the Oracle Virtual Box website or contact the <a href="http://www.apple.com/retail/geniusbar/">Genius Bar at your local Apple Store</a> for assistance.</p>
<p><strong>Q.</strong> Where are the windows snapshots stored?<br />
<strong>A.</strong> In <code>~/.ievms/</code></p>
<p><strong>Q.</strong> The download stalls or crashes.<br />
<strong>A.</strong> If it stalls, check your internet connection; you may have to restart the install. In the event of a crash, examine the error message to determine the cause of the problem.</p>
<p><strong>Q.</strong> Can you just install it for me?<br />
<strong>A.</strong> Sorry, no.</p>
<p>The post <a href="http://www.neonrocket.com/2013/02/installing-ie7-8-and-9-on-mac/">Installing Internet Explorer on Mac</a> appeared first on <a href="http://www.neonrocket.com">Neon Rocket</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.neonrocket.com/2013/02/installing-ie7-8-and-9-on-mac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t hate your users</title>
		<link>http://www.neonrocket.com/2013/01/dont-hate-your-users/</link>
		<comments>http://www.neonrocket.com/2013/01/dont-hate-your-users/#comments</comments>
		<pubDate>Mon, 28 Jan 2013 16:14:17 +0000</pubDate>
		<dc:creator>Bryan</dc:creator>
				<category><![CDATA[web development]]></category>
		<category><![CDATA[anti-pattern]]></category>
		<category><![CDATA[user-hostile]]></category>
		<category><![CDATA[worst practices]]></category>
		<category><![CDATA[wtf]]></category>

		<guid isPermaLink="false">http://www.neonrocket.com/?p=212</guid>
		<description><![CDATA[<p>If you want to enable your users to do something, such as create an account on your system, DO NOT MAKE IT IMPOSSIBLY HARD. Case in point: If algebra is too hard, just refresh and you&#8217;ll see something else. Woah, better refresh. You know what this does? It not only keeps out any bots, but turns a normal human into something &#8230;<span class="more-link"><a href="http://www.neonrocket.com/2013/01/dont-hate-your-users/"><span class="button">Continue reading &#8594;</span></a></span></p><p>The post <a href="http://www.neonrocket.com/2013/01/dont-hate-your-users/">Don&#8217;t hate your users</a> appeared first on <a href="http://www.neonrocket.com">Neon Rocket</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>If you want to enable your users to do something, such as create an account on your system, <strong>DO NOT MAKE IT IMPOSSIBLY HARD</strong>.</p>
<p><a href="http://random.irb.hr/signup.php">Case in point</a>:</p>
<div id="attachment_213" class="wp-caption alignnone" style="width: 435px"><a href="http://www.neonrocket.com/wp-content/uploads/zemanta/i_hate_users_ui_02.png"><img class="size-full wp-image-213" alt="This image will make you cry" src="http://www.neonrocket.com/wp-content/uploads/zemanta/i_hate_users_ui_02.png" width="425" height="604" /></a><p class="wp-caption-text">Go ahead and register, I dare you</p></div>
<p>If algebra is too hard, just refresh and you&#8217;ll see something else.</p>
<div id="attachment_214" class="wp-caption alignnone" style="width: 425px"><a href="http://www.neonrocket.com/wp-content/uploads/zemanta/i_hate_users_ui_12.png"><img class="size-full wp-image-214" alt="Another scary image" src="http://www.neonrocket.com/wp-content/uploads/zemanta/i_hate_users_ui_12.png" width="415" height="158" /></a><p class="wp-caption-text">I laugh at your feeble Calculus skills!</p></div>
<p>Woah, better refresh.</p>
<div id="attachment_216" class="wp-caption alignnone" style="width: 426px"><a href="http://www.neonrocket.com/wp-content/uploads/zemanta/i_hate_users_ui_32.png"><img class="size-full wp-image-216" alt="You can't escape the Maths" src="http://www.neonrocket.com/wp-content/uploads/zemanta/i_hate_users_ui_32.png" width="416" height="157" /></a><p class="wp-caption-text">Make your time</p></div>
<p>You know what this does? It not only keeps out any bots, but turns a normal human into something else:</p>
<div id="attachment_223" class="wp-caption alignnone" style="width: 441px"><a href="http://www.neonrocket.com/wp-content/uploads/zemanta/rageface_apoplectic2.jpg"><img class=" wp-image-223 " alt="rageface" src="http://www.neonrocket.com/wp-content/uploads/zemanta/rageface_apoplectic2.jpg" width="431" height="407" /></a><p class="wp-caption-text">Apoplectic: overcome with anger; extremely indignant.</p></div>
<p>With a zillion other websites out there, are you sure yours is compelling enough or contains such rare information that people will jump the gorge to get to it?</p>
<p><iframe width="660" height="495" src="http://www.youtube.com/embed/9XGWsQbyOwM?start=8&#038;feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>The post <a href="http://www.neonrocket.com/2013/01/dont-hate-your-users/">Don&#8217;t hate your users</a> appeared first on <a href="http://www.neonrocket.com">Neon Rocket</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.neonrocket.com/2013/01/dont-hate-your-users/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to ask for help the wrong way</title>
		<link>http://www.neonrocket.com/2013/01/how-to-ask-for-help-the-wrong-way/</link>
		<comments>http://www.neonrocket.com/2013/01/how-to-ask-for-help-the-wrong-way/#comments</comments>
		<pubDate>Wed, 23 Jan 2013 19:55:11 +0000</pubDate>
		<dc:creator>Bryan</dc:creator>
				<category><![CDATA[Skills]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[knowledge]]></category>
		<category><![CDATA[questions]]></category>
		<category><![CDATA[worst practices]]></category>

		<guid isPermaLink="false">http://www.neonrocket.com/?p=201</guid>
		<description><![CDATA[<p>When submitting  bug reports, it is a good idea to Realize that you&#8217;re asking for help from people who (usually) have day jobs, and Expend at least some amount of effort to show you&#8217;re not expecting someone else to do all the work. With that in mind, let me introduce to you the Best Bug Report Comment, Ever† First the bug &#8230;<span class="more-link"><a href="http://www.neonrocket.com/2013/01/how-to-ask-for-help-the-wrong-way/"><span class="button">Continue reading &#8594;</span></a></span></p><p>The post <a href="http://www.neonrocket.com/2013/01/how-to-ask-for-help-the-wrong-way/">How to ask for help the wrong way</a> appeared first on <a href="http://www.neonrocket.com">Neon Rocket</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>When submitting  bug reports, it is a good idea to</p>
<p><a href="http://commons.wikipedia.org/wiki/File:Windows_Blue_Screen_on_room_full_of_computers.JPG" target="_blank"><img class="zemanta-img-inserted zemanta-img-configured alignright" title="Blue screen of death" alt="A room full of computers all showing the BSOD" src="http://www.neonrocket.com/wp-content/uploads/zemanta/300px-Windows_Blue_Screen_on_room_full_of_computers.jpg" width="300" height="225" /></a></p>
<ol>
<li>Realize that you&#8217;re <em>asking for help</em> from people who (usually) have day jobs, and</li>
<li>Expend at least some amount of effort to show you&#8217;re not expecting someone else to do all the work.</li>
</ol>
<p>With that in mind, let me introduce to you the <a href="https://bugs.php.net/bug.php?id=14588">Best Bug Report Comment</a>, Ever<sup><a href="#ever">†</a></sup></p>
<p>First the bug report:</p>
<p>[snip]</p>
<blockquote><p>I don&#8217;t have the exact errors to post because I deleted my compile log, but they are the same errors you get if you don&#8217;t have the bzip2 development libraries installed, which of course I do in /www</p></blockquote>
<p>[snip]</p>
<p>Then someone helpful asks for more information.</p>
<blockquote><p>Please recompile so that you can tell us te exact errors.</p>
<p>Derick</p></blockquote>
<p>And then, GOLD:</p>
<blockquote><p>The php developer who added/maintains bzip2 support will know what I am talking about. <span style="color: #ff0000;">I am not going to compile when I know this! It would be a waste of my time.</span></p></blockquote>
<hr />
<p>Wow.</p>
<p>Now, not to worry; a few minutes later the submitter saw the error of his ways, compiled his code, posted the exact error message and got help.</p>
<p>Learning how to ask questions is a skill. Mastering this skill can only help, because everyone (even the Super-cool techno guru) has to ask for help at some point, so why not be as effective as possible?</p>
<ul>
<li><a href="http://whathaveyoutried.com">whathaveyoutried.com</a></li>
<li><a href="http://www.catb.org/esr/faqs/smart-questions.html">How to ask questions the smart way</a></li>
</ul>
<p><sup>†</sup> <a name="ever">Until I find another one.</a> That place is GOLD!</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/?px"><img class="zemanta-pixie-img" style="border: none; float: right;" alt="Enhanced by Zemanta" src="http://img.zemanta.com/zemified_e.png?x-id=931aef33-2413-40d5-8561-159bca8be367" /></a></div>
<p>The post <a href="http://www.neonrocket.com/2013/01/how-to-ask-for-help-the-wrong-way/">How to ask for help the wrong way</a> appeared first on <a href="http://www.neonrocket.com">Neon Rocket</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.neonrocket.com/2013/01/how-to-ask-for-help-the-wrong-way/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Decoupling presentation from content</title>
		<link>http://www.neonrocket.com/2013/01/decoupling-presentation-from-content/</link>
		<comments>http://www.neonrocket.com/2013/01/decoupling-presentation-from-content/#comments</comments>
		<pubDate>Fri, 04 Jan 2013 02:49:08 +0000</pubDate>
		<dc:creator>Bryan</dc:creator>
				<category><![CDATA[web development]]></category>
		<category><![CDATA[anti-pattern]]></category>
		<category><![CDATA[cleanup]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[technique]]></category>

		<guid isPermaLink="false">http://www.neonrocket.com/?p=138</guid>
		<description><![CDATA[<p>I recently ran across the anti-pattern of what I see as a common problem amongst designers and developers: coupled presentation and content. I&#8217;ve found that decoupling the presentation from the content makes things much easier to write, maintain and expand. Here&#8217;s a simple example: HTML &#60;section&#62; &#60;div class="margin-top-10"&#62;Lorem Ipsum&#60;/div&#62; &#60;/section&#62; CSS .margin-top-10 { margin-top: 10px }; .margin-top-20 { margin-top: 20px }; (etc) &#8230;<span class="more-link"><a href="http://www.neonrocket.com/2013/01/decoupling-presentation-from-content/"><span class="button">Continue reading &#8594;</span></a></span></p><p>The post <a href="http://www.neonrocket.com/2013/01/decoupling-presentation-from-content/">Decoupling presentation from content</a> appeared first on <a href="http://www.neonrocket.com">Neon Rocket</a>.</p>]]></description>
				<content:encoded><![CDATA[<div class="wp-caption alignright" style="width: 310px"><a href="http://commons.wikipedia.org/wiki/File:Css_box_model.svg"><img class="zemanta-img-inserted zemanta-img-configured" title="Box model in CSS" alt="Box model in CSS" src="http://www.neonrocket.com/wp-content/uploads/zemanta/300px-Css_box_model.svg_.png" width="300" height="173" /></a><p class="wp-caption-text">Box model in CSS (credit: Wikipedia)</p></div>
<p>I recently ran across the <a class="zem_slink" title="Anti-pattern" href="http://en.wikipedia.org/wiki/Anti-pattern" rel="wikipedia">anti-pattern</a> of what I see as a common problem amongst designers and developers: coupled presentation and content. I&#8217;ve found that decoupling the presentation from the content makes things much easier to write, maintain and expand.</p>
<p>Here&#8217;s a simple example:</p>
<h2>HTML</h2>
<pre>&lt;section&gt;
    &lt;div class="margin-top-10"&gt;Lorem Ipsum&lt;/div&gt;
&lt;/section&gt;</pre>
<h2>CSS</h2>
<pre>.margin-top-10 { margin-top: 10px };
.margin-top-20 { margin-top: 20px };
(etc)</pre>
<p>Take a look at what is going on here: we&#8217;re adding a 10px margin to the top of the div. <strong>DON&#8217;T DO THIS. </strong>You want your class names to be contextual, not descriptive of the style.</p>
<hr />
<h2>Rule of thumb</h2>
<blockquote><p>To change the layout, you should only have to edit the CSS, <em>not</em> the HTML.</p></blockquote>
<p>Here&#8217;s where our anti-pattern falls down and will cause grief.</p>
<ol>
<li><span style="line-height: 16px;">You decide to adjust the positioning of the section. You can:</span>
<ul>
<li>Edit the CSS, changing the class&#8217;s margin value and breaking every other element that uses that class.</li>
<li>Edit the HTML create a new class, then edit its CSS class definition. If you have to experiment with different margin values, you&#8217;ll need a LOT of classes. &#8220;Will 14px work or 15px? What about .25em? Argh!&#8221;</li>
</ul>
</li>
<li>You can&#8217;t have too many attributes in each class, because they will have unintended consequences for the other elements that are using them. Add a red border to one class because you need a border for a specific element, now you have red borders on ALL the elements that share that class. So, you&#8217;ll have to have many single- (or few-) attribute values, and include all of the necessary ones on the required HTML elements.</li>
<li>The <a href="http://www.codinghorror.com/blog/2008/06/coding-for-violent-psychopaths.html">violent psychopath maintenance programmer</a> (who knows where you live) will <strong>kill you in your sleep.</strong> You have made her job <em>insanely hard</em><strong> </strong>by turning this:</li>
</ol>
<pre>&lt;div class="margin5 blueborder mediumwidth floatingleft" ...</pre>
<p>into this</p>
<pre>&lt;div style="margin:5px;border:3px blue outset;float:left;width:75%" ...</pre>
<p>for no good reason.</p>
<h2>The Cure</h2>
<p>Think about the element in terms of content or a functional space. What is it and what does it do? In our example above, let&#8217;s assume it is the <a href="http://www.merriam-webster.com/dictionary/lede">lede section</a> of an article. Then we would do:</p>
<h2>HTML</h2>
<pre>&lt;section&gt;
    &lt;div class="lede"&gt;Lorem Ipsum&lt;/div&gt;
&lt;/section&gt;</pre>
<h2>CSS</h2>
<pre>.lede { 
  margin-top: 10px;
  border-bottom: 2px #9fe2f9 outset;
  float: right;
  position: relative;
  width: ...
};</pre>
<p>By decoupling the content (div) from the presentation (style-dependent class), we are free  to adjust the style of that element by making whatever changes to the CSS and <em>leaving the HTML alone</em>.</p>
<p>&#8220;But,&#8221; you shriek, &#8220;I have common elements for everything! Rounded corners! Gradients! (except IE&#8230;) Et cetera!&#8221;</p>
<p><a href="http://en.wikipedia.org/wiki/File:Sass_Logo.gif" target="_blank"><img class="zemanta-img-inserted zemanta-img-configured" title="Sass (stylesheet language)" alt="Sass (stylesheet language)" src="http://www.neonrocket.com/wp-content/uploads/zemanta/75px-Sass_Logo.gif" width="75" height="82" /></a></p>
<p>For this, we will turn to our trusty companions <a href="http://lesscss.org/">Less</a> and/or <a href="http://sass-lang.com/">Sass</a> in a future post.</p>
<h6 class="zemanta-related-title" style="font-size: 1em;">Related articles</h6>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://css.dzone.com/articles/css-centric-development-and">CSS-centric Development and Anti-Patterns</a> (css.dzone.com)</li>
<li class="zemanta-article-ul-li"><a href="http://www.lispcast.com/cascading-separation-abstraction">Separation, Abstraction, and Cascading in CSS</a> (lispcast.com)</li>
</ul>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/?px"><img class="zemanta-pixie-img" style="border: none; float: right;" alt="Enhanced by Zemanta" src="http://img.zemanta.com/zemified_e.png?x-id=22e516cb-95f0-419d-91fa-dcf6bc9d64dd" /></a></div>
<p>The post <a href="http://www.neonrocket.com/2013/01/decoupling-presentation-from-content/">Decoupling presentation from content</a> appeared first on <a href="http://www.neonrocket.com">Neon Rocket</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.neonrocket.com/2013/01/decoupling-presentation-from-content/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Iterations in Less</title>
		<link>http://www.neonrocket.com/2012/12/iterations-in-less/</link>
		<comments>http://www.neonrocket.com/2012/12/iterations-in-less/#comments</comments>
		<pubDate>Tue, 11 Dec 2012 22:54:34 +0000</pubDate>
		<dc:creator>Bryan</dc:creator>
				<category><![CDATA[programming magic]]></category>
		<category><![CDATA[iterations]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[less]]></category>

		<guid isPermaLink="false">http://www.neonrocket.com/?p=127</guid>
		<description><![CDATA[<p>Part of the beauty of Less and other CSS &#8216;compilers&#8217; is to enable the author to automate tedious functions that normally must be coded by hand. Suppose you needed several classes that specified padding/margins: .mRight50{margin-right:50px} .mLeft50{margin-left:50px} .pRight50{padding-right:50px} .pLeft50{padding-left:50px} .mRight25{margin-right:25px} .mLeft25{margin-left:25px} .pRight25{padding-right:25px} .pLeft25{padding-left:25px} No big deal, right? It wouldn&#8217;t take that long to type in; just cut and paste a bit. &#8230;<span class="more-link"><a href="http://www.neonrocket.com/2012/12/iterations-in-less/"><span class="button">Continue reading &#8594;</span></a></span></p><p>The post <a href="http://www.neonrocket.com/2012/12/iterations-in-less/">Iterations in Less</a> appeared first on <a href="http://www.neonrocket.com">Neon Rocket</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Part of the beauty of <a href="http://lesscss.org/">Less</a> and other CSS &#8216;compilers&#8217; is to enable the author to automate tedious functions that normally must be coded by hand.</p>
<div class="wp-caption alignright" style="width: 250px"><a href="http://www.flickr.com/photos/49503093369@N01/6158850" target="_blank"><img class="zemanta-img-inserted zemanta-img-configured" title="Cut Copy Paste" alt="Cut Copy Paste" src="http://www.neonrocket.com/wp-content/uploads/zemanta/6158850_392fe31331_m.jpg" width="240" height="180" /></a><p class="wp-caption-text">Cut Copy Paste (Photo credit: arthit)</p></div>
<p>Suppose you needed several classes that specified padding/margins:</p>
<pre>.mRight50{margin-right:50px}
.mLeft50{margin-left:50px}
.pRight50{padding-right:50px}
.pLeft50{padding-left:50px}
.mRight25{margin-right:25px}
.mLeft25{margin-left:25px}
.pRight25{padding-right:25px}
.pLeft25{padding-left:25px}</pre>
<p>No big deal, right? It wouldn&#8217;t take that long to type in; just cut and paste a bit.</p>
<p>Well, what if you needed them from 0-100 by 5s? (Never mind <strong>WHY</strong> you&#8217;d want to do this; this is a simple example.)</p>
<pre>.mRight100{margin-right:100px}
.mLeft100{margin-left:100px}
.pRight100{padding-right:100px}
.pLeft100{padding-left:100px}
.mRight95{margin-right:95px}
.mLeft95{margin-left:95px}
.pRight95{padding-right:95px}
.pLeft95{padding-left:95px}
.mRight90{margin-right:90px}
.mLeft90{margin-left:90px}
.pRight90{padding-right:90px}
.pLeft90{padding-left:90px}
.mRight85{margin-right:85px}
.mLeft85{margin-left:85px}
.pRight85{padding-right:85px}
.pLeft85{padding-left:85px}
.mRight80{margin-right:80px}
.mLeft80{margin-left:80px}
.pRight80{padding-right:80px}
.pLeft80{padding-left:80px}
.mRight75{margin-right:75px}
.mLeft75{margin-left:75px}
.pRight75{padding-right:75px}
.pLeft75{padding-left:75px}
.mRight70{margin-right:70px}
.mLeft70{margin-left:70px}
.pRight70{padding-right:70px}
.pLeft70{padding-left:70px}
.mRight65{margin-right:65px}
.mLeft65{margin-left:65px}
.pRight65{padding-right:65px}
.pLeft65{padding-left:65px}
.mRight60{margin-right:60px}
.mLeft60{margin-left:60px}
.pRight60{padding-right:60px}
.pLeft60{padding-left:60px}
.mRight55{margin-right:55px}
.mLeft55{margin-left:55px}
.pRight55{padding-right:55px}
.pLeft55{padding-left:55px}
...</pre>
<p>Ugh.</p>
<p>There&#8217;s a better way:</p>
<hr />
<pre>@steps: 100;

// Main Loop
.sidesX( @index ) when ( @index &gt; 0 ) {
 (~".mRight@{index}") { .mRightX(@index); }
 (~".mLeft@{index}") { .mLeftX(@index); }
 (~".pRight@{index}") { .pRightX(@index); }
 (~".pLeft@{index}") { .pLeftX(@index); }

 .sidesX(@index - 5);
}

// End iteration at index zero
.sidesX( 0 ) {}&lt;

// Individual class rendering
.mRightX( @offsetsize ) {
  margin-right: (~"@{offsetsize}px");
}
.mLeftX( @offsetsize ) {
 margin-left: (~"@{offsetsize}px");
}
.pRightX( @offsetsize ) {
 padding-right: (~"@{offsetsize}px");
}
.pLeftX( @offsetsize ) {
 padding-left: (~"@{offsetsize}px");
}

// Generate the CSS
.sidesX( @steps );</pre>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/?px"><img class="zemanta-pixie-img" style="border: none; float: right;" alt="Enhanced by Zemanta" src="http://img.zemanta.com/zemified_e.png?x-id=0b119170-5547-46b8-bbb2-7b4171da8a22" /></a></div>
<p>The post <a href="http://www.neonrocket.com/2012/12/iterations-in-less/">Iterations in Less</a> appeared first on <a href="http://www.neonrocket.com">Neon Rocket</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.neonrocket.com/2012/12/iterations-in-less/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flashback: Skip Intro for flash introductions</title>
		<link>http://www.neonrocket.com/2012/10/flash-back-skip-intro/</link>
		<comments>http://www.neonrocket.com/2012/10/flash-back-skip-intro/#comments</comments>
		<pubDate>Tue, 02 Oct 2012 19:51:08 +0000</pubDate>
		<dc:creator>Bryan</dc:creator>
				<category><![CDATA[web development]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[obsolete]]></category>
		<category><![CDATA[Web Design and Development]]></category>

		<guid isPermaLink="false">http://www.neonrocket.com/?p=97</guid>
		<description><![CDATA[<p>Remember when flash introduction pages were all the rage? They were &#8216;cool&#8217; from the web designer&#8216;s standpoint, but utterly annoying and off-putting to the visitor. Fortunately, most people figured out that people visited their site for the content, not the snappy graphics (unless it was a gallery site), and certainly not for the mandatory intro pages. Yet, some people still &#8230;<span class="more-link"><a href="http://www.neonrocket.com/2012/10/flash-back-skip-intro/"><span class="button">Continue reading &#8594;</span></a></span></p><p>The post <a href="http://www.neonrocket.com/2012/10/flash-back-skip-intro/">Flashback: Skip Intro for flash introductions</a> appeared first on <a href="http://www.neonrocket.com">Neon Rocket</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Remember when flash introduction pages were all the rage? They were &#8216;cool&#8217; from the <a class="zem_slink" title="Web design" href="http://en.wikipedia.org/wiki/Web_design" rel="wikipedia" target="_blank">web designer</a>&#8216;s standpoint, but utterly annoying and off-putting to the visitor. Fortunately, most people figured out that people visited their site for the <em>content</em>, not the snappy graphics (unless it was a gallery site), and certainly not for the mandatory intro pages.</p>
<p>Yet, some people still haven&#8217;t gotten the clue that the 80s called and they want their flash intros back.</p>
<p style="text-align: center;"><a href="http://xkcd.com/1072/"><img class="aligncenter" src="http://www.neonrocket.com/wp-content/uploads/zemanta/seventies.png" alt="xkcd: the seventies called" width="364" height="164" /></a></p>
<p>For those who remember with revulsion, here&#8217;s the old SkipIntro parody. The site is long gone, but it would be a shame to let it fade away!</p>
<h2>SkipIntro</h2>
<p>(click the &#8216;play ball&#8217; to start)</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_skipintro98_240846265"
			class="flashmovie"
			width="688"
			height="550">
	<param name="movie" value="http://www.neonrocket.com/wp-content/uploads/2012/10/skipintro98.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.neonrocket.com/wp-content/uploads/2012/10/skipintro98.swf"
			name="fm_skipintro98_240846265"
			width="688"
			height="550">
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer"><img src="http://www.neonrocket.com/wp-content/uploads/zemanta/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>If you haven&#8217;t clicked on it, do it now! Relive the pain of the never-ending flash intro to the sound of weird indian music and gunfire!</p>
<h6 class="zemanta-related-title" style="font-size: 1em;">Related articles</h6>
<ul class="zemanta-article-ul">
<li><a href="http://blog.duoconsulting.com/2009/03/04/site-loading-skip-intro-you%E2%80%99re-kidding-i%E2%80%99m-outta-here/">Site Loading? Skip Intro? You’re Kidding? I’m Outta Here.</a> (duoconsulting.com)</li>
<li class="zemanta-article-ul-li"><a href="http://www.daniweb.com/web-development/threads/432396/how-to-add-a-skip-intro-page-to-jooomla-2.5-web-site" target="_blank">how to add a skip intro page to jooomla 2.5 web site</a> (daniweb.com)</li>
<li class="zemanta-article-ul-li"><a href="http://www.zdnet.com/adobe-flash-im-not-dead-yet-7000004996/" target="_blank">Adobe Flash: I&#8217;m not dead yet!</a> (zdnet.com)</li>
</ul>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/?px"><img class="zemanta-pixie-img" style="border: none; float: right;" src="http://img.zemanta.com/zemified_e.png?x-id=352d0e47-0b2a-4db0-b6c5-34197778ce41" alt="Enhanced by Zemanta" /></a></div>
<p>The post <a href="http://www.neonrocket.com/2012/10/flash-back-skip-intro/">Flashback: Skip Intro for flash introductions</a> appeared first on <a href="http://www.neonrocket.com">Neon Rocket</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.neonrocket.com/2012/10/flash-back-skip-intro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Regular Expressions Roundup</title>
		<link>http://www.neonrocket.com/2012/09/regular-expressions-roundup/</link>
		<comments>http://www.neonrocket.com/2012/09/regular-expressions-roundup/#comments</comments>
		<pubDate>Thu, 27 Sep 2012 22:14:52 +0000</pubDate>
		<dc:creator>Bryan</dc:creator>
				<category><![CDATA[programming magic]]></category>
		<category><![CDATA[Regular expression]]></category>
		<category><![CDATA[technique]]></category>

		<guid isPermaLink="false">http://www.neonrocket.com/?p=82</guid>
		<description><![CDATA[<p>Writing some Regular Expressions? Some people, when confronted with a problem, think &#8220;I know, I&#8217;ll use regular expressions.&#8221; Now they have two problems. —Jamie Zawinski Well, not really. There are some cases where using a Regular Expression—RegEx— instead of a heap of convoluted if statements just makes sense from both a lazy and practical standpoint. When you&#8217;re knee-deep in writing your &#8230;<span class="more-link"><a href="http://www.neonrocket.com/2012/09/regular-expressions-roundup/"><span class="button">Continue reading &#8594;</span></a></span></p><p>The post <a href="http://www.neonrocket.com/2012/09/regular-expressions-roundup/">Regular Expressions Roundup</a> appeared first on <a href="http://www.neonrocket.com">Neon Rocket</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Writing some Regular Expressions?</p>
<blockquote><p>Some people, when confronted with a problem, think &#8220;I know, I&#8217;ll use regular expressions.&#8221; Now they have two problems.<br />
—Jamie Zawinski</p></blockquote>
<p>Well, not really. There are some cases where using a Regular Expression—RegEx— instead of a heap of convoluted <code>if</code> statements <em>just makes sense</em> from both a <a href="http://blogoscoped.com/archive/2005-08-24-n14.html">lazy</a> and practical standpoint.</p>
<p>When you&#8217;re knee-deep in writing your RegEx, you&#8217;ll need to test. My favorite RegEx &#8216;workbench&#8217; is Oliver Steele&#8217;s &#8220;<a href="http://osteele.com/tools/rework/">reWork</a>.&#8221;</p>
<p><a href="http://osteele.com/tools/rework/"><img class="size-medium wp-image-86 aligncenter" title="Oliver Steele's Regular Expression Workbench" src="http://www.neonrocket.com/wp-content/uploads/zemanta/rework-screenshot-300x205.png" alt="screenshot of reWork" width="300" height="205" /></a></p>
<p>To get a jumpstart on writing complex RegEx,  check out the <a href="http://regexlib.com/">Regular Expression Library</a>, which contains a plethora of user-submitted RegEx recipes. Some of them are quite good (check each recipe&#8217;s rating).</p>
<p><a href="http://regexlib.com/"><img class="size-medium wp-image-87 aligncenter" title="Regular Expression Libarary" src="http://www.neonrocket.com/wp-content/uploads/zemanta/regex-library-screenshot-300x241.png" alt="screenshot of example page" width="300" height="241" /></a></p>
<h6 class="zemanta-related-title" style="font-size: 1em;">Related articles</h6>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://www.nofluffjuststuff.com/blog/lincoln_baxter_iii/2012/09/new_tutorial_regular_expressions" target="_blank">New tutorial: Regular expressions</a> (nofluffjuststuff.com)</li>
<li class="zemanta-article-ul-li"><a href="http://www.seomoz.org/blog/an-seos-guide-to-regex" target="_blank">An SEO&#8217;s Guide to RegEx</a> (seomoz.org)</li>
<li class="zemanta-article-ul-li"><a href="http://www.i-programmer.info/book-watch-archive/4810-regular-expressions-cookbook-oreilly.html" target="_blank">Regular Expressions Cookbook (O&#8217;Reilly)</a> (i-programmer.info)</li>
</ul>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/?px"><img class="zemanta-pixie-img" style="border: none; float: right;" src="http://img.zemanta.com/zemified_e.png?x-id=5080eb20-1cc5-436c-9f4d-9a30b093e2a6" alt="Enhanced by Zemanta" /></a></div>
<p>The post <a href="http://www.neonrocket.com/2012/09/regular-expressions-roundup/">Regular Expressions Roundup</a> appeared first on <a href="http://www.neonrocket.com">Neon Rocket</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.neonrocket.com/2012/09/regular-expressions-roundup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Find Something You Like and Dissect It</title>
		<link>http://www.neonrocket.com/2012/09/find-something-you-like-and-dissect-it/</link>
		<comments>http://www.neonrocket.com/2012/09/find-something-you-like-and-dissect-it/#comments</comments>
		<pubDate>Thu, 20 Sep 2012 14:48:16 +0000</pubDate>
		<dc:creator>Bryan</dc:creator>
				<category><![CDATA[programming magic]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[technique]]></category>
		<category><![CDATA[wikipedia]]></category>

		<guid isPermaLink="false">http://www.neonrocket.com/?p=76</guid>
		<description><![CDATA[<p>I&#8217;m always on the lookout for a new technique or Better Mousetrap. I admit I don&#8217;t know all that much, so I&#8217;m happy to learn. I was playing around with Wikify @ appointment.net (a nifty tool that goes through a block of text and &#8216;wikifies&#8217; it&#8211;that is, links all the words it can find to relavant Wikipedia articles) when I noticed &#8230;<span class="more-link"><a href="http://www.neonrocket.com/2012/09/find-something-you-like-and-dissect-it/"><span class="button">Continue reading &#8594;</span></a></span></p><p>The post <a href="http://www.neonrocket.com/2012/09/find-something-you-like-and-dissect-it/">Find Something You Like and Dissect It</a> appeared first on <a href="http://www.neonrocket.com">Neon Rocket</a>.</p>]]></description>
				<content:encoded><![CDATA[<div class="wp-caption alignright" style="width: 140px"><a href="http://www.crunchbase.com/product/wikipedia" target="_blank"><img class="zemanta-img-inserted zemanta-img-configured" title="Image representing Wikipedia as depicted in Cr..." src="http://www.neonrocket.com/wp-content/uploads/zemanta/16363v3-max-150x150.png" alt="Image representing Wikipedia as depicted in Cr..." width="130" height="150" /></a><p class="wp-caption-text">Image via CrunchBase</p></div>
<p>I&#8217;m always on the lookout for a new technique or Better Mousetrap. I admit I don&#8217;t know all that much, so I&#8217;m happy to learn.</p>
<p>I was playing around with <a href="http://wikify.appointment.at/">Wikify @ appointment.net</a> (a nifty tool that goes through a block of text and &#8216;wikifies&#8217; it&#8211;that is, links all the words it can find to relavant Wikipedia articles) when I noticed the behavior seemed rather&#8230;odd. I could see it go through the word list as it created links, and every time it linked up a word, <em>every </em>duplicate word was linked.</p>
<p>Let&#8217;s take some example text (from the now-defunct Dilbert Mission Statement Generator) and run it through the site:</p>
<blockquote><p><em> &#8220;We have <a href="http://en.wikipedia.org/wiki/Committed">committed</a> to <a href="http://en.wikipedia.org/wiki/Synergistically">synergistically</a> <a href="http://en.wikipedia.org/wiki/Fashion">fashion</a> high-quality <a href="http://en.wikipedia.org/wiki/Products">products</a> so that we may collaboratively provide <a href="http://en.wikipedia.org/wiki/Access">access</a> to <a href="http://en.wikipedia.org/wiki/Inexpensive">inexpensive</a> <a href="http://en.wikipedia.org/wiki/Leadership">leadership</a> <a href="http://en.wikipedia.org/wiki/Skills">skills</a> in order to <a href="http://en.wikipedia.org/wiki/Solve">solve</a> <a href="http://en.wikipedia.org/wiki/Business">business</a> <a href="http://en.wikipedia.org/wiki/Problems">problems</a>&#8220;</em></p>
<p>Our <a href="http://en.wikipedia.org/wiki/Mission">mission</a> is to continually <a href="http://en.wikipedia.org/wiki/Leverage">leverage</a> <a href="http://en.wikipedia.org/wiki/Existing">existing</a> seven-habits-conforming <a href="http://en.wikipedia.org/wiki/Catalysts">catalysts</a> for change as well as to competently <a href="http://en.wikipedia.org/wiki/Leverage">leverage</a> other’s error-free <a href="http://en.wikipedia.org/wiki/Materials">materials</a>.</p>
<p>We <a href="http://en.wikipedia.org/wiki/Globally">globally</a> <a href="http://en.wikipedia.org/wiki/Leverage">leverage</a> other’s <a href="http://en.wikipedia.org/wiki/Professional">professional</a> meta-services as well as to <a href="http://en.wikipedia.org/wiki/Conveniently">conveniently</a> <a href="http://en.wikipedia.org/wiki/Integrate">integrate</a> <a href="http://en.wikipedia.org/wiki/Competitive">competitive</a> <a href="http://en.wikipedia.org/wiki/Solutions">solutions</a> in order to <a href="http://en.wikipedia.org/wiki/Solve">solve</a> <a href="http://en.wikipedia.org/wiki/Business">business</a> <a href="http://en.wikipedia.org/wiki/Problems">problems</a>.</p>
<p>&#8220;It is our <a href="http://en.wikipedia.org/wiki/Job">job</a> to continually <a href="http://en.wikipedia.org/wiki/Foster">foster</a> world-class <a href="http://en.wikipedia.org/wiki/Infrastructures">infrastructures</a> as well as to <a href="http://en.wikipedia.org/wiki/Quickly">quickly</a> <a href="http://en.wikipedia.org/wiki/Create">create</a> principle-centered <a href="http://en.wikipedia.org/wiki/Sources">sources</a> to <a href="http://en.wikipedia.org/wiki/Meet">meet</a> our <a href="http://en.wikipedia.org/wiki/Customer">customer</a>&#8216;<a href="http://en.wikipedia.org/wiki/S">s</a> <a href="http://en.wikipedia.org/wiki/Needs">needs</a>&#8221;</p>
<p>&#8220;Our <a href="http://en.wikipedia.org/wiki/Challenge">challenge</a> is to assertively <a href="http://en.wikipedia.org/wiki/Network">network</a> <a href="http://en.wikipedia.org/wiki/Economically">economically</a> sound <a href="http://en.wikipedia.org/wiki/Methods">methods</a> of <a href="http://en.wikipedia.org/wiki/Empowerment">empowerment</a> so that we may continually <a href="http://en.wikipedia.org/wiki/Negotiate">negotiate</a> <a href="http://en.wikipedia.org/wiki/Performance">performance</a> based <a href="http://en.wikipedia.org/wiki/Infrastructures">infrastructures</a>&#8220;</p></blockquote>
<p>For example, the additional instances of &#8220;leverage,&#8221; &#8220;problems,&#8221; and &#8220;business&#8221; were quickly linked, once the first one was completed. Poking around their code, I noticed all the action takes place in <a href="http://wikify.appointment.at/wikify.js"><code>wikify.js</code></a>. There are a few gems in there. For example, the function call to reduce an array to only unique values:</p>
<pre>function array_unique( array ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Carlos R. L. Rodrigues (http://www.jsfromhell.com)
    // +      input by: duncan
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Nate
    // +      input by: Brett Zamir (http://brettz9.blogspot.com)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Michael Grier
  // %          note 1: the second argument, sort_flags is not implemented
    // *     example 1: array_unique(['Kevin','Kevin','van','Zonneveld','Kevin']);
    // *     returns 1: ['Kevin','van','Zonneveld']
    // *     example 2: array_unique({'a': 'green', 0: 'red', 'b': 'green', 1: 'blue', 2: 'red'});
    // *     returns 2: {'a': 'green', 0: 'red', 1: 'blue'}

    var key = '', tmp_arr1 = {}, tmp_arr2 = [];
    var val = '';
    tmp_arr1 = array;

    var __array_search = function (needle, haystack) {
        var fkey = '';
        for (fkey in haystack) {
            if ((haystack[fkey] + '') === (needle + '')) {
                return fkey;
            }
        }
        return false;
    };

    for (key in tmp_arr1) {
        val = tmp_arr1[key];
        if (false === __array_search(val, tmp_arr2)) {
            tmp_arr2[key] = val;
        }
        delete tmp_arr1[key];
    }
    return tmp_arr2;
}</pre>
<p>Aha! See how that works?</p>
<h6 class="zemanta-related-title" style="font-size: 1em;">Related articles</h6>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://www.makeuseof.com/tag/guide-downloading-pages-wikipedia/" target="_blank">Your Guide To Downloading Pages From Wikipedia</a> (makeuseof.com)</li>
<li class="zemanta-article-ul-li"><a href="http://www.teleread.com/ebooks/how-to-turn-wikipedia-articles-into-e-books/" target="_blank">How to turn Wikipedia articles into e-books</a> (teleread.com)</li>
<li class="zemanta-article-ul-li"><a href="http://pochp.wordpress.com/2012/09/19/corruption-in-wikipedia-confirmed/" target="_blank">Corruption in Wikipedia Confirmed</a> (pochp.wordpress.com)</li>
</ul>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/?px"><img class="zemanta-pixie-img" style="border: none; float: right;" src="http://img.zemanta.com/zemified_e.png?x-id=389759eb-7d05-4508-a0a0-5fd700774eb9" alt="Enhanced by Zemanta" /></a></div>
<p>The post <a href="http://www.neonrocket.com/2012/09/find-something-you-like-and-dissect-it/">Find Something You Like and Dissect It</a> appeared first on <a href="http://www.neonrocket.com">Neon Rocket</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.neonrocket.com/2012/09/find-something-you-like-and-dissect-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Importance of Not &#8220;Designing&#8221; your own Security</title>
		<link>http://www.neonrocket.com/2012/09/the-importance-of-not-designing-your-own-security/</link>
		<comments>http://www.neonrocket.com/2012/09/the-importance-of-not-designing-your-own-security/#comments</comments>
		<pubDate>Mon, 17 Sep 2012 14:29:41 +0000</pubDate>
		<dc:creator>Bryan</dc:creator>
				<category><![CDATA[web development]]></category>
		<category><![CDATA[knowledge]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[worst practices]]></category>

		<guid isPermaLink="false">http://www.neonrocket.com/?p=66</guid>
		<description><![CDATA[<p>Recently, at a client, I had the opportunity to review their security implementation on their website. I realized that it is very important to never try to design one&#8217;s own security, because of the Dunning Kruger effect. In a nutshell, folks who don&#8217;t know very much about security think they know &#8220;enough,&#8221; and folks who are very knowledgable (e.g., Bruce &#8230;<span class="more-link"><a href="http://www.neonrocket.com/2012/09/the-importance-of-not-designing-your-own-security/"><span class="button">Continue reading &#8594;</span></a></span></p><p>The post <a href="http://www.neonrocket.com/2012/09/the-importance-of-not-designing-your-own-security/">The Importance of Not &#8220;Designing&#8221; your own Security</a> appeared first on <a href="http://www.neonrocket.com">Neon Rocket</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Recently, at a client, I had the opportunity to review their security implementation on their website. I realized that it is very important to never try to design one&#8217;s own security, because of the <a href="https://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect">Dunning Kruger</a> effect. In a nutshell, folks who don&#8217;t know very much about security think they know &#8220;enough,&#8221; and folks who are very knowledgable (e.g., <a href="https://www.schneier.com/">Bruce Schneier</a>) realize they don&#8217;t know all that much.</p>
<p>So what does this mean? It means simply this:</p>
<p style="text-align: center;"><strong>If you design your own security system, you&#8217;re going to get it wrong.</strong></p>
<div class="wp-caption alignright" style="width: 310px"><a href="http://commons.wikipedia.org/wiki/File:Master_lock_with_root_password.jpg" target="_blank"><img class="zemanta-img-inserted zemanta-img-configured" title="English: A Master padlock with &quot;r00t&quot;..." src="http://www.neonrocket.com/wp-content/uploads/zemanta/300px-Master_lock_with_root_password.jpg" alt="English: A Master padlock with &quot;r00t&quot;..." width="300" height="200" /></a><p class="wp-caption-text">(Photo credit: Wikipedia)</p></div>
<p>Here are some examples of how to get things wrong.</p>
<dl>
<dt><strong>Storing passwords in plaintext so you can send the person the password if they forget.</strong></dt>
<dd>When (not if) someone breaks into your database, they instantly own every single account. They can log in, view your user&#8217;s details and change them. Since most people reuse the same password for multiple systems, the attacker can try those passwords on other popular services, such as Facebook, <a class="zem_slink" title="Gmail" href="http://gmail.com" rel="homepage" target="_blank">GMail</a>, <a class="zem_slink" title="LinkedIn" href="http://www.linkedin.com" rel="homepage" target="_blank">LinkedIn</a>, <a href="http://twitter.com">Twitter</a>, etc.</dd>
<dd></dd>
<dd></dd>
<dt><strong>Relying on application-level security to protect your data.</strong></dt>
<dd>This is dangerous because it is hard to ensure 100% coverage. <em>EVERY</em> access point—of many—to your data must be secure. Failing to cover one point leaves the system wide open. A <em>better</em> solution is to apply security at the data-store level. Typically, this is done using triggers and stored procedures. Your <a class="zem_slink" title="Relational database management system" href="http://en.wikipedia.org/wiki/Relational_database_management_system" rel="wikipedia" target="_blank">RDBMS</a> doesn&#8217;t support those (or weakly supports them)? Find another RDBMS.</dd>
<dd></dd>
<dd></dd>
<dt><strong>Using the same salt for every password in the system.</strong></dt>
<dd>You don&#8217;t understand <a href="https://en.wikipedia.org/wiki/Salt_(cryptography)">what salts are for</a> and how to use them properly.</dd>
<dd></dd>
<dd></dd>
<dt><strong>Requiring &#8220;complex&#8221; (a number, upper- and lower-case letters and symbols but not very long) passwords.</strong></dt>
<dd>Nope. Ineffective.</dd>
<dd></dd>
<dd></dd>
<dt><strong>Relying on Two-Factor Authentication.</strong></dt>
<dd>For now it is working, somewhat, but crackers are rapidly finding <a href="http://www.trusteer.com/blog/tatanga-attack-exposes-chiptan-weaknesses">ways to circumvent this technique</a>.</dd>
<dt><strong>Relying on a “security question” in case the person forgets his/her password.</strong></dt>
<dd>Oh, you&#8217;ll love this. <a href="https://www.schneier.com/essay-081.html">You&#8217;re creating a <strong>weak password</strong> as a backup to a (hopefully) strong password</a>. Fail.</dd>
<dd></dd>
<dd></dd>
<dt><strong>Assuming by keeping the details of your implementation secret, you will be secure.</strong></dt>
<dd>This is dangerous because you think you&#8217;re secure. In fact, you are <em>less secure</em>. <a href="https://en.wikipedia.org/wiki/Kerckhoffs's_principle">Kerckhoffs&#8217;s Principle</a> is always a good starting point for security implementation: if an attacker could see all of my code and had a copy of my database, could she/he break into my system?</dd>
</dl>
<h2>Getting it right</h2>
<p>The first step is admitting that you don&#8217;t know what you&#8217;re doing.</p>
<p>Now go find someone who does: there are plenty of security libraries out there for every language. Find one that is mature and widely used and implement it. Keep up to date on the library&#8217;s mailing list so you will receive alerts, and update whenever there&#8217;s a new version.</p>
<p>Security is hard to do. It is <em>extremely</em> hard to do correctly. Don&#8217;t fall into the trap of thinking you can get it right without years and years of study and experience.</p>
<h6 class="zemanta-related-title" style="font-size: 1em;">Related articles</h6>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://www.zdnet.com/blizzard-hacked-warns-users-to-change-passwords-7000002425/" target="_blank">Blizzard hacked, warns users to change passwords</a> (zdnet.com)</li>
<li class="zemanta-article-ul-li"><a href="http://www.ghacks.net/2012/08/23/security-tip-do-not-answer-security-questions-correctly/" target="_blank">Security tip: do not answer security questions correctly</a> (ghacks.net)</li>
<li class="zemanta-article-ul-li"><a href="http://www.theatlantic.com/technology/archive/2012/08/security-questions-the-biggest-joke-in-online-identity-verification/260835/" target="_blank">Security Questions: The Biggest Joke in Online Identity Verification</a> (theatlantic.com)</li>
<li class="zemanta-article-ul-li"><a href="http://www.rgbartlett.co.uk/technology/an-even-easier-way-to-better-passwords/" target="_blank">An even easier way to better passwords</a> (rgbartlett.co.uk)</li>
</ul>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/?px"><img class="zemanta-pixie-img" style="border: none; float: right;" src="http://img.zemanta.com/zemified_e.png?x-id=1d299a81-9d96-4fc0-9e60-b10eb1681938" alt="Enhanced by Zemanta" /></a></div>
<p>The post <a href="http://www.neonrocket.com/2012/09/the-importance-of-not-designing-your-own-security/">The Importance of Not &#8220;Designing&#8221; your own Security</a> appeared first on <a href="http://www.neonrocket.com">Neon Rocket</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.neonrocket.com/2012/09/the-importance-of-not-designing-your-own-security/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
