Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FastLED/FastLED.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Garcia <danielgarcia@gmail.com>2015-10-08 20:13:46 +0300
committerDaniel Garcia <danielgarcia@gmail.com>2015-10-08 20:13:46 +0300
commit6930498f36f4d2f75da2bef4e292687d15a0eb1e (patch)
treea1ab81b8d9b75bb61a7533b4ff41f01510e2fcdb
parent0fc559ecc941ed6c08ad56a6faa431e7627bc376 (diff)
Site updated at 2015-10-08 17:13:46 UTC
-rw-r--r--blog/assets/jwplayer/glow/controlbar/background.pngbin141 -> 104 bytes
-rw-r--r--blog/assets/jwplayer/glow/controlbar/divider.pngbin118 -> 81 bytes
-rw-r--r--blog/assets/jwplayer/glow/controlbar/fullscreenButtonOver.pngbin636 -> 632 bytes
-rw-r--r--blog/assets/jwplayer/glow/controlbar/muteButton.pngbin343 -> 343 bytes
-rw-r--r--blog/assets/jwplayer/glow/controlbar/muteButtonOver.pngbin835 -> 817 bytes
-rw-r--r--blog/assets/jwplayer/glow/controlbar/normalscreenButtonOver.pngbin664 -> 658 bytes
-rw-r--r--blog/assets/jwplayer/glow/controlbar/pauseButton.pngbin170 -> 126 bytes
-rw-r--r--blog/assets/jwplayer/glow/controlbar/pauseButtonOver.pngbin442 -> 437 bytes
-rw-r--r--blog/assets/jwplayer/glow/controlbar/playButton.pngbin251 -> 250 bytes
-rw-r--r--blog/assets/jwplayer/glow/controlbar/timeSliderBuffer.pngbin112 -> 110 bytes
-rw-r--r--blog/assets/jwplayer/glow/controlbar/timeSliderCapLeft.pngbin94 -> 93 bytes
-rw-r--r--blog/assets/jwplayer/glow/controlbar/timeSliderCapRight.pngbin103 -> 102 bytes
-rw-r--r--blog/assets/jwplayer/glow/controlbar/timeSliderProgress.pngbin114 -> 112 bytes
-rw-r--r--blog/assets/jwplayer/glow/controlbar/timeSliderRail.pngbin116 -> 115 bytes
-rw-r--r--blog/assets/jwplayer/glow/controlbar/unmuteButton.pngbin264 -> 262 bytes
-rw-r--r--blog/assets/jwplayer/glow/controlbar/unmuteButtonOver.pngbin649 -> 642 bytes
-rw-r--r--blog/assets/jwplayer/glow/display/background.pngbin686 -> 676 bytes
-rw-r--r--blog/assets/jwplayer/glow/display/bufferIcon.pngbin816 -> 809 bytes
-rw-r--r--blog/assets/jwplayer/glow/display/muteIcon.pngbin334 -> 309 bytes
-rw-r--r--blog/assets/jwplayer/glow/display/playIcon.pngbin465 -> 460 bytes
-rw-r--r--blog/assets/jwplayer/glow/dock/button.pngbin686 -> 676 bytes
-rw-r--r--blog/assets/jwplayer/glow/playlist/item.pngbin172 -> 133 bytes
-rw-r--r--blog/assets/jwplayer/glow/playlist/itemOver.pngbin171 -> 133 bytes
-rw-r--r--blog/assets/jwplayer/glow/playlist/sliderCapBottom.pngbin108 -> 106 bytes
-rw-r--r--blog/assets/jwplayer/glow/playlist/sliderCapTop.pngbin105 -> 104 bytes
-rw-r--r--blog/assets/jwplayer/glow/playlist/sliderRail.pngbin100 -> 98 bytes
-rw-r--r--blog/assets/jwplayer/glow/playlist/sliderThumb.pngbin97 -> 95 bytes
-rw-r--r--blog/assets/jwplayer/glow/sharing/embedIcon.pngbin749 -> 747 bytes
-rw-r--r--blog/assets/jwplayer/glow/sharing/embedScreen.pngbin2579 -> 2464 bytes
-rw-r--r--blog/assets/jwplayer/glow/sharing/shareIcon.pngbin589 -> 582 bytes
-rw-r--r--blog/assets/jwplayer/glow/sharing/shareScreen.pngbin4576 -> 4335 bytes
-rw-r--r--blog/atom.xml67
-rw-r--r--blog/blog/2014/01/10/first-post/index.html32
-rw-r--r--blog/blog/2014/01/13/fastled-2-released-slash/index.html34
-rw-r--r--blog/blog/2015/10/08/fastled-3-dot-1-released/index.html283
-rw-r--r--blog/blog/archives/index.html30
-rw-r--r--blog/images/bird_32_gray.pngbin1376 -> 331 bytes
-rw-r--r--blog/images/bird_32_gray_fail.pngbin615 -> 312 bytes
-rw-r--r--blog/images/code_bg.pngbin239 -> 179 bytes
-rw-r--r--blog/images/dotted-border.pngbin99 -> 78 bytes
-rw-r--r--blog/images/email.pngbin301 -> 250 bytes
-rw-r--r--blog/images/line-tile.pngbin636 -> 566 bytes
-rw-r--r--blog/images/noise.pngbin17742 -> 16921 bytes
-rw-r--r--blog/images/rss.pngbin490 -> 306 bytes
-rw-r--r--blog/images/search.pngbin333 -> 237 bytes
-rw-r--r--blog/index.html107
-rw-r--r--blog/javascripts/octopress.js6
-rw-r--r--blog/robots.txt2
-rw-r--r--blog/sitemap.xml44
-rw-r--r--blog/stylesheets/screen.css2
50 files changed, 512 insertions, 95 deletions
diff --git a/blog/assets/jwplayer/glow/controlbar/background.png b/blog/assets/jwplayer/glow/controlbar/background.png
index c2824cc4..59a2322c 100644
--- a/blog/assets/jwplayer/glow/controlbar/background.png
+++ b/blog/assets/jwplayer/glow/controlbar/background.png
Binary files differ
diff --git a/blog/assets/jwplayer/glow/controlbar/divider.png b/blog/assets/jwplayer/glow/controlbar/divider.png
index 77cd829a..021685f4 100644
--- a/blog/assets/jwplayer/glow/controlbar/divider.png
+++ b/blog/assets/jwplayer/glow/controlbar/divider.png
Binary files differ
diff --git a/blog/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png b/blog/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png
index d2bc4fc7..4d23d007 100644
--- a/blog/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png
+++ b/blog/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png
Binary files differ
diff --git a/blog/assets/jwplayer/glow/controlbar/muteButton.png b/blog/assets/jwplayer/glow/controlbar/muteButton.png
index 40c40ab2..55de26a1 100644
--- a/blog/assets/jwplayer/glow/controlbar/muteButton.png
+++ b/blog/assets/jwplayer/glow/controlbar/muteButton.png
Binary files differ
diff --git a/blog/assets/jwplayer/glow/controlbar/muteButtonOver.png b/blog/assets/jwplayer/glow/controlbar/muteButtonOver.png
index 96fe7bb0..08bf0669 100644
--- a/blog/assets/jwplayer/glow/controlbar/muteButtonOver.png
+++ b/blog/assets/jwplayer/glow/controlbar/muteButtonOver.png
Binary files differ
diff --git a/blog/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png b/blog/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png
index 15db44d4..6668f389 100644
--- a/blog/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png
+++ b/blog/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png
Binary files differ
diff --git a/blog/assets/jwplayer/glow/controlbar/pauseButton.png b/blog/assets/jwplayer/glow/controlbar/pauseButton.png
index e399bf34..23706cd2 100644
--- a/blog/assets/jwplayer/glow/controlbar/pauseButton.png
+++ b/blog/assets/jwplayer/glow/controlbar/pauseButton.png
Binary files differ
diff --git a/blog/assets/jwplayer/glow/controlbar/pauseButtonOver.png b/blog/assets/jwplayer/glow/controlbar/pauseButtonOver.png
index 409d89d2..252e7217 100644
--- a/blog/assets/jwplayer/glow/controlbar/pauseButtonOver.png
+++ b/blog/assets/jwplayer/glow/controlbar/pauseButtonOver.png
Binary files differ
diff --git a/blog/assets/jwplayer/glow/controlbar/playButton.png b/blog/assets/jwplayer/glow/controlbar/playButton.png
index f8d9a007..345e5e8a 100644
--- a/blog/assets/jwplayer/glow/controlbar/playButton.png
+++ b/blog/assets/jwplayer/glow/controlbar/playButton.png
Binary files differ
diff --git a/blog/assets/jwplayer/glow/controlbar/timeSliderBuffer.png b/blog/assets/jwplayer/glow/controlbar/timeSliderBuffer.png
index 73b371ab..5e151d69 100644
--- a/blog/assets/jwplayer/glow/controlbar/timeSliderBuffer.png
+++ b/blog/assets/jwplayer/glow/controlbar/timeSliderBuffer.png
Binary files differ
diff --git a/blog/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png b/blog/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png
index 72322171..e89fc5c6 100644
--- a/blog/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png
+++ b/blog/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png
Binary files differ
diff --git a/blog/assets/jwplayer/glow/controlbar/timeSliderCapRight.png b/blog/assets/jwplayer/glow/controlbar/timeSliderCapRight.png
index 626444a6..ae47e901 100644
--- a/blog/assets/jwplayer/glow/controlbar/timeSliderCapRight.png
+++ b/blog/assets/jwplayer/glow/controlbar/timeSliderCapRight.png
Binary files differ
diff --git a/blog/assets/jwplayer/glow/controlbar/timeSliderProgress.png b/blog/assets/jwplayer/glow/controlbar/timeSliderProgress.png
index 132a8e7d..03d2a98a 100644
--- a/blog/assets/jwplayer/glow/controlbar/timeSliderProgress.png
+++ b/blog/assets/jwplayer/glow/controlbar/timeSliderProgress.png
Binary files differ
diff --git a/blog/assets/jwplayer/glow/controlbar/timeSliderRail.png b/blog/assets/jwplayer/glow/controlbar/timeSliderRail.png
index 27851dfd..92d52f9a 100644
--- a/blog/assets/jwplayer/glow/controlbar/timeSliderRail.png
+++ b/blog/assets/jwplayer/glow/controlbar/timeSliderRail.png
Binary files differ
diff --git a/blog/assets/jwplayer/glow/controlbar/unmuteButton.png b/blog/assets/jwplayer/glow/controlbar/unmuteButton.png
index 3658453c..6b8ec461 100644
--- a/blog/assets/jwplayer/glow/controlbar/unmuteButton.png
+++ b/blog/assets/jwplayer/glow/controlbar/unmuteButton.png
Binary files differ
diff --git a/blog/assets/jwplayer/glow/controlbar/unmuteButtonOver.png b/blog/assets/jwplayer/glow/controlbar/unmuteButtonOver.png
index 138ebb35..5a76e0b0 100644
--- a/blog/assets/jwplayer/glow/controlbar/unmuteButtonOver.png
+++ b/blog/assets/jwplayer/glow/controlbar/unmuteButtonOver.png
Binary files differ
diff --git a/blog/assets/jwplayer/glow/display/background.png b/blog/assets/jwplayer/glow/display/background.png
index 391152f5..08be16d5 100644
--- a/blog/assets/jwplayer/glow/display/background.png
+++ b/blog/assets/jwplayer/glow/display/background.png
Binary files differ
diff --git a/blog/assets/jwplayer/glow/display/bufferIcon.png b/blog/assets/jwplayer/glow/display/bufferIcon.png
index a3819c1e..5c22bbce 100644
--- a/blog/assets/jwplayer/glow/display/bufferIcon.png
+++ b/blog/assets/jwplayer/glow/display/bufferIcon.png
Binary files differ
diff --git a/blog/assets/jwplayer/glow/display/muteIcon.png b/blog/assets/jwplayer/glow/display/muteIcon.png
index e0408bbd..2b1e6c62 100644
--- a/blog/assets/jwplayer/glow/display/muteIcon.png
+++ b/blog/assets/jwplayer/glow/display/muteIcon.png
Binary files differ
diff --git a/blog/assets/jwplayer/glow/display/playIcon.png b/blog/assets/jwplayer/glow/display/playIcon.png
index cb384278..5705dedd 100644
--- a/blog/assets/jwplayer/glow/display/playIcon.png
+++ b/blog/assets/jwplayer/glow/display/playIcon.png
Binary files differ
diff --git a/blog/assets/jwplayer/glow/dock/button.png b/blog/assets/jwplayer/glow/dock/button.png
index 391152f5..08be16d5 100644
--- a/blog/assets/jwplayer/glow/dock/button.png
+++ b/blog/assets/jwplayer/glow/dock/button.png
Binary files differ
diff --git a/blog/assets/jwplayer/glow/playlist/item.png b/blog/assets/jwplayer/glow/playlist/item.png
index 812592c3..3d1511c9 100644
--- a/blog/assets/jwplayer/glow/playlist/item.png
+++ b/blog/assets/jwplayer/glow/playlist/item.png
Binary files differ
diff --git a/blog/assets/jwplayer/glow/playlist/itemOver.png b/blog/assets/jwplayer/glow/playlist/itemOver.png
index 549f3721..817ed747 100644
--- a/blog/assets/jwplayer/glow/playlist/itemOver.png
+++ b/blog/assets/jwplayer/glow/playlist/itemOver.png
Binary files differ
diff --git a/blog/assets/jwplayer/glow/playlist/sliderCapBottom.png b/blog/assets/jwplayer/glow/playlist/sliderCapBottom.png
index 048cc623..38c8e1de 100644
--- a/blog/assets/jwplayer/glow/playlist/sliderCapBottom.png
+++ b/blog/assets/jwplayer/glow/playlist/sliderCapBottom.png
Binary files differ
diff --git a/blog/assets/jwplayer/glow/playlist/sliderCapTop.png b/blog/assets/jwplayer/glow/playlist/sliderCapTop.png
index 65c463a0..6d00c151 100644
--- a/blog/assets/jwplayer/glow/playlist/sliderCapTop.png
+++ b/blog/assets/jwplayer/glow/playlist/sliderCapTop.png
Binary files differ
diff --git a/blog/assets/jwplayer/glow/playlist/sliderRail.png b/blog/assets/jwplayer/glow/playlist/sliderRail.png
index 121778af..2b455a6f 100644
--- a/blog/assets/jwplayer/glow/playlist/sliderRail.png
+++ b/blog/assets/jwplayer/glow/playlist/sliderRail.png
Binary files differ
diff --git a/blog/assets/jwplayer/glow/playlist/sliderThumb.png b/blog/assets/jwplayer/glow/playlist/sliderThumb.png
index 118c3e03..876ace11 100644
--- a/blog/assets/jwplayer/glow/playlist/sliderThumb.png
+++ b/blog/assets/jwplayer/glow/playlist/sliderThumb.png
Binary files differ
diff --git a/blog/assets/jwplayer/glow/sharing/embedIcon.png b/blog/assets/jwplayer/glow/sharing/embedIcon.png
index 3394ac9c..7f726089 100644
--- a/blog/assets/jwplayer/glow/sharing/embedIcon.png
+++ b/blog/assets/jwplayer/glow/sharing/embedIcon.png
Binary files differ
diff --git a/blog/assets/jwplayer/glow/sharing/embedScreen.png b/blog/assets/jwplayer/glow/sharing/embedScreen.png
index b4059754..2d55355d 100644
--- a/blog/assets/jwplayer/glow/sharing/embedScreen.png
+++ b/blog/assets/jwplayer/glow/sharing/embedScreen.png
Binary files differ
diff --git a/blog/assets/jwplayer/glow/sharing/shareIcon.png b/blog/assets/jwplayer/glow/sharing/shareIcon.png
index eae1d4e7..75bd939a 100644
--- a/blog/assets/jwplayer/glow/sharing/shareIcon.png
+++ b/blog/assets/jwplayer/glow/sharing/shareIcon.png
Binary files differ
diff --git a/blog/assets/jwplayer/glow/sharing/shareScreen.png b/blog/assets/jwplayer/glow/sharing/shareScreen.png
index 695ec949..0db8f4a7 100644
--- a/blog/assets/jwplayer/glow/sharing/shareScreen.png
+++ b/blog/assets/jwplayer/glow/sharing/shareScreen.png
Binary files differ
diff --git a/blog/atom.xml b/blog/atom.xml
index efb99694..7f46c10f 100644
--- a/blog/atom.xml
+++ b/blog/atom.xml
@@ -4,7 +4,7 @@
<title><![CDATA[FastLED]]></title>
<link href="http://fastled.io/blog/atom.xml" rel="self"/>
<link href="http://fastled.io/blog/"/>
- <updated>2014-01-13T20:46:01-08:00</updated>
+ <updated>2015-10-08T10:11:12-07:00</updated>
<id>http://fastled.io/blog/</id>
<author>
<name><![CDATA[FastLED]]></name>
@@ -14,6 +14,71 @@
<entry>
+ <title type="html"><![CDATA[FastLED 3.1 Released]]></title>
+ <link href="http://fastled.io/blog/blog/2015/10/08/fastled-3-dot-1-released/"/>
+ <updated>2015-10-08T10:09:32-07:00</updated>
+ <id>http://fastled.io/blog/blog/2015/10/08/fastled-3-dot-1-released</id>
+ <content type="html"><![CDATA[<p>We&rsquo;re proud to announce the full release of FastLED version 3.1, an open source LED animation library for Arduino.</p>
+
+<p>Download the ZIP file here <a href="https://github.com/FastLED/FastLED/archive/v3.1.0.zip">https://github.com/FastLED/FastLED/archive/v3.1.0.zip</a> or update directly using git.</p>
+
+<p>In the eleven months since the last release, FastLED has become even more capable, even more compatible, and yes, even faster. Here are some highlights of what&rsquo;s new in FastLED v3.1 over and above the 3.0 release:
+* Support for even more microcontroller chips and boards
+* High-performance parallel output on Arduino Due and Teensy 3.x
+* Literally the fastest-possible driver for the Neopixel WS2812 family of LEDs on standard ATmega-based Arduinos
+* New animation tools like periodic timers and color crossfades</p>
+
+<p>A big thanks goes out to the vibrant and growing FastLED community, who&rsquo;ve helped shape and refine this library, and who have built some absolutely amazing projects with it. You rock. Keep it up!</p>
+
+<p>Here&rsquo;s some more detail on what&rsquo;s in the FastLED v3.1 release:</p>
+
+<p>New Microcontroller Support Added
+* Arduino Zero
+* Teensy-LC
+* RFDuino
+* Sparkcore
+* Many new AVR-based platforms
+* Continued support for popular Arduino boards (Uno, Duo, Leonardo, Nano, Micro, etc.), the Adafruit Trinket, Gemma, and Flora, the Digistump DigiX, as well as PJRC Teensy 2, Teensy 3.0, and Teensy 3.1.</p>
+
+<p>Continued LED Support
+FastLED v3.1 continues support for more than a dozen popular addressable LEDs: NeoPixel, WS2811, WS2812, WS2812B, DotStar, APA102, APA104, GW6205/GW6205_400, P9813 Total Control Lighting LEDs, USC1903_400, Pixelmatix SmartMatrix, WS2801, LPD8806, LPD1886, TM1809, TM1804, TM1803, and SM16716!</p>
+
+<p>New Library Features
+* Parallel output on multiple pins on Arduino Due, Teensy 3.0, and Teensy 3.1
+* Interrupt processing supported on Arduino Due, Teensy 3.0, Teensy 3.1, even when using Neopixel WS2812 family LEDs (WS2811, WS2812, WS2812B)
+* Improved SPI device sharing on the Teensy 3.0 and Teensy 3.1
+* Refresh rate auto-capping for LEDs that have a maximum update speed (e.g. Neopixel WS2812 family)
+* Support for Arduino 1.6.x IDE and gcc 4.8.1
+* Literally the fastest output physically possible for Neopixel WS2812 family LEDs.</p>
+
+<p>New Library Functions
+* Recurring event triggers EVERY_N_MILLISECONDS, EVERY_N_SECONDS, EVERY_N_MINUTES, and EVERY_N_HOURS
+* Smooth crossfade between multiple color palettes
+* Define color palettes as a series of connected gradients
+* Recover approximate HSV color from RGB values with rgb2hsv_approximate
+* Ability to store one bit of user data in a CRGB, often invisibly
+* New named color &ldquo;FairyLight&rdquo; approximates incandescent holiday lights
+* Additional new functions for color gamma correction
+* Fast, compact routines for 8-bit average and modulo, and for 16-bit square root
+* random8 is now much more random</p>
+
+<p>Backward Compatibility
+* Everything in FastLED v3.1 should be backward compatible with FastLED v3.0, with one exception:
+* We changed from the old symbol name &ldquo;BLEND&rdquo; to the new symbol name &ldquo;LINEARBLEND&rdquo; for ColorFromPalette, to avoid conflicts with another codebase. Simply replace &ldquo;BLEND&rdquo; with &ldquo;LINEARBLEND&rdquo; and your code should compile and run as before.</p>
+
+<p>And Also
+* New example &ldquo;DemoReel100&rdquo;: six animations in 100 lines of code
+* Access to thousands of designer color palettes from cpt-city
+* &ldquo;FastLED6502&rdquo; for Apple ][, ][+, //e, and //gs (unsupported!)
+* Lots of code cleanup for improved maintainability, readability, and theoretical future sanity
+* New and improved documentation
+* And, as the apps say, &ldquo;bug fixes and performance improvements.&rdquo;</p>
+
+<p>-Daniel Garcia &amp; Mark Kriegsman, September 2015</p>
+]]></content>
+ </entry>
+
+ <entry>
<title type="html"><![CDATA[FastLED v2.0 Released!]]></title>
<link href="http://fastled.io/blog/blog/2014/01/13/fastled-2-released-slash/"/>
<updated>2014-01-13T20:42:49-08:00</updated>
diff --git a/blog/blog/2014/01/10/first-post/index.html b/blog/blog/2014/01/10/first-post/index.html
index e353622a..dee39b2c 100644
--- a/blog/blog/2014/01/10/first-post/index.html
+++ b/blog/blog/2014/01/10/first-post/index.html
@@ -20,13 +20,13 @@ running!
<meta name="viewport" content="width=device-width, initial-scale=1">
- <link rel="canonical" href="http://fastled.io/blog/blog/2014/01/10/first-post">
+ <link rel="canonical" href="http://fastled.io/blog/blog/2014/01/10/first-post/">
<link href="/blog/favicon.png" rel="icon">
<link href="/blog/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
<link href="/blog/atom.xml" rel="alternate" title="FastLED" type="application/atom+xml">
<script src="/blog/javascripts/modernizr-2.0.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
- <script>!window.jQuery && document.write(unescape('%3Cscript src="./javascripts/libs/jquery.min.js"%3E%3C/script%3E'))</script>
+ <script>!window.jQuery && document.write(unescape('%3Cscript src="/javascripts/libs/jquery.min.js"%3E%3C/script%3E'))</script>
<script src="/blog/javascripts/octopress.js" type="text/javascript"></script>
<!--Fonts from Google"s Web font directory at http://google.com/webfonts -->
<link href="http://fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
@@ -52,7 +52,7 @@ running!
<form action="http://google.com/search" method="get">
<fieldset role="search">
- <input type="hidden" name="q" value="site:fastled.io/blog" />
+ <input type="hidden" name="sitesearch" value="fastled.io/blog">
<input class="search" type="text" name="q" results="0" placeholder="Search"/>
</fieldset>
</form>
@@ -79,14 +79,7 @@ running!
-
-
-
-
-
-
-
-<time datetime="2014-01-10T03:30:47-08:00" pubdate data-updated="true">Jan 10<span>th</span>, 2014</time>
+<time class='entry-date' datetime='2014-01-10T03:30:47-08:00'><span class='date'><span class='date-month'>Jan</span> <span class='date-day'>10</span><span class='date-suffix'>th</span>, <span class='date-year'>2014</span></span> <span class='time'>3:30 am</span></time>
</p>
@@ -110,14 +103,7 @@ running!</p>
-
-
-
-
-
-
-
-<time datetime="2014-01-10T03:30:47-08:00" pubdate data-updated="true">Jan 10<span>th</span>, 2014</time>
+<time class='entry-date' datetime='2014-01-10T03:30:47-08:00'><span class='date'><span class='date-month'>Jan</span> <span class='date-day'>10</span><span class='date-suffix'>th</span>, <span class='date-year'>2014</span></span> <span class='time'>3:30 am</span></time>
@@ -125,7 +111,7 @@ running!</p>
<div class="sharing">
- <a href="/blog//twitter.com/share" class="twitter-share-button" data-url="http://fastled.io/blog/blog/2014/01/10/first-post/" data-via="" data-counturl="http://fastled.io/blog/blog/2014/01/10/first-post/" >Tweet</a>
+ <a href="//twitter.com/share" class="twitter-share-button" data-url="http://fastled.io/blog/blog/2014/01/10/first-post/" data-via="" data-counturl="http://fastled.io/blog/blog/2014/01/10/first-post/" >Tweet</a>
@@ -150,6 +136,10 @@ running!</p>
<ul id="recent_posts">
<li class="post">
+ <a href="/blog/blog/2015/10/08/fastled-3-dot-1-released/">FastLED 3.1 Released</a>
+ </li>
+
+ <li class="post">
<a href="/blog/blog/2014/01/13/fastled-2-released-slash/">FastLED v2.0 Released!</a>
</li>
@@ -209,7 +199,7 @@ running!</p>
</div>
</div>
<footer role="contentinfo"><p>
- Copyright &copy; 2014 - FastLED -
+ Copyright &copy; 2015 - FastLED -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
diff --git a/blog/blog/2014/01/13/fastled-2-released-slash/index.html b/blog/blog/2014/01/13/fastled-2-released-slash/index.html
index eaf9a863..f99b6683 100644
--- a/blog/blog/2014/01/13/fastled-2-released-slash/index.html
+++ b/blog/blog/2014/01/13/fastled-2-released-slash/index.html
@@ -18,13 +18,13 @@
<meta name="viewport" content="width=device-width, initial-scale=1">
- <link rel="canonical" href="http://fastled.io/blog/blog/2014/01/13/fastled-2-released-slash">
+ <link rel="canonical" href="http://fastled.io/blog/blog/2014/01/13/fastled-2-released-slash/">
<link href="/blog/favicon.png" rel="icon">
<link href="/blog/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
<link href="/blog/atom.xml" rel="alternate" title="FastLED" type="application/atom+xml">
<script src="/blog/javascripts/modernizr-2.0.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
- <script>!window.jQuery && document.write(unescape('%3Cscript src="./javascripts/libs/jquery.min.js"%3E%3C/script%3E'))</script>
+ <script>!window.jQuery && document.write(unescape('%3Cscript src="/javascripts/libs/jquery.min.js"%3E%3C/script%3E'))</script>
<script src="/blog/javascripts/octopress.js" type="text/javascript"></script>
<!--Fonts from Google"s Web font directory at http://google.com/webfonts -->
<link href="http://fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
@@ -50,7 +50,7 @@
<form action="http://google.com/search" method="get">
<fieldset role="search">
- <input type="hidden" name="q" value="site:fastled.io/blog" />
+ <input type="hidden" name="sitesearch" value="fastled.io/blog">
<input class="search" type="text" name="q" results="0" placeholder="Search"/>
</fieldset>
</form>
@@ -77,14 +77,7 @@
-
-
-
-
-
-
-
-<time datetime="2014-01-13T20:42:49-08:00" pubdate data-updated="true">Jan 13<span>th</span>, 2014</time>
+<time class='entry-date' datetime='2014-01-13T20:42:49-08:00'><span class='date'><span class='date-month'>Jan</span> <span class='date-day'>13</span><span class='date-suffix'>th</span>, <span class='date-year'>2014</span></span> <span class='time'>8:42 pm</span></time>
</p>
@@ -133,14 +126,7 @@
-
-
-
-
-
-
-
-<time datetime="2014-01-13T20:42:49-08:00" pubdate data-updated="true">Jan 13<span>th</span>, 2014</time>
+<time class='entry-date' datetime='2014-01-13T20:42:49-08:00'><span class='date'><span class='date-month'>Jan</span> <span class='date-day'>13</span><span class='date-suffix'>th</span>, <span class='date-year'>2014</span></span> <span class='time'>8:42 pm</span></time>
@@ -148,7 +134,7 @@
<div class="sharing">
- <a href="/blog//twitter.com/share" class="twitter-share-button" data-url="http://fastled.io/blog/blog/2014/01/13/fastled-2-released-slash/" data-via="" data-counturl="http://fastled.io/blog/blog/2014/01/13/fastled-2-released-slash/" >Tweet</a>
+ <a href="//twitter.com/share" class="twitter-share-button" data-url="http://fastled.io/blog/blog/2014/01/13/fastled-2-released-slash/" data-via="" data-counturl="http://fastled.io/blog/blog/2014/01/13/fastled-2-released-slash/" >Tweet</a>
@@ -160,6 +146,8 @@
<a class="basic-alignment left" href="/blog/blog/2014/01/10/first-post/" title="Previous Post: First post">&laquo; First post</a>
+ <a class="basic-alignment right" href="/blog/blog/2015/10/08/fastled-3-dot-1-released/" title="Next Post: FastLED 3.1 Released">FastLED 3.1 Released &raquo;</a>
+
</p>
</footer>
</article>
@@ -173,6 +161,10 @@
<ul id="recent_posts">
<li class="post">
+ <a href="/blog/blog/2015/10/08/fastled-3-dot-1-released/">FastLED 3.1 Released</a>
+ </li>
+
+ <li class="post">
<a href="/blog/blog/2014/01/13/fastled-2-released-slash/">FastLED v2.0 Released!</a>
</li>
@@ -232,7 +224,7 @@
</div>
</div>
<footer role="contentinfo"><p>
- Copyright &copy; 2014 - FastLED -
+ Copyright &copy; 2015 - FastLED -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
diff --git a/blog/blog/2015/10/08/fastled-3-dot-1-released/index.html b/blog/blog/2015/10/08/fastled-3-dot-1-released/index.html
new file mode 100644
index 00000000..12e9f182
--- /dev/null
+++ b/blog/blog/2015/10/08/fastled-3-dot-1-released/index.html
@@ -0,0 +1,283 @@
+
+<!DOCTYPE html>
+<!--[if IEMobile 7 ]><html class="no-js iem7"><![endif]-->
+<!--[if lt IE 9]><html class="no-js lte-ie8"><![endif]-->
+<!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]-->
+<head>
+ <meta charset="utf-8">
+ <title>FastLED 3.1 Released - FastLED</title>
+ <meta name="author" content="FastLED">
+
+
+ <meta name="description" content="We&rsquo;re proud to announce the full release of FastLED version 3.1, an open source LED animation library for Arduino. Download the ZIP file here &hellip;">
+
+
+ <!-- http://t.co/dKP3o1e -->
+ <meta name="HandheldFriendly" content="True">
+ <meta name="MobileOptimized" content="320">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+
+ <link rel="canonical" href="http://fastled.io/blog/blog/2015/10/08/fastled-3-dot-1-released/">
+ <link href="/blog/favicon.png" rel="icon">
+ <link href="/blog/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
+ <link href="/blog/atom.xml" rel="alternate" title="FastLED" type="application/atom+xml">
+ <script src="/blog/javascripts/modernizr-2.0.js"></script>
+ <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
+ <script>!window.jQuery && document.write(unescape('%3Cscript src="/javascripts/libs/jquery.min.js"%3E%3C/script%3E'))</script>
+ <script src="/blog/javascripts/octopress.js" type="text/javascript"></script>
+ <!--Fonts from Google"s Web font directory at http://google.com/webfonts -->
+<link href="http://fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
+<link href="http://fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
+
+
+
+</head>
+
+<body >
+ <header role="banner"><hgroup>
+ <h1><a href="/blog/">FastLED</a></h1>
+
+ <h2>A library for driving Leds</h2>
+
+</hgroup>
+
+</header>
+ <nav role="navigation"><ul class="subscription" data-subscription="rss">
+ <li><a href="/blog/atom.xml" rel="subscribe-rss" title="subscribe via RSS">RSS</a></li>
+
+</ul>
+
+<form action="http://google.com/search" method="get">
+ <fieldset role="search">
+ <input type="hidden" name="sitesearch" value="fastled.io/blog">
+ <input class="search" type="text" name="q" results="0" placeholder="Search"/>
+ </fieldset>
+</form>
+
+<ul class="main-navigation">
+ <li><a href="/blog/">Blog</a></li>
+ <li><a href="/blog/blog/archives">Archives</a></li>
+</ul>
+
+</nav>
+ <div id="main">
+ <div id="content">
+ <div>
+<article class="hentry" role="article">
+
+ <header>
+
+ <h1 class="entry-title">FastLED 3.1 Released</h1>
+
+
+ <p class="meta">
+
+
+
+
+
+<time class='entry-date' datetime='2015-10-08T10:09:32-07:00'><span class='date'><span class='date-month'>Oct</span> <span class='date-day'>8</span><span class='date-suffix'>th</span>, <span class='date-year'>2015</span></span> <span class='time'>10:09 am</span></time>
+
+ </p>
+
+ </header>
+
+
+<div class="entry-content"><p>We&rsquo;re proud to announce the full release of FastLED version 3.1, an open source LED animation library for Arduino.</p>
+
+<p>Download the ZIP file here <a href="https://github.com/FastLED/FastLED/archive/v3.1.0.zip">https://github.com/FastLED/FastLED/archive/v3.1.0.zip</a> or update directly using git.</p>
+
+<p>In the eleven months since the last release, FastLED has become even more capable, even more compatible, and yes, even faster. Here are some highlights of what&rsquo;s new in FastLED v3.1 over and above the 3.0 release:
+* Support for even more microcontroller chips and boards
+* High-performance parallel output on Arduino Due and Teensy 3.x
+* Literally the fastest-possible driver for the Neopixel WS2812 family of LEDs on standard ATmega-based Arduinos
+* New animation tools like periodic timers and color crossfades</p>
+
+<p>A big thanks goes out to the vibrant and growing FastLED community, who&rsquo;ve helped shape and refine this library, and who have built some absolutely amazing projects with it. You rock. Keep it up!</p>
+
+<p>Here&rsquo;s some more detail on what&rsquo;s in the FastLED v3.1 release:</p>
+
+<p>New Microcontroller Support Added
+* Arduino Zero
+* Teensy-LC
+* RFDuino
+* Sparkcore
+* Many new AVR-based platforms
+* Continued support for popular Arduino boards (Uno, Duo, Leonardo, Nano, Micro, etc.), the Adafruit Trinket, Gemma, and Flora, the Digistump DigiX, as well as PJRC Teensy 2, Teensy 3.0, and Teensy 3.1.</p>
+
+<p>Continued LED Support
+FastLED v3.1 continues support for more than a dozen popular addressable LEDs: NeoPixel, WS2811, WS2812, WS2812B, DotStar, APA102, APA104, GW6205/GW6205_400, P9813 Total Control Lighting LEDs, USC1903_400, Pixelmatix SmartMatrix, WS2801, LPD8806, LPD1886, TM1809, TM1804, TM1803, and SM16716!</p>
+
+<p>New Library Features
+* Parallel output on multiple pins on Arduino Due, Teensy 3.0, and Teensy 3.1
+* Interrupt processing supported on Arduino Due, Teensy 3.0, Teensy 3.1, even when using Neopixel WS2812 family LEDs (WS2811, WS2812, WS2812B)
+* Improved SPI device sharing on the Teensy 3.0 and Teensy 3.1
+* Refresh rate auto-capping for LEDs that have a maximum update speed (e.g. Neopixel WS2812 family)
+* Support for Arduino 1.6.x IDE and gcc 4.8.1
+* Literally the fastest output physically possible for Neopixel WS2812 family LEDs.</p>
+
+<p>New Library Functions
+* Recurring event triggers EVERY_N_MILLISECONDS, EVERY_N_SECONDS, EVERY_N_MINUTES, and EVERY_N_HOURS
+* Smooth crossfade between multiple color palettes
+* Define color palettes as a series of connected gradients
+* Recover approximate HSV color from RGB values with rgb2hsv_approximate
+* Ability to store one bit of user data in a CRGB, often invisibly
+* New named color &ldquo;FairyLight&rdquo; approximates incandescent holiday lights
+* Additional new functions for color gamma correction
+* Fast, compact routines for 8-bit average and modulo, and for 16-bit square root
+* random8 is now much more random</p>
+
+<p>Backward Compatibility
+* Everything in FastLED v3.1 should be backward compatible with FastLED v3.0, with one exception:
+* We changed from the old symbol name &ldquo;BLEND&rdquo; to the new symbol name &ldquo;LINEARBLEND&rdquo; for ColorFromPalette, to avoid conflicts with another codebase. Simply replace &ldquo;BLEND&rdquo; with &ldquo;LINEARBLEND&rdquo; and your code should compile and run as before.</p>
+
+<p>And Also
+* New example &ldquo;DemoReel100&rdquo;: six animations in 100 lines of code
+* Access to thousands of designer color palettes from cpt-city
+* &ldquo;FastLED6502&rdquo; for Apple ][, ][+, //e, and //gs (unsupported!)
+* Lots of code cleanup for improved maintainability, readability, and theoretical future sanity
+* New and improved documentation
+* And, as the apps say, &ldquo;bug fixes and performance improvements.&rdquo;</p>
+
+<p>-Daniel Garcia &amp; Mark Kriegsman, September 2015</p>
+</div>
+
+
+ <footer>
+ <p class="meta">
+
+
+
+<span class="byline author vcard">Posted by <span class="fn">FastLED</span></span>
+
+
+
+
+
+
+<time class='entry-date' datetime='2015-10-08T10:09:32-07:00'><span class='date'><span class='date-month'>Oct</span> <span class='date-day'>8</span><span class='date-suffix'>th</span>, <span class='date-year'>2015</span></span> <span class='time'>10:09 am</span></time>
+
+
+
+ </p>
+
+ <div class="sharing">
+
+ <a href="//twitter.com/share" class="twitter-share-button" data-url="http://fastled.io/blog/blog/2015/10/08/fastled-3-dot-1-released/" data-via="" data-counturl="http://fastled.io/blog/blog/2015/10/08/fastled-3-dot-1-released/" >Tweet</a>
+
+
+
+</div>
+
+
+ <p class="meta">
+
+ <a class="basic-alignment left" href="/blog/blog/2014/01/13/fastled-2-released-slash/" title="Previous Post: FastLED v2.0 Released!">&laquo; FastLED v2.0 Released!</a>
+
+
+ </p>
+ </footer>
+</article>
+
+</div>
+
+<aside class="sidebar">
+
+ <section>
+ <h1>Recent Posts</h1>
+ <ul id="recent_posts">
+
+ <li class="post">
+ <a href="/blog/blog/2015/10/08/fastled-3-dot-1-released/">FastLED 3.1 Released</a>
+ </li>
+
+ <li class="post">
+ <a href="/blog/blog/2014/01/13/fastled-2-released-slash/">FastLED v2.0 Released!</a>
+ </li>
+
+ <li class="post">
+ <a href="/blog/blog/2014/01/10/first-post/">First Post</a>
+ </li>
+
+ </ul>
+</section>
+<section>
+ <h1>Quick links</h1>
+ <ul>
+ <li><a href="http://fastled.io/+">Google+ Community</a>
+ <li><a href="http://fastled.io/wiki">FastLED wiki</a>
+ <li><a href="http://fastled.io/issues">FastLED issue tracker</a>
+ </ul>
+</section>
+
+
+<section>
+ <h1>GitHub Repos</h1>
+ <ul id="gh_repos">
+ <li class="loading">Status updating...</li>
+ </ul>
+
+ <a href="https://github.com/FastLED">@FastLED</a> on GitHub
+
+ <script type="text/javascript">
+ $(document).ready(function(){
+ if (!window.jXHR){
+ var jxhr = document.createElement('script');
+ jxhr.type = 'text/javascript';
+ jxhr.src = '/javascripts/libs/jXHR.js';
+ var s = document.getElementsByTagName('script')[0];
+ s.parentNode.insertBefore(jxhr, s);
+ }
+
+ github.showRepos({
+ user: 'FastLED',
+ count: 1,
+ skip_forks: true,
+ target: '#gh_repos'
+ });
+ });
+ </script>
+ <script src="/blog/javascripts/github.js" type="text/javascript"> </script>
+</section>
+
+
+
+
+
+
+</aside>
+
+
+ </div>
+ </div>
+ <footer role="contentinfo"><p>
+ Copyright &copy; 2015 - FastLED -
+ <span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
+</p>
+
+</footer>
+
+
+
+
+
+
+
+
+ <script type="text/javascript">
+ (function(){
+ var twitterWidgets = document.createElement('script');
+ twitterWidgets.type = 'text/javascript';
+ twitterWidgets.async = true;
+ twitterWidgets.src = '//platform.twitter.com/widgets.js';
+ document.getElementsByTagName('head')[0].appendChild(twitterWidgets);
+ })();
+ </script>
+
+
+
+
+
+</body>
+</html>
diff --git a/blog/blog/archives/index.html b/blog/blog/archives/index.html
index 30e01c70..0fd86ae6 100644
--- a/blog/blog/archives/index.html
+++ b/blog/blog/archives/index.html
@@ -9,9 +9,10 @@
<meta name="author" content="FastLED">
- <meta name="description" content="Blog Archive 2014 FastLED v2.0 Released!
+ <meta name="description" content="Blog Archive 2015 FastLED 3.1 Released
+Oct 08 2015 2014 FastLED v2.0 Released!
Jan 13 2014 First Post
-Jan 10 2014 Recent Posts FastLED v2.0 Released! First Post Quick links Google+ &hellip;">
+Jan 10 2014 Recent Posts FastLED 3.1 Released &hellip;">
<!-- http://t.co/dKP3o1e -->
@@ -20,13 +21,13 @@ Jan 10 2014 Recent Posts FastLED v2.0 Released! First Post Quick links Google+ &
<meta name="viewport" content="width=device-width, initial-scale=1">
- <link rel="canonical" href="http://fastled.io/blog/blog/archives">
+ <link rel="canonical" href="http://fastled.io/blog/blog/archives/">
<link href="/blog/favicon.png" rel="icon">
<link href="/blog/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
<link href="/blog/atom.xml" rel="alternate" title="FastLED" type="application/atom+xml">
<script src="/blog/javascripts/modernizr-2.0.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
- <script>!window.jQuery && document.write(unescape('%3Cscript src="./javascripts/libs/jquery.min.js"%3E%3C/script%3E'))</script>
+ <script>!window.jQuery && document.write(unescape('%3Cscript src="/javascripts/libs/jquery.min.js"%3E%3C/script%3E'))</script>
<script src="/blog/javascripts/octopress.js" type="text/javascript"></script>
<!--Fonts from Google"s Web font directory at http://google.com/webfonts -->
<link href="http://fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
@@ -52,7 +53,7 @@ Jan 10 2014 Recent Posts FastLED v2.0 Released! First Post Quick links Google+ &
<form action="http://google.com/search" method="get">
<fieldset role="search">
- <input type="hidden" name="q" value="site:fastled.io/blog" />
+ <input type="hidden" name="sitesearch" value="fastled.io/blog">
<input class="search" type="text" name="q" results="0" placeholder="Search"/>
</fieldset>
</form>
@@ -78,6 +79,19 @@ Jan 10 2014 Recent Posts FastLED v2.0 Released! First Post Quick links Google+ &
+ <h2>2015</h2>
+
+<article>
+
+<h1><a href="/blog/blog/2015/10/08/fastled-3-dot-1-released/">FastLED 3.1 Released</a></h1>
+<time datetime="2015-10-08T10:09:32-07:00" pubdate><span class='month'>Oct</span> <span class='day'>08</span> <span class='year'>2015</span></time>
+
+
+</article>
+
+
+
+
<h2>2014</h2>
<article>
@@ -112,6 +126,10 @@ Jan 10 2014 Recent Posts FastLED v2.0 Released! First Post Quick links Google+ &
<ul id="recent_posts">
<li class="post">
+ <a href="/blog/blog/2015/10/08/fastled-3-dot-1-released/">FastLED 3.1 Released</a>
+ </li>
+
+ <li class="post">
<a href="/blog/blog/2014/01/13/fastled-2-released-slash/">FastLED v2.0 Released!</a>
</li>
@@ -171,7 +189,7 @@ Jan 10 2014 Recent Posts FastLED v2.0 Released! First Post Quick links Google+ &
</div>
</div>
<footer role="contentinfo"><p>
- Copyright &copy; 2014 - FastLED -
+ Copyright &copy; 2015 - FastLED -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
diff --git a/blog/images/bird_32_gray.png b/blog/images/bird_32_gray.png
index 574f210a..0ee42403 100644
--- a/blog/images/bird_32_gray.png
+++ b/blog/images/bird_32_gray.png
Binary files differ
diff --git a/blog/images/bird_32_gray_fail.png b/blog/images/bird_32_gray_fail.png
index 8337d103..14e15516 100644
--- a/blog/images/bird_32_gray_fail.png
+++ b/blog/images/bird_32_gray_fail.png
Binary files differ
diff --git a/blog/images/code_bg.png b/blog/images/code_bg.png
index a57bab56..47fce44b 100644
--- a/blog/images/code_bg.png
+++ b/blog/images/code_bg.png
Binary files differ
diff --git a/blog/images/dotted-border.png b/blog/images/dotted-border.png
index 57f99071..d19b60c9 100644
--- a/blog/images/dotted-border.png
+++ b/blog/images/dotted-border.png
Binary files differ
diff --git a/blog/images/email.png b/blog/images/email.png
index e55473fe..d8308484 100644
--- a/blog/images/email.png
+++ b/blog/images/email.png
Binary files differ
diff --git a/blog/images/line-tile.png b/blog/images/line-tile.png
index f67ee19f..ea675bd3 100644
--- a/blog/images/line-tile.png
+++ b/blog/images/line-tile.png
Binary files differ
diff --git a/blog/images/noise.png b/blog/images/noise.png
index 432e05bf..d7123f6a 100644
--- a/blog/images/noise.png
+++ b/blog/images/noise.png
Binary files differ
diff --git a/blog/images/rss.png b/blog/images/rss.png
index 151ae718..afa20668 100644
--- a/blog/images/rss.png
+++ b/blog/images/rss.png
Binary files differ
diff --git a/blog/images/search.png b/blog/images/search.png
index 1220ff4e..dbc5fba4 100644
--- a/blog/images/search.png
+++ b/blog/images/search.png
Binary files differ
diff --git a/blog/index.html b/blog/index.html
index 75a64e58..372f22d0 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -9,7 +9,7 @@
<meta name="author" content="FastLED">
- <meta name="description" content="Dan and I are happy to announce the official Version 2.0 release of the FastLED library (formerly &ldquo;FastSPI_LED2&rdquo;), which is available &hellip;">
+ <meta name="description" content="We&rsquo;re proud to announce the full release of FastLED version 3.1, an open source LED animation library for Arduino. Download the ZIP file here &hellip;">
<!-- http://t.co/dKP3o1e -->
@@ -18,13 +18,13 @@
<meta name="viewport" content="width=device-width, initial-scale=1">
- <link rel="canonical" href="http://fastled.io/blog">
+ <link rel="canonical" href="http://fastled.io/blog/">
<link href="/blog/favicon.png" rel="icon">
<link href="/blog/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
<link href="/blog/atom.xml" rel="alternate" title="FastLED" type="application/atom+xml">
<script src="/blog/javascripts/modernizr-2.0.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
- <script>!window.jQuery && document.write(unescape('%3Cscript src="./javascripts/libs/jquery.min.js"%3E%3C/script%3E'))</script>
+ <script>!window.jQuery && document.write(unescape('%3Cscript src="/javascripts/libs/jquery.min.js"%3E%3C/script%3E'))</script>
<script src="/blog/javascripts/octopress.js" type="text/javascript"></script>
<!--Fonts from Google"s Web font directory at http://google.com/webfonts -->
<link href="http://fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
@@ -50,7 +50,7 @@
<form action="http://google.com/search" method="get">
<fieldset role="search">
- <input type="hidden" name="q" value="site:fastled.io/blog" />
+ <input type="hidden" name="sitesearch" value="fastled.io/blog">
<input class="search" type="text" name="q" results="0" placeholder="Search"/>
</fieldset>
</form>
@@ -71,7 +71,7 @@
<header>
- <h1 class="entry-title"><a href="/blog/blog/2014/01/13/fastled-2-released-slash/">FastLED v2.0 Released!</a></h1>
+ <h1 class="entry-title"><a href="/blog/blog/2015/10/08/fastled-3-dot-1-released/">FastLED 3.1 Released</a></h1>
<p class="meta">
@@ -80,14 +80,92 @@
+<time class='entry-date' datetime='2015-10-08T10:09:32-07:00'><span class='date'><span class='date-month'>Oct</span> <span class='date-day'>8</span><span class='date-suffix'>th</span>, <span class='date-year'>2015</span></span> <span class='time'>10:09 am</span></time>
+
+ </p>
+
+ </header>
+ <div class="entry-content"><p>We&rsquo;re proud to announce the full release of FastLED version 3.1, an open source LED animation library for Arduino.</p>
+
+<p>Download the ZIP file here <a href="https://github.com/FastLED/FastLED/archive/v3.1.0.zip">https://github.com/FastLED/FastLED/archive/v3.1.0.zip</a> or update directly using git.</p>
+
+<p>In the eleven months since the last release, FastLED has become even more capable, even more compatible, and yes, even faster. Here are some highlights of what&rsquo;s new in FastLED v3.1 over and above the 3.0 release:
+* Support for even more microcontroller chips and boards
+* High-performance parallel output on Arduino Due and Teensy 3.x
+* Literally the fastest-possible driver for the Neopixel WS2812 family of LEDs on standard ATmega-based Arduinos
+* New animation tools like periodic timers and color crossfades</p>
+
+<p>A big thanks goes out to the vibrant and growing FastLED community, who&rsquo;ve helped shape and refine this library, and who have built some absolutely amazing projects with it. You rock. Keep it up!</p>
+
+<p>Here&rsquo;s some more detail on what&rsquo;s in the FastLED v3.1 release:</p>
+
+<p>New Microcontroller Support Added
+* Arduino Zero
+* Teensy-LC
+* RFDuino
+* Sparkcore
+* Many new AVR-based platforms
+* Continued support for popular Arduino boards (Uno, Duo, Leonardo, Nano, Micro, etc.), the Adafruit Trinket, Gemma, and Flora, the Digistump DigiX, as well as PJRC Teensy 2, Teensy 3.0, and Teensy 3.1.</p>
+
+<p>Continued LED Support
+FastLED v3.1 continues support for more than a dozen popular addressable LEDs: NeoPixel, WS2811, WS2812, WS2812B, DotStar, APA102, APA104, GW6205/GW6205_400, P9813 Total Control Lighting LEDs, USC1903_400, Pixelmatix SmartMatrix, WS2801, LPD8806, LPD1886, TM1809, TM1804, TM1803, and SM16716!</p>
+
+<p>New Library Features
+* Parallel output on multiple pins on Arduino Due, Teensy 3.0, and Teensy 3.1
+* Interrupt processing supported on Arduino Due, Teensy 3.0, Teensy 3.1, even when using Neopixel WS2812 family LEDs (WS2811, WS2812, WS2812B)
+* Improved SPI device sharing on the Teensy 3.0 and Teensy 3.1
+* Refresh rate auto-capping for LEDs that have a maximum update speed (e.g. Neopixel WS2812 family)
+* Support for Arduino 1.6.x IDE and gcc 4.8.1
+* Literally the fastest output physically possible for Neopixel WS2812 family LEDs.</p>
+
+<p>New Library Functions
+* Recurring event triggers EVERY_N_MILLISECONDS, EVERY_N_SECONDS, EVERY_N_MINUTES, and EVERY_N_HOURS
+* Smooth crossfade between multiple color palettes
+* Define color palettes as a series of connected gradients
+* Recover approximate HSV color from RGB values with rgb2hsv_approximate
+* Ability to store one bit of user data in a CRGB, often invisibly
+* New named color &ldquo;FairyLight&rdquo; approximates incandescent holiday lights
+* Additional new functions for color gamma correction
+* Fast, compact routines for 8-bit average and modulo, and for 16-bit square root
+* random8 is now much more random</p>
+
+<p>Backward Compatibility
+* Everything in FastLED v3.1 should be backward compatible with FastLED v3.0, with one exception:
+* We changed from the old symbol name &ldquo;BLEND&rdquo; to the new symbol name &ldquo;LINEARBLEND&rdquo; for ColorFromPalette, to avoid conflicts with another codebase. Simply replace &ldquo;BLEND&rdquo; with &ldquo;LINEARBLEND&rdquo; and your code should compile and run as before.</p>
+
+<p>And Also
+* New example &ldquo;DemoReel100&rdquo;: six animations in 100 lines of code
+* Access to thousands of designer color palettes from cpt-city
+* &ldquo;FastLED6502&rdquo; for Apple ][, ][+, //e, and //gs (unsupported!)
+* Lots of code cleanup for improved maintainability, readability, and theoretical future sanity
+* New and improved documentation
+* And, as the apps say, &ldquo;bug fixes and performance improvements.&rdquo;</p>
+
+<p>-Daniel Garcia &amp; Mark Kriegsman, September 2015</p>
+</div>
+
+
+ </article>
+
+ <article>
+
+ <header>
+
+ <h1 class="entry-title"><a href="/blog/blog/2014/01/13/fastled-2-released-slash/">FastLED v2.0 Released!</a></h1>
+
+
+ <p class="meta">
+
+
-<time datetime="2014-01-13T20:42:49-08:00" pubdate data-updated="true">Jan 13<span>th</span>, 2014</time>
+
+<time class='entry-date' datetime='2014-01-13T20:42:49-08:00'><span class='date'><span class='date-month'>Jan</span> <span class='date-day'>13</span><span class='date-suffix'>th</span>, <span class='date-year'>2014</span></span> <span class='time'>8:42 pm</span></time>
</p>
@@ -142,14 +220,7 @@
-
-
-
-
-
-
-
-<time datetime="2014-01-10T03:30:47-08:00" pubdate data-updated="true">Jan 10<span>th</span>, 2014</time>
+<time class='entry-date' datetime='2014-01-10T03:30:47-08:00'><span class='date'><span class='date-month'>Jan</span> <span class='date-day'>10</span><span class='date-suffix'>th</span>, <span class='date-year'>2014</span></span> <span class='time'>3:30 am</span></time>
</p>
@@ -178,6 +249,10 @@ running!</p>
<ul id="recent_posts">
<li class="post">
+ <a href="/blog/blog/2015/10/08/fastled-3-dot-1-released/">FastLED 3.1 Released</a>
+ </li>
+
+ <li class="post">
<a href="/blog/blog/2014/01/13/fastled-2-released-slash/">FastLED v2.0 Released!</a>
</li>
@@ -200,7 +275,7 @@ running!</p>
<section>
<h1>GitHub Repos</h1>
<ul id="gh_repos">
- <li class="loading">Status updating&#8230;</li>
+ <li class="loading">Status updating...</li>
</ul>
<a href="https://github.com/FastLED">@FastLED</a> on GitHub
@@ -236,7 +311,7 @@ running!</p>
</div>
</div>
<footer role="contentinfo"><p>
- Copyright &copy; 2014 - FastLED -
+ Copyright &copy; 2015 - FastLED -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
diff --git a/blog/javascripts/octopress.js b/blog/javascripts/octopress.js
index 218a0a1a..faaf3dbe 100644
--- a/blog/javascripts/octopress.js
+++ b/blog/javascripts/octopress.js
@@ -17,11 +17,7 @@ function addSidebarToggler() {
$('#content').append('<span class="toggle-sidebar"></span>');
$('.toggle-sidebar').bind('click', function(e) {
e.preventDefault();
- if ($('body').hasClass('collapse-sidebar')) {
- $('body').removeClass('collapse-sidebar');
- } else {
- $('body').addClass('collapse-sidebar');
- }
+ $('body').toggleClass('collapse-sidebar');
});
}
var sections = $('aside.sidebar > section');
diff --git a/blog/robots.txt b/blog/robots.txt
index e89b7cca..1c029b4f 100644
--- a/blog/robots.txt
+++ b/blog/robots.txt
@@ -1,4 +1,4 @@
User-agent: *
Disallow:
-Sitemap: http://fastled.io/blog/sitemap.xml \ No newline at end of file
+Sitemap: http://fastled.io/blog/sitemap.xml
diff --git a/blog/sitemap.xml b/blog/sitemap.xml
index fe48591d..1b889a8d 100644
--- a/blog/sitemap.xml
+++ b/blog/sitemap.xml
@@ -1,23 +1,21 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<urlset xmlns='http://www.sitemaps.org/schemas/sitemap/0.9'>
- <url>
- <loc>http://fastled.io/blog/blog/2014/01/10/first-post/</loc>
- <lastmod>2014-01-10T04:03:25-08:00</lastmod>
- </url>
- <url>
- <loc>http://fastled.io/blog/blog/2014/01/13/fastled-2-released-slash/</loc>
- <lastmod>2014-01-13T20:44:48-08:00</lastmod>
- </url>
- <url>
- <loc>http://fastled.io/blog/blog/archives/</loc>
- <lastmod>2014-01-13T20:44:48-08:00</lastmod>
- </url>
- <url>
- <loc>http://fastled.io/blog/</loc>
- <lastmod>2014-01-13T20:44:48-08:00</lastmod>
- </url>
- <url>
- <loc>http://fastled.io/blog/robots.txt</loc>
- <lastmod>2014-01-10T03:35:37-08:00</lastmod>
- </url>
-</urlset> \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
+ <url>
+ <loc>http://fastled.io/blog/blog/2015/10/08/fastled-3-dot-1-released/</loc>
+ <lastmod>2015-10-08T10:09:32-07:00</lastmod>
+ </url>
+ <url>
+ <loc>http://fastled.io/blog/blog/2014/01/13/fastled-2-released-slash/</loc>
+ <lastmod>2014-01-13T20:42:49-08:00</lastmod>
+ </url>
+ <url>
+ <loc>http://fastled.io/blog/blog/2014/01/10/first-post/</loc>
+ <lastmod>2014-01-10T03:30:47-08:00</lastmod>
+ </url>
+ <url>
+ <loc>http://fastled.io/blog/blog/archives/</loc>
+ </url>
+ <url>
+ <loc>http://fastled.io/blog/</loc>
+ </url>
+</urlset>
diff --git a/blog/stylesheets/screen.css b/blog/stylesheets/screen.css
index dff78f29..60546e6e 100644
--- a/blog/stylesheets/screen.css
+++ b/blog/stylesheets/screen.css
@@ -1 +1 @@
-html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}html{line-height:1}ol,ul{list-style:none}table{border-collapse:collapse;border-spacing:0}caption,th,td{text-align:left;font-weight:normal;vertical-align:middle}q,blockquote{quotes:none}q:before,q:after,blockquote:before,blockquote:after{content:"";content:none}a img{border:none}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section,summary{display:block}a{color:#1863a1}a:visited{color:#751590}a:focus{color:#0181eb}a:hover{color:#0181eb}a:active{color:#01579f}aside.sidebar a{color:#222}aside.sidebar a:focus{color:#0181eb}aside.sidebar a:hover{color:#0181eb}aside.sidebar a:active{color:#01579f}a{-webkit-transition:color 0.3s;-moz-transition:color 0.3s;-o-transition:color 0.3s;transition:color 0.3s}html{background:#252525 url('/blog/images/line-tile.png?1389353737') top left}body>div{background:#f2f2f2 url('/blog/images/noise.png?1389353737') top left;border-bottom:1px solid #bfbfbf}body>div>div{background:#f8f8f8 url('/blog/images/noise.png?1389353737') top left;border-right:1px solid #e0e0e0}.heading,body>header h1,h1,h2,h3,h4,h5,h6{font-family:"PT Serif","Georgia","Helvetica Neue",Arial,sans-serif}.sans,body>header h2,article header p.meta,article>footer,#content .blog-index footer,html .gist .gist-file .gist-meta,#blog-archives a.category,#blog-archives time,aside.sidebar section,body>footer{font-family:"PT Sans","Helvetica Neue",Arial,sans-serif}.serif,body,#content .blog-index a[rel=full-article]{font-family:"PT Serif",Georgia,Times,"Times New Roman",serif}.mono,pre,code,tt,p code,li code{font-family:Menlo,Monaco,"Andale Mono","lucida console","Courier New",monospace}body>header h1{font-size:2.2em;font-family:"PT Serif","Georgia","Helvetica Neue",Arial,sans-serif;font-weight:normal;line-height:1.2em;margin-bottom:0.6667em}body>header h2{font-family:"PT Serif","Georgia","Helvetica Neue",Arial,sans-serif}body{line-height:1.5em;color:#222}h1{font-size:2.2em;line-height:1.2em}@media only screen and (min-width: 992px){body{font-size:1.15em}h1{font-size:2.6em;line-height:1.2em}}h1,h2,h3,h4,h5,h6{text-rendering:optimizelegibility;margin-bottom:1em;font-weight:bold}h2,section h1{font-size:1.5em}h3,section h2,section section h1{font-size:1.3em}h4,section h3,section section h2,section section section h1{font-size:1em}h5,section h4,section section h3{font-size:.9em}h6,section h5,section section h4,section section section h3{font-size:.8em}p,article blockquote,ul,ol{margin-bottom:1.5em}ul{list-style-type:disc}ul ul{list-style-type:circle;margin-bottom:0px}ul ul ul{list-style-type:square;margin-bottom:0px}ol{list-style-type:decimal}ol ol{list-style-type:lower-alpha;margin-bottom:0px}ol ol ol{list-style-type:lower-roman;margin-bottom:0px}ul,ul ul,ul ol,ol,ol ul,ol ol{margin-left:1.3em}ul ul,ul ol,ol ul,ol ol{margin-bottom:0em}strong{font-weight:bold}em{font-style:italic}sup,sub{font-size:0.75em;position:relative;display:inline-block;padding:0 .2em;line-height:.8em}sup{top:-.5em}sub{bottom:-.5em}a[rev='footnote']{font-size:.75em;padding:0 .3em;line-height:1}q{font-style:italic}q:before{content:"\201C"}q:after{content:"\201D"}em,dfn{font-style:italic}strong,dfn{font-weight:bold}del,s{text-decoration:line-through}abbr,acronym{border-bottom:1px dotted;cursor:help}hr{margin-bottom:0.2em}small{font-size:.8em}big{font-size:1.2em}article blockquote{font-style:italic;position:relative;font-size:1.2em;line-height:1.5em;padding-left:1em;border-left:4px solid rgba(170,170,170,0.5)}article blockquote cite{font-style:italic}article blockquote cite a{color:#aaa !important;word-wrap:break-word}article blockquote cite:before{content:'\2014';padding-right:.3em;padding-left:.3em;color:#aaa}@media only screen and (min-width: 992px){article blockquote{padding-left:1.5em;border-left-width:4px}}.pullquote-right:before,.pullquote-left:before{padding:0;border:none;content:attr(data-pullquote);float:right;width:45%;margin:.5em 0 1em 1.5em;position:relative;top:7px;font-size:1.4em;line-height:1.45em}.pullquote-left:before{float:left;margin:.5em 1.5em 1em 0}.force-wrap,article a,aside.sidebar a{white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;white-space:pre-wrap;word-wrap:break-word}.group,body>header,body>nav,body>footer,body #content>article,body #content>div>article,body #content>div>section,body div.pagination,aside.sidebar,#main,#content,.sidebar{*zoom:1}.group:after,body>header:after,body>nav:after,body>footer:after,body #content>article:after,body #content>div>section:after,body div.pagination:after,#main:after,#content:after,.sidebar:after{content:"";display:table;clear:both}body{-webkit-text-size-adjust:none;max-width:1200px;position:relative;margin:0 auto}body>header,body>nav,body>footer,body #content>article,body #content>div>article,body #content>div>section{padding-left:18px;padding-right:18px}@media only screen and (min-width: 480px){body>header,body>nav,body>footer,body #content>article,body #content>div>article,body #content>div>section{padding-left:25px;padding-right:25px}}@media only screen and (min-width: 768px){body>header,body>nav,body>footer,body #content>article,body #content>div>article,body #content>div>section{padding-left:35px;padding-right:35px}}@media only screen and (min-width: 992px){body>header,body>nav,body>footer,body #content>article,body #content>div>article,body #content>div>section{padding-left:55px;padding-right:55px}}body div.pagination{margin-left:18px;margin-right:18px}@media only screen and (min-width: 480px){body div.pagination{margin-left:25px;margin-right:25px}}@media only screen and (min-width: 768px){body div.pagination{margin-left:35px;margin-right:35px}}@media only screen and (min-width: 992px){body div.pagination{margin-left:55px;margin-right:55px}}body>header{font-size:1em;padding-top:1.5em;padding-bottom:1.5em}#content{overflow:hidden}#content>div,#content>article{width:100%}aside.sidebar{float:none;padding:0 18px 1px;background-color:#f7f7f7;border-top:1px solid #e0e0e0}.flex-content,article img,article video,article .flash-video,aside.sidebar img{max-width:100%;height:auto}.basic-alignment.left,article img.left,article video.left,article .left.flash-video,aside.sidebar img.left{float:left;margin-right:1.5em}.basic-alignment.right,article img.right,article video.right,article .right.flash-video,aside.sidebar img.right{float:right;margin-left:1.5em}.basic-alignment.center,article img.center,article video.center,article .center.flash-video,aside.sidebar img.center{display:block;margin:0 auto 1.5em}.basic-alignment.left,article img.left,article video.left,article .left.flash-video,aside.sidebar img.left,.basic-alignment.right,article img.right,article video.right,article .right.flash-video,aside.sidebar img.right{margin-bottom:.8em}.toggle-sidebar,.no-sidebar .toggle-sidebar{display:none}@media only screen and (min-width: 750px){body.sidebar-footer aside.sidebar{float:none;width:auto;clear:left;margin:0;padding:0 35px 1px;background-color:#f7f7f7;border-top:1px solid #eaeaea}body.sidebar-footer aside.sidebar section.odd,body.sidebar-footer aside.sidebar section.even{float:left;width:48%}body.sidebar-footer aside.sidebar section.odd{margin-left:0}body.sidebar-footer aside.sidebar section.even{margin-left:4%}body.sidebar-footer aside.sidebar.thirds section{width:30%;margin-left:5%}body.sidebar-footer aside.sidebar.thirds section.first{margin-left:0;clear:both}}body.sidebar-footer #content{margin-right:0px}body.sidebar-footer .toggle-sidebar{display:none}@media only screen and (min-width: 550px){body>header{font-size:1em}}@media only screen and (min-width: 750px){aside.sidebar{float:none;width:auto;clear:left;margin:0;padding:0 35px 1px;background-color:#f7f7f7;border-top:1px solid #eaeaea}aside.sidebar section.odd,aside.sidebar section.even{float:left;width:48%}aside.sidebar section.odd{margin-left:0}aside.sidebar section.even{margin-left:4%}aside.sidebar.thirds section{width:30%;margin-left:5%}aside.sidebar.thirds section.first{margin-left:0;clear:both}}@media only screen and (min-width: 768px){body{-webkit-text-size-adjust:auto}body>header{font-size:1.2em}#main{padding:0;margin:0 auto}#content{overflow:visible;margin-right:240px;position:relative}.no-sidebar #content{margin-right:0;border-right:0}.collapse-sidebar #content{margin-right:20px}#content>div,#content>article{padding-top:17.5px;padding-bottom:17.5px;float:left}aside.sidebar{width:210px;padding:0 15px 15px;background:none;clear:none;float:left;margin:0 -100% 0 0}aside.sidebar section{width:auto;margin-left:0}aside.sidebar section.odd,aside.sidebar section.even{float:none;width:auto;margin-left:0}.collapse-sidebar aside.sidebar{float:none;width:auto;clear:left;margin:0;padding:0 35px 1px;background-color:#f7f7f7;border-top:1px solid #eaeaea}.collapse-sidebar aside.sidebar section.odd,.collapse-sidebar aside.sidebar section.even{float:left;width:48%}.collapse-sidebar aside.sidebar section.odd{margin-left:0}.collapse-sidebar aside.sidebar section.even{margin-left:4%}.collapse-sidebar aside.sidebar.thirds section{width:30%;margin-left:5%}.collapse-sidebar aside.sidebar.thirds section.first{margin-left:0;clear:both}}@media only screen and (min-width: 992px){body>header{font-size:1.3em}#content{margin-right:300px}#content>div,#content>article{padding-top:27.5px;padding-bottom:27.5px}aside.sidebar{width:260px;padding:1.2em 20px 20px}.collapse-sidebar aside.sidebar{padding-left:55px;padding-right:55px}}@media only screen and (min-width: 768px){ul,ol{margin-left:0}}body>header{background:#333}body>header h1{display:inline-block;margin:0}body>header h1 a,body>header h1 a:visited,body>header h1 a:hover{color:#f2f2f2;text-decoration:none}body>header h2{margin:.2em 0 0;font-size:1em;color:#aaa;font-weight:normal}body>nav{position:relative;background-color:#ccc;background:url('/blog/images/noise.png?1389353737'),-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e0e0e0), color-stop(50%, #cccccc), color-stop(100%, #b0b0b0));background:url('/blog/images/noise.png?1389353737'),-webkit-linear-gradient(#e0e0e0,#cccccc,#b0b0b0);background:url('/blog/images/noise.png?1389353737'),-moz-linear-gradient(#e0e0e0,#cccccc,#b0b0b0);background:url('/blog/images/noise.png?1389353737'),-o-linear-gradient(#e0e0e0,#cccccc,#b0b0b0);background:url('/blog/images/noise.png?1389353737'),linear-gradient(#e0e0e0,#cccccc,#b0b0b0);border-top:1px solid #f2f2f2;border-bottom:1px solid #8c8c8c;padding-top:.35em;padding-bottom:.35em}body>nav form{-webkit-background-clip:padding;-moz-background-clip:padding;background-clip:padding-box;margin:0;padding:0}body>nav form .search{padding:.3em .5em 0;font-size:.85em;font-family:"PT Sans","Helvetica Neue",Arial,sans-serif;line-height:1.1em;width:95%;-webkit-border-radius:0.5em;-moz-border-radius:0.5em;-ms-border-radius:0.5em;-o-border-radius:0.5em;border-radius:0.5em;-webkit-background-clip:padding;-moz-background-clip:padding;background-clip:padding-box;-webkit-box-shadow:#d1d1d1 0 1px;-moz-box-shadow:#d1d1d1 0 1px;box-shadow:#d1d1d1 0 1px;background-color:#f2f2f2;border:1px solid #b3b3b3;color:#888}body>nav form .search:focus{color:#444;border-color:#80b1df;-webkit-box-shadow:#80b1df 0 0 4px,#80b1df 0 0 3px inset;-moz-box-shadow:#80b1df 0 0 4px,#80b1df 0 0 3px inset;box-shadow:#80b1df 0 0 4px,#80b1df 0 0 3px inset;background-color:#fff;outline:none}body>nav fieldset[role=search]{float:right;width:48%}body>nav fieldset.mobile-nav{float:left;width:48%}body>nav fieldset.mobile-nav select{width:100%;font-size:.8em;border:1px solid #888}body>nav ul{display:none}@media only screen and (min-width: 550px){body>nav{font-size:.9em}body>nav ul{margin:0;padding:0;border:0;overflow:hidden;*zoom:1;float:left;display:block;padding-top:.15em}body>nav ul li{list-style-image:none;list-style-type:none;margin-left:0;white-space:nowrap;display:inline;float:left;padding-left:0;padding-right:0}body>nav ul li:first-child,body>nav ul li.first{padding-left:0}body>nav ul li:last-child{padding-right:0}body>nav ul li.last{padding-right:0}body>nav ul.subscription{margin-left:.8em;float:right}body>nav ul.subscription li:last-child a{padding-right:0}body>nav ul li{margin:0}body>nav a{color:#6b6b6b;font-family:"PT Sans","Helvetica Neue",Arial,sans-serif;text-shadow:#ebebeb 0 1px;float:left;text-decoration:none;font-size:1.1em;padding:.1em 0;line-height:1.5em}body>nav a:visited{color:#6b6b6b}body>nav a:hover{color:#2b2b2b}body>nav li+li{border-left:1px solid #b0b0b0;margin-left:.8em}body>nav li+li a{padding-left:.8em;border-left:1px solid #dedede}body>nav form{float:right;text-align:left;padding-left:.8em;width:175px}body>nav form .search{width:93%;font-size:.95em;line-height:1.2em}body>nav ul[data-subscription$=email]+form{width:97px}body>nav ul[data-subscription$=email]+form .search{width:91%}body>nav fieldset.mobile-nav{display:none}body>nav fieldset[role=search]{width:99%}}@media only screen and (min-width: 992px){body>nav form{width:215px}body>nav ul[data-subscription$=email]+form{width:147px}}.no-placeholder body>nav .search{background:#f2f2f2 url('/blog/images/search.png?1389353737') 0.3em 0.25em no-repeat;text-indent:1.3em}@media only screen and (min-width: 550px){.maskImage body>nav ul[data-subscription$=email]+form{width:123px}}@media only screen and (min-width: 992px){.maskImage body>nav ul[data-subscription$=email]+form{width:173px}}.maskImage ul.subscription{position:relative;top:.2em}.maskImage ul.subscription li,.maskImage ul.subscription a{border:0;padding:0}.maskImage a[rel=subscribe-rss]{position:relative;top:0px;text-indent:-999999em;background-color:#dedede;border:0;padding:0}.maskImage a[rel=subscribe-rss],.maskImage a[rel=subscribe-rss]:after{-webkit-mask-image:url('/blog/images/rss.png?1389353737');-moz-mask-image:url('/blog/images/rss.png?1389353737');-ms-mask-image:url('/blog/images/rss.png?1389353737');-o-mask-image:url('/blog/images/rss.png?1389353737');mask-image:url('/blog/images/rss.png?1389353737');-webkit-mask-repeat:no-repeat;-moz-mask-repeat:no-repeat;-ms-mask-repeat:no-repeat;-o-mask-repeat:no-repeat;mask-repeat:no-repeat;width:22px;height:22px}.maskImage a[rel=subscribe-rss]:after{content:"";position:absolute;top:-1px;left:0;background-color:#ababab}.maskImage a[rel=subscribe-rss]:hover:after{background-color:#9e9e9e}.maskImage a[rel=subscribe-email]{position:relative;top:0px;text-indent:-999999em;background-color:#dedede;border:0;padding:0}.maskImage a[rel=subscribe-email],.maskImage a[rel=subscribe-email]:after{-webkit-mask-image:url('/blog/images/email.png?1389353737');-moz-mask-image:url('/blog/images/email.png?1389353737');-ms-mask-image:url('/blog/images/email.png?1389353737');-o-mask-image:url('/blog/images/email.png?1389353737');mask-image:url('/blog/images/email.png?1389353737');-webkit-mask-repeat:no-repeat;-moz-mask-repeat:no-repeat;-ms-mask-repeat:no-repeat;-o-mask-repeat:no-repeat;mask-repeat:no-repeat;width:28px;height:22px}.maskImage a[rel=subscribe-email]:after{content:"";position:absolute;top:-1px;left:0;background-color:#ababab}.maskImage a[rel=subscribe-email]:hover:after{background-color:#9e9e9e}article{padding-top:1em}article header{position:relative;padding-top:2em;padding-bottom:1em;margin-bottom:1em;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAABCAYAAACsXeyTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAFUlEQVQIHWNIS0sr/v//PwMMDzY+ADqMahlW4J91AAAAAElFTkSuQmCC') bottom left repeat-x}article header h1{margin:0}article header h1 a{text-decoration:none}article header h1 a:hover{text-decoration:underline}article header p{font-size:.9em;color:#aaa;margin:0}article header p.meta{text-transform:uppercase;position:absolute;top:0}@media only screen and (min-width: 768px){article header{margin-bottom:1.5em;padding-bottom:1em;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAABCAYAAACsXeyTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAFUlEQVQIHWNIS0sr/v//PwMMDzY+ADqMahlW4J91AAAAAElFTkSuQmCC') bottom left repeat-x}}article h2{padding-top:0.8em;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAABCAYAAACsXeyTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAFUlEQVQIHWNIS0sr/v//PwMMDzY+ADqMahlW4J91AAAAAElFTkSuQmCC') top left repeat-x}.entry-content article h2:first-child,article header+h2{padding-top:0}article h2:first-child,article header+h2{background:none}article .feature{padding-top:.5em;margin-bottom:1em;padding-bottom:1em;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAABCAYAAACsXeyTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAFUlEQVQIHWNIS0sr/v//PwMMDzY+ADqMahlW4J91AAAAAElFTkSuQmCC') bottom left repeat-x;font-size:2.0em;font-style:italic;line-height:1.3em}article img,article video,article .flash-video{-webkit-border-radius:0.3em;-moz-border-radius:0.3em;-ms-border-radius:0.3em;-o-border-radius:0.3em;border-radius:0.3em;-webkit-box-shadow:rgba(0,0,0,0.15) 0 1px 4px;-moz-box-shadow:rgba(0,0,0,0.15) 0 1px 4px;box-shadow:rgba(0,0,0,0.15) 0 1px 4px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:#fff 0.5em solid}article video,article .flash-video{margin:0 auto 1.5em}article video{display:block;width:100%}article .flash-video>div{position:relative;display:block;padding-bottom:56.25%;padding-top:1px;height:0;overflow:hidden}article .flash-video>div iframe,article .flash-video>div object,article .flash-video>div embed{position:absolute;top:0;left:0;width:100%;height:100%}article>footer{padding-bottom:2.5em;margin-top:2em}article>footer p.meta{margin-bottom:.8em;font-size:.85em;clear:both;overflow:hidden}.blog-index article+article{background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAABCAYAAACsXeyTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAFUlEQVQIHWNIS0sr/v//PwMMDzY+ADqMahlW4J91AAAAAElFTkSuQmCC') top left repeat-x}#content .blog-index{padding-top:0;padding-bottom:0}#content .blog-index article{padding-top:2em}#content .blog-index article header{background:none;padding-bottom:0}#content .blog-index article h1{font-size:2.2em}#content .blog-index article h1 a{color:inherit}#content .blog-index article h1 a:hover{color:#0181eb}#content .blog-index a[rel=full-article]{background:#ebebeb;display:inline-block;padding:.4em .8em;margin-right:.5em;text-decoration:none;color:#666;-webkit-transition:background-color 0.5s;-moz-transition:background-color 0.5s;-o-transition:background-color 0.5s;transition:background-color 0.5s}#content .blog-index a[rel=full-article]:hover{background:#0181eb;text-shadow:none;color:#f8f8f8}#content .blog-index footer{margin-top:1em}.separator,article>footer .byline+time:before,article>footer time+time:before,article>footer .comments:before,article>footer .byline ~ .categories:before{content:"\2022 ";padding:0 .4em 0 .2em;display:inline-block}#content div.pagination{text-align:center;font-size:.95em;position:relative;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAABCAYAAACsXeyTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAFUlEQVQIHWNIS0sr/v//PwMMDzY+ADqMahlW4J91AAAAAElFTkSuQmCC') top left repeat-x;padding-top:1.5em;padding-bottom:1.5em}#content div.pagination a{text-decoration:none;color:#aaa}#content div.pagination a.prev{position:absolute;left:0}#content div.pagination a.next{position:absolute;right:0}#content div.pagination a:hover{color:#0181eb}#content div.pagination a[href*=archive]:before,#content div.pagination a[href*=archive]:after{content:'\2014';padding:0 .3em}p.meta+.sharing{padding-top:1em;padding-left:0;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAABCAYAAACsXeyTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAFUlEQVQIHWNIS0sr/v//PwMMDzY+ADqMahlW4J91AAAAAElFTkSuQmCC') top left repeat-x}#fb-root{display:none}.highlight,html .gist .gist-file .gist-syntax .gist-highlight{border:1px solid #05232b !important}.highlight table td.code,html .gist .gist-file .gist-syntax .gist-highlight table td.code{width:100%}.highlight .line-numbers,html .gist .gist-file .gist-syntax .highlight .line_numbers{text-align:right;font-size:13px;line-height:1.45em;background:#073642 url('/blog/images/noise.png?1389353737') top left !important;border-right:1px solid #00232c !important;-webkit-box-shadow:#083e4b -1px 0 inset;-moz-box-shadow:#083e4b -1px 0 inset;box-shadow:#083e4b -1px 0 inset;text-shadow:#021014 0 -1px;padding:.8em !important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0}.highlight .line-numbers span,html .gist .gist-file .gist-syntax .highlight .line_numbers span{color:#586e75 !important}figure.code,.gist-file,pre{-webkit-box-shadow:rgba(0,0,0,0.06) 0 0 10px;-moz-box-shadow:rgba(0,0,0,0.06) 0 0 10px;box-shadow:rgba(0,0,0,0.06) 0 0 10px}figure.code .highlight pre,.gist-file .highlight pre,pre .highlight pre{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.gist .highlight *::-moz-selection,figure.code .highlight *::-moz-selection{background:#386774;color:inherit;text-shadow:#002b36 0 1px}.gist .highlight *::-webkit-selection,figure.code .highlight *::-webkit-selection{background:#386774;color:inherit;text-shadow:#002b36 0 1px}.gist .highlight *::selection,figure.code .highlight *::selection{background:#386774;color:inherit;text-shadow:#002b36 0 1px}html .gist .gist-file{margin-bottom:1.8em;position:relative;border:none;padding-top:26px !important}html .gist .gist-file .highlight{margin-bottom:0}html .gist .gist-file .gist-syntax{border-bottom:0 !important;background:none !important}html .gist .gist-file .gist-syntax .gist-highlight{background:#002b36 !important}html .gist .gist-file .gist-syntax .highlight pre{padding:0}html .gist .gist-file .gist-meta{padding:.6em 0.8em;border:1px solid #083e4b !important;color:#586e75;font-size:.7em !important;background:#073642 url('/blog/images/noise.png?1389353737') top left;line-height:1.5em}html .gist .gist-file .gist-meta a{color:#75878b !important;text-decoration:none}html .gist .gist-file .gist-meta a:hover{text-decoration:underline}html .gist .gist-file .gist-meta a:hover{color:#93a1a1 !important}html .gist .gist-file .gist-meta a[href*='#file']{position:absolute;top:0;left:0;right:-10px;color:#474747 !important}html .gist .gist-file .gist-meta a[href*='#file']:hover{color:#1863a1 !important}html .gist .gist-file .gist-meta a[href*=raw]{top:.4em}pre{background:#002b36 url('/blog/images/noise.png?1389353737') top left;-webkit-border-radius:0.4em;-moz-border-radius:0.4em;-ms-border-radius:0.4em;-o-border-radius:0.4em;border-radius:0.4em;border:1px solid #05232b;line-height:1.45em;font-size:13px;margin-bottom:2.1em;padding:.8em 1em;color:#93a1a1;overflow:auto}h3.filename+pre{-moz-border-radius-topleft:0px;-webkit-border-top-left-radius:0px;border-top-left-radius:0px;-moz-border-radius-topright:0px;-webkit-border-top-right-radius:0px;border-top-right-radius:0px}p code,li code{display:inline-block;white-space:no-wrap;background:#fff;font-size:.8em;line-height:1.5em;color:#555;border:1px solid #ddd;-webkit-border-radius:0.4em;-moz-border-radius:0.4em;-ms-border-radius:0.4em;-o-border-radius:0.4em;border-radius:0.4em;padding:0 .3em;margin:-1px 0}p pre code,li pre code{font-size:1em !important;background:none;border:none}.pre-code,html .gist .gist-file .gist-syntax .highlight pre,.highlight code{font-family:Menlo,Monaco,"Andale Mono","lucida console","Courier New",monospace !important;overflow:scroll;overflow-y:hidden;display:block;padding:.8em;overflow-x:auto;line-height:1.45em;background:#002b36 url('/blog/images/noise.png?1389353737') top left !important;color:#93a1a1 !important}.pre-code span,html .gist .gist-file .gist-syntax .highlight pre span,.highlight code span{color:#93a1a1 !important}.pre-code span,html .gist .gist-file .gist-syntax .highlight pre span,.highlight code span{font-style:normal !important;font-weight:normal !important}.pre-code .c,html .gist .gist-file .gist-syntax .highlight pre .c,.highlight code .c{color:#586e75 !important;font-style:italic !important}.pre-code .cm,html .gist .gist-file .gist-syntax .highlight pre .cm,.highlight code .cm{color:#586e75 !important;font-style:italic !important}.pre-code .cp,html .gist .gist-file .gist-syntax .highlight pre .cp,.highlight code .cp{color:#586e75 !important;font-style:italic !important}.pre-code .c1,html .gist .gist-file .gist-syntax .highlight pre .c1,.highlight code .c1{color:#586e75 !important;font-style:italic !important}.pre-code .cs,html .gist .gist-file .gist-syntax .highlight pre .cs,.highlight code .cs{color:#586e75 !important;font-weight:bold !important;font-style:italic !important}.pre-code .err,html .gist .gist-file .gist-syntax .highlight pre .err,.highlight code .err{color:#dc322f !important;background:none !important}.pre-code .k,html .gist .gist-file .gist-syntax .highlight pre .k,.highlight code .k{color:#cb4b16 !important}.pre-code .o,html .gist .gist-file .gist-syntax .highlight pre .o,.highlight code .o{color:#93a1a1 !important;font-weight:bold !important}.pre-code .p,html .gist .gist-file .gist-syntax .highlight pre .p,.highlight code .p{color:#93a1a1 !important}.pre-code .ow,html .gist .gist-file .gist-syntax .highlight pre .ow,.highlight code .ow{color:#2aa198 !important;font-weight:bold !important}.pre-code .gd,html .gist .gist-file .gist-syntax .highlight pre .gd,.highlight code .gd{color:#93a1a1 !important;background-color:#372c34 !important;display:inline-block}.pre-code .gd .x,html .gist .gist-file .gist-syntax .highlight pre .gd .x,.highlight code .gd .x{color:#93a1a1 !important;background-color:#4d2d33 !important;display:inline-block}.pre-code .ge,html .gist .gist-file .gist-syntax .highlight pre .ge,.highlight code .ge{color:#93a1a1 !important;font-style:italic !important}.pre-code .gh,html .gist .gist-file .gist-syntax .highlight pre .gh,.highlight code .gh{color:#586e75 !important}.pre-code .gi,html .gist .gist-file .gist-syntax .highlight pre .gi,.highlight code .gi{color:#93a1a1 !important;background-color:#1a412b !important;display:inline-block}.pre-code .gi .x,html .gist .gist-file .gist-syntax .highlight pre .gi .x,.highlight code .gi .x{color:#93a1a1 !important;background-color:#355720 !important;display:inline-block}.pre-code .gs,html .gist .gist-file .gist-syntax .highlight pre .gs,.highlight code .gs{color:#93a1a1 !important;font-weight:bold !important}.pre-code .gu,html .gist .gist-file .gist-syntax .highlight pre .gu,.highlight code .gu{color:#6c71c4 !important}.pre-code .kc,html .gist .gist-file .gist-syntax .highlight pre .kc,.highlight code .kc{color:#859900 !important;font-weight:bold !important}.pre-code .kd,html .gist .gist-file .gist-syntax .highlight pre .kd,.highlight code .kd{color:#268bd2 !important}.pre-code .kp,html .gist .gist-file .gist-syntax .highlight pre .kp,.highlight code .kp{color:#cb4b16 !important;font-weight:bold !important}.pre-code .kr,html .gist .gist-file .gist-syntax .highlight pre .kr,.highlight code .kr{color:#d33682 !important;font-weight:bold !important}.pre-code .kt,html .gist .gist-file .gist-syntax .highlight pre .kt,.highlight code .kt{color:#2aa198 !important}.pre-code .n,html .gist .gist-file .gist-syntax .highlight pre .n,.highlight code .n{color:#268bd2 !important}.pre-code .na,html .gist .gist-file .gist-syntax .highlight pre .na,.highlight code .na{color:#268bd2 !important}.pre-code .nb,html .gist .gist-file .gist-syntax .highlight pre .nb,.highlight code .nb{color:#859900 !important}.pre-code .nc,html .gist .gist-file .gist-syntax .highlight pre .nc,.highlight code .nc{color:#d33682 !important}.pre-code .no,html .gist .gist-file .gist-syntax .highlight pre .no,.highlight code .no{color:#b58900 !important}.pre-code .nl,html .gist .gist-file .gist-syntax .highlight pre .nl,.highlight code .nl{color:#859900 !important}.pre-code .ne,html .gist .gist-file .gist-syntax .highlight pre .ne,.highlight code .ne{color:#268bd2 !important;font-weight:bold !important}.pre-code .nf,html .gist .gist-file .gist-syntax .highlight pre .nf,.highlight code .nf{color:#268bd2 !important;font-weight:bold !important}.pre-code .nn,html .gist .gist-file .gist-syntax .highlight pre .nn,.highlight code .nn{color:#b58900 !important}.pre-code .nt,html .gist .gist-file .gist-syntax .highlight pre .nt,.highlight code .nt{color:#268bd2 !important;font-weight:bold !important}.pre-code .nx,html .gist .gist-file .gist-syntax .highlight pre .nx,.highlight code .nx{color:#b58900 !important}.pre-code .vg,html .gist .gist-file .gist-syntax .highlight pre .vg,.highlight code .vg{color:#268bd2 !important}.pre-code .vi,html .gist .gist-file .gist-syntax .highlight pre .vi,.highlight code .vi{color:#268bd2 !important}.pre-code .nv,html .gist .gist-file .gist-syntax .highlight pre .nv,.highlight code .nv{color:#268bd2 !important}.pre-code .mf,html .gist .gist-file .gist-syntax .highlight pre .mf,.highlight code .mf{color:#2aa198 !important}.pre-code .m,html .gist .gist-file .gist-syntax .highlight pre .m,.highlight code .m{color:#2aa198 !important}.pre-code .mh,html .gist .gist-file .gist-syntax .highlight pre .mh,.highlight code .mh{color:#2aa198 !important}.pre-code .mi,html .gist .gist-file .gist-syntax .highlight pre .mi,.highlight code .mi{color:#2aa198 !important}.pre-code .s,html .gist .gist-file .gist-syntax .highlight pre .s,.highlight code .s{color:#2aa198 !important}.pre-code .sd,html .gist .gist-file .gist-syntax .highlight pre .sd,.highlight code .sd{color:#2aa198 !important}.pre-code .s2,html .gist .gist-file .gist-syntax .highlight pre .s2,.highlight code .s2{color:#2aa198 !important}.pre-code .se,html .gist .gist-file .gist-syntax .highlight pre .se,.highlight code .se{color:#dc322f !important}.pre-code .si,html .gist .gist-file .gist-syntax .highlight pre .si,.highlight code .si{color:#268bd2 !important}.pre-code .sr,html .gist .gist-file .gist-syntax .highlight pre .sr,.highlight code .sr{color:#2aa198 !important}.pre-code .s1,html .gist .gist-file .gist-syntax .highlight pre .s1,.highlight code .s1{color:#2aa198 !important}.pre-code div .gd,html .gist .gist-file .gist-syntax .highlight pre div .gd,.highlight code div .gd,.pre-code div .gd .x,html .gist .gist-file .gist-syntax .highlight pre div .gd .x,.highlight code div .gd .x,.pre-code div .gi,html .gist .gist-file .gist-syntax .highlight pre div .gi,.highlight code div .gi,.pre-code div .gi .x,html .gist .gist-file .gist-syntax .highlight pre div .gi .x,.highlight code div .gi .x{display:inline-block;width:100%}.highlight,.gist-highlight{margin-bottom:1.8em;background:#002b36;overflow-y:hidden;overflow-x:auto}.highlight pre,.gist-highlight pre{background:none;-webkit-border-radius:0px;-moz-border-radius:0px;-ms-border-radius:0px;-o-border-radius:0px;border-radius:0px;border:none;padding:0;margin-bottom:0}pre::-webkit-scrollbar,.highlight::-webkit-scrollbar,.gist-highlight::-webkit-scrollbar{height:.5em;background:rgba(255,255,255,0.15)}pre::-webkit-scrollbar-thumb:horizontal,.highlight::-webkit-scrollbar-thumb:horizontal,.gist-highlight::-webkit-scrollbar-thumb:horizontal{background:rgba(255,255,255,0.2);-webkit-border-radius:4px;border-radius:4px}.highlight code{background:#000}figure.code{background:none;padding:0;border:0;margin-bottom:1.5em}figure.code pre{margin-bottom:0}figure.code figcaption{position:relative}figure.code .highlight{margin-bottom:0}.code-title,html .gist .gist-file .gist-meta a[href*='#file'],h3.filename,figure.code figcaption{text-align:center;font-size:13px;line-height:2em;text-shadow:#cbcccc 0 1px 0;color:#474747;font-weight:normal;margin-bottom:0;-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;font-family:"Helvetica Neue", Arial, "Lucida Grande", "Lucida Sans Unicode", Lucida, sans-serif;background:#aaa url('/blog/images/code_bg.png?1389353737') top repeat-x;border:1px solid #565656;border-top-color:#cbcbcb;border-left-color:#a5a5a5;border-right-color:#a5a5a5;border-bottom:0}.download-source,html .gist .gist-file .gist-meta a[href*=raw],figure.code figcaption a{position:absolute;right:.8em;text-decoration:none;color:#666 !important;z-index:1;font-size:13px;text-shadow:#cbcccc 0 1px 0;padding-left:3em}.download-source:hover,html .gist .gist-file .gist-meta a[href*=raw]:hover,figure.code figcaption a:hover{text-decoration:underline}#archive #content>div,#archive #content>div>article{padding-top:0}#blog-archives{color:#aaa}#blog-archives article{padding:1em 0 1em;position:relative;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAABCAYAAACsXeyTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAFUlEQVQIHWNIS0sr/v//PwMMDzY+ADqMahlW4J91AAAAAElFTkSuQmCC') bottom left repeat-x}#blog-archives article:last-child{background:none}#blog-archives article footer{padding:0;margin:0}#blog-archives h1{color:#222;margin-bottom:.3em}#blog-archives h2{display:none}#blog-archives h1{font-size:1.5em}#blog-archives h1 a{text-decoration:none;color:inherit;font-weight:normal;display:inline-block}#blog-archives h1 a:hover{text-decoration:underline}#blog-archives h1 a:hover{color:#0181eb}#blog-archives a.category,#blog-archives time{color:#aaa}#blog-archives .entry-content{display:none}#blog-archives time{font-size:.9em;line-height:1.2em}#blog-archives time .month,#blog-archives time .day{display:inline-block}#blog-archives time .month{text-transform:uppercase}#blog-archives p{margin-bottom:1em}#blog-archives a,#blog-archives .entry-content a{color:inherit}#blog-archives a:hover,#blog-archives .entry-content a:hover{color:#0181eb}#blog-archives a:hover{color:#0181eb}@media only screen and (min-width: 550px){#blog-archives article{margin-left:5em}#blog-archives h2{margin-bottom:.3em;font-weight:normal;display:inline-block;position:relative;top:-1px;float:left}#blog-archives h2:first-child{padding-top:.75em}#blog-archives time{position:absolute;text-align:right;left:0em;top:1.8em}#blog-archives .year{display:none}#blog-archives article{padding-left:4.5em;padding-bottom:.7em}#blog-archives a.category{line-height:1.1em}}#content>.category article{margin-left:0;padding-left:6.8em}#content>.category .year{display:inline}.side-shadow-border,aside.sidebar section h1,aside.sidebar li{-webkit-box-shadow:#fff 0 1px;-moz-box-shadow:#fff 0 1px;box-shadow:#fff 0 1px}aside.sidebar{overflow:hidden;color:#4b4b4b;text-shadow:#fff 0 1px}aside.sidebar section{font-size:.8em;line-height:1.4em;margin-bottom:1.5em}aside.sidebar section h1{margin:1.5em 0 0;padding-bottom:.2em;border-bottom:1px solid #e0e0e0}aside.sidebar section h1+p{padding-top:.4em}aside.sidebar img{-webkit-border-radius:0.3em;-moz-border-radius:0.3em;-ms-border-radius:0.3em;-o-border-radius:0.3em;border-radius:0.3em;-webkit-box-shadow:rgba(0,0,0,0.15) 0 1px 4px;-moz-box-shadow:rgba(0,0,0,0.15) 0 1px 4px;box-shadow:rgba(0,0,0,0.15) 0 1px 4px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:#fff 0.3em solid}aside.sidebar ul{margin-bottom:0.5em;margin-left:0}aside.sidebar li{list-style:none;padding:.5em 0;margin:0;border-bottom:1px solid #e0e0e0}aside.sidebar li p:last-child{margin-bottom:0}aside.sidebar a{color:inherit;-webkit-transition:color 0.5s;-moz-transition:color 0.5s;-o-transition:color 0.5s;transition:color 0.5s}aside.sidebar:hover a{color:#222}aside.sidebar:hover a:hover{color:#0181eb}.aside-alt-link,#pinboard_linkroll .pin-tag{color:#7e7e7e}.aside-alt-link:hover,#pinboard_linkroll .pin-tag:hover{color:#0181eb}@media only screen and (min-width: 768px){.toggle-sidebar{outline:none;position:absolute;right:-10px;top:0;bottom:0;display:inline-block;text-decoration:none;color:#cecece;width:9px;cursor:pointer}.toggle-sidebar:hover{background:#e9e9e9;background:-webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, rgba(224,224,224,0.5)), color-stop(100%, rgba(224,224,224,0)));background:-webkit-linear-gradient(left, rgba(224,224,224,0.5),rgba(224,224,224,0));background:-moz-linear-gradient(left, rgba(224,224,224,0.5),rgba(224,224,224,0));background:-o-linear-gradient(left, rgba(224,224,224,0.5),rgba(224,224,224,0));background:linear-gradient(left, rgba(224,224,224,0.5),rgba(224,224,224,0))}.toggle-sidebar:after{position:absolute;right:-11px;top:0;width:20px;font-size:1.2em;line-height:1.1em;padding-bottom:.15em;-moz-border-radius-bottomright:0.3em;-webkit-border-bottom-right-radius:0.3em;border-bottom-right-radius:0.3em;text-align:center;background:#f8f8f8 url('/blog/images/noise.png?1389353737') top left;border-bottom:1px solid #e0e0e0;border-right:1px solid #e0e0e0;content:"\00BB";text-indent:-1px}.collapse-sidebar .toggle-sidebar{text-indent:0px;right:-20px;width:19px}.collapse-sidebar .toggle-sidebar:hover{background:#e9e9e9}.collapse-sidebar .toggle-sidebar:after{border-left:1px solid #e0e0e0;text-shadow:#fff 0 1px;content:"\00AB";left:0px;right:0;text-align:center;text-indent:0;border:0;border-right-width:0;background:none}}.googleplus h1{-moz-box-shadow:none !important;-webkit-box-shadow:none !important;-o-box-shadow:none !important;box-shadow:none !important;border-bottom:0px none !important}.googleplus a{text-decoration:none;white-space:normal !important;line-height:32px}.googleplus a img{float:left;margin-right:0.5em;border:0 none}.googleplus-hidden{position:absolute;top:-1000em;left:-1000em}#pinboard_linkroll .pin-title,#pinboard_linkroll .pin-description{display:block;margin-bottom:.5em}#pinboard_linkroll .pin-tag{text-decoration:none}#pinboard_linkroll .pin-tag:hover{text-decoration:underline}#pinboard_linkroll .pin-tag:after{content:','}#pinboard_linkroll .pin-tag:last-child:after{content:''}.delicious-posts a.delicious-link{margin-bottom:.5em;display:block}.delicious-posts p{font-size:1em}body>footer{font-size:.8em;color:#888;text-shadow:#d9d9d9 0 1px;background-color:#ccc;background:url('/blog/images/noise.png?1389353737'),-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e0e0e0), color-stop(50%, #cccccc), color-stop(100%, #b0b0b0));background:url('/blog/images/noise.png?1389353737'),-webkit-linear-gradient(#e0e0e0,#cccccc,#b0b0b0);background:url('/blog/images/noise.png?1389353737'),-moz-linear-gradient(#e0e0e0,#cccccc,#b0b0b0);background:url('/blog/images/noise.png?1389353737'),-o-linear-gradient(#e0e0e0,#cccccc,#b0b0b0);background:url('/blog/images/noise.png?1389353737'),linear-gradient(#e0e0e0,#cccccc,#b0b0b0);border-top:1px solid #f2f2f2;position:relative;padding-top:1em;padding-bottom:1em;margin-bottom:3em;-moz-border-radius-bottomleft:0.4em;-webkit-border-bottom-left-radius:0.4em;border-bottom-left-radius:0.4em;-moz-border-radius-bottomright:0.4em;-webkit-border-bottom-right-radius:0.4em;border-bottom-right-radius:0.4em;z-index:1}body>footer a{color:#6b6b6b}body>footer a:visited{color:#6b6b6b}body>footer a:hover{color:#484848}body>footer p:last-child{margin-bottom:0}
+html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}html{line-height:1}ol,ul{list-style:none}table{border-collapse:collapse;border-spacing:0}caption,th,td{text-align:left;font-weight:normal;vertical-align:middle}q,blockquote{quotes:none}q:before,q:after,blockquote:before,blockquote:after{content:"";content:none}a img{border:none}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}a{color:#1863a1}a:visited{color:#751590}a:focus{color:#0181eb}a:hover{color:#0181eb}a:active{color:#01579f}aside.sidebar a{color:#222}aside.sidebar a:focus{color:#0181eb}aside.sidebar a:hover{color:#0181eb}aside.sidebar a:active{color:#01579f}a{-moz-transition:color 0.3s;-o-transition:color 0.3s;-webkit-transition:color 0.3s;transition:color 0.3s}html{background:#252525 url('/blog/images/line-tile.png?1444324165') top left}body>div{background:#f2f2f2 url('/blog/images/noise.png?1444324165') top left;border-bottom:1px solid #bfbfbf}body>div>div{background:#f8f8f8 url('/blog/images/noise.png?1444324165') top left;border-right:1px solid #e0e0e0}.heading,body>header h1,h1,h2,h3,h4,h5,h6{font-family:"PT Serif","Georgia","Helvetica Neue",Arial,sans-serif}.sans,body>header h2,article header p.meta,article>footer,#content .blog-index footer,html .gist .gist-file .gist-meta,#blog-archives a.category,#blog-archives time,aside.sidebar section,body>footer{font-family:"PT Sans","Helvetica Neue",Arial,sans-serif}.serif,body,#content .blog-index a[rel=full-article]{font-family:"PT Serif",Georgia,Times,"Times New Roman",serif}.mono,pre,code,tt,p code,li code{font-family:Menlo,Monaco,"Andale Mono","lucida console","Courier New",monospace}body>header h1{font-size:2.2em;font-family:"PT Serif","Georgia","Helvetica Neue",Arial,sans-serif;font-weight:normal;line-height:1.2em;margin-bottom:0.6667em}body>header h2{font-family:"PT Serif","Georgia","Helvetica Neue",Arial,sans-serif}body{line-height:1.5em;color:#222}h1{font-size:2.2em;line-height:1.2em}@media only screen and (min-width: 992px){body{font-size:1.15em}h1{font-size:2.6em;line-height:1.2em}}h1,h2,h3,h4,h5,h6{text-rendering:optimizelegibility;margin-bottom:1em;font-weight:bold}h2,section h1{font-size:1.5em}h3,section h2,section section h1{font-size:1.3em}h4,section h3,section section h2,section section section h1{font-size:1em}h5,section h4,section section h3{font-size:.9em}h6,section h5,section section h4,section section section h3{font-size:.8em}p,article blockquote,ul,ol{margin-bottom:1.5em}ul{list-style-type:disc}ul ul{list-style-type:circle;margin-bottom:0px}ul ul ul{list-style-type:square;margin-bottom:0px}ol{list-style-type:decimal}ol ol{list-style-type:lower-alpha;margin-bottom:0px}ol ol ol{list-style-type:lower-roman;margin-bottom:0px}ul,ul ul,ul ol,ol,ol ul,ol ol{margin-left:1.3em}ul ul,ul ol,ol ul,ol ol{margin-bottom:0em}strong{font-weight:bold}em{font-style:italic}sup,sub{font-size:0.75em;position:relative;display:inline-block;padding:0 .2em;line-height:.8em}sup{top:-.5em}sub{bottom:-.5em}a[rev='footnote']{font-size:.75em;padding:0 .3em;line-height:1}q{font-style:italic}q:before{content:"\201C"}q:after{content:"\201D"}em,dfn{font-style:italic}strong,dfn{font-weight:bold}del,s{text-decoration:line-through}abbr,acronym{border-bottom:1px dotted;cursor:help}hr{margin-bottom:0.2em}small{font-size:.8em}big{font-size:1.2em}article blockquote{font-style:italic;position:relative;font-size:1.2em;line-height:1.5em;padding-left:1em;border-left:4px solid rgba(170,170,170,0.5)}article blockquote cite{font-style:italic}article blockquote cite a{color:#aaa !important;word-wrap:break-word}article blockquote cite:before{content:'\2014';padding-right:.3em;padding-left:.3em;color:#aaa}@media only screen and (min-width: 992px){article blockquote{padding-left:1.5em;border-left-width:4px}}.pullquote-right:before,.pullquote-left:before{padding:0;border:none;content:attr(data-pullquote);float:right;width:45%;margin:.5em 0 1em 1.5em;position:relative;top:7px;font-size:1.4em;line-height:1.45em}.pullquote-left:before{float:left;margin:.5em 1.5em 1em 0}.force-wrap,article a,aside.sidebar a{white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;white-space:pre-wrap;word-wrap:break-word}.group,body>header,body>nav,body>footer,body #content>article,body #content>div>article,body #content>div>section,body div.pagination,aside.sidebar,#main,#content,.sidebar{*zoom:1}.group:after,body>header:after,body>nav:after,body>footer:after,body #content>article:after,body #content>div>article:after,body #content>div>section:after,body div.pagination:after,#main:after,#content:after,.sidebar:after{content:"";display:table;clear:both}body{-webkit-text-size-adjust:none;max-width:1200px;position:relative;margin:0 auto}body>header,body>nav,body>footer,body #content>article,body #content>div>article,body #content>div>section{padding-left:18px;padding-right:18px}@media only screen and (min-width: 480px){body>header,body>nav,body>footer,body #content>article,body #content>div>article,body #content>div>section{padding-left:25px;padding-right:25px}}@media only screen and (min-width: 768px){body>header,body>nav,body>footer,body #content>article,body #content>div>article,body #content>div>section{padding-left:35px;padding-right:35px}}@media only screen and (min-width: 992px){body>header,body>nav,body>footer,body #content>article,body #content>div>article,body #content>div>section{padding-left:55px;padding-right:55px}}body div.pagination{margin-left:18px;margin-right:18px}@media only screen and (min-width: 480px){body div.pagination{margin-left:25px;margin-right:25px}}@media only screen and (min-width: 768px){body div.pagination{margin-left:35px;margin-right:35px}}@media only screen and (min-width: 992px){body div.pagination{margin-left:55px;margin-right:55px}}body>header{font-size:1em;padding-top:1.5em;padding-bottom:1.5em}#content{overflow:hidden}#content>div,#content>article{width:100%}aside.sidebar{float:none;padding:0 18px 1px;background-color:#f7f7f7;border-top:1px solid #e0e0e0}.flex-content,article img,article video,article .flash-video,aside.sidebar img{max-width:100%;height:auto}.basic-alignment.left,article img.left,article video.left,article .left.flash-video,aside.sidebar img.left{float:left;margin-right:1.5em}.basic-alignment.right,article img.right,article video.right,article .right.flash-video,aside.sidebar img.right{float:right;margin-left:1.5em}.basic-alignment.center,article img.center,article video.center,article .center.flash-video,aside.sidebar img.center{display:block;margin:0 auto 1.5em}.basic-alignment.left,article img.left,article video.left,article .left.flash-video,aside.sidebar img.left,.basic-alignment.right,article img.right,article video.right,article .right.flash-video,aside.sidebar img.right{margin-bottom:.8em}.toggle-sidebar,.no-sidebar .toggle-sidebar{display:none}@media only screen and (min-width: 750px){body.sidebar-footer aside.sidebar{float:none;width:auto;clear:left;margin:0;padding:0 35px 1px;background-color:#f7f7f7;border-top:1px solid #eaeaea}body.sidebar-footer aside.sidebar section.odd,body.sidebar-footer aside.sidebar section.even{float:left;width:48%}body.sidebar-footer aside.sidebar section.odd{margin-left:0}body.sidebar-footer aside.sidebar section.even{margin-left:4%}body.sidebar-footer aside.sidebar.thirds section{width:30%;margin-left:5%}body.sidebar-footer aside.sidebar.thirds section.first{margin-left:0;clear:both}}body.sidebar-footer #content{margin-right:0px}body.sidebar-footer .toggle-sidebar{display:none}@media only screen and (min-width: 550px){body>header{font-size:1em}}@media only screen and (min-width: 750px){aside.sidebar{float:none;width:auto;clear:left;margin:0;padding:0 35px 1px;background-color:#f7f7f7;border-top:1px solid #eaeaea}aside.sidebar section.odd,aside.sidebar section.even{float:left;width:48%}aside.sidebar section.odd{margin-left:0}aside.sidebar section.even{margin-left:4%}aside.sidebar.thirds section{width:30%;margin-left:5%}aside.sidebar.thirds section.first{margin-left:0;clear:both}}@media only screen and (min-width: 768px){body{-webkit-text-size-adjust:auto}body>header{font-size:1.2em}#main{padding:0;margin:0 auto}#content{overflow:visible;margin-right:240px;position:relative}.no-sidebar #content{margin-right:0;border-right:0}.collapse-sidebar #content{margin-right:20px}#content>div,#content>article{padding-top:17.5px;padding-bottom:17.5px;float:left}aside.sidebar{width:210px;padding:0 15px 15px;background:none;clear:none;float:left;margin:0 -100% 0 0}aside.sidebar section{width:auto;margin-left:0}aside.sidebar section.odd,aside.sidebar section.even{float:none;width:auto;margin-left:0}.collapse-sidebar aside.sidebar{float:none;width:auto;clear:left;margin:0;padding:0 35px 1px;background-color:#f7f7f7;border-top:1px solid #eaeaea}.collapse-sidebar aside.sidebar section.odd,.collapse-sidebar aside.sidebar section.even{float:left;width:48%}.collapse-sidebar aside.sidebar section.odd{margin-left:0}.collapse-sidebar aside.sidebar section.even{margin-left:4%}.collapse-sidebar aside.sidebar.thirds section{width:30%;margin-left:5%}.collapse-sidebar aside.sidebar.thirds section.first{margin-left:0;clear:both}}@media only screen and (min-width: 992px){body>header{font-size:1.3em}#content{margin-right:300px}#content>div,#content>article{padding-top:27.5px;padding-bottom:27.5px}aside.sidebar{width:260px;padding:1.2em 20px 20px}.collapse-sidebar aside.sidebar{padding-left:55px;padding-right:55px}}@media only screen and (min-width: 768px){ul,ol{margin-left:0}}body>header{background:#333}body>header h1{display:inline-block;margin:0}body>header h1 a,body>header h1 a:visited,body>header h1 a:hover{color:#f2f2f2;text-decoration:none}body>header h2{margin:.2em 0 0;font-size:1em;color:#aaa;font-weight:normal}body>nav{position:relative;background-color:#ccc;background:url('/blog/images/noise.png?1444324165'),url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2UwZTBlMCIvPjxzdG9wIG9mZnNldD0iNTAlIiBzdG9wLWNvbG9yPSIjY2NjY2NjIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYjBiMGIwIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g');background:url('/blog/images/noise.png?1444324165'),-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e0e0e0),color-stop(50%, #cccccc),color-stop(100%, #b0b0b0));background:url('/blog/images/noise.png?1444324165'),-moz-linear-gradient(#e0e0e0,#cccccc,#b0b0b0);background:url('/blog/images/noise.png?1444324165'),-webkit-linear-gradient(#e0e0e0,#cccccc,#b0b0b0);background:url('/blog/images/noise.png?1444324165'),linear-gradient(#e0e0e0,#cccccc,#b0b0b0);border-top:1px solid #f2f2f2;border-bottom:1px solid #8c8c8c;padding-top:.35em;padding-bottom:.35em}body>nav form{-moz-background-clip:padding;-o-background-clip:padding-box;-webkit-background-clip:padding;background-clip:padding-box;margin:0;padding:0}body>nav form .search{padding:.3em .5em 0;font-size:.85em;font-family:"PT Sans","Helvetica Neue",Arial,sans-serif;line-height:1.1em;width:95%;-moz-border-radius:0.5em;-webkit-border-radius:0.5em;border-radius:0.5em;-moz-background-clip:padding;-o-background-clip:padding-box;-webkit-background-clip:padding;background-clip:padding-box;-moz-box-shadow:#d1d1d1 0 1px;-webkit-box-shadow:#d1d1d1 0 1px;box-shadow:#d1d1d1 0 1px;background-color:#f2f2f2;border:1px solid #b3b3b3;color:#888}body>nav form .search:focus{color:#444;border-color:#80b1df;-moz-box-shadow:#80b1df 0 0 4px,#80b1df 0 0 3px inset;-webkit-box-shadow:#80b1df 0 0 4px,#80b1df 0 0 3px inset;box-shadow:#80b1df 0 0 4px,#80b1df 0 0 3px inset;background-color:#fff;outline:none}body>nav fieldset[role=search]{float:right;width:48%}body>nav fieldset.mobile-nav{float:left;width:48%}body>nav fieldset.mobile-nav select{width:100%;font-size:.8em;border:1px solid #888}body>nav ul{display:none}@media only screen and (min-width: 550px){body>nav{font-size:.9em}body>nav ul{margin:0;padding:0;border:0;overflow:hidden;*zoom:1;float:left;display:block;padding-top:.15em}body>nav ul li{list-style-image:none;list-style-type:none;margin-left:0;white-space:nowrap;float:left;padding-left:0;padding-right:0}body>nav ul li:first-child{padding-left:0}body>nav ul li:last-child{padding-right:0}body>nav ul li.last{padding-right:0}body>nav ul.subscription{margin-left:.8em;float:right}body>nav ul.subscription li:last-child a{padding-right:0}body>nav ul li{margin:0}body>nav a{color:#6b6b6b;font-family:"PT Sans","Helvetica Neue",Arial,sans-serif;text-shadow:#ebebeb 0 1px;float:left;text-decoration:none;font-size:1.1em;padding:.1em 0;line-height:1.5em}body>nav a:visited{color:#6b6b6b}body>nav a:hover{color:#2b2b2b}body>nav li+li{border-left:1px solid #b0b0b0;margin-left:.8em}body>nav li+li a{padding-left:.8em;border-left:1px solid #dedede}body>nav form{float:right;text-align:left;padding-left:.8em;width:175px}body>nav form .search{width:93%;font-size:.95em;line-height:1.2em}body>nav ul[data-subscription$=email]+form{width:97px}body>nav ul[data-subscription$=email]+form .search{width:91%}body>nav fieldset.mobile-nav{display:none}body>nav fieldset[role=search]{width:99%}}@media only screen and (min-width: 992px){body>nav form{width:215px}body>nav ul[data-subscription$=email]+form{width:147px}}.no-placeholder body>nav .search{background:#f2f2f2 url('/blog/images/search.png?1444324165') 0.3em 0.25em no-repeat;text-indent:1.3em}@media only screen and (min-width: 550px){.maskImage body>nav ul[data-subscription$=email]+form{width:123px}}@media only screen and (min-width: 992px){.maskImage body>nav ul[data-subscription$=email]+form{width:173px}}.maskImage ul.subscription{position:relative;top:.2em}.maskImage ul.subscription li,.maskImage ul.subscription a{border:0;padding:0}.maskImage a[rel=subscribe-rss]{position:relative;top:0px;text-indent:-999999em;background-color:#dedede;border:0;padding:0}.maskImage a[rel=subscribe-rss],.maskImage a[rel=subscribe-rss]:after{-webkit-mask-image:url('/blog/images/rss.png?1444324165');-moz-mask-image:url('/blog/images/rss.png?1444324165');-ms-mask-image:url('/blog/images/rss.png?1444324165');-o-mask-image:url('/blog/images/rss.png?1444324165');mask-image:url('/blog/images/rss.png?1444324165');-webkit-mask-repeat:no-repeat;-moz-mask-repeat:no-repeat;-ms-mask-repeat:no-repeat;-o-mask-repeat:no-repeat;mask-repeat:no-repeat;width:22px;height:22px}.maskImage a[rel=subscribe-rss]:after{content:"";position:absolute;top:-1px;left:0;background-color:#ababab}.maskImage a[rel=subscribe-rss]:hover:after{background-color:#9e9e9e}.maskImage a[rel=subscribe-email]{position:relative;top:0px;text-indent:-999999em;background-color:#dedede;border:0;padding:0}.maskImage a[rel=subscribe-email],.maskImage a[rel=subscribe-email]:after{-webkit-mask-image:url('/blog/images/email.png?1444324165');-moz-mask-image:url('/blog/images/email.png?1444324165');-ms-mask-image:url('/blog/images/email.png?1444324165');-o-mask-image:url('/blog/images/email.png?1444324165');mask-image:url('/blog/images/email.png?1444324165');-webkit-mask-repeat:no-repeat;-moz-mask-repeat:no-repeat;-ms-mask-repeat:no-repeat;-o-mask-repeat:no-repeat;mask-repeat:no-repeat;width:28px;height:22px}.maskImage a[rel=subscribe-email]:after{content:"";position:absolute;top:-1px;left:0;background-color:#ababab}.maskImage a[rel=subscribe-email]:hover:after{background-color:#9e9e9e}article{padding-top:1em}article header{position:relative;padding-top:2em;padding-bottom:1em;margin-bottom:1em;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAABCAYAAACsXeyTAAAAFUlEQVR4AWNIS0sr/v//PwMUDzo+ADqMahmdZfljAAAAAElFTkSuQmCC') bottom left repeat-x}article header h1{margin:0}article header h1 a{text-decoration:none}article header h1 a:hover{text-decoration:underline}article header p{font-size:.9em;color:#aaa;margin:0}article header p.meta{text-transform:uppercase;position:absolute;top:0}@media only screen and (min-width: 768px){article header{margin-bottom:1.5em;padding-bottom:1em;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAABCAYAAACsXeyTAAAAFUlEQVR4AWNIS0sr/v//PwMUDzo+ADqMahmdZfljAAAAAElFTkSuQmCC') bottom left repeat-x}}article h2{padding-top:0.8em;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAABCAYAAACsXeyTAAAAFUlEQVR4AWNIS0sr/v//PwMUDzo+ADqMahmdZfljAAAAAElFTkSuQmCC') top left repeat-x}.entry-content article h2:first-child,article header+h2{padding-top:0}article h2:first-child,article header+h2{background:none}article .feature{padding-top:.5em;margin-bottom:1em;padding-bottom:1em;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAABCAYAAACsXeyTAAAAFUlEQVR4AWNIS0sr/v//PwMUDzo+ADqMahmdZfljAAAAAElFTkSuQmCC') bottom left repeat-x;font-size:2.0em;font-style:italic;line-height:1.3em}article img,article video,article .flash-video{-moz-border-radius:0.3em;-webkit-border-radius:0.3em;border-radius:0.3em;-moz-box-shadow:rgba(0,0,0,0.15) 0 1px 4px;-webkit-box-shadow:rgba(0,0,0,0.15) 0 1px 4px;box-shadow:rgba(0,0,0,0.15) 0 1px 4px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;border:#fff 0.5em solid}article video,article .flash-video{margin:0 auto 1.5em}article video{display:block;width:100%}article .flash-video>div{position:relative;display:block;padding-bottom:56.25%;padding-top:1px;height:0;overflow:hidden}article .flash-video>div iframe,article .flash-video>div object,article .flash-video>div embed{position:absolute;top:0;left:0;width:100%;height:100%}article>footer{padding-bottom:2.5em;margin-top:2em}article>footer p.meta{margin-bottom:.8em;font-size:.85em;clear:both;overflow:hidden}.blog-index article+article{background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAABCAYAAACsXeyTAAAAFUlEQVR4AWNIS0sr/v//PwMUDzo+ADqMahmdZfljAAAAAElFTkSuQmCC') top left repeat-x}#content .blog-index{padding-top:0;padding-bottom:0}#content .blog-index article{padding-top:2em}#content .blog-index article header{background:none;padding-bottom:0}#content .blog-index article h1{font-size:2.2em}#content .blog-index article h1 a{color:inherit}#content .blog-index article h1 a:hover{color:#0181eb}#content .blog-index a[rel=full-article]{background:#ebebeb;display:inline-block;padding:.4em .8em;margin-right:.5em;text-decoration:none;color:#666;-moz-transition:background-color 0.5s;-o-transition:background-color 0.5s;-webkit-transition:background-color 0.5s;transition:background-color 0.5s}#content .blog-index a[rel=full-article]:hover{background:#0181eb;text-shadow:none;color:#f8f8f8}#content .blog-index footer{margin-top:1em}.separator,article>footer .byline+time:before,article>footer time+time:before,article>footer .comments:before,article>footer .byline ~ .categories:before{content:"\2022 ";padding:0 .4em 0 .2em;display:inline-block}#content div.pagination{text-align:center;font-size:.95em;position:relative;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAABCAYAAACsXeyTAAAAFUlEQVR4AWNIS0sr/v//PwMUDzo+ADqMahmdZfljAAAAAElFTkSuQmCC') top left repeat-x;padding-top:1.5em;padding-bottom:1.5em}#content div.pagination a{text-decoration:none;color:#aaa}#content div.pagination a.prev{position:absolute;left:0}#content div.pagination a.next{position:absolute;right:0}#content div.pagination a:hover{color:#0181eb}#content div.pagination a[href*=archive]:before,#content div.pagination a[href*=archive]:after{content:'\2014';padding:0 .3em}p.meta+.sharing{padding-top:1em;padding-left:0;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAABCAYAAACsXeyTAAAAFUlEQVR4AWNIS0sr/v//PwMUDzo+ADqMahmdZfljAAAAAElFTkSuQmCC') top left repeat-x}#fb-root{display:none}.highlight,html .gist .gist-file .gist-syntax .gist-highlight{border:1px solid #05232b !important}.highlight table td.code,html .gist .gist-file .gist-syntax .gist-highlight table td.code{width:100%}.highlight .line-numbers,html .gist .gist-file .gist-syntax .highlight .line_numbers{text-align:right;font-size:13px;line-height:1.45em;background:#073642 url('/blog/images/noise.png?1444324165') top left !important;border-right:1px solid #00232c !important;-moz-box-shadow:#083e4b -1px 0 inset;-webkit-box-shadow:#083e4b -1px 0 inset;box-shadow:#083e4b -1px 0 inset;text-shadow:#021014 0 -1px;padding:.8em !important;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.highlight .line-numbers span,html .gist .gist-file .gist-syntax .highlight .line_numbers span{color:#586e75 !important}figure.code,.gist-file,pre{-moz-box-shadow:rgba(0,0,0,0.06) 0 0 10px;-webkit-box-shadow:rgba(0,0,0,0.06) 0 0 10px;box-shadow:rgba(0,0,0,0.06) 0 0 10px}figure.code .highlight pre,.gist-file .highlight pre,pre .highlight pre{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.gist .highlight *::-moz-selection,figure.code .highlight *::-moz-selection{background:#386774;color:inherit;text-shadow:#002b36 0 1px}.gist .highlight *::-webkit-selection,figure.code .highlight *::-webkit-selection{background:#386774;color:inherit;text-shadow:#002b36 0 1px}.gist .highlight *::selection,figure.code .highlight *::selection{background:#386774;color:inherit;text-shadow:#002b36 0 1px}html .gist .gist-file{margin-bottom:1.8em;position:relative;border:none;padding-top:26px !important}html .gist .gist-file .highlight{margin-bottom:0}html .gist .gist-file .gist-syntax{border-bottom:0 !important;background:none !important}html .gist .gist-file .gist-syntax .gist-highlight{background:#002b36 !important}html .gist .gist-file .gist-syntax .highlight pre{padding:0}html .gist .gist-file .gist-meta{padding:.6em 0.8em;border:1px solid #083e4b !important;color:#586e75;font-size:.7em !important;background:#073642 url('/blog/images/noise.png?1444324165') top left;line-height:1.5em}html .gist .gist-file .gist-meta a{color:#76888b !important;text-decoration:none}html .gist .gist-file .gist-meta a:hover,html .gist .gist-file .gist-meta a:focus{text-decoration:underline}html .gist .gist-file .gist-meta a:hover{color:#93a1a1 !important}html .gist .gist-file .gist-meta a[href*='#file']{position:absolute;top:0;left:0;right:-10px;color:#474747 !important}html .gist .gist-file .gist-meta a[href*='#file']:hover{color:#1863a1 !important}html .gist .gist-file .gist-meta a[href*=raw]{top:.4em}pre{background:#002b36 url('/blog/images/noise.png?1444324165') top left;-moz-border-radius:0.4em;-webkit-border-radius:0.4em;border-radius:0.4em;border:1px solid #05232b;line-height:1.45em;font-size:13px;margin-bottom:2.1em;padding:.8em 1em;color:#93a1a1;overflow:auto}h3.filename+pre{-moz-border-radius-topleft:0px;-webkit-border-top-left-radius:0px;border-top-left-radius:0px;-moz-border-radius-topright:0px;-webkit-border-top-right-radius:0px;border-top-right-radius:0px}p code,li code{display:inline-block;white-space:no-wrap;background:#fff;font-size:.8em;line-height:1.5em;color:#555;border:1px solid #ddd;-moz-border-radius:0.4em;-webkit-border-radius:0.4em;border-radius:0.4em;padding:0 .3em;margin:-1px 0}p pre code,li pre code{font-size:1em !important;background:none;border:none}.pre-code,html .gist .gist-file .gist-syntax .highlight pre,.highlight code{font-family:Menlo,Monaco,"Andale Mono","lucida console","Courier New",monospace !important;overflow:scroll;overflow-y:hidden;display:block;padding:.8em;overflow-x:auto;line-height:1.45em;background:#002b36 url('/blog/images/noise.png?1444324165') top left !important;color:#93a1a1 !important}.pre-code span,html .gist .gist-file .gist-syntax .highlight pre span,.highlight code span{color:#93a1a1 !important}.pre-code span,html .gist .gist-file .gist-syntax .highlight pre span,.highlight code span{font-style:normal !important;font-weight:normal !important}.pre-code .c,html .gist .gist-file .gist-syntax .highlight pre .c,.highlight code .c{color:#586e75 !important;font-style:italic !important}.pre-code .cm,html .gist .gist-file .gist-syntax .highlight pre .cm,.highlight code .cm{color:#586e75 !important;font-style:italic !important}.pre-code .cp,html .gist .gist-file .gist-syntax .highlight pre .cp,.highlight code .cp{color:#586e75 !important;font-style:italic !important}.pre-code .c1,html .gist .gist-file .gist-syntax .highlight pre .c1,.highlight code .c1{color:#586e75 !important;font-style:italic !important}.pre-code .cs,html .gist .gist-file .gist-syntax .highlight pre .cs,.highlight code .cs{color:#586e75 !important;font-weight:bold !important;font-style:italic !important}.pre-code .err,html .gist .gist-file .gist-syntax .highlight pre .err,.highlight code .err{color:#dc322f !important;background:none !important}.pre-code .k,html .gist .gist-file .gist-syntax .highlight pre .k,.highlight code .k{color:#cb4b16 !important}.pre-code .o,html .gist .gist-file .gist-syntax .highlight pre .o,.highlight code .o{color:#93a1a1 !important;font-weight:bold !important}.pre-code .p,html .gist .gist-file .gist-syntax .highlight pre .p,.highlight code .p{color:#93a1a1 !important}.pre-code .ow,html .gist .gist-file .gist-syntax .highlight pre .ow,.highlight code .ow{color:#2aa198 !important;font-weight:bold !important}.pre-code .gd,html .gist .gist-file .gist-syntax .highlight pre .gd,.highlight code .gd{color:#93a1a1 !important;background-color:#372d34 !important;display:inline-block}.pre-code .gd .x,html .gist .gist-file .gist-syntax .highlight pre .gd .x,.highlight code .gd .x{color:#93a1a1 !important;background-color:#4d2d34 !important;display:inline-block}.pre-code .ge,html .gist .gist-file .gist-syntax .highlight pre .ge,.highlight code .ge{color:#93a1a1 !important;font-style:italic !important}.pre-code .gh,html .gist .gist-file .gist-syntax .highlight pre .gh,.highlight code .gh{color:#586e75 !important}.pre-code .gi,html .gist .gist-file .gist-syntax .highlight pre .gi,.highlight code .gi{color:#93a1a1 !important;background-color:#1b412b !important;display:inline-block}.pre-code .gi .x,html .gist .gist-file .gist-syntax .highlight pre .gi .x,.highlight code .gi .x{color:#93a1a1 !important;background-color:#355720 !important;display:inline-block}.pre-code .gs,html .gist .gist-file .gist-syntax .highlight pre .gs,.highlight code .gs{color:#93a1a1 !important;font-weight:bold !important}.pre-code .gu,html .gist .gist-file .gist-syntax .highlight pre .gu,.highlight code .gu{color:#6c71c4 !important}.pre-code .kc,html .gist .gist-file .gist-syntax .highlight pre .kc,.highlight code .kc{color:#859900 !important;font-weight:bold !important}.pre-code .kd,html .gist .gist-file .gist-syntax .highlight pre .kd,.highlight code .kd{color:#268bd2 !important}.pre-code .kp,html .gist .gist-file .gist-syntax .highlight pre .kp,.highlight code .kp{color:#cb4b16 !important;font-weight:bold !important}.pre-code .kr,html .gist .gist-file .gist-syntax .highlight pre .kr,.highlight code .kr{color:#d33682 !important;font-weight:bold !important}.pre-code .kt,html .gist .gist-file .gist-syntax .highlight pre .kt,.highlight code .kt{color:#2aa198 !important}.pre-code .n,html .gist .gist-file .gist-syntax .highlight pre .n,.highlight code .n{color:#268bd2 !important}.pre-code .na,html .gist .gist-file .gist-syntax .highlight pre .na,.highlight code .na{color:#268bd2 !important}.pre-code .nb,html .gist .gist-file .gist-syntax .highlight pre .nb,.highlight code .nb{color:#859900 !important}.pre-code .nc,html .gist .gist-file .gist-syntax .highlight pre .nc,.highlight code .nc{color:#d33682 !important}.pre-code .no,html .gist .gist-file .gist-syntax .highlight pre .no,.highlight code .no{color:#b58900 !important}.pre-code .nl,html .gist .gist-file .gist-syntax .highlight pre .nl,.highlight code .nl{color:#859900 !important}.pre-code .ne,html .gist .gist-file .gist-syntax .highlight pre .ne,.highlight code .ne{color:#268bd2 !important;font-weight:bold !important}.pre-code .nf,html .gist .gist-file .gist-syntax .highlight pre .nf,.highlight code .nf{color:#268bd2 !important;font-weight:bold !important}.pre-code .nn,html .gist .gist-file .gist-syntax .highlight pre .nn,.highlight code .nn{color:#b58900 !important}.pre-code .nt,html .gist .gist-file .gist-syntax .highlight pre .nt,.highlight code .nt{color:#268bd2 !important;font-weight:bold !important}.pre-code .nx,html .gist .gist-file .gist-syntax .highlight pre .nx,.highlight code .nx{color:#b58900 !important}.pre-code .vg,html .gist .gist-file .gist-syntax .highlight pre .vg,.highlight code .vg{color:#268bd2 !important}.pre-code .vi,html .gist .gist-file .gist-syntax .highlight pre .vi,.highlight code .vi{color:#268bd2 !important}.pre-code .nv,html .gist .gist-file .gist-syntax .highlight pre .nv,.highlight code .nv{color:#268bd2 !important}.pre-code .mf,html .gist .gist-file .gist-syntax .highlight pre .mf,.highlight code .mf{color:#2aa198 !important}.pre-code .m,html .gist .gist-file .gist-syntax .highlight pre .m,.highlight code .m{color:#2aa198 !important}.pre-code .mh,html .gist .gist-file .gist-syntax .highlight pre .mh,.highlight code .mh{color:#2aa198 !important}.pre-code .mi,html .gist .gist-file .gist-syntax .highlight pre .mi,.highlight code .mi{color:#2aa198 !important}.pre-code .s,html .gist .gist-file .gist-syntax .highlight pre .s,.highlight code .s{color:#2aa198 !important}.pre-code .sd,html .gist .gist-file .gist-syntax .highlight pre .sd,.highlight code .sd{color:#2aa198 !important}.pre-code .s2,html .gist .gist-file .gist-syntax .highlight pre .s2,.highlight code .s2{color:#2aa198 !important}.pre-code .se,html .gist .gist-file .gist-syntax .highlight pre .se,.highlight code .se{color:#dc322f !important}.pre-code .si,html .gist .gist-file .gist-syntax .highlight pre .si,.highlight code .si{color:#268bd2 !important}.pre-code .sr,html .gist .gist-file .gist-syntax .highlight pre .sr,.highlight code .sr{color:#2aa198 !important}.pre-code .s1,html .gist .gist-file .gist-syntax .highlight pre .s1,.highlight code .s1{color:#2aa198 !important}.pre-code div .gd,html .gist .gist-file .gist-syntax .highlight pre div .gd,.highlight code div .gd,.pre-code div .gd .x,html .gist .gist-file .gist-syntax .highlight pre div .gd .x,.highlight code div .gd .x,.pre-code div .gi,html .gist .gist-file .gist-syntax .highlight pre div .gi,.highlight code div .gi,.pre-code div .gi .x,html .gist .gist-file .gist-syntax .highlight pre div .gi .x,.highlight code div .gi .x{display:inline-block;width:100%}.highlight,.gist-highlight{margin-bottom:1.8em;background:#002b36;overflow-y:hidden;overflow-x:auto}.highlight pre,.gist-highlight pre{background:none;-moz-border-radius:0px;-webkit-border-radius:0px;border-radius:0px;border:none;padding:0;margin-bottom:0}pre::-webkit-scrollbar,.highlight::-webkit-scrollbar,.gist-highlight::-webkit-scrollbar{height:.5em;background:rgba(255,255,255,0.15)}pre::-webkit-scrollbar-thumb:horizontal,.highlight::-webkit-scrollbar-thumb:horizontal,.gist-highlight::-webkit-scrollbar-thumb:horizontal{background:rgba(255,255,255,0.2);-webkit-border-radius:4px;border-radius:4px}.highlight code{background:#000}figure.code{background:none;padding:0;border:0;margin-bottom:1.5em}figure.code pre{margin-bottom:0}figure.code figcaption{position:relative}figure.code .highlight{margin-bottom:0}.code-title,html .gist .gist-file .gist-meta a[href*='#file'],h3.filename,figure.code figcaption{text-align:center;font-size:13px;line-height:2em;text-shadow:#cbcccc 0 1px 0;color:#474747;font-weight:normal;margin-bottom:0;-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;font-family:"Helvetica Neue", Arial, "Lucida Grande", "Lucida Sans Unicode", Lucida, sans-serif;background:#aaa url('/blog/images/code_bg.png?1444324165') top repeat-x;border:1px solid #565656;border-top-color:#cbcbcb;border-left-color:#a5a5a5;border-right-color:#a5a5a5;border-bottom:0}.download-source,html .gist .gist-file .gist-meta a[href*=raw],figure.code figcaption a{position:absolute;right:.8em;text-decoration:none;color:#666 !important;z-index:1;font-size:13px;text-shadow:#cbcccc 0 1px 0;padding-left:3em}.download-source:hover,html .gist .gist-file .gist-meta a[href*=raw]:hover,figure.code figcaption a:hover,.download-source:focus,html .gist .gist-file .gist-meta a[href*=raw]:focus,figure.code figcaption a:focus{text-decoration:underline}#archive #content>div,#archive #content>div>article{padding-top:0}#blog-archives{color:#aaa}#blog-archives article{padding:1em 0 1em;position:relative;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAABCAYAAACsXeyTAAAAFUlEQVR4AWNIS0sr/v//PwMUDzo+ADqMahmdZfljAAAAAElFTkSuQmCC') bottom left repeat-x}#blog-archives article:last-child{background:none}#blog-archives article footer{padding:0;margin:0}#blog-archives h1{color:#222;margin-bottom:.3em}#blog-archives h2{display:none}#blog-archives h1{font-size:1.5em}#blog-archives h1 a{text-decoration:none;color:inherit;font-weight:normal;display:inline-block}#blog-archives h1 a:hover,#blog-archives h1 a:focus{text-decoration:underline}#blog-archives h1 a:hover{color:#0181eb}#blog-archives a.category,#blog-archives time{color:#aaa}#blog-archives .entry-content{display:none}#blog-archives time{font-size:.9em;line-height:1.2em}#blog-archives time .month,#blog-archives time .day{display:inline-block}#blog-archives time .month{text-transform:uppercase}#blog-archives p{margin-bottom:1em}#blog-archives a,#blog-archives .entry-content a{color:inherit}#blog-archives a:hover,#blog-archives .entry-content a:hover{color:#0181eb}#blog-archives a:hover{color:#0181eb}@media only screen and (min-width: 550px){#blog-archives article{margin-left:5em}#blog-archives h2{margin-bottom:.3em;font-weight:normal;display:inline-block;position:relative;top:-1px;float:left}#blog-archives h2:first-child{padding-top:.75em}#blog-archives time{position:absolute;text-align:right;left:0em;top:1.8em}#blog-archives .year{display:none}#blog-archives article{padding-left:4.5em;padding-bottom:.7em}#blog-archives a.category{line-height:1.1em}}#content>.category article{margin-left:0;padding-left:6.8em}#content>.category .year{display:inline}.side-shadow-border,aside.sidebar section h1,aside.sidebar li{-moz-box-shadow:#fff 0 1px;-webkit-box-shadow:#fff 0 1px;box-shadow:#fff 0 1px}aside.sidebar{overflow:hidden;color:#4c4c4c;text-shadow:#fff 0 1px}aside.sidebar section{font-size:.8em;line-height:1.4em;margin-bottom:1.5em}aside.sidebar section h1{margin:1.5em 0 0;padding-bottom:.2em;border-bottom:1px solid #e0e0e0}aside.sidebar section h1+p{padding-top:.4em}aside.sidebar img{-moz-border-radius:0.3em;-webkit-border-radius:0.3em;border-radius:0.3em;-moz-box-shadow:rgba(0,0,0,0.15) 0 1px 4px;-webkit-box-shadow:rgba(0,0,0,0.15) 0 1px 4px;box-shadow:rgba(0,0,0,0.15) 0 1px 4px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;border:#fff 0.3em solid}aside.sidebar ul{margin-bottom:0.5em;margin-left:0}aside.sidebar li{list-style:none;padding:.5em 0;margin:0;border-bottom:1px solid #e0e0e0}aside.sidebar li p:last-child{margin-bottom:0}aside.sidebar a{color:inherit;-moz-transition:color 0.5s;-o-transition:color 0.5s;-webkit-transition:color 0.5s;transition:color 0.5s}aside.sidebar:hover a{color:#222}aside.sidebar:hover a:hover{color:#0181eb}.aside-alt-link,#pinboard_linkroll .pin-tag{color:#7f7f7f}.aside-alt-link:hover,#pinboard_linkroll .pin-tag:hover{color:#0181eb}@media only screen and (min-width: 768px){.toggle-sidebar{outline:none;position:absolute;right:-10px;top:0;bottom:0;display:inline-block;text-decoration:none;color:#cecece;width:9px;cursor:pointer}.toggle-sidebar:hover{background:#e9e9e9;background:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuMCIgeTE9IjAuNSIgeDI9IjEuMCIgeTI9IjAuNSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2UwZTBlMCIgc3RvcC1vcGFjaXR5PSIwLjUiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNlMGUwZTAiIHN0b3Atb3BhY2l0eT0iMC4wIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g');background:-webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, rgba(224,224,224,0.5)),color-stop(100%, rgba(224,224,224,0)));background:-moz-linear-gradient(left, rgba(224,224,224,0.5),rgba(224,224,224,0));background:-webkit-linear-gradient(left, rgba(224,224,224,0.5),rgba(224,224,224,0));background:linear-gradient(to right, rgba(224,224,224,0.5),rgba(224,224,224,0))}.toggle-sidebar:after{position:absolute;right:-11px;top:0;width:20px;font-size:1.2em;line-height:1.1em;padding-bottom:.15em;-moz-border-radius-bottomright:0.3em;-webkit-border-bottom-right-radius:0.3em;border-bottom-right-radius:0.3em;text-align:center;background:#f8f8f8 url('/blog/images/noise.png?1444324165') top left;border-bottom:1px solid #e0e0e0;border-right:1px solid #e0e0e0;content:"\00BB";text-indent:-1px}.collapse-sidebar .toggle-sidebar{text-indent:0px;right:-20px;width:19px}.collapse-sidebar .toggle-sidebar:hover{background:#e9e9e9}.collapse-sidebar .toggle-sidebar:after{border-left:1px solid #e0e0e0;text-shadow:#fff 0 1px;content:"\00AB";left:0px;right:0;text-align:center;text-indent:0;border:0;border-right-width:0;background:none}}.googleplus h1{-moz-box-shadow:none !important;-webkit-box-shadow:none !important;-o-box-shadow:none !important;box-shadow:none !important;border-bottom:0px none !important}.googleplus a{text-decoration:none;white-space:normal !important;line-height:32px}.googleplus a img{float:left;margin-right:0.5em;border:0 none}.googleplus-hidden{position:absolute;top:-1000em;left:-1000em}#pinboard_linkroll .pin-title,#pinboard_linkroll .pin-description{display:block;margin-bottom:.5em}#pinboard_linkroll .pin-tag{text-decoration:none}#pinboard_linkroll .pin-tag:hover,#pinboard_linkroll .pin-tag:focus{text-decoration:underline}#pinboard_linkroll .pin-tag:after{content:','}#pinboard_linkroll .pin-tag:last-child:after{content:''}.delicious-posts a.delicious-link{margin-bottom:.5em;display:block}.delicious-posts p{font-size:1em}body>footer{font-size:.8em;color:#888;text-shadow:#d9d9d9 0 1px;background-color:#ccc;background:url('/blog/images/noise.png?1444324165'),url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2UwZTBlMCIvPjxzdG9wIG9mZnNldD0iNTAlIiBzdG9wLWNvbG9yPSIjY2NjY2NjIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYjBiMGIwIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g');background:url('/blog/images/noise.png?1444324165'),-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e0e0e0),color-stop(50%, #cccccc),color-stop(100%, #b0b0b0));background:url('/blog/images/noise.png?1444324165'),-moz-linear-gradient(#e0e0e0,#cccccc,#b0b0b0);background:url('/blog/images/noise.png?1444324165'),-webkit-linear-gradient(#e0e0e0,#cccccc,#b0b0b0);background:url('/blog/images/noise.png?1444324165'),linear-gradient(#e0e0e0,#cccccc,#b0b0b0);border-top:1px solid #f2f2f2;position:relative;padding-top:1em;padding-bottom:1em;margin-bottom:3em;-moz-border-radius-bottomleft:0.4em;-webkit-border-bottom-left-radius:0.4em;border-bottom-left-radius:0.4em;-moz-border-radius-bottomright:0.4em;-webkit-border-bottom-right-radius:0.4em;border-bottom-right-radius:0.4em;z-index:1}body>footer a{color:#6b6b6b}body>footer a:visited{color:#6b6b6b}body>footer a:hover{color:#484848}body>footer p:last-child{margin-bottom:0}