<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>Code and things</description><title>bits and bytes</title><generator>Tumblr (3.0; @weisjohn)</generator><link>http://weisjohn.tumblr.com/</link><item><title>clone all the things</title><description>&lt;p&gt;Today, my IT guy told me that I had to move my machine from one AD domain to another.  Nothing could go wrong.&lt;/p&gt;
&lt;p&gt;Well, that&amp;#8217;s the furthest thing from what happened. &lt;strong&gt; Everything melted.&lt;/strong&gt;  Luckily, I had everything backed up via Crashplan.  Most of everything that I needed, I was able to retrieve instantly.  I had put all of my SSH keys on flash already and all the rest was backed up via Crashplan. Except for my &amp;#8220;mysrc&amp;#8221; repo, where I keep all the stuff that I&amp;#8217;m working on.  Most of this is on my public github or private, internal gitolite installation.  That&amp;#8217;s fine and all but I don&amp;#8217;t want to have to go and rip all of those repos again.&lt;/p&gt;
&lt;script src="https://gist.github.com/4083500.js?file=github_mega_clone.js" type="text/javascript"&gt;&lt;/script&gt;&lt;p&gt;So I wrote this little Node.js script to clone all my repos from Github.  Run it in your ~/mysrc folder or where ever you want them. Oh, and if you use this, please change the username in the path.&lt;/p&gt;</description><link>http://weisjohn.tumblr.com/post/35817668509</link><guid>http://weisjohn.tumblr.com/post/35817668509</guid><pubDate>Thu, 15 Nov 2012 22:00:00 -0500</pubDate></item><item><title>grok this</title><description>&lt;p&gt;For the last year or so, I&amp;#8217;ve been working on reading through &lt;a href="http://jsninja.com/" target="_blank"&gt;Secrets of the JavaScript Ninja&lt;/a&gt; by &lt;a href="http://ejohn.org/" target="_blank"&gt;John Resig&lt;/a&gt; and Bear Bibeault.  The book isn&amp;#8217;t published just yet, it&amp;#8217;s going through the &lt;a href="http://manning.com/about/meap" target="_blank"&gt;MEAP process over at Manning&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;While you may think that taking a year to read a book is a little wrong, it&amp;#8217;s been well worth it.  &lt;strong&gt;Every few paragraphs, I discover something completely amazing.&lt;/strong&gt;  Also, I&amp;#8217;m not just reading, I&amp;#8217;m working along with the book. I&amp;#8217;m trying to immediately apply the concept before moving on to make sure I understand what&amp;#8217;s going on.  I&amp;#8217;ve put a copy of all the samples up on &lt;a href="https://github.com/weisjohn/secrets_js_ninja_notes" target="_blank"&gt;a Git repo&lt;/a&gt;.  &lt;/p&gt;
&lt;p&gt;Tonight, while working through the chapter on Regular Expressions, I saw that you could define a repetition on a set of characters. My gears started turning and I thought about a common issue which is rational number representation.  Often times, when representing a rational number in some system, such as decimal or even binary, you can not represent it completely. For example, 1/3 = 0.3333333333&amp;#8230; &lt;br/&gt;&lt;br/&gt;All of a sudden, I thought of a solution to check for rational numbers that can not be represented finitely. I don&amp;#8217;t think I&amp;#8217;ve ever needed this, however, I got a complete rush out of it. Check it out:&lt;/p&gt;
&lt;script src="https://gist.github.com/3877079.js" type="text/javascript"&gt;&lt;/script&gt;&lt;p&gt;Update: My good friend, Lex, mentioned that I should leave the regex boundless. I used to have `var pntdrrn = /\d{5,9999}/;` and now I have `var pntdrrn = /\d{5,}/;`&lt;/p&gt;</description><link>http://weisjohn.tumblr.com/post/33409709080</link><guid>http://weisjohn.tumblr.com/post/33409709080</guid><pubDate>Thu, 11 Oct 2012 23:22:00 -0400</pubDate></item><item><title>Simple, helpful CORS bypass via Node.js</title><description>&lt;a href="http://annasob.wordpress.com/2012/01/11/getting-around-cors-with-node-js/"&gt;Simple, helpful CORS bypass via Node.js&lt;/a&gt;</description><link>http://weisjohn.tumblr.com/post/33185604397</link><guid>http://weisjohn.tumblr.com/post/33185604397</guid><pubDate>Mon, 08 Oct 2012 17:33:39 -0400</pubDate></item><item><title>Underscorify</title><description>&lt;p&gt;Occasionally, I need to use jQuery on a page that I&amp;#8217;m browsing. To do that, I use &lt;a href="https://twitter.com/kswedberg" target="_blank"&gt;Karl Swedberg&lt;/a&gt;&amp;#8217;s awesome &lt;a href="http://www.learningjquery.com/2006/12/jquerify-bookmarklet" target="_blank"&gt;jQuerify Bookmarklet&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Today, I needed to Underscore.JS. So, I took his and extended it to work with Underscore. &lt;/p&gt;
&lt;p&gt;Behold, &lt;a href="http://weisjohn.github.com/widgets/underscorify/" target="_blank"&gt;Underscorify&lt;/a&gt;.&lt;/p&gt;</description><link>http://weisjohn.tumblr.com/post/31345251671</link><guid>http://weisjohn.tumblr.com/post/31345251671</guid><pubDate>Tue, 11 Sep 2012 14:33:54 -0400</pubDate></item><item><title>Launching PhoneGap project into an iPad with ios-sim</title><description>&lt;p&gt;PhoneGap 2.0 has a lot of awesome improvements, especially the command line tools for building and launching.  &lt;/p&gt;
&lt;p&gt;I wasn&amp;#8217;t able to figure out how to use their &amp;#8220;emulate&amp;#8221; script to trigger into an iPad, however, looking inside of the &amp;#8220;emulate&amp;#8221; script they give you, I saw that they&amp;#8217;re just using the ios-sim project ( which you had to install during setup ). The PhoneGap has a tool called &lt;a href="https://github.com/phonegap/ios-sim" target="_blank"&gt;ios-sim&lt;/a&gt; which is a fork from the (defunct?) iphonesim project &lt;/p&gt;
&lt;p&gt;You can spawn the emulator directly into iPad mode like such&amp;#160;:&lt;/p&gt;
&lt;pre&gt;ios-sim launch ../build/{{ your_app_name }}.app/ --family ipad 

&lt;/pre&gt;
&lt;p&gt;XCode-free, the way to be.&lt;/p&gt;</description><link>http://weisjohn.tumblr.com/post/28571262364</link><guid>http://weisjohn.tumblr.com/post/28571262364</guid><pubDate>Thu, 02 Aug 2012 15:15:00 -0400</pubDate></item><item><title>Good Morning, JavaScript!</title><description>&lt;p&gt;Last night, I watched a video called &amp;#8220;&lt;a href="http://www.youtube.com/watch?v=Trr95ij1358" target="_blank"&gt;JavaScript: Enter the Dragon&lt;/a&gt;&amp;#8221; by &lt;a href="https://twitter.com/DmitryBaranovsk/" target="_blank"&gt;Dmitry Baranovskiy&lt;/a&gt;. In the video, he spends some time discussing the concept of bodybuilding and compares it to JavaScript development: many think they look like an &amp;#8220;Arnold&amp;#8221; but, compared to the true form of beauty, the Greek &amp;#8220;ideal&amp;#8221;, they are truly wimps. Being an art history nerd, I &lt;em&gt;really&lt;/em&gt; liked the analogy. &lt;/p&gt;
&lt;p&gt;He then went on to discuss some important concepts of JavaScript development, such as the number of types in the language, closures, &lt;a href="http://webreflection.blogspot.com/2010/10/javascript-coercion-demystified.html" target="_blank"&gt;type coersion&lt;/a&gt;, prototypal inheritance chains and what happens when you begin to manipulate the prototype of ancestors, etc. &lt;/p&gt;
&lt;p&gt;Some of the stuff that I saw I knew. I could teach someone else. But a few things I &lt;a href="https://gist.github.com/3092612" target="_blank"&gt;completely failed&lt;/a&gt; on. While some would say &amp;#8220;you never have to know such things&amp;#8221;, I would say that you&amp;#8217;re wrong. The reason that I say this is because while learning some more last night, I saw tons of stuff in some of my code that is absolutely worthless. &lt;/p&gt;
&lt;p&gt;Dmitry also mentioned the fact that most people suck at JavaScript. His slang reference to the concept known more technically as &lt;a href="http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect" target="_blank"&gt;the Dunning-Kruger effect&lt;/a&gt; wasn&amp;#8217;t lost on me and I saw how once again, I thought I was smarter than I actually was. The code examples that followed for the next few minutes demonstrated to me that I don&amp;#8217;t &lt;em&gt;really&lt;/em&gt; know JavaScript.&lt;/p&gt;
&lt;p&gt;Now, to be fair, we need to verify terms here: I&amp;#8217;m not saying that I can&amp;#8217;t make web applications using the language called JavaScript. I definitely can. What I&amp;#8217;m not very good at is language syntax and concepts. &lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s a little question that he posted this morning:&lt;/p&gt;
&lt;blockquote class="twitter-tweet"&gt;
&lt;p&gt;JS quiz:1 + - + - + - + - + - + 1&lt;/p&gt;
— Dmitry Baranovskiy (@DmitryBaranovsk) &lt;a href="https://twitter.com/DmitryBaranovsk/status/223295151769010176" data-datetime="2012-07-12T05:58:07+00:00" target="_blank"&gt;July 12, 2012&lt;/a&gt;&lt;/blockquote&gt;
&lt;script charset="utf-8" src="//platform.twitter.com/widgets.js" type="text/javascript"&gt;&lt;/script&gt;&lt;p&gt;Well, it equals 0, and I have no idea why that&amp;#8217;s the case&amp;#8230; &lt;/p&gt;
&lt;p&gt;But I&amp;#8217;m on a mission to change that.&lt;/p&gt;</description><link>http://weisjohn.tumblr.com/post/27046792309</link><guid>http://weisjohn.tumblr.com/post/27046792309</guid><pubDate>Thu, 12 Jul 2012 08:31:29 -0400</pubDate></item><item><title>Calling "shenanigans" on MemSQL</title><description>&lt;p&gt;If you haven&amp;#8217;t heard of MemSQL yet, this post won&amp;#8217;t really matter to you&amp;#8230;&lt;/p&gt;
&lt;p&gt;MemSQL is claiming to be &amp;#8220;&lt;strong&gt;wire-compatible&lt;/strong&gt;&amp;#8221; with MySQL (bottom paragraph on &lt;a href="http://memsql.com/" target="_blank"&gt;http://memsql.com/&lt;/a&gt;). I have no idea what MemSQL means by that, but as I understand their demo / getting started pages to be written, it seems that they are saying that you can drop in MemSQL, load up your schemas, load up your data and point your MySQL client to connect to MemSQL and no one will be the wiser.&lt;/p&gt;
&lt;p&gt;Having a number of applications at work that I&amp;#8217;m supporting and developing that use MySQL and MySQL connectors, this seemed like a holy grail.&lt;/p&gt;
&lt;p&gt;I was extremely skeptical but I decided to spin up an Ubuntu 12.04 LTS install with 8Gb of memory. I installed mysql-client and mysql-server. I loaded up &lt;a href="http://dev.mysql.com/doc/sakila/en/sakila-installation.html" target="_blank"&gt;the MySQL sample Sakila schema&lt;/a&gt; and then loaded the data. Great, mysql is ready to roll.&lt;/p&gt;
&lt;p&gt;I downloaded and setup memsql and attempted to load up Sakila and got this issue:&lt;/p&gt;
&lt;pre&gt;memsql&amp;gt; source ./sakila-schema.sql;
Query OK, 0 rows affected, 1 warning (0.00 sec)

Query OK, 0 rows affected, 1 warning (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK (0.00 sec)

Query OK, 0 rows affected (0.07 sec)

Database changed
ERROR 1286 (42000): Unknown storage engine 'InnoDB'
ERROR 1706 (HY000): Feature 'REFERENTIAL ACTIONS' is not supported by MemSQL.
ERROR 1286 (42000): Unknown storage engine 'InnoDB'
ERROR 1706 (HY000): Feature 'REFERENTIAL ACTIONS' is not supported by MemSQL.
ERROR 1286 (42000): Unknown storage engine 'InnoDB'
ERROR 1706 (HY000): Feature 'REFERENTIAL ACTIONS' is not supported by MemSQL.
ERROR 1706 (HY000): Feature 'REFERENTIAL ACTIONS' is not supported by MemSQL.
ERROR 1706 (HY000): Feature 'REFERENTIAL ACTIONS' is not supported by MemSQL.
ERROR 1706 (HY000): Feature 'REFERENTIAL ACTIONS' is not supported by MemSQL.
ERROR 1706 (HY000): Feature 'Fulltext indexes' is not supported by MemSQL.
ERROR 1706 (HY000): Feature 'CREATE TRIGGER' is not supported by MemSQL.
ERROR 1706 (HY000): Feature 'CREATE TRIGGER' is not supported by MemSQL.
ERROR 1706 (HY000): Feature 'CREATE TRIGGER' is not supported by MemSQL.
ERROR 1706 (HY000): Feature 'REFERENTIAL ACTIONS' is not supported by MemSQL.
ERROR 1286 (42000): Unknown storage engine 'InnoDB'
ERROR 1706 (HY000): Feature 'REFERENTIAL ACTIONS' is not supported by MemSQL.
ERROR 1706 (HY000): Feature 'REFERENTIAL ACTIONS' is not supported by MemSQL.
ERROR 1706 (HY000): Feature 'REFERENTIAL ACTIONS' is not supported by MemSQL.
ERROR 1706 (HY000): Feature 'REFERENTIAL ACTIONS' is not supported by MemSQL.
ERROR 1706 (HY000): Feature 'CREATE VIEW' is not supported by MemSQL.
ERROR 1706 (HY000): Feature 'CREATE VIEW' is not supported by MemSQL.
ERROR 1706 (HY000): Feature 'CREATE VIEW' is not supported by MemSQL.
ERROR 1706 (HY000): Feature 'CREATE VIEW' is not supported by MemSQL.
ERROR 1706 (HY000): Feature 'CREATE VIEW' is not supported by MemSQL.
ERROR 1706 (HY000): Feature 'CREATE VIEW' is not supported by MemSQL.
ERROR 1706 (HY000): Feature 'CREATE VIEW' is not supported by MemSQL.
ERROR 1706 (HY000): Feature 'TEMPORARY tables' is not supported by MemSQL.
ERROR 1706 (HY000): Feature 'CREATE PROCEDURE' is not supported by MemSQL.
ERROR 1706 (HY000): Feature 'CREATE PROCEDURE' is not supported by MemSQL.
ERROR 1706 (HY000): Feature 'CREATE PROCEDURE' is not supported by MemSQL.
ERROR 1706 (HY000): Feature 'CREATE PROCEDURE' is not supported by MemSQL.
ERROR 1706 (HY000): Feature 'CREATE PROCEDURE' is not supported by MemSQL.
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected, 1 warning (0.00 sec)

Query OK, 0 rows affected, 1 warning (0.00 sec)

&lt;/pre&gt;
&lt;p&gt;Apparently, the MemSQL team and I have completely different understandings of what &amp;#8220;wire-compatibility&amp;#8221; means. &lt;a href="http://developers.memsql.com/docs/1b/unsupported.html" target="_blank"&gt;Here&amp;#8217;s the list of things that aren&amp;#8217;t supported&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Views&lt;/li&gt;
&lt;li&gt;Prepared Queries&lt;/li&gt;
&lt;li&gt;Stored procedures&lt;/li&gt;
&lt;li&gt;User Defined Functions&lt;/li&gt;
&lt;li&gt;Triggers&lt;/li&gt;
&lt;li&gt;Foreign keys&lt;/li&gt;
&lt;li&gt;Charsets other than utf8&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;One would think that the MemSQL team would disclose that they didn&amp;#8217;t support InnoDB tables. Doing &lt;a href="http://developers.memsql.com/docs/1b/search.html?q=innodb&amp;amp;check_keywords=yes&amp;amp;area=default" target="_blank"&gt;a search on their developer site for the term &amp;#8220;InnoDB&amp;#8221;&lt;/a&gt; doesn&amp;#8217;t reveal any such information.&lt;/p&gt;
&lt;p&gt;Also, it is clear that they believe that MemSQL will be a drop-in replacement for MySQL, as &lt;a href="http://developers.memsql.com/docs/1b/guides/from_mysql.html#transitioning-your-application" target="_blank"&gt;the MemSQL developer guide says to transition over to MemSQL&lt;/a&gt; is as simple as this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span&gt;To transition your application, simply change the connection credentials to point to MemSQL.&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Unless I&amp;#8217;m missing something huge, &amp;#8220;shenanigans&amp;#8221;, I say. The MemSQL team should publicly clarify what they mean by &amp;#8220;wire-compatible&amp;#8221;.&lt;/p&gt;</description><link>http://weisjohn.tumblr.com/post/26102993473</link><guid>http://weisjohn.tumblr.com/post/26102993473</guid><pubDate>Thu, 28 Jun 2012 19:31:07 -0400</pubDate></item><item><title>High-resolution anti-aliasing enhancement for RWD</title><description>&lt;p&gt;While working on a few responsive web design implementations, I found a really interesting bug:&lt;/p&gt;
&lt;p&gt;Let&amp;#8217;s say you use the same image for &amp;#8220;normal&amp;#8221; displays and Retina displays and down-sample (set it&amp;#8217;s width / height to be .5x of actual image), during DOM reflows / paints, certain browsers (Chrome, et al.) won&amp;#8217;t anti-alias the image until the animation / reflow has stopped. This leaves the image looking &amp;#8220;artifacty&amp;#8221;, even thought it&amp;#8217;s extremely resolute.&lt;/p&gt;
&lt;p&gt;If you want the browser to aggressively anti-alias the image, just write a rule such as&lt;/p&gt;
&lt;pre&gt;.retina { transform: translateZ(0); -webkit-transform: translateZ(0); }&lt;/pre&gt;
&lt;pre&gt;

&lt;/pre&gt;
&lt;p&gt;And then add the &amp;#8220;retina&amp;#8221; class to every image that is high resolution.&lt;/p&gt;
&lt;p&gt;Oh, and for the love of everything, DON&amp;#8217;T use &amp;#8220;*&amp;#8221; as your selector for that translation hack. You&amp;#8217;ll absolutely destroy rendering performance.&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;</description><link>http://weisjohn.tumblr.com/post/18406304231</link><guid>http://weisjohn.tumblr.com/post/18406304231</guid><pubDate>Mon, 27 Feb 2012 19:20:00 -0500</pubDate></item><item><title>Build Responsively - Development Tools </title><description>&lt;p&gt;&lt;a href="https://twitter.com/#!/robtarr" target="_blank"&gt;Rob Tarr&lt;/a&gt; kicked off the next session with an introduction with some development tools:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;A &lt;a href="https://www.google.com/chrome?&amp;amp;brand=CHMB&amp;amp;utm_campaign=en&amp;amp;utm_source=en-ha-na-us-sk&amp;amp;utm_medium=ha" target="_blank"&gt;browser&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Sparkbox&amp;#8217;s &lt;a href="http://www.seesparkbox.com/foundry/media_query_bookmarklet" target="_blank"&gt;MQ Bookmarklet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Sparkbox&amp;#8217;s &lt;a href="https://github.com/sparkbox/html5-boilerplate" target="_blank"&gt;fork&lt;/a&gt; of &lt;a href="http://html5boilerplate.com/" target="_blank"&gt;HTML5 Boilerplate&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://sass-lang.com/" target="_blank"&gt;Sass&lt;/a&gt; - (a CSS compiler that is awesome)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://compass-style.org/" target="_blank"&gt;Compass&lt;/a&gt; - (a tool which uses Sass)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://incident57.com/codekit/" target="_blank"&gt;Codekit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://stuffandnonsense.co.uk/projects/320andup/" target="_blank"&gt;320 and up&lt;/a&gt; - Andy Clark&amp;#8217;s mobile-first mobile boilerplate.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Ben Callahan spent some time talking about the implementation process:&lt;/p&gt;
&lt;p&gt;Write the Markup:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;fluid presentation makes the separation of style from content critical&lt;/li&gt;
&lt;li&gt;he highlighted &lt;a href="http://semantic.gs/" target="_blank"&gt;semantic.gs&lt;/a&gt; over against &lt;a href="http://getskeleton.com" target="_blank"&gt;getskeleton.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;take the design and sketch-up / annotate the design choosing which tags communicate the semantic understanding of that part of the design&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Base Styles and MQs:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;make some base styles for the mobile-first &lt;/li&gt;
&lt;li&gt;start considering how to restyle the content as we expand&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Lots of code was written. And it was golden.&lt;/p&gt;
&lt;p&gt;They didn&amp;#8217;t really dive into images or assets, as today was primarily concerned with front-end issues.&lt;/p&gt;
&lt;p&gt;Ben wrapped up with the whole idea of the Responsive Mindset.  Maybe the techniques are important but what&amp;#8217;s really important is the mindset behind the techniques.  Maybe it&amp;#8217;s not so important to do it in the &amp;#8220;responsive&amp;#8221; way, but rather, we need to have everything in perspective to support all the devices. &lt;/p&gt;
&lt;p&gt;There was an after party and it was, apart from some really weird chick, really chill and awesome.  Major props to the &lt;a href="http://seesparkbox.com/about" target="_blank"&gt;Sparkbox Crew&lt;/a&gt;! &lt;/p&gt;</description><link>http://weisjohn.tumblr.com/post/17749976294</link><guid>http://weisjohn.tumblr.com/post/17749976294</guid><pubDate>Thu, 16 Feb 2012 22:59:00 -0500</pubDate></item><item><title>More @brworkshop branding… Love this stuff. #brworkshop</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_lzhz95q2YR1qzpftvo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;span&gt;More @brworkshop branding… Love this stuff. #brworkshop&lt;/span&gt;&lt;/p&gt;</description><link>http://weisjohn.tumblr.com/post/17717582693</link><guid>http://weisjohn.tumblr.com/post/17717582693</guid><pubDate>Thu, 16 Feb 2012 12:58:17 -0500</pubDate></item><item><title>Build Responsively - Panel</title><description>&lt;div&gt;Panel Members:&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;Ben Callahan&lt;/li&gt;
&lt;li&gt;Dan Rosenthall&lt;/li&gt;
&lt;li&gt;Drew Clemens&lt;/li&gt;
&lt;li&gt;Mark Wells&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Some highlights&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Sparkbox doesn&amp;#8217;t even build in a non-responsive way&lt;/li&gt;
&lt;li&gt;Fixed-width sites are going to be a thing of the past before you know it&lt;/li&gt;
&lt;li&gt;Don&amp;#8217;t design 3 separate designs, just one and give the designer / developer pair a bit of &lt;/li&gt;
&lt;li&gt;Collaboration is super important.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Responsive Web Design is always the &amp;#8220;right decision&amp;#8221; but it&amp;#8217;s not the only decision.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Do you have the data to understand the context?&lt;/li&gt;
&lt;li&gt;It&amp;#8217;s really not about HTML + CSS, it&amp;#8217;s about usability.&lt;/li&gt;
&lt;li&gt;Don&amp;#8217;t limit your mobile users by hiding things from them.&lt;/li&gt;
&lt;li&gt;Although not every site will be RWD, how many people are doing table-based layouts these days?&lt;/li&gt;
&lt;li&gt;Depending on the complexity of the design, you may be tempted to only prototype in the browser and never &lt;/li&gt;
&lt;li&gt;Contrasts are easier to understand when attempting to get buy-in &lt;/li&gt;
&lt;li&gt;Most people already want a solution to the mobile problem.  It&amp;#8217;s not hard to get buy-in from clients.&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;</description><link>http://weisjohn.tumblr.com/post/17717549348</link><guid>http://weisjohn.tumblr.com/post/17717549348</guid><pubDate>Thu, 16 Feb 2012 12:57:00 -0500</pubDate></item><item><title>Build Responsively - Process</title><description>&lt;p&gt;&lt;a href="https://twitter.com/#!/drewtclemens" target="_blank"&gt;Drew Clemens&lt;/a&gt; kicked off the second session talking about the design and ideation process.&lt;/p&gt;
&lt;p&gt;We started with a print-out of looking at the 960px-based design and were told to design a mobile wireframe based on that.&lt;/p&gt;
&lt;p&gt;While we were sketching out the design, Drew provided some questions to think:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;What is the hierarchy of content?&lt;/li&gt;
&lt;li&gt;Should we hide and show elements at different sizes?&lt;/li&gt;
&lt;li&gt;Which things are links?&lt;/li&gt;
&lt;li&gt;Are the buttons/links large enough for a touch device&amp;gt;&lt;/li&gt;
&lt;li&gt;How will the navigation respond?&lt;/li&gt;
&lt;li&gt;How much content do we need to allow for?&lt;/li&gt;
&lt;li&gt;Will it work in IE?&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;After using this tool called a &lt;a href="http://en.wikipedia.org/wiki/Pencil" target="_blank"&gt;pencil&lt;/a&gt;, we looked at the downfalls of some new attempts at process:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;960-fixed to mobile - puts to much design pain on developers&lt;/li&gt;
&lt;li&gt;starting on mobile and working up - tends to create a pretty simple design at the larger screen resolutions&lt;/li&gt;
&lt;li&gt;&amp;#8220;book ends&amp;#8221; - designing a 960px and a mobile-first as an attempt to &amp;#8220;divide and conquer&amp;#8221; - this still isn&amp;#8217;t the final solution&lt;/li&gt;
&lt;li&gt;&amp;#8220;book ends plus&amp;#8221; - designing a desktop, tablet, and mobile version - IMO this is THE worst possible mistake you can make in attempting to do an RWD execution&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Drew then went on to describe Sparkbox&amp;#8217;s process: &amp;#8220;We are attempting to optimize content, design, and development time, finding a balance of appropriate direction from all disciplines without destroying budgets&amp;#8230; while delivering on mobile-first, responsive designs where content is valued and considered.&amp;#8221;&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;A Mobile-Sized Content Prototype Wireframe Thingy&lt;/li&gt;
&lt;li&gt;Design the site at a lare screen size in Photoshop&lt;/li&gt;
&lt;li&gt;Begin development equipped with a mobile-sized wireframe and a large scree-sized full design &lt;/li&gt;
&lt;li&gt;We can&amp;#8217;t &amp;#8220;throw it over the wall&amp;#8221; anymore&amp;#8230; at least not if we want our sites to be excellent.  There are too many moving targets. People have to work together.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;a href="https://twitter.com/#!/jeremyloyd" target="_blank"&gt;Jeremy Lyod&lt;/a&gt; took over for a while, discussing the advantages / disadvantages of their process&lt;/p&gt;
&lt;p&gt;Disadvantages of desktop-width wireframes:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;too much focus on layout&lt;/li&gt;
&lt;li&gt;designer may not feel freedom to interpret layout&lt;/li&gt;
&lt;li&gt;leaves an extra step for the designer/developer to figur out translation&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Advantages to a mobile wireframe approach:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Wireframes focus more on hierarchy and less on layout.&lt;/li&gt;
&lt;li&gt;Cuts out a step of designer sketching/designing for mobile first.&lt;/li&gt;
&lt;li&gt;Dev gets direction on both desktop and smallest mobiel widths.&lt;/li&gt;
&lt;li&gt;Answer some of the questions &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Client Deliverables:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Though we may educate our clients, some will inevitably want to see more and more versions of wireframes and layouts which cover multiple screen sizes&amp;#8230; perhaps due to the project scope, or simply a lack of vision.&lt;/li&gt;
&lt;li&gt;If extra wireframes are required to get more buy-in from the client, then you should request more money&lt;/li&gt;
&lt;li&gt;Don&amp;#8217;t show the clients any &amp;#8220;bad&amp;#8221; designs.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Miscellaneous topics during Q&amp;amp;A in there:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;collaboration &amp;amp; back-and-forth is important, it helps everyone learn&lt;/li&gt;
&lt;li&gt;developer/designer hybrid - I call this &amp;#8220;&lt;a href="http://starwars.wikia.com/wiki/Rule_of_Two" target="_blank"&gt;the rule of two&lt;/a&gt;&amp;#8221;: developers and designers MUST work back and forth&lt;/li&gt;
&lt;li&gt;you must educate the clients on the new challenges / opportunities&lt;/li&gt;
&lt;li&gt;touch UX concerns - &lt;a href="http://globalmoxie.com/blog/buttons-are-a-hack.shtml" target="_blank"&gt;buttons are a hack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Responsive infiltrates the entire process - pitch, planning, etc.&lt;/li&gt;
&lt;li&gt;stats help - go find &lt;a href="https://twitter.com/#!/lukew" target="_blank"&gt;@lukew&lt;/a&gt; and mine his data&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;</description><link>http://weisjohn.tumblr.com/post/17714773923</link><guid>http://weisjohn.tumblr.com/post/17714773923</guid><pubDate>Thu, 16 Feb 2012 11:33:00 -0500</pubDate></item><item><title>Loving the branding of the swag.</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_lzhsujlr5a1qzpftvo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;span&gt;Loving the branding of the swag.&lt;/span&gt;&lt;/p&gt;</description><link>http://weisjohn.tumblr.com/post/17713091994</link><guid>http://weisjohn.tumblr.com/post/17713091994</guid><pubDate>Thu, 16 Feb 2012 10:39:54 -0500</pubDate></item><item><title>Build Responsively - Intro to RWD</title><description>&lt;p&gt;Here&amp;#8217;s my notes from the first session of the &lt;a href="http://buildresponsively.com/" target="_blank"&gt;Build Responsively Workshop&lt;/a&gt; put on by the wizards from &lt;a href="http://seesparkbox.com/" target="_blank"&gt;Sparkbox&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://twitter.com/#!/markgwells" target="_blank"&gt;Mark Wells&lt;/a&gt; from &lt;a href="https://twitter.com/#!/antistaticdsgn" target="_blank"&gt;Antistatic Design&lt;/a&gt; brought us &lt;a href="https://www.facebook.com/photo.php?fbid=694902105610&amp;amp;set=a.694486872740.2126381.215905691&amp;amp;type=1" target="_blank"&gt;Bill&amp;#8217;s Donuts&lt;/a&gt;&amp;#8230; Amazing. &lt;a href="https://twitter.com/#!/bencallahan" target="_blank"&gt;&lt;br/&gt;&lt;br/&gt;Ben Callahan&lt;/a&gt; kicked things off giving an overview of what &lt;a href="http://www.abookapart.com/products/responsive-web-design" target="_blank"&gt;Responsive Web Design&lt;/a&gt; is.  Big take aways from his portion:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;The web is not fixed-width&lt;/li&gt;
&lt;li&gt;RWD is a &lt;a href="http://en.wikipedia.org/wiki/The_Structure_of_Scientific_Revolutions" target="_blank"&gt;paradigm shift&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://semantic.gs/" target="_blank"&gt;Semantic.gs&lt;/a&gt; which requires Sass&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Andy Rossi continued and gave us an introduction of what Responsive Web Design is:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Fluid Foundation&lt;/li&gt;
&lt;li&gt;Fluid Assets&lt;/li&gt;
&lt;li&gt;Media Queries&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;If you don&amp;#8217;t know what those things are, you can take a look at &lt;a href="http://johnweis.com/static/RxD/index.html#slide5" target="_blank"&gt;my (shameless plug) slide&lt;/a&gt;s. (just hit the right arrow to learn more)&lt;/p&gt;
&lt;p&gt;Andy mentioned &lt;a href="http://fitvidsjs.com/" target="_blank"&gt;FitVid.js&lt;/a&gt; but it&amp;#8217;s way more important to understand &lt;a href="http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/" target="_blank"&gt;intrinsic ratios for media&lt;/a&gt;.  &lt;/p&gt;
&lt;p&gt;Ben followed covered up some examples from &lt;a href="http://mediaqueri.es/" target="_blank"&gt;mediaqueri.es&lt;/a&gt;.  Ben also opened up some other ideas:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;don&amp;#8217;t designing for specific devices&lt;/li&gt;
&lt;li&gt;don&amp;#8217;t assume the context&lt;/li&gt;
&lt;/ul&gt;</description><link>http://weisjohn.tumblr.com/post/17711581843</link><guid>http://weisjohn.tumblr.com/post/17711581843</guid><pubDate>Thu, 16 Feb 2012 09:47:00 -0500</pubDate></item><item><title>Test Driven Development with Jasmine at Dayton Clean Coders </title><description>&lt;p&gt;So the other day at the inaugural meeting of the Dayton Clean Coders, I tried out a some pair-programming test driven development.  It was pretty fun.  &lt;/p&gt;
&lt;p&gt;We used a tool called &lt;a href="http://pivotal.github.com/jasmine/" title="Jasmine" target="_blank"&gt;Jasmine&lt;/a&gt; to write the tests.  Jasmine is a very good unit testing framework for JavaScript.  It doesn&amp;#8217;t require a DOM, so you can run your tests on the server or your dev machine.  It&amp;#8217;s primarily for BDD / TDD, but you &lt;em&gt;could &lt;/em&gt;implement the tests afterwards.  Jasmine creates extremely helpful error messages that aid the developer in understanding how the tests failed, not just &lt;em&gt;which&lt;/em&gt; test failed.&lt;/p&gt;
&lt;p&gt;A few things I noticed:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Every single time we moved to a new piece of functionality, I instinctively attempted to implement the function first before writing the test. &lt;/li&gt;
&lt;li&gt;By the end of the coding session, I felt like I almost hit &lt;a href="http://en.wikipedia.org/wiki/Flow_(psychology)" title="flow" target="_blank"&gt;flow&lt;/a&gt;.  I&amp;#8217;ve never done that so quickly.&lt;/li&gt;
&lt;li&gt;While writing the test before implementing a function, my mind was sort of thinking about the function that I would eventually implement. By the time I got finished with implementing the test, I had most of the function pretty much &amp;#8220;written&amp;#8221; and I could just type it out.&lt;/li&gt;
&lt;li&gt;When we got to the more difficult areas of the code they required a particular subtle change in one line or two.  Because we had so thoroughly executed the tests and implementation I knew exactly what place to make a &lt;strong&gt;surgical refactor&lt;/strong&gt; instead of large restructures of the way the functions were called.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;The kata (challenge) that we worked on was a simple &lt;a href="http://onestepback.org/vital_testing/" target="_blank"&gt;triangle classifier&lt;/a&gt; and here&amp;#8217;s &lt;a href="https://gist.github.com/1633980" target="_blank"&gt;a gist of our solution&lt;/a&gt;.  A few hours after the event, I was talking with a friend and I realized there was something that I learned but hadn&amp;#8217;t fully understood yet:  you should write your tests as if you will never get to look at the code of that function / class.&lt;/p&gt;</description><link>http://weisjohn.tumblr.com/post/16065835030</link><guid>http://weisjohn.tumblr.com/post/16065835030</guid><pubDate>Wed, 18 Jan 2012 11:52:00 -0500</pubDate></item><item><title>django south is pretty cool... just sayin'</title><description>&lt;a href="http://south.aeracode.org/"&gt;django south is pretty cool... just sayin'&lt;/a&gt;</description><link>http://weisjohn.tumblr.com/post/15365105980</link><guid>http://weisjohn.tumblr.com/post/15365105980</guid><pubDate>Thu, 05 Jan 2012 17:50:29 -0500</pubDate></item><item><title>sqljdbc4.jar can't connect in Java 1.6.29 (Java for Mac 10.6 Update 6)</title><description>&lt;p&gt;So, I love my Macbook.  I really do.  But every once in a while, something that shouldn&amp;#8217;t be painful is.  And it&amp;#8217;s usually really painful&amp;#8230;&lt;/p&gt;
&lt;p&gt;About one month ago, I was working on getting some &lt;a href="http://developer.android.com/sdk/index.html" target="_blank"&gt;Android emulators&lt;/a&gt; up and running in Eclipse.  I was learning how to use &lt;a href="http://developer.android.com/guide/developing/debugging/ddms.html" target="_blank"&gt;Dalvik Debug Monitor&lt;/a&gt; to grab screen captures from my emulators to automate testing for some of my responsive designs.  It was grand.&lt;/p&gt;
&lt;p&gt;And then I got screwed over: The next day, I opened up Eclipse to find out that &lt;a href="http://superuser.com/questions/358164/jvm-disappeared-on-mac-os-x-snow-leopard-10-6-8" target="_blank"&gt;I lost my JVM&lt;/a&gt;.  Knowing that I was just fooling around with the Android SDK, I thought it was my fault for being nosy.  This was all a red herring.&lt;/p&gt;
&lt;p&gt;It turns out that my JDK disappeared because of a failed auto-update. Weeks later, I would learn that &lt;a href="http://www.macupdate.com/app/mac/33087/apple-java-for-mac-os-x-10.6" target="_blank"&gt;tons of other people experienced the same thing&lt;/a&gt;.  &lt;/p&gt;
&lt;p&gt;I thought that I should just re-install Java.  To my surprise, not only did my JVM magically disappear, but the update that was to replace it wouldn&amp;#8217;t let sqljdbc4.jar connect to any servers.&lt;/p&gt;
&lt;p&gt;Eventually, I found out that I could install &lt;a href="http://jdk7.java.net/macportpreview/" target="_blank"&gt;Oracle&amp;#8217;s JDK 1.7.0 Developer Preview&lt;/a&gt;.  Magic.  &lt;/p&gt;
&lt;p&gt;Disclaimer: I already hate Java. I hate it more now.&lt;/p&gt;
&lt;p&gt;tl;dr - move over to Oracle&amp;#8217;s JDK project because Apple won&amp;#8217;t be shipping Java packages and apparently won&amp;#8217;t care about the quality of the updates until then anyways.&lt;/p&gt;</description><link>http://weisjohn.tumblr.com/post/13800018726</link><guid>http://weisjohn.tumblr.com/post/13800018726</guid><pubDate>Mon, 05 Dec 2011 18:58:00 -0500</pubDate></item><item><title>simple XSS prevention with jQuery</title><description>&lt;p&gt;So, let&amp;#8217;s say that you&amp;#8217;re getting some data from a user or calling a JSON data service somewhere&amp;#8230;&lt;strong&gt; Even if you&amp;#8217;re in control of your data service, you should never assume that the service will provide you will clean data that you can simply insert into your page.&lt;/strong&gt;  If you do, a user could inject text into the webpage and do mean things (redirect to their own site, steal other&amp;#8217;s data, steal your data, etc.) If you need to, &lt;a href="http://en.wikipedia.org/wiki/Cross-site_scripting" target="_blank"&gt;go learn about it.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Knowing is half the battle.  But it&amp;#8217;s only half. You also have to test every app that you write.  You might have even read every single article on &lt;a href="http://ha.ckers.org" target="_blank"&gt;ha.ckers.org&lt;/a&gt; and almost cried when @RSnake stopped writing. But that doesn&amp;#8217;t mean that you won&amp;#8217;t ever introduce an XSS into your application&amp;#8230; I know because I could probably give a 30 minute talk on different methods of sanitizing web applications and I introduced one into my code for three days without even noticing.&lt;/p&gt;

&lt;p&gt;If you&amp;#8217;re consuming a JSON service, there&amp;#8217;s a good chance that you&amp;#8217;re going to want to clean it up before just dumping it on the page.  JavaScript doesn&amp;#8217;t have a great way to do this very effectively, but there&amp;#8217;s a really easy way to do this with jQuery.&lt;/p&gt;
&lt;pre class="code"&gt;$(function() {
  
 var untrusted = "&amp;lt;script&amp;gt;alert('xss');&amp;lt;/script&amp;gt;";
  
 $("#jaquery").html(
   $("&amp;lt;div/&amp;gt;").text(untrusted).html()
 );

});
&lt;/pre&gt;
&lt;p&gt;&lt;br/&gt;We&amp;#8217;ve got an untrusted value.  This could be any element inside of a AJAX callback&amp;#8230; We&amp;#8217;re setting the HTML contents of the element with the id of &amp;#8220;jaquery&amp;#8221; to be the results of the sanitization.  The sanitization is the convenience part.  We create a &amp;lt;div&amp;gt; on the fly with the $(&amp;#8220;&amp;lt;div/&amp;gt;&amp;#8221;) portion.  We then set it&amp;#8217;s text to the value of &amp;#8220;untrusted&amp;#8221;.  We then retrieve it&amp;#8217;s HTML contents via the .html() getter. Voila.&lt;/p&gt;
&lt;p&gt;NOTE: This is not exhaustive, as dealing with XSS is almost never dealt with so easily like this.&lt;/p&gt;
&lt;p&gt;If you&amp;#8217;d like to, &lt;a href="http://jsbin.com/ivimul/4" target="_blank"&gt; go see this in action&lt;/a&gt;.&lt;/p&gt;</description><link>http://weisjohn.tumblr.com/post/11939537518</link><guid>http://weisjohn.tumblr.com/post/11939537518</guid><pubDate>Wed, 26 Oct 2011 00:41:00 -0400</pubDate></item><item><title>Tumbeasts are gone… :(</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_lptztz6cV11qkgxsoo1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Tumbeasts are gone… :(&lt;/p&gt;</description><link>http://weisjohn.tumblr.com/post/11619968185</link><guid>http://weisjohn.tumblr.com/post/11619968185</guid><pubDate>Tue, 18 Oct 2011 15:16:23 -0400</pubDate></item><item><title>Spread Firefox | The Home of Firefox Community Marketing</title><description>&lt;a href="http://www.spreadfirefox.com/"&gt;Spread Firefox | The Home of Firefox Community Marketing&lt;/a&gt;</description><link>http://weisjohn.tumblr.com/post/47497573</link><guid>http://weisjohn.tumblr.com/post/47497573</guid><pubDate>Tue, 26 Aug 2008 14:20:33 -0400</pubDate></item></channel></rss>
