├── 2009 └── 11 │ ├── jQuery-Micro-templates │ └── index.html │ ├── Javascript-Pseudo-threading │ └── index.html │ ├── Managing-CSS-Through-Javascript │ └── index.html │ ├── Building-a-Better-Friend-Selector │ └── index.html │ ├── JS-Find-and-Replace-with-SplitJoin │ └── index.html │ └── Consuljs-Simple-Logging-Abstraction │ └── index.html ├── 2010 ├── 1 │ └── Preloading-JS-and-CSS-as-Print-Stylesheets │ │ └── index.html ├── 2 │ ├── This-Blog-Now-With-HTML5 │ │ └── index.html │ ├── JavaScript-Scoping-and-Hoisting │ │ └── index.html │ ├── Why-JavaScripts-new-Keyword-Sucks │ │ └── index.html │ ├── Finding-Improper-JavaScript-Globals │ │ └── index.html │ ├── SearchReplace-in-the-DOM-with-jQuery │ │ └── index.html │ └── Minimum-Timer-Intervals-in-JavaScript │ │ └── index.html ├── 3 │ ├── Performance-of-vs- │ │ └── index.html │ ├── JavaScript-Better-and-Faster │ │ └── index.html │ ├── JavaScript-Module-Pattern-In-Depth │ │ └── index.html │ ├── JavaScript-Style-Objects-in-Python │ │ └── index.html │ └── Object-to-Primitive-Conversions-in-JavaScript │ │ └── index.html ├── 4 │ └── Debugging-Closures-and-Modules │ │ └── index.html ├── 5 │ └── Spying-Constructors-in-JavaScript │ │ └── index.html └── 7 │ ├── Writing-Testable-JavaScript │ └── index.html │ └── Saner-HTML5-History-Management │ └── index.html ├── 2011 ├── 2 │ └── Thoughts-on-the-Hashbang │ │ └── index.html └── 4 │ └── Replacing-setTimeout-Globally │ └── index.html ├── .jekyllignore ├── CNAME ├── Gemfile ├── favicon.ico ├── images └── li.gif ├── files └── resume.pdf ├── css ├── blueprint │ ├── src │ │ ├── grid.png │ │ ├── reset.css │ │ ├── forms.css │ │ ├── print.css │ │ ├── ie.css │ │ ├── typography.css │ │ └── grid.css │ ├── plugins │ │ ├── buttons │ │ │ ├── icons │ │ │ │ ├── key.png │ │ │ │ ├── tick.png │ │ │ │ └── cross.png │ │ │ ├── readme.txt │ │ │ └── screen.css │ │ ├── link-icons │ │ │ ├── icons │ │ │ │ ├── doc.png │ │ │ │ ├── feed.png │ │ │ │ ├── im.png │ │ │ │ ├── pdf.png │ │ │ │ ├── xls.png │ │ │ │ ├── email.png │ │ │ │ ├── external.png │ │ │ │ └── visited.png │ │ │ ├── readme.txt │ │ │ └── screen.css │ │ ├── rtl │ │ │ ├── readme.txt │ │ │ └── screen.css │ │ └── fancy-type │ │ │ ├── readme.txt │ │ │ └── screen.css │ ├── print.min.css │ ├── ie.min.css │ ├── print.css │ ├── ie.css │ └── blueprint.min.css └── ag.css ├── About-Ben └── index.html ├── Gemfile.lock ├── LICENSE ├── tag ├── debugging │ └── index.html ├── adequatelygood │ └── index.html ├── python │ └── index.html ├── slide │ └── index.html ├── talks │ └── index.html ├── social gaming │ └── index.html ├── css │ └── index.html ├── hashbang │ └── index.html ├── testing │ └── index.html ├── jquery │ └── index.html └── timers │ └── index.html └── about.html /.jekyllignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /CNAME: -------------------------------------------------------------------------------- 1 | adequatelygood.com -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source :rubygems 2 | 3 | gem 'jekyll' 4 | gem 'nokogiri' 5 | gem 'liquid' -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcherry/bcherry.github.com/master/favicon.ico -------------------------------------------------------------------------------- /images/li.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcherry/bcherry.github.com/master/images/li.gif -------------------------------------------------------------------------------- /files/resume.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcherry/bcherry.github.com/master/files/resume.pdf -------------------------------------------------------------------------------- /css/blueprint/src/grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcherry/bcherry.github.com/master/css/blueprint/src/grid.png -------------------------------------------------------------------------------- /css/blueprint/plugins/buttons/icons/key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcherry/bcherry.github.com/master/css/blueprint/plugins/buttons/icons/key.png -------------------------------------------------------------------------------- /css/blueprint/plugins/buttons/icons/tick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcherry/bcherry.github.com/master/css/blueprint/plugins/buttons/icons/tick.png -------------------------------------------------------------------------------- /css/blueprint/plugins/buttons/icons/cross.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcherry/bcherry.github.com/master/css/blueprint/plugins/buttons/icons/cross.png -------------------------------------------------------------------------------- /css/blueprint/plugins/link-icons/icons/doc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcherry/bcherry.github.com/master/css/blueprint/plugins/link-icons/icons/doc.png -------------------------------------------------------------------------------- /css/blueprint/plugins/link-icons/icons/feed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcherry/bcherry.github.com/master/css/blueprint/plugins/link-icons/icons/feed.png -------------------------------------------------------------------------------- /css/blueprint/plugins/link-icons/icons/im.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcherry/bcherry.github.com/master/css/blueprint/plugins/link-icons/icons/im.png -------------------------------------------------------------------------------- /css/blueprint/plugins/link-icons/icons/pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcherry/bcherry.github.com/master/css/blueprint/plugins/link-icons/icons/pdf.png -------------------------------------------------------------------------------- /css/blueprint/plugins/link-icons/icons/xls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcherry/bcherry.github.com/master/css/blueprint/plugins/link-icons/icons/xls.png -------------------------------------------------------------------------------- /css/blueprint/plugins/link-icons/icons/email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcherry/bcherry.github.com/master/css/blueprint/plugins/link-icons/icons/email.png -------------------------------------------------------------------------------- /css/blueprint/plugins/link-icons/icons/external.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcherry/bcherry.github.com/master/css/blueprint/plugins/link-icons/icons/external.png -------------------------------------------------------------------------------- /css/blueprint/plugins/link-icons/icons/visited.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bcherry/bcherry.github.com/master/css/blueprint/plugins/link-icons/icons/visited.png -------------------------------------------------------------------------------- /About-Ben/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2010/3/Performance-of-vs-/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2009/11/jQuery-Micro-templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2010/2/This-Blog-Now-With-HTML5/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2011/2/Thoughts-on-the-Hashbang/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2009/11/Javascript-Pseudo-threading/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2010/7/Writing-Testable-JavaScript/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2010/3/JavaScript-Better-and-Faster/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2011/4/Replacing-setTimeout-Globally/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2010/2/JavaScript-Scoping-and-Hoisting/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2010/4/Debugging-Closures-and-Modules/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2010/7/Saner-HTML5-History-Management/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2009/11/Managing-CSS-Through-Javascript/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2009/11/Building-a-Better-Friend-Selector/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2009/11/JS-Find-and-Replace-with-SplitJoin/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2010/2/Why-JavaScripts-new-Keyword-Sucks/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2010/3/JavaScript-Module-Pattern-In-Depth/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2010/3/JavaScript-Style-Objects-in-Python/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2010/5/Spying-Constructors-in-JavaScript/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2009/11/Consuljs-Simple-Logging-Abstraction/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2010/2/Finding-Improper-JavaScript-Globals/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2010/2/SearchReplace-in-the-DOM-with-jQuery/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /css/blueprint/plugins/rtl/readme.txt: -------------------------------------------------------------------------------- 1 | RTL 2 | * Mirrors Blueprint, so it can be used with Right-to-Left languages. 3 | 4 | By Ran Yaniv Hartstein, ranh.co.il 5 | 6 | Usage 7 | ---------------------------------------------------------------- 8 | 9 | 1) Add this line to your HTML: 10 | -------------------------------------------------------------------------------- /2010/2/Minimum-Timer-Intervals-in-JavaScript/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2010/1/Preloading-JS-and-CSS-as-Print-Stylesheets/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2010/3/Object-to-Primitive-Conversions-in-JavaScript/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /css/blueprint/plugins/fancy-type/readme.txt: -------------------------------------------------------------------------------- 1 | Fancy Type 2 | 3 | * Gives you classes to use if you'd like some 4 | extra fancy typography. 5 | 6 | Credits and instructions are specified above each class 7 | in the fancy-type.css file in this directory. 8 | 9 | 10 | Usage 11 | ---------------------------------------------------------------- 12 | 13 | 1) Add this plugin to lib/settings.yml. 14 | See compress.rb for instructions. 15 | -------------------------------------------------------------------------------- /css/blueprint/plugins/link-icons/readme.txt: -------------------------------------------------------------------------------- 1 | Link Icons 2 | * Icons for links based on protocol or file type. 3 | 4 | This is not supported in IE versions < 7. 5 | 6 | 7 | Credits 8 | ---------------------------------------------------------------- 9 | 10 | * Marc Morgan 11 | * Olav Bjorkoy [bjorkoy.com] 12 | 13 | 14 | Usage 15 | ---------------------------------------------------------------- 16 | 17 | 1) Add this line to your HTML: 18 | -------------------------------------------------------------------------------- /css/blueprint/print.min.css: -------------------------------------------------------------------------------- 1 | body{line-height:1.5;font-family:"Helvetica Neue",Arial,Helvetica,sans-serif;color:#000;background:none;font-size:10pt;}.container{background:none;}hr{background:#ccc;color:#ccc;width:100%;height:2px;margin:2em 0;padding:0;border:none;}hr.space{background:#fff;color:#fff;visibility:hidden;}h1,h2,h3,h4,h5,h6{font-family:"Helvetica Neue",Arial,"Lucida Grande",sans-serif;}code{font:.9em "Courier New",Monaco,Courier,monospace;}a img{border:none;}p img.top{margin-top:0;}blockquote{margin:1.5em;padding:1em;font-style:italic;font-size:.9em;}.small{font-size:.9em;}.large{font-size:1.1em;}.quiet{color:#999;}.hide{display:none;}a:link,a:visited{background:transparent;font-weight:700;text-decoration:underline;}a:link:after,a:visited:after{content:"(" attr(href) ")";font-size:90%;} -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: http://rubygems.org/ 3 | specs: 4 | classifier (1.3.3) 5 | fast-stemmer (>= 1.0.0) 6 | directory_watcher (1.4.1) 7 | fast-stemmer (1.0.2) 8 | jekyll (0.12.1) 9 | classifier (~> 1.3) 10 | directory_watcher (~> 1.1) 11 | kramdown (~> 0.14) 12 | liquid (~> 2.3) 13 | maruku (~> 0.5) 14 | pygments.rb (~> 0.3.2) 15 | kramdown (0.14.2) 16 | liquid (2.4.1) 17 | maruku (0.6.1) 18 | syntax (>= 1.0.0) 19 | nokogiri (1.5.6) 20 | posix-spawn (0.3.6) 21 | pygments.rb (0.3.7) 22 | posix-spawn (~> 0.3.6) 23 | yajl-ruby (~> 1.1.0) 24 | syntax (1.0.0) 25 | yajl-ruby (1.1.0) 26 | 27 | PLATFORMS 28 | ruby 29 | 30 | DEPENDENCIES 31 | jekyll 32 | liquid 33 | nokogiri 34 | -------------------------------------------------------------------------------- /css/blueprint/plugins/buttons/readme.txt: -------------------------------------------------------------------------------- 1 | Buttons 2 | 3 | * Gives you great looking CSS buttons, for both and 25 | 26 | 27 | Change Password 28 | 29 | 30 | 31 | Cancel 32 | 33 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Ben Cherry 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /css/blueprint/src/reset.css: -------------------------------------------------------------------------------- 1 | /* -------------------------------------------------------------- 2 | 3 | reset.css 4 | * Resets default browser CSS. 5 | 6 | -------------------------------------------------------------- */ 7 | 8 | html, body, div, span, object, iframe, 9 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 10 | a, abbr, acronym, address, code, 11 | del, dfn, em, img, q, dl, dt, dd, ol, ul, li, 12 | fieldset, form, label, legend, 13 | table, caption, tbody, tfoot, thead, tr, th, td { 14 | margin: 0; 15 | padding: 0; 16 | border: 0; 17 | font-weight: inherit; 18 | font-style: inherit; 19 | font-size: 100%; 20 | font-family: inherit; 21 | vertical-align: baseline; 22 | } 23 | 24 | body { 25 | line-height: 1.5; 26 | } 27 | 28 | /* Tables still need 'cellspacing="0"' in the markup. */ 29 | table { border-collapse: separate; border-spacing: 0; } 30 | caption, th, td { text-align: left; font-weight: normal; } 31 | table, td, th { vertical-align: middle; } 32 | 33 | /* Remove possible quote marks (") from ,
. */ 34 | blockquote:before, blockquote:after, q:before, q:after { content: ""; } 35 | blockquote, q { quotes: "" ""; } 36 | 37 | /* Remove annoying border on linked images. */ 38 | a img { border: none; } 39 | -------------------------------------------------------------------------------- /css/blueprint/ie.min.css: -------------------------------------------------------------------------------- 1 | body{text-align:center;}.container{text-align:left;}* html .column,* html div.span-1,* html div.span-2,* html div.span-3,* html div.span-4,* html div.span-5,* html div.span-6,* html div.span-7,* html div.span-8,* html div.span-9,* html div.span-10,* html div.span-11,* html div.span-12,* html div.span-13,* html div.span-14,* html div.span-15,* html div.span-16,* html div.span-17,* html div.span-18,* html div.span-19,* html div.span-20,* html div.span-21,* html div.span-22,* html div.span-23,* html div.span-24{display:inline;overflow-x:hidden;}* html legend{margin:0 -8px 16px 0;padding:0;}sup{vertical-align:text-top;}sub{vertical-align:text-bottom;}html>body p code{*white-space:normal;}hr{margin:-8px auto 11px;}img{-ms-interpolation-mode:bicubic;}.clearfix,.container{display:inline-block;}* html .clearfix,* html .container{height:1%;}fieldset{padding-top:0;}textarea{overflow:auto;}input.text,input.title,textarea{background-color:#fff;border:1px solid #bbb;}input.text:focus,input.title:focus{border-color:#666;}input.text,input.title,textarea,select{margin:.5em 0;}input.checkbox,input.radio{position:relative;top:.25em;}form.inline div,form.inline p{vertical-align:middle;}form.inline label{position:relative;top:-0.25em;}form.inline input.checkbox,form.inline input.radio,form.inline input.button,form.inline button{margin:.5em 0;}button,input.button{position:relative;top:.25em;} -------------------------------------------------------------------------------- /css/blueprint/print.css: -------------------------------------------------------------------------------- 1 | /* ----------------------------------------------------------------------- 2 | 3 | 4 | Blueprint CSS Framework 0.9 5 | http://blueprintcss.org 6 | 7 | * Copyright (c) 2007-Present. See LICENSE for more info. 8 | * See README for instructions on how to use Blueprint. 9 | * For credits and origins, see AUTHORS. 10 | * This is a compressed file. See the sources in the 'src' directory. 11 | 12 | ----------------------------------------------------------------------- */ 13 | 14 | /* print.css */ 15 | body {line-height:1.5;font-family:"Helvetica Neue", Arial, Helvetica, sans-serif;color:#000;background:none;font-size:10pt;} 16 | .container {background:none;} 17 | hr {background:#ccc;color:#ccc;width:100%;height:2px;margin:2em 0;padding:0;border:none;} 18 | hr.space {background:#fff;color:#fff;visibility:hidden;} 19 | h1, h2, h3, h4, h5, h6 {font-family:"Helvetica Neue", Arial, "Lucida Grande", sans-serif;} 20 | code {font:.9em "Courier New", Monaco, Courier, monospace;} 21 | a img {border:none;} 22 | p img.top {margin-top:0;} 23 | blockquote {margin:1.5em;padding:1em;font-style:italic;font-size:.9em;} 24 | .small {font-size:.9em;} 25 | .large {font-size:1.1em;} 26 | .quiet {color:#999;} 27 | .hide {display:none;} 28 | a:link, a:visited {background:transparent;font-weight:700;text-decoration:underline;} 29 | a:link:after, a:visited:after {content:" (" attr(href) ")";font-size:90%;} -------------------------------------------------------------------------------- /css/blueprint/plugins/link-icons/screen.css: -------------------------------------------------------------------------------- 1 | /* -------------------------------------------------------------- 2 | 3 | link-icons.css 4 | * Icons for links based on protocol or file type. 5 | 6 | See the Readme file in this folder for additional instructions. 7 | 8 | -------------------------------------------------------------- */ 9 | 10 | /* Use this class if a link gets an icon when it shouldn't. */ 11 | body a.noicon { 12 | background:transparent none !important; 13 | padding:0 !important; 14 | margin:0 !important; 15 | } 16 | 17 | /* Make sure the icons are not cut */ 18 | a[href^="http:"], a[href^="mailto:"], a[href^="http:"]:visited, 19 | a[href$=".pdf"], a[href$=".doc"], a[href$=".xls"], a[href$=".rss"], 20 | a[href$=".rdf"], a[href^="aim:"] { 21 | padding:2px 22px 2px 0; 22 | margin:-2px 0; 23 | background-repeat: no-repeat; 24 | background-position: right center; 25 | } 26 | 27 | /* External links */ 28 | a[href^="http:"] { background-image: url(icons/external.png); } 29 | a[href^="mailto:"] { background-image: url(icons/email.png); } 30 | a[href^="http:"]:visited { background-image: url(icons/visited.png); } 31 | 32 | /* Files */ 33 | a[href$=".pdf"] { background-image: url(icons/pdf.png); } 34 | a[href$=".doc"] { background-image: url(icons/doc.png); } 35 | a[href$=".xls"] { background-image: url(icons/xls.png); } 36 | 37 | /* Misc */ 38 | a[href$=".rss"], 39 | a[href$=".rdf"] { background-image: url(icons/feed.png); } 40 | a[href^="aim:"] { background-image: url(icons/im.png); } -------------------------------------------------------------------------------- /css/blueprint/ie.css: -------------------------------------------------------------------------------- 1 | /* ----------------------------------------------------------------------- 2 | 3 | 4 | Blueprint CSS Framework 0.9 5 | http://blueprintcss.org 6 | 7 | * Copyright (c) 2007-Present. See LICENSE for more info. 8 | * See README for instructions on how to use Blueprint. 9 | * For credits and origins, see AUTHORS. 10 | * This is a compressed file. See the sources in the 'src' directory. 11 | 12 | ----------------------------------------------------------------------- */ 13 | 14 | /* ie.css */ 15 | body {text-align:center;} 16 | .container {text-align:left;} 17 | * html .column, * html div.span-1, * html div.span-2, * html div.span-3, * html div.span-4, * html div.span-5, * html div.span-6, * html div.span-7, * html div.span-8, * html div.span-9, * html div.span-10, * html div.span-11, * html div.span-12, * html div.span-13, * html div.span-14, * html div.span-15, * html div.span-16, * html div.span-17, * html div.span-18, * html div.span-19, * html div.span-20, * html div.span-21, * html div.span-22, * html div.span-23, * html div.span-24 {display:inline;overflow-x:hidden;} 18 | * html legend {margin:0px -8px 16px 0;padding:0;} 19 | sup {vertical-align:text-top;} 20 | sub {vertical-align:text-bottom;} 21 | html>body p code {*white-space:normal;} 22 | hr {margin:-8px auto 11px;} 23 | img {-ms-interpolation-mode:bicubic;} 24 | .clearfix, .container {display:inline-block;} 25 | * html .clearfix, * html .container {height:1%;} 26 | fieldset {padding-top:0;} 27 | textarea {overflow:auto;} 28 | input.text, input.title, textarea {background-color:#fff;border:1px solid #bbb;} 29 | input.text:focus, input.title:focus {border-color:#666;} 30 | input.text, input.title, textarea, select {margin:0.5em 0;} 31 | input.checkbox, input.radio {position:relative;top:.25em;} 32 | form.inline div, form.inline p {vertical-align:middle;} 33 | form.inline label {position:relative;top:-0.25em;} 34 | form.inline input.checkbox, form.inline input.radio, form.inline input.button, form.inline button {margin:0.5em 0;} 35 | button, input.button {position:relative;top:0.25em;} -------------------------------------------------------------------------------- /css/blueprint/src/forms.css: -------------------------------------------------------------------------------- 1 | /* -------------------------------------------------------------- 2 | 3 | forms.css 4 | * Sets up some default styling for forms 5 | * Gives you classes to enhance your forms 6 | 7 | Usage: 8 | * For text fields, use class .title or .text 9 | * For inline forms, use .inline (even when using columns) 10 | 11 | -------------------------------------------------------------- */ 12 | 13 | label { font-weight: bold; } 14 | fieldset { padding:1.4em; margin: 0 0 1.5em 0; border: 1px solid #ccc; } 15 | legend { font-weight: bold; font-size:1.2em; } 16 | 17 | 18 | /* Form fields 19 | -------------------------------------------------------------- */ 20 | 21 | input[type=text], input[type=password], 22 | input.text, input.title, 23 | textarea, select { 24 | background-color:#fff; 25 | border:1px solid #bbb; 26 | } 27 | input[type=text]:focus, input[type=password]:focus, 28 | input.text:focus, input.title:focus, 29 | textarea:focus, select:focus { 30 | border-color:#666; 31 | } 32 | 33 | input[type=text], input[type=password], 34 | input.text, input.title, 35 | textarea, select { 36 | margin:0.5em 0; 37 | } 38 | 39 | input.text, 40 | input.title { width: 300px; padding:5px; } 41 | input.title { font-size:1.5em; } 42 | textarea { width: 390px; height: 250px; padding:5px; } 43 | 44 | input[type=checkbox], input[type=radio], 45 | input.checkbox, input.radio { 46 | position:relative; top:.25em; 47 | } 48 | 49 | form.inline { line-height:3; } 50 | form.inline p { margin-bottom:0; } 51 | 52 | 53 | /* Success, notice and error boxes 54 | -------------------------------------------------------------- */ 55 | 56 | .error, 57 | .notice, 58 | .success { padding: .8em; margin-bottom: 1em; border: 2px solid #ddd; } 59 | 60 | .error { background: #FBE3E4; color: #8a1f11; border-color: #FBC2C4; } 61 | .notice { background: #FFF6BF; color: #514721; border-color: #FFD324; } 62 | .success { background: #E6EFC2; color: #264409; border-color: #C6D880; } 63 | .error a { color: #8a1f11; } 64 | .notice a { color: #514721; } 65 | .success a { color: #264409; } 66 | -------------------------------------------------------------------------------- /css/blueprint/src/print.css: -------------------------------------------------------------------------------- 1 | /* -------------------------------------------------------------- 2 | 3 | print.css 4 | * Gives you some sensible styles for printing pages. 5 | * See Readme file in this directory for further instructions. 6 | 7 | Some additions you'll want to make, customized to your markup: 8 | #header, #footer, #navigation { display:none; } 9 | 10 | -------------------------------------------------------------- */ 11 | 12 | body { 13 | line-height: 1.5; 14 | font-family: "Helvetica Neue", Arial, Helvetica, sans-serif; 15 | color:#000; 16 | background: none; 17 | font-size: 10pt; 18 | } 19 | 20 | 21 | /* Layout 22 | -------------------------------------------------------------- */ 23 | 24 | .container { 25 | background: none; 26 | } 27 | 28 | hr { 29 | background:#ccc; 30 | color:#ccc; 31 | width:100%; 32 | height:2px; 33 | margin:2em 0; 34 | padding:0; 35 | border:none; 36 | } 37 | hr.space { 38 | background: #fff; 39 | color: #fff; 40 | visibility: hidden; 41 | } 42 | 43 | 44 | /* Text 45 | -------------------------------------------------------------- */ 46 | 47 | h1,h2,h3,h4,h5,h6 { font-family: "Helvetica Neue", Arial, "Lucida Grande", sans-serif; } 48 | code { font:.9em "Courier New", Monaco, Courier, monospace; } 49 | 50 | a img { border:none; } 51 | p img.top { margin-top: 0; } 52 | 53 | blockquote { 54 | margin:1.5em; 55 | padding:1em; 56 | font-style:italic; 57 | font-size:.9em; 58 | } 59 | 60 | .small { font-size: .9em; } 61 | .large { font-size: 1.1em; } 62 | .quiet { color: #999; } 63 | .hide { display:none; } 64 | 65 | 66 | /* Links 67 | -------------------------------------------------------------- */ 68 | 69 | a:link, a:visited { 70 | background: transparent; 71 | font-weight:700; 72 | text-decoration: underline; 73 | } 74 | 75 | a:link:after, a:visited:after { 76 | content: " (" attr(href) ")"; 77 | font-size: 90%; 78 | } 79 | 80 | /* If you're having trouble printing relative links, uncomment and customize this: 81 | (note: This is valid CSS3, but it still won't go through the W3C CSS Validator) */ 82 | 83 | /* a[href^="/"]:after { 84 | content: " (http://www.yourdomain.com" attr(href) ") "; 85 | } */ 86 | -------------------------------------------------------------------------------- /css/blueprint/plugins/buttons/screen.css: -------------------------------------------------------------------------------- 1 | /* -------------------------------------------------------------- 2 | 3 | buttons.css 4 | * Gives you some great CSS-only buttons. 5 | 6 | Created by Kevin Hale [particletree.com] 7 | * particletree.com/features/rediscovering-the-button-element 8 | 9 | See Readme.txt in this folder for instructions. 10 | 11 | -------------------------------------------------------------- */ 12 | 13 | a.button, button { 14 | display:block; 15 | float:left; 16 | margin: 0.7em 0.5em 0.7em 0; 17 | padding:5px 10px 5px 7px; /* Links */ 18 | 19 | border:1px solid #dedede; 20 | border-top:1px solid #eee; 21 | border-left:1px solid #eee; 22 | 23 | background-color:#f5f5f5; 24 | font-family:"Lucida Grande", Tahoma, Arial, Verdana, sans-serif; 25 | font-size:100%; 26 | line-height:130%; 27 | text-decoration:none; 28 | font-weight:bold; 29 | color:#565656; 30 | cursor:pointer; 31 | } 32 | button { 33 | width:auto; 34 | overflow:visible; 35 | padding:4px 10px 3px 7px; /* IE6 */ 36 | } 37 | button[type] { 38 | padding:4px 10px 4px 7px; /* Firefox */ 39 | line-height:17px; /* Safari */ 40 | } 41 | *:first-child+html button[type] { 42 | padding:4px 10px 3px 7px; /* IE7 */ 43 | } 44 | button img, a.button img{ 45 | margin:0 3px -3px 0 !important; 46 | padding:0; 47 | border:none; 48 | width:16px; 49 | height:16px; 50 | float:none; 51 | } 52 | 53 | 54 | /* Button colors 55 | -------------------------------------------------------------- */ 56 | 57 | /* Standard */ 58 | button:hover, a.button:hover{ 59 | background-color:#dff4ff; 60 | border:1px solid #c2e1ef; 61 | color:#336699; 62 | } 63 | a.button:active{ 64 | background-color:#6299c5; 65 | border:1px solid #6299c5; 66 | color:#fff; 67 | } 68 | 69 | /* Positive */ 70 | body .positive { 71 | color:#529214; 72 | } 73 | a.positive:hover, button.positive:hover { 74 | background-color:#E6EFC2; 75 | border:1px solid #C6D880; 76 | color:#529214; 77 | } 78 | a.positive:active { 79 | background-color:#529214; 80 | border:1px solid #529214; 81 | color:#fff; 82 | } 83 | 84 | /* Negative */ 85 | body .negative { 86 | color:#d12f19; 87 | } 88 | a.negative:hover, button.negative:hover { 89 | background-color:#fbe3e4; 90 | border:1px solid #fbc2c4; 91 | color:#d12f19; 92 | } 93 | a.negative:active { 94 | background-color:#d12f19; 95 | border:1px solid #d12f19; 96 | color:#fff; 97 | } 98 | -------------------------------------------------------------------------------- /css/blueprint/plugins/fancy-type/screen.css: -------------------------------------------------------------------------------- 1 | /* -------------------------------------------------------------- 2 | 3 | fancy-type.css 4 | * Lots of pretty advanced classes for manipulating text. 5 | 6 | See the Readme file in this folder for additional instructions. 7 | 8 | -------------------------------------------------------------- */ 9 | 10 | /* Indentation instead of line shifts for sibling paragraphs. */ 11 | /* p + p { text-indent:2em; margin-top:-1.5em; } 12 | form p + p { text-indent: 0; } *//* Don't want this in forms. */ 13 | 14 | 15 | /* For great looking type, use this code instead of asdf: 16 | asdf 17 | Best used on prepositions and ampersands. */ 18 | 19 | .alt { 20 | color: #666; 21 | font-family: "Warnock Pro", "Goudy Old Style","Palatino","Book Antiqua", Georgia, serif; 22 | font-style: italic; 23 | font-weight: normal; 24 | } 25 | 26 | 27 | /* For great looking quote marks in titles, replace "asdf" with: 28 | asdf” 29 | (That is, when the title starts with a quote mark). 30 | (You may have to change this value depending on your font size). */ 31 | 32 | .dquo { margin-left: -.5em; } 33 | 34 | 35 | /* Reduced size type with incremental leading 36 | (http://www.markboulton.co.uk/journal/comments/incremental_leading/) 37 | 38 | This could be used for side notes. For smaller type, you don't necessarily want to 39 | follow the 1.5x vertical rhythm -- the line-height is too much. 40 | 41 | Using this class, it reduces your font size and line-height so that for 42 | every four lines of normal sized type, there is five lines of the sidenote. eg: 43 | 44 | New type size in em's: 45 | 10px (wanted side note size) / 12px (existing base size) = 0.8333 (new type size in ems) 46 | 47 | New line-height value: 48 | 12px x 1.5 = 18px (old line-height) 49 | 18px x 4 = 72px 50 | 72px / 5 = 14.4px (new line height) 51 | 14.4px / 10px = 1.44 (new line height in em's) */ 52 | 53 | p.incr, .incr p { 54 | font-size: 10px; 55 | line-height: 1.44em; 56 | margin-bottom: 1.5em; 57 | } 58 | 59 | 60 | /* Surround uppercase words and abbreviations with this class. 61 | Based on work by Jørgen Arnor Gårdsø Lom [http://twistedintellect.com/] */ 62 | 63 | .caps { 64 | font-variant: small-caps; 65 | letter-spacing: 1px; 66 | text-transform: lowercase; 67 | font-size:1.2em; 68 | line-height:1%; 69 | font-weight:bold; 70 | padding:0 2px; 71 | } 72 | -------------------------------------------------------------------------------- /css/blueprint/src/ie.css: -------------------------------------------------------------------------------- 1 | /* -------------------------------------------------------------- 2 | 3 | ie.css 4 | 5 | Contains every hack for Internet Explorer, 6 | so that our core files stay sweet and nimble. 7 | 8 | -------------------------------------------------------------- */ 9 | 10 | /* Make sure the layout is centered in IE5 */ 11 | body { text-align: center; } 12 | .container { text-align: left; } 13 | 14 | /* Fixes IE margin bugs */ 15 | * html .column, * html div.span-1, * html div.span-2, 16 | * html div.span-3, * html div.span-4, * html div.span-5, 17 | * html div.span-6, * html div.span-7, * html div.span-8, 18 | * html div.span-9, * html div.span-10, * html div.span-11, 19 | * html div.span-12, * html div.span-13, * html div.span-14, 20 | * html div.span-15, * html div.span-16, * html div.span-17, 21 | * html div.span-18, * html div.span-19, * html div.span-20, 22 | * html div.span-21, * html div.span-22, * html div.span-23, 23 | * html div.span-24 { display:inline; overflow-x: hidden; } 24 | 25 | 26 | /* Elements 27 | -------------------------------------------------------------- */ 28 | 29 | /* Fixes incorrect styling of legend in IE6. */ 30 | * html legend { margin:0px -8px 16px 0; padding:0; } 31 | 32 | /* Fixes wrong line-height on sup/sub in IE. */ 33 | sup { vertical-align:text-top; } 34 | sub { vertical-align:text-bottom; } 35 | 36 | /* Fixes IE7 missing wrapping of code elements. */ 37 | html>body p code { *white-space: normal; } 38 | 39 | /* IE 6&7 has problems with setting proper
margins. */ 40 | hr { margin:-8px auto 11px; } 41 | 42 | /* Explicitly set interpolation, allowing dynamically resized images to not look horrible */ 43 | img { -ms-interpolation-mode:bicubic; } 44 | 45 | /* Clearing 46 | -------------------------------------------------------------- */ 47 | 48 | /* Makes clearfix actually work in IE */ 49 | .clearfix, .container { display:inline-block; } 50 | * html .clearfix, 51 | * html .container { height:1%; } 52 | 53 | 54 | /* Forms 55 | -------------------------------------------------------------- */ 56 | 57 | /* Fixes padding on fieldset */ 58 | fieldset { padding-top:0; } 59 | 60 | /* Makes classic textareas in IE 6 resemble other browsers */ 61 | textarea { overflow:auto; } 62 | 63 | /* Fixes rule that IE 6 ignores */ 64 | input.text, input.title, textarea { background-color:#fff; border:1px solid #bbb; } 65 | input.text:focus, input.title:focus { border-color:#666; } 66 | input.text, input.title, textarea, select { margin:0.5em 0; } 67 | input.checkbox, input.radio { position:relative; top:.25em; } 68 | 69 | /* Fixes alignment of inline form elements */ 70 | form.inline div, form.inline p { vertical-align:middle; } 71 | form.inline label { position:relative;top:-0.25em; } 72 | form.inline input.checkbox, form.inline input.radio, 73 | form.inline input.button, form.inline button { 74 | margin:0.5em 0; 75 | } 76 | button, input.button { position:relative;top:0.25em; } -------------------------------------------------------------------------------- /css/blueprint/src/typography.css: -------------------------------------------------------------------------------- 1 | /* -------------------------------------------------------------- 2 | 3 | typography.css 4 | * Sets up some sensible default typography. 5 | 6 | -------------------------------------------------------------- */ 7 | 8 | /* Default font settings. 9 | The font-size percentage is of 16px. (0.75 * 16px = 12px) */ 10 | html { font-size:100.01%; } 11 | body { 12 | font-size: 75%; 13 | color: #222; 14 | background: #fff; 15 | font-family: "Helvetica Neue", Arial, Helvetica, sans-serif; 16 | } 17 | 18 | 19 | /* Headings 20 | -------------------------------------------------------------- */ 21 | 22 | h1,h2,h3,h4,h5,h6 { font-weight: normal; color: #111; } 23 | 24 | h1 { font-size: 3em; line-height: 1; margin-bottom: 0.5em; } 25 | h2 { font-size: 2em; margin-bottom: 0.75em; } 26 | h3 { font-size: 1.5em; line-height: 1; margin-bottom: 1em; } 27 | h4 { font-size: 1.2em; line-height: 1.25; margin-bottom: 1.25em; } 28 | h5 { font-size: 1em; font-weight: bold; margin-bottom: 1.5em; } 29 | h6 { font-size: 1em; font-weight: bold; } 30 | 31 | h1 img, h2 img, h3 img, 32 | h4 img, h5 img, h6 img { 33 | margin: 0; 34 | } 35 | 36 | 37 | /* Text elements 38 | -------------------------------------------------------------- */ 39 | 40 | p { margin: 0 0 1.5em; } 41 | p img.left { float: left; margin: 1.5em 1.5em 1.5em 0; padding: 0; } 42 | p img.right { float: right; margin: 1.5em 0 1.5em 1.5em; } 43 | 44 | a:focus, 45 | a:hover { color: #000; } 46 | a { color: #009; text-decoration: underline; } 47 | 48 | blockquote { margin: 1.5em; color: #666; font-style: italic; } 49 | strong { font-weight: bold; } 50 | em,dfn { font-style: italic; } 51 | dfn { font-weight: bold; } 52 | sup, sub { line-height: 0; } 53 | 54 | abbr, 55 | acronym { border-bottom: 1px dotted #666; } 56 | address { margin: 0 0 1.5em; font-style: italic; } 57 | del { color:#666; } 58 | 59 | pre { margin: 1.5em 0; white-space: pre; } 60 | pre,code,tt { font: 1em 'Monaco', 'lucida console', monospace; line-height: 1.5; } 61 | 62 | 63 | /* Lists 64 | -------------------------------------------------------------- */ 65 | 66 | li ul, 67 | li ol { margin: 0; } 68 | ul, ol { margin: 0 1.5em 1.5em 0; padding-left: 3.333em; } 69 | 70 | ul { list-style-type: disc; } 71 | ol { list-style-type: decimal; } 72 | 73 | dl { margin: 0 0 1.5em 0; } 74 | dl dt { font-weight: bold; } 75 | dd { margin-left: 1.5em;} 76 | 77 | 78 | /* Tables 79 | -------------------------------------------------------------- */ 80 | 81 | table { margin-bottom: 1.4em; width:100%; } 82 | th { font-weight: bold; } 83 | thead th { background: #c3d9ff; } 84 | th,td,caption { padding: 4px 10px 4px 5px; } 85 | tr.even td { background: #e5ecf9; } 86 | tfoot { font-style: italic; } 87 | caption { background: #eee; } 88 | 89 | 90 | /* Misc classes 91 | -------------------------------------------------------------- */ 92 | 93 | .small { font-size: .8em; margin-bottom: 1.875em; line-height: 1.875em; } 94 | .large { font-size: 1.2em; line-height: 2.5em; margin-bottom: 1.25em; } 95 | .hide { display: none; } 96 | 97 | .quiet { color: #666; } 98 | .loud { color: #000; } 99 | .highlight { background:#ff0; } 100 | .added { background:#060; color: #fff; } 101 | .removed { background:#900; color: #fff; } 102 | 103 | .first { margin-left:0; padding-left:0; } 104 | .last { margin-right:0; padding-right:0; } 105 | .top { margin-top:0; padding-top:0; } 106 | .bottom { margin-bottom:0; padding-bottom:0; } 107 | -------------------------------------------------------------------------------- /css/ag.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /* Header links should display like normal header text */ 4 | h1 a, h1 a:visited, h1 a:hover, h1 a:link, h1 a:focus, h2 a, h2 a:visited, h2 a:hover, h2 a:link, h2 a:focus, h3 a, h3 a:visited, h3 a:hover, h3 a:link, h3 a:focus, h4 a, h4 a:visited, h4 a:hover, h4 a:link, h4 a:focus, h5 a, h5 a:visited, h5 a:hover, h5 a:link, h5 a:focus, h6 a, h6 a:visited, h6 a:hover, h6 a:link, h6 a:focus { 5 | text-decoration: inherit; 6 | color: inherit; 7 | } 8 | 9 | /* Standard link styles */ 10 | a, a:link, a:visited { 11 | color: #666666; 12 | text-decoration: none; 13 | } 14 | 15 | a:hover, a:focus { 16 | color: #191919; 17 | text-decoration: underline; 18 | } 19 | 20 | h1, h2, h3, h4, h5, h6 { 21 | letter-spacing: -0.08em; 22 | } 23 | 24 | pre { 25 | display: block; 26 | padding: 0; 27 | word-wrap: break-word; 28 | } 29 | 30 | /* Mainly used for inline code, but no reason to make it exclusive */ 31 | code, .inline { 32 | display: inline; 33 | margin: 0; 34 | padding: 0; 35 | } 36 | 37 | .smallalts .alt { 38 | font-size: 0.7em; 39 | } 40 | 41 | .tight { 42 | letter-spacing: -0.08em; 43 | } 44 | 45 | #title h1, #title h2, #title h3 { 46 | margin-bottom: 0; 47 | } 48 | 49 | #title h1 { 50 | font-size: 42pt; 51 | letter-spacing: -.08em; 52 | color: #424242; 53 | } 54 | 55 | #title h1 a:hover { 56 | color: #191919; 57 | } 58 | 59 | #title h2 { 60 | text-align: right; 61 | line-height: 77px; 62 | font-size: 15pt; 63 | color: #7F7F7F; 64 | } 65 | 66 | #title h2 a { 67 | font-size: 21pt; 68 | margin-left: 0.2em; 69 | letter-spacing: -1px; 70 | } 71 | 72 | #title h2 a:hover { 73 | color: #191919; 74 | } 75 | 76 | #title h3 { 77 | font-size: 21pt; 78 | line-height: 21pt; 79 | } 80 | 81 | nav { 82 | text-align: center; 83 | font-size: 12pt; 84 | } 85 | 86 | nav div { 87 | position: relative; 88 | } 89 | 90 | nav a { 91 | color: #424242; 92 | text-decoration: none; 93 | } 94 | 95 | nav a:hover { 96 | color: #191919; 97 | } 98 | 99 | nav span { 100 | color: #B3B3B3; 101 | font-size: 12pt; 102 | position: absolute; 103 | display: block; 104 | width: 100%; 105 | } 106 | 107 | #archives hr { 108 | margin: 0; 109 | } 110 | 111 | .archivelinks { 112 | font-size: 12pt; 113 | padding-left: 1em; 114 | } 115 | 116 | .archivelinks a { 117 | margin-right: 0.5em; 118 | } 119 | 120 | #archives { 121 | height: 0; 122 | overflow: hidden; 123 | -webkit-transition: height 300ms linear; 124 | -moz-transition: height 300ms linear; 125 | -ms-transition: height 300ms linear; 126 | -o-transition: height 300ms linear; 127 | } 128 | 129 | #archives.expanded { 130 | height: 25px; 131 | } 132 | 133 | .pager { 134 | font-size: 14pt; 135 | } 136 | 137 | article header { 138 | position: relative; 139 | } 140 | 141 | /* I use span.date elements for text content in place of an actual time/date */ 142 | article header time, article header .date { 143 | color: #777777; 144 | } 145 | 146 | article header h1 { 147 | font-size: 21pt; 148 | letter-spacing: -1px; 149 | margin-top: 0.25em; 150 | color: #333333; 151 | } 152 | 153 | article header h1 a { 154 | text-decoration: none; 155 | } 156 | 157 | article header h1 a:hover { 158 | color: #000000; 159 | text-decoration: underline; 160 | } 161 | 162 | .entry .note { 163 | color: #333333; 164 | font-size: 8pt; 165 | margin-left: 2.5em; 166 | margin-top: -1.5em; 167 | padding: 0.2em .8em; 168 | } 169 | 170 | .entry .todo { 171 | color: red; 172 | } 173 | 174 | .contact { 175 | font-size: 10pt; 176 | } 177 | 178 | #sidebar h3 { 179 | margin-bottom: 0.5em; 180 | color: #333333; 181 | letter-spacing: -1px; 182 | font-size: 16pt; 183 | } 184 | 185 | #sidebar ul { 186 | list-style: none; 187 | margin: 8px 0 4px; 188 | padding-left: 0px; 189 | } 190 | 191 | #sidebar li { 192 | background: url(/images/li.gif) no-repeat 0 3px; 193 | color: #7F7F7F; 194 | line-height: 1.2em; 195 | padding: 4px 0 4px 16px; 196 | } 197 | 198 | #sidebar a, #sidebar a:link, #sidebar a:visited { 199 | color: #424242; 200 | } 201 | 202 | #sidebar a:hover, #sidebar a:focus { 203 | color: #191919; 204 | } 205 | 206 | #sidebar p { 207 | margin-bottom: 1em; 208 | } 209 | 210 | .tags { 211 | font-size: 14pt; 212 | } 213 | 214 | .listing { 215 | font-size: 19pt; 216 | } 217 | 218 | #content, #sidebar { 219 | padding-bottom: 32767px; 220 | margin-bottom: -32767px; 221 | } 222 | 223 | #colcontainer { 224 | overflow: hidden; 225 | margin-bottom: 1.45em; 226 | } 227 | 228 | #attribution { 229 | font-size: 0.9em; 230 | margin-bottom: 20px; 231 | } 232 | 233 | /* DISQUS comments CSS */ 234 | #dsq-content .dsq-dc-logo, #dsq-content .dsq-options, #dsq-content .dsq-item-trackback { 235 | display: none; 236 | } 237 | 238 | #dsq-content h3 { 239 | text-transform: lowercase; 240 | margin: 0.5em 0; 241 | color: #333333; 242 | letter-spacing: -1px; 243 | font-size: 16pt; 244 | } 245 | 246 | #dsq-content .dsq-comment-header { 247 | background: none !important; 248 | } 249 | 250 | /* tweaks to blueprint -- TODO: rebuild blueprint with these rolled in */ 251 | div.colborder { 252 | border-color: #CCCCCC; 253 | } 254 | 255 | hr { 256 | height: 1px; 257 | } 258 | 259 | header, footer, nav, article { 260 | float: left; 261 | margin-right: 10px; 262 | } 263 | -------------------------------------------------------------------------------- /css/blueprint/plugins/rtl/screen.css: -------------------------------------------------------------------------------- 1 | /* -------------------------------------------------------------- 2 | 3 | rtl.css 4 | * Mirrors Blueprint for left-to-right languages 5 | 6 | By Ran Yaniv Hartstein [ranh.co.il] 7 | 8 | -------------------------------------------------------------- */ 9 | 10 | body .container { direction: rtl; } 11 | body .column, body div.span-1, body div.span-2, body div.span-3, body div.span-4, body div.span-5, body div.span-6, body div.span-7, body div.span-8, body div.span-9, body div.span-10, body div.span-11, body div.span-12, body div.span-13, body div.span-14, body div.span-15, body div.span-16, body div.span-17, body div.span-18, body div.span-19, body div.span-20, body div.span-21, body div.span-22, body div.span-23, body div.span-24 { 12 | float: right; 13 | margin-right: 0; 14 | margin-left: 10px; 15 | text-align:right; 16 | } 17 | 18 | body div.last { margin-left: 0; } 19 | body table .last { padding-left: 0; } 20 | 21 | body .append-1 { padding-right: 0; padding-left: 40px; } 22 | body .append-2 { padding-right: 0; padding-left: 80px; } 23 | body .append-3 { padding-right: 0; padding-left: 120px; } 24 | body .append-4 { padding-right: 0; padding-left: 160px; } 25 | body .append-5 { padding-right: 0; padding-left: 200px; } 26 | body .append-6 { padding-right: 0; padding-left: 240px; } 27 | body .append-7 { padding-right: 0; padding-left: 280px; } 28 | body .append-8 { padding-right: 0; padding-left: 320px; } 29 | body .append-9 { padding-right: 0; padding-left: 360px; } 30 | body .append-10 { padding-right: 0; padding-left: 400px; } 31 | body .append-11 { padding-right: 0; padding-left: 440px; } 32 | body .append-12 { padding-right: 0; padding-left: 480px; } 33 | body .append-13 { padding-right: 0; padding-left: 520px; } 34 | body .append-14 { padding-right: 0; padding-left: 560px; } 35 | body .append-15 { padding-right: 0; padding-left: 600px; } 36 | body .append-16 { padding-right: 0; padding-left: 640px; } 37 | body .append-17 { padding-right: 0; padding-left: 680px; } 38 | body .append-18 { padding-right: 0; padding-left: 720px; } 39 | body .append-19 { padding-right: 0; padding-left: 760px; } 40 | body .append-20 { padding-right: 0; padding-left: 800px; } 41 | body .append-21 { padding-right: 0; padding-left: 840px; } 42 | body .append-22 { padding-right: 0; padding-left: 880px; } 43 | body .append-23 { padding-right: 0; padding-left: 920px; } 44 | 45 | body .prepend-1 { padding-left: 0; padding-right: 40px; } 46 | body .prepend-2 { padding-left: 0; padding-right: 80px; } 47 | body .prepend-3 { padding-left: 0; padding-right: 120px; } 48 | body .prepend-4 { padding-left: 0; padding-right: 160px; } 49 | body .prepend-5 { padding-left: 0; padding-right: 200px; } 50 | body .prepend-6 { padding-left: 0; padding-right: 240px; } 51 | body .prepend-7 { padding-left: 0; padding-right: 280px; } 52 | body .prepend-8 { padding-left: 0; padding-right: 320px; } 53 | body .prepend-9 { padding-left: 0; padding-right: 360px; } 54 | body .prepend-10 { padding-left: 0; padding-right: 400px; } 55 | body .prepend-11 { padding-left: 0; padding-right: 440px; } 56 | body .prepend-12 { padding-left: 0; padding-right: 480px; } 57 | body .prepend-13 { padding-left: 0; padding-right: 520px; } 58 | body .prepend-14 { padding-left: 0; padding-right: 560px; } 59 | body .prepend-15 { padding-left: 0; padding-right: 600px; } 60 | body .prepend-16 { padding-left: 0; padding-right: 640px; } 61 | body .prepend-17 { padding-left: 0; padding-right: 680px; } 62 | body .prepend-18 { padding-left: 0; padding-right: 720px; } 63 | body .prepend-19 { padding-left: 0; padding-right: 760px; } 64 | body .prepend-20 { padding-left: 0; padding-right: 800px; } 65 | body .prepend-21 { padding-left: 0; padding-right: 840px; } 66 | body .prepend-22 { padding-left: 0; padding-right: 880px; } 67 | body .prepend-23 { padding-left: 0; padding-right: 920px; } 68 | 69 | body .border { 70 | padding-right: 0; 71 | padding-left: 4px; 72 | margin-right: 0; 73 | margin-left: 5px; 74 | border-right: none; 75 | border-left: 1px solid #eee; 76 | } 77 | 78 | body .colborder { 79 | padding-right: 0; 80 | padding-left: 24px; 81 | margin-right: 0; 82 | margin-left: 25px; 83 | border-right: none; 84 | border-left: 1px solid #eee; 85 | } 86 | 87 | body .pull-1 { margin-left: 0; margin-right: -40px; } 88 | body .pull-2 { margin-left: 0; margin-right: -80px; } 89 | body .pull-3 { margin-left: 0; margin-right: -120px; } 90 | body .pull-4 { margin-left: 0; margin-right: -160px; } 91 | 92 | body .push-0 { margin: 0 18px 0 0; } 93 | body .push-1 { margin: 0 18px 0 -40px; } 94 | body .push-2 { margin: 0 18px 0 -80px; } 95 | body .push-3 { margin: 0 18px 0 -120px; } 96 | body .push-4 { margin: 0 18px 0 -160px; } 97 | body .push-0, body .push-1, body .push-2, 98 | body .push-3, body .push-4 { float: left; } 99 | 100 | 101 | /* Typography with RTL support */ 102 | body h1,body h2,body h3, 103 | body h4,body h5,body h6 { font-family: Arial, sans-serif; } 104 | html body { font-family: Arial, sans-serif; } 105 | body pre,body code,body tt { font-family: monospace; } 106 | 107 | /* Mirror floats and margins on typographic elements */ 108 | body p img { float: right; margin: 1.5em 0 1.5em 1.5em; } 109 | body dd, body ul, body ol { margin-left: 0; margin-right: 1.5em;} 110 | body td, body th { text-align:right; } -------------------------------------------------------------------------------- /css/blueprint/blueprint.min.css: -------------------------------------------------------------------------------- 1 | html,body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,code,del,dfn,em,img,q,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;}body{line-height:1.5;}table{border-collapse:separate;border-spacing:0;}caption,th,td{text-align:left;font-weight:normal;}table,td,th{vertical-align:middle;}blockquote:before,blockquote:after,q:before,q:after{content:"";}blockquote,q{quotes:"" "";}a img{border:none;}html{font-size:100.01%;}body{font-size:75%;color:#222;background:#fff;font-family:"Helvetica Neue",Arial,Helvetica,sans-serif;}h1,h2,h3,h4,h5,h6{font-weight:normal;color:#111;}h1{font-size:3em;line-height:1;margin-bottom:.5em;}h2{font-size:2em;margin-bottom:.75em;}h3{font-size:1.5em;line-height:1;margin-bottom:1em;}h4{font-size:1.2em;line-height:1.25;margin-bottom:1.25em;}h5{font-size:1em;font-weight:bold;margin-bottom:1.5em;}h6{font-size:1em;font-weight:bold;}h1 img,h2 img,h3 img,h4 img,h5 img,h6 img{margin:0;}p{margin:0 0 1.5em;}p img.left{float:left;margin:1.5em 1.5em 1.5em 0;padding:0;}p img.right{float:right;margin:1.5em 0 1.5em 1.5em;}a:focus,a:hover{color:#000;}a{color:#009;text-decoration:underline;}blockquote{margin:1.5em;color:#666;font-style:italic;}strong{font-weight:bold;}em,dfn{font-style:italic;}dfn{font-weight:bold;}sup,sub{line-height:0;}abbr,acronym{border-bottom:1px dotted #666;}address{margin:0 0 1.5em;font-style:italic;}del{color:#666;}pre{margin:1.5em 0;white-space:pre;}pre,code,tt{font:1em 'Monaco','lucida console',monospace;line-height:1.5;}li ul,li ol{margin:0;}ul,ol{margin:0 1.5em 1.5em 0;padding-left:3.333em;}ul{list-style-type:disc;}ol{list-style-type:decimal;}dl{margin:0 0 1.5em 0;}dl dt{font-weight:bold;}dd{margin-left:1.5em;}table{margin-bottom:1.4em;width:100%;}th{font-weight:bold;}thead th{background:#c3d9ff;}th,td,caption{padding:4px 10px 4px 5px;}tr.even td{background:#e5ecf9;}tfoot{font-style:italic;}caption{background:#eee;}.small{font-size:.8em;margin-bottom:1.875em;line-height:1.875em;}.large{font-size:1.2em;line-height:2.5em;margin-bottom:1.25em;}.hide{display:none;}.quiet{color:#666;}.loud{color:#000;}.highlight{background:#ff0;}.added{background:#060;color:#fff;}.removed{background:#900;color:#fff;}.first{margin-left:0;padding-left:0;}.last{margin-right:0;padding-right:0;}.top{margin-top:0;padding-top:0;}.bottom{margin-bottom:0;padding-bottom:0;}label{font-weight:bold;}fieldset{padding:1.4em;margin:0 0 1.5em 0;border:1px solid #ccc;}legend{font-weight:bold;font-size:1.2em;}input[type=text],input[type=password],input.text,input.title,textarea,select{background-color:#fff;border:1px solid #bbb;}input[type=text]:focus,input[type=password]:focus,input.text:focus,input.title:focus,textarea:focus,select:focus{border-color:#666;}input[type=text],input[type=password],input.text,input.title,textarea,select{margin:.5em 0;}input.text,input.title{width:300px;padding:5px;}input.title{font-size:1.5em;}textarea{width:390px;height:250px;padding:5px;}input[type=checkbox],input[type=radio],input.checkbox,input.radio{position:relative;top:.25em;}form.inline{line-height:3;}form.inline p{margin-bottom:0;}.error,.notice,.success{padding:.8em;margin-bottom:1em;border:2px solid #ddd;}.error{background:#FBE3E4;color:#8a1f11;border-color:#FBC2C4;}.notice{background:#FFF6BF;color:#514721;border-color:#FFD324;}.success{background:#E6EFC2;color:#264409;border-color:#C6D880;}.error a{color:#8a1f11;}.notice a{color:#514721;}.success a{color:#264409;}.container{width:950px;margin:0 auto;}.showgrid{background:url(src/grid.png);}.column,div.span-1,div.span-2,div.span-3,div.span-4,div.span-5,div.span-6,div.span-7,div.span-8,div.span-9,div.span-10,div.span-11,div.span-12,div.span-13,div.span-14,div.span-15,div.span-16,div.span-17,div.span-18,div.span-19,div.span-20,div.span-21,div.span-22,div.span-23,div.span-24{float:left;margin-right:10px;}.last,div.last{margin-right:0;}.span-1{width:30px;}.span-2{width:70px;}.span-3{width:110px;}.span-4{width:150px;}.span-5{width:190px;}.span-6{width:230px;}.span-7{width:270px;}.span-8{width:310px;}.span-9{width:350px;}.span-10{width:390px;}.span-11{width:430px;}.span-12{width:470px;}.span-13{width:510px;}.span-14{width:550px;}.span-15{width:590px;}.span-16{width:630px;}.span-17{width:670px;}.span-18{width:710px;}.span-19{width:750px;}.span-20{width:790px;}.span-21{width:830px;}.span-22{width:870px;}.span-23{width:910px;}.span-24,div.span-24{width:950px;margin-right:0;}input.span-1,textarea.span-1,input.span-2,textarea.span-2,input.span-3,textarea.span-3,input.span-4,textarea.span-4,input.span-5,textarea.span-5,input.span-6,textarea.span-6,input.span-7,textarea.span-7,input.span-8,textarea.span-8,input.span-9,textarea.span-9,input.span-10,textarea.span-10,input.span-11,textarea.span-11,input.span-12,textarea.span-12,input.span-13,textarea.span-13,input.span-14,textarea.span-14,input.span-15,textarea.span-15,input.span-16,textarea.span-16,input.span-17,textarea.span-17,input.span-18,textarea.span-18,input.span-19,textarea.span-19,input.span-20,textarea.span-20,input.span-21,textarea.span-21,input.span-22,textarea.span-22,input.span-23,textarea.span-23,input.span-24,textarea.span-24{border-left-width:1px!important;border-right-width:1px!important;padding-left:5px!important;padding-right:5px!important;}input.span-1,textarea.span-1{width:18px!important;}input.span-2,textarea.span-2{width:58px!important;}input.span-3,textarea.span-3{width:98px!important;}input.span-4,textarea.span-4{width:138px!important;}input.span-5,textarea.span-5{width:178px!important;}input.span-6,textarea.span-6{width:218px!important;}input.span-7,textarea.span-7{width:258px!important;}input.span-8,textarea.span-8{width:298px!important;}input.span-9,textarea.span-9{width:338px!important;}input.span-10,textarea.span-10{width:378px!important;}input.span-11,textarea.span-11{width:418px!important;}input.span-12,textarea.span-12{width:458px!important;}input.span-13,textarea.span-13{width:498px!important;}input.span-14,textarea.span-14{width:538px!important;}input.span-15,textarea.span-15{width:578px!important;}input.span-16,textarea.span-16{width:618px!important;}input.span-17,textarea.span-17{width:658px!important;}input.span-18,textarea.span-18{width:698px!important;}input.span-19,textarea.span-19{width:738px!important;}input.span-20,textarea.span-20{width:778px!important;}input.span-21,textarea.span-21{width:818px!important;}input.span-22,textarea.span-22{width:858px!important;}input.span-23,textarea.span-23{width:898px!important;}input.span-24,textarea.span-24{width:938px!important;}.append-1{padding-right:40px;}.append-2{padding-right:80px;}.append-3{padding-right:120px;}.append-4{padding-right:160px;}.append-5{padding-right:200px;}.append-6{padding-right:240px;}.append-7{padding-right:280px;}.append-8{padding-right:320px;}.append-9{padding-right:360px;}.append-10{padding-right:400px;}.append-11{padding-right:440px;}.append-12{padding-right:480px;}.append-13{padding-right:520px;}.append-14{padding-right:560px;}.append-15{padding-right:600px;}.append-16{padding-right:640px;}.append-17{padding-right:680px;}.append-18{padding-right:720px;}.append-19{padding-right:760px;}.append-20{padding-right:800px;}.append-21{padding-right:840px;}.append-22{padding-right:880px;}.append-23{padding-right:920px;}.prepend-1{padding-left:40px;}.prepend-2{padding-left:80px;}.prepend-3{padding-left:120px;}.prepend-4{padding-left:160px;}.prepend-5{padding-left:200px;}.prepend-6{padding-left:240px;}.prepend-7{padding-left:280px;}.prepend-8{padding-left:320px;}.prepend-9{padding-left:360px;}.prepend-10{padding-left:400px;}.prepend-11{padding-left:440px;}.prepend-12{padding-left:480px;}.prepend-13{padding-left:520px;}.prepend-14{padding-left:560px;}.prepend-15{padding-left:600px;}.prepend-16{padding-left:640px;}.prepend-17{padding-left:680px;}.prepend-18{padding-left:720px;}.prepend-19{padding-left:760px;}.prepend-20{padding-left:800px;}.prepend-21{padding-left:840px;}.prepend-22{padding-left:880px;}.prepend-23{padding-left:920px;}div.border{padding-right:4px;margin-right:5px;border-right:1px solid #eee;}div.colborder{padding-right:24px;margin-right:25px;border-right:1px solid #eee;}.pull-1{margin-left:-40px;}.pull-2{margin-left:-80px;}.pull-3{margin-left:-120px;}.pull-4{margin-left:-160px;}.pull-5{margin-left:-200px;}.pull-6{margin-left:-240px;}.pull-7{margin-left:-280px;}.pull-8{margin-left:-320px;}.pull-9{margin-left:-360px;}.pull-10{margin-left:-400px;}.pull-11{margin-left:-440px;}.pull-12{margin-left:-480px;}.pull-13{margin-left:-520px;}.pull-14{margin-left:-560px;}.pull-15{margin-left:-600px;}.pull-16{margin-left:-640px;}.pull-17{margin-left:-680px;}.pull-18{margin-left:-720px;}.pull-19{margin-left:-760px;}.pull-20{margin-left:-800px;}.pull-21{margin-left:-840px;}.pull-22{margin-left:-880px;}.pull-23{margin-left:-920px;}.pull-24{margin-left:-960px;}.pull-1,.pull-2,.pull-3,.pull-4,.pull-5,.pull-6,.pull-7,.pull-8,.pull-9,.pull-10,.pull-11,.pull-12,.pull-13,.pull-14,.pull-15,.pull-16,.pull-17,.pull-18,.pull-19,.pull-20,.pull-21,.pull-22,.pull-23,.pull-24{float:left;position:relative;}.push-1{margin:0 -40px 1.5em 40px;}.push-2{margin:0 -80px 1.5em 80px;}.push-3{margin:0 -120px 1.5em 120px;}.push-4{margin:0 -160px 1.5em 160px;}.push-5{margin:0 -200px 1.5em 200px;}.push-6{margin:0 -240px 1.5em 240px;}.push-7{margin:0 -280px 1.5em 280px;}.push-8{margin:0 -320px 1.5em 320px;}.push-9{margin:0 -360px 1.5em 360px;}.push-10{margin:0 -400px 1.5em 400px;}.push-11{margin:0 -440px 1.5em 440px;}.push-12{margin:0 -480px 1.5em 480px;}.push-13{margin:0 -520px 1.5em 520px;}.push-14{margin:0 -560px 1.5em 560px;}.push-15{margin:0 -600px 1.5em 600px;}.push-16{margin:0 -640px 1.5em 640px;}.push-17{margin:0 -680px 1.5em 680px;}.push-18{margin:0 -720px 1.5em 720px;}.push-19{margin:0 -760px 1.5em 760px;}.push-20{margin:0 -800px 1.5em 800px;}.push-21{margin:0 -840px 1.5em 840px;}.push-22{margin:0 -880px 1.5em 880px;}.push-23{margin:0 -920px 1.5em 920px;}.push-24{margin:0 -960px 1.5em 960px;}.push-1,.push-2,.push-3,.push-4,.push-5,.push-6,.push-7,.push-8,.push-9,.push-10,.push-11,.push-12,.push-13,.push-14,.push-15,.push-16,.push-17,.push-18,.push-19,.push-20,.push-21,.push-22,.push-23,.push-24{float:right;position:relative;}.prepend-top{margin-top:1.5em;}.append-bottom{margin-bottom:1.5em;}.box{padding:1.5em;margin-bottom:1.5em;background:#E5ECF9;}hr{background:#ddd;color:#ddd;clear:both;float:none;width:100%;height:.1em;margin:0 0 1.45em;border:none;}hr.space{background:#fff;color:#fff;visibility:hidden;}.clearfix:after,.container:after{content:"\0020";display:block;height:0;clear:both;visibility:hidden;overflow:hidden;}.clearfix,.container{display:block;}.clear{clear:both;}.alt{color:#666;font-family:"Warnock Pro","Goudy Old Style","Palatino","Book Antiqua",Georgia,serif;font-style:italic;font-weight:normal;}.dquo{margin-left:-.5em;}p.incr,.incr p{font-size:10px;line-height:1.44em;margin-bottom:1.5em;}.caps{font-variant:small-caps;letter-spacing:1px;text-transform:lowercase;font-size:1.2em;line-height:1%;font-weight:bold;padding:0 2px;} -------------------------------------------------------------------------------- /css/blueprint/src/grid.css: -------------------------------------------------------------------------------- 1 | /* -------------------------------------------------------------- 2 | grid.css 3 | * Sets up an easy-to-use grid of 24 columns. 4 | 5 | By default, the grid is 950px wide, with 24 columns 6 | spanning 30px, and a 10px margin between columns. 7 | 8 | If you need fewer or more columns, namespaces or semantic 9 | element names, use the compressor script (lib/compress.rb) 10 | 11 | Note: Changes made in this file will not be applied when 12 | using the compressor: make changes in lib/blueprint/grid.css.rb 13 | -------------------------------------------------------------- */ 14 | 15 | /* A container should group all your columns. */ 16 | .container { 17 | width: 950px; 18 | margin: 0 auto; 19 | } 20 | 21 | /* Use this class on any div.span / container to see the grid. */ 22 | .showgrid { 23 | background: url(src/grid.png); 24 | } 25 | 26 | 27 | /* Columns 28 | -------------------------------------------------------------- */ 29 | 30 | /* Sets up basic grid floating and margin. */ 31 | .column, div.span-1, div.span-2, div.span-3, div.span-4, div.span-5, div.span-6, div.span-7, div.span-8, div.span-9, div.span-10, div.span-11, div.span-12, div.span-13, div.span-14, div.span-15, div.span-16, div.span-17, div.span-18, div.span-19, div.span-20, div.span-21, div.span-22, div.span-23, div.span-24 { 32 | float: left; 33 | margin-right: 10px; 34 | } 35 | 36 | /* The last column in a row needs this class. */ 37 | .last, div.last { margin-right: 0; } 38 | 39 | /* Use these classes to set the width of a column. */ 40 | .span-1 {width: 30px;} 41 | 42 | .span-2 {width: 70px;} 43 | .span-3 {width: 110px;} 44 | .span-4 {width: 150px;} 45 | .span-5 {width: 190px;} 46 | .span-6 {width: 230px;} 47 | .span-7 {width: 270px;} 48 | .span-8 {width: 310px;} 49 | .span-9 {width: 350px;} 50 | .span-10 {width: 390px;} 51 | .span-11 {width: 430px;} 52 | .span-12 {width: 470px;} 53 | .span-13 {width: 510px;} 54 | .span-14 {width: 550px;} 55 | .span-15 {width: 590px;} 56 | .span-16 {width: 630px;} 57 | .span-17 {width: 670px;} 58 | .span-18 {width: 710px;} 59 | .span-19 {width: 750px;} 60 | .span-20 {width: 790px;} 61 | .span-21 {width: 830px;} 62 | .span-22 {width: 870px;} 63 | .span-23 {width: 910px;} 64 | .span-24, div.span-24 { width:950px; margin-right:0; } 65 | 66 | /* Use these classes to set the width of an input. */ 67 | input.span-1, textarea.span-1, input.span-2, textarea.span-2, input.span-3, textarea.span-3, input.span-4, textarea.span-4, input.span-5, textarea.span-5, input.span-6, textarea.span-6, input.span-7, textarea.span-7, input.span-8, textarea.span-8, input.span-9, textarea.span-9, input.span-10, textarea.span-10, input.span-11, textarea.span-11, input.span-12, textarea.span-12, input.span-13, textarea.span-13, input.span-14, textarea.span-14, input.span-15, textarea.span-15, input.span-16, textarea.span-16, input.span-17, textarea.span-17, input.span-18, textarea.span-18, input.span-19, textarea.span-19, input.span-20, textarea.span-20, input.span-21, textarea.span-21, input.span-22, textarea.span-22, input.span-23, textarea.span-23, input.span-24, textarea.span-24 { 68 | border-left-width: 1px!important; 69 | border-right-width: 1px!important; 70 | padding-left: 5px!important; 71 | padding-right: 5px!important; 72 | } 73 | 74 | input.span-1, textarea.span-1 { width: 18px!important; } 75 | input.span-2, textarea.span-2 { width: 58px!important; } 76 | input.span-3, textarea.span-3 { width: 98px!important; } 77 | input.span-4, textarea.span-4 { width: 138px!important; } 78 | input.span-5, textarea.span-5 { width: 178px!important; } 79 | input.span-6, textarea.span-6 { width: 218px!important; } 80 | input.span-7, textarea.span-7 { width: 258px!important; } 81 | input.span-8, textarea.span-8 { width: 298px!important; } 82 | input.span-9, textarea.span-9 { width: 338px!important; } 83 | input.span-10, textarea.span-10 { width: 378px!important; } 84 | input.span-11, textarea.span-11 { width: 418px!important; } 85 | input.span-12, textarea.span-12 { width: 458px!important; } 86 | input.span-13, textarea.span-13 { width: 498px!important; } 87 | input.span-14, textarea.span-14 { width: 538px!important; } 88 | input.span-15, textarea.span-15 { width: 578px!important; } 89 | input.span-16, textarea.span-16 { width: 618px!important; } 90 | input.span-17, textarea.span-17 { width: 658px!important; } 91 | input.span-18, textarea.span-18 { width: 698px!important; } 92 | input.span-19, textarea.span-19 { width: 738px!important; } 93 | input.span-20, textarea.span-20 { width: 778px!important; } 94 | input.span-21, textarea.span-21 { width: 818px!important; } 95 | input.span-22, textarea.span-22 { width: 858px!important; } 96 | input.span-23, textarea.span-23 { width: 898px!important; } 97 | input.span-24, textarea.span-24 { width: 938px!important; } 98 | 99 | /* Add these to a column to append empty cols. */ 100 | 101 | .append-1 { padding-right: 40px;} 102 | .append-2 { padding-right: 80px;} 103 | .append-3 { padding-right: 120px;} 104 | .append-4 { padding-right: 160px;} 105 | .append-5 { padding-right: 200px;} 106 | .append-6 { padding-right: 240px;} 107 | .append-7 { padding-right: 280px;} 108 | .append-8 { padding-right: 320px;} 109 | .append-9 { padding-right: 360px;} 110 | .append-10 { padding-right: 400px;} 111 | .append-11 { padding-right: 440px;} 112 | .append-12 { padding-right: 480px;} 113 | .append-13 { padding-right: 520px;} 114 | .append-14 { padding-right: 560px;} 115 | .append-15 { padding-right: 600px;} 116 | .append-16 { padding-right: 640px;} 117 | .append-17 { padding-right: 680px;} 118 | .append-18 { padding-right: 720px;} 119 | .append-19 { padding-right: 760px;} 120 | .append-20 { padding-right: 800px;} 121 | .append-21 { padding-right: 840px;} 122 | .append-22 { padding-right: 880px;} 123 | .append-23 { padding-right: 920px;} 124 | 125 | /* Add these to a column to prepend empty cols. */ 126 | 127 | .prepend-1 { padding-left: 40px;} 128 | .prepend-2 { padding-left: 80px;} 129 | .prepend-3 { padding-left: 120px;} 130 | .prepend-4 { padding-left: 160px;} 131 | .prepend-5 { padding-left: 200px;} 132 | .prepend-6 { padding-left: 240px;} 133 | .prepend-7 { padding-left: 280px;} 134 | .prepend-8 { padding-left: 320px;} 135 | .prepend-9 { padding-left: 360px;} 136 | .prepend-10 { padding-left: 400px;} 137 | .prepend-11 { padding-left: 440px;} 138 | .prepend-12 { padding-left: 480px;} 139 | .prepend-13 { padding-left: 520px;} 140 | .prepend-14 { padding-left: 560px;} 141 | .prepend-15 { padding-left: 600px;} 142 | .prepend-16 { padding-left: 640px;} 143 | .prepend-17 { padding-left: 680px;} 144 | .prepend-18 { padding-left: 720px;} 145 | .prepend-19 { padding-left: 760px;} 146 | .prepend-20 { padding-left: 800px;} 147 | .prepend-21 { padding-left: 840px;} 148 | .prepend-22 { padding-left: 880px;} 149 | .prepend-23 { padding-left: 920px;} 150 | 151 | 152 | /* Border on right hand side of a column. */ 153 | div.border { 154 | padding-right: 4px; 155 | margin-right: 5px; 156 | border-right: 1px solid #eee; 157 | } 158 | 159 | /* Border with more whitespace, spans one column. */ 160 | div.colborder { 161 | padding-right: 24px; 162 | margin-right: 25px; 163 | border-right: 1px solid #eee; 164 | } 165 | 166 | 167 | /* Use these classes on an element to push it into the 168 | next column, or to pull it into the previous column. */ 169 | 170 | 171 | .pull-1 { margin-left: -40px; } 172 | .pull-2 { margin-left: -80px; } 173 | .pull-3 { margin-left: -120px; } 174 | .pull-4 { margin-left: -160px; } 175 | .pull-5 { margin-left: -200px; } 176 | .pull-6 { margin-left: -240px; } 177 | .pull-7 { margin-left: -280px; } 178 | .pull-8 { margin-left: -320px; } 179 | .pull-9 { margin-left: -360px; } 180 | .pull-10 { margin-left: -400px; } 181 | .pull-11 { margin-left: -440px; } 182 | .pull-12 { margin-left: -480px; } 183 | .pull-13 { margin-left: -520px; } 184 | .pull-14 { margin-left: -560px; } 185 | .pull-15 { margin-left: -600px; } 186 | .pull-16 { margin-left: -640px; } 187 | .pull-17 { margin-left: -680px; } 188 | .pull-18 { margin-left: -720px; } 189 | .pull-19 { margin-left: -760px; } 190 | .pull-20 { margin-left: -800px; } 191 | .pull-21 { margin-left: -840px; } 192 | .pull-22 { margin-left: -880px; } 193 | .pull-23 { margin-left: -920px; } 194 | .pull-24 { margin-left: -960px; } 195 | 196 | .pull-1, .pull-2, .pull-3, .pull-4, .pull-5, .pull-6, .pull-7, .pull-8, .pull-9, .pull-10, .pull-11, .pull-12, .pull-13, .pull-14, .pull-15, .pull-16, .pull-17, .pull-18, .pull-19, .pull-20, .pull-21, .pull-22, .pull-23, .pull-24 {float: left; position:relative;} 197 | 198 | 199 | .push-1 { margin: 0 -40px 1.5em 40px; } 200 | .push-2 { margin: 0 -80px 1.5em 80px; } 201 | .push-3 { margin: 0 -120px 1.5em 120px; } 202 | .push-4 { margin: 0 -160px 1.5em 160px; } 203 | .push-5 { margin: 0 -200px 1.5em 200px; } 204 | .push-6 { margin: 0 -240px 1.5em 240px; } 205 | .push-7 { margin: 0 -280px 1.5em 280px; } 206 | .push-8 { margin: 0 -320px 1.5em 320px; } 207 | .push-9 { margin: 0 -360px 1.5em 360px; } 208 | .push-10 { margin: 0 -400px 1.5em 400px; } 209 | .push-11 { margin: 0 -440px 1.5em 440px; } 210 | .push-12 { margin: 0 -480px 1.5em 480px; } 211 | .push-13 { margin: 0 -520px 1.5em 520px; } 212 | .push-14 { margin: 0 -560px 1.5em 560px; } 213 | .push-15 { margin: 0 -600px 1.5em 600px; } 214 | .push-16 { margin: 0 -640px 1.5em 640px; } 215 | .push-17 { margin: 0 -680px 1.5em 680px; } 216 | .push-18 { margin: 0 -720px 1.5em 720px; } 217 | .push-19 { margin: 0 -760px 1.5em 760px; } 218 | .push-20 { margin: 0 -800px 1.5em 800px; } 219 | .push-21 { margin: 0 -840px 1.5em 840px; } 220 | .push-22 { margin: 0 -880px 1.5em 880px; } 221 | .push-23 { margin: 0 -920px 1.5em 920px; } 222 | .push-24 { margin: 0 -960px 1.5em 960px; } 223 | 224 | .push-1, .push-2, .push-3, .push-4, .push-5, .push-6, .push-7, .push-8, .push-9, .push-10, .push-11, .push-12, .push-13, .push-14, .push-15, .push-16, .push-17, .push-18, .push-19, .push-20, .push-21, .push-22, .push-23, .push-24 {float: right; position:relative;} 225 | 226 | 227 | /* Misc classes and elements 228 | -------------------------------------------------------------- */ 229 | 230 | /* In case you need to add a gutter above/below an element */ 231 | .prepend-top { 232 | margin-top:1.5em; 233 | } 234 | .append-bottom { 235 | margin-bottom:1.5em; 236 | } 237 | 238 | /* Use a .box to create a padded box inside a column. */ 239 | .box { 240 | padding: 1.5em; 241 | margin-bottom: 1.5em; 242 | background: #E5ECF9; 243 | } 244 | 245 | /* Use this to create a horizontal ruler across a column. */ 246 | hr { 247 | background: #ddd; 248 | color: #ddd; 249 | clear: both; 250 | float: none; 251 | width: 100%; 252 | height: .1em; 253 | margin: 0 0 1.45em; 254 | border: none; 255 | } 256 | 257 | hr.space { 258 | background: #fff; 259 | color: #fff; 260 | visibility: hidden; 261 | } 262 | 263 | 264 | /* Clearing floats without extra markup 265 | Based on How To Clear Floats Without Structural Markup by PiE 266 | [http://www.positioniseverything.net/easyclearing.html] */ 267 | 268 | .clearfix:after, .container:after { 269 | content: "\0020"; 270 | display: block; 271 | height: 0; 272 | clear: both; 273 | visibility: hidden; 274 | overflow:hidden; 275 | } 276 | .clearfix, .container {display: block;} 277 | 278 | /* Regular clearing 279 | apply to column that should drop below previous ones. */ 280 | 281 | .clear { clear:both; } 282 | -------------------------------------------------------------------------------- /tag/debugging/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Adequately Good - Posts tagged “debugging” 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 33 | 34 | 35 | 36 |
37 | 38 | 39 |
40 | 41 |
42 |
43 |
44 |

45 | adequately good 46 |

47 |

decent programming advice

48 |
49 |
50 |
51 |

52 | written by 53 | ben cherry 54 |

55 |
56 |
57 | 58 |
59 | 60 | 61 | 75 | 76 | 77 |
78 |
79 | 185 |
186 | 187 |
188 |
189 | 190 |
191 | 192 |
193 | 194 |
195 | all posts filed under 196 | debugging 197 |
198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 |
262 | 263 | 264 | 377 |
378 |
379 | 380 | 395 | 396 | 397 | 398 | 399 | 400 | -------------------------------------------------------------------------------- /tag/adequatelygood/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Adequately Good - Posts tagged “adequatelygood” 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 33 | 34 | 35 | 36 |
37 | 38 | 39 |
40 | 41 |
42 |
43 |
44 |

45 | adequately good 46 |

47 |

decent programming advice

48 |
49 |
50 |
51 |

52 | written by 53 | ben cherry 54 |

55 |
56 |
57 | 58 |
59 | 60 | 61 | 75 | 76 | 77 |
78 |
79 | 185 |
186 | 187 |
188 |
189 | 190 |
191 | 192 |
193 | 194 |
195 | all posts filed under 196 | adequatelygood 197 |
198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 |
225 |
226 | 227 | 228 | 229 |

This Blog - Now With HTML5

230 |
231 |
232 |

Take a look at this web site. Notice anything out of the ordinary. Hopef...

233 |
234 |
235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 |
262 | 263 | 264 | 377 |
378 |
379 | 380 | 395 | 396 | 397 | 398 | 399 | 400 | -------------------------------------------------------------------------------- /tag/python/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Adequately Good - Posts tagged “python” 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 33 | 34 | 35 | 36 |
37 | 38 | 39 |
40 | 41 |
42 |
43 |
44 |

45 | adequately good 46 |

47 |

decent programming advice

48 |
49 |
50 |
51 |

52 | written by 53 | ben cherry 54 |

55 |
56 |
57 | 58 |
59 | 60 | 61 | 75 | 76 | 77 |
78 |
79 | 185 |
186 | 187 |
188 |
189 | 190 |
191 | 192 |
193 | 194 |
195 | all posts filed under 196 | python 197 |
198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 |
215 |
216 | 217 | 218 | 219 |

JavaScript-Style Objects in Python

220 |
221 |
222 |

One of JavaScript’s most convenient features is the object syntax. Objects are so easy to work with. You’ve got a l...

223 |
224 |
225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 |
262 | 263 | 264 | 377 |
378 |
379 | 380 | 395 | 396 | 397 | 398 | 399 | 400 | -------------------------------------------------------------------------------- /tag/slide/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Adequately Good - Posts tagged “slide” 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 33 | 34 | 35 | 36 |
37 | 38 | 39 |
40 | 41 |
42 |
43 |
44 |

45 | adequately good 46 |

47 |

decent programming advice

48 |
49 |
50 |
51 |

52 | written by 53 | ben cherry 54 |

55 |
56 |
57 | 58 |
59 | 60 | 61 | 75 | 76 | 77 |
78 |
79 | 185 |
186 | 187 |
188 |
189 | 190 |
191 | 192 |
193 | 194 |
195 | all posts filed under 196 | slide 197 |
198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 |
217 |
218 | 219 | 220 | 221 |

JavaScript: Better and Faster

222 |
223 |
224 |

“JavaScript: Better and Faster” is the name of a presentation I gave at Slide last week. It was generally well-received by the Slide crew so I decided to put a (slightly edited) copy of the accompanying slidesho...

225 |
226 |
227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 |
262 | 263 | 264 | 377 |
378 |
379 | 380 | 395 | 396 | 397 | 398 | 399 | 400 | -------------------------------------------------------------------------------- /tag/talks/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Adequately Good - Posts tagged “talks” 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 33 | 34 | 35 | 36 |
37 | 38 | 39 |
40 | 41 |
42 |
43 |
44 |

45 | adequately good 46 |

47 |

decent programming advice

48 |
49 |
50 |
51 |

52 | written by 53 | ben cherry 54 |

55 |
56 |
57 | 58 |
59 | 60 | 61 | 75 | 76 | 77 |
78 |
79 | 185 |
186 | 187 |
188 |
189 | 190 |
191 | 192 |
193 | 194 |
195 | all posts filed under 196 | talks 197 |
198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 |
217 |
218 | 219 | 220 | 221 |

JavaScript: Better and Faster

222 |
223 |
224 |

“JavaScript: Better and Faster” is the name of a presentation I gave at Slide last week. It was generally well-received by the Slide crew so I decided to put a (slightly edited) copy of the accompanying slidesho...

225 |
226 |
227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 |
262 | 263 | 264 | 377 |
378 |
379 | 380 | 395 | 396 | 397 | 398 | 399 | 400 | -------------------------------------------------------------------------------- /tag/social gaming/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Adequately Good - Posts tagged “social gaming” 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 33 | 34 | 35 | 36 |
37 | 38 | 39 |
40 | 41 |
42 |
43 |
44 |

45 | adequately good 46 |

47 |

decent programming advice

48 |
49 |
50 |
51 |

52 | written by 53 | ben cherry 54 |

55 |
56 |
57 | 58 |
59 | 60 | 61 | 75 | 76 | 77 |
78 |
79 | 185 |
186 | 187 |
188 |
189 | 190 |
191 | 192 |
193 | 194 |
195 | all posts filed under 196 | social gaming 197 |
198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 |
247 |
248 | 249 | 250 | 251 |

Building a Better Friend Selector

252 |
253 |
254 | 255 |

This post has been migrated from my old, defunct blog at bcherry.net. The links may not work, and the formatting may be wonky.

256 | 257 |

Working in social entertainment, one of the lynchpins of the entire business is the friend selector. Without it, there is virtually no way to grow your customer base. Having a simple, effective friend selector ...

258 | 259 |
260 |
261 | 262 | 263 | 264 | 265 |
266 | 267 | 268 | 381 |
382 |
383 | 384 | 399 | 400 | 401 | 402 | 403 | 404 | -------------------------------------------------------------------------------- /tag/css/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Adequately Good - Posts tagged “css” 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 33 | 34 | 35 | 36 |
37 | 38 | 39 |
40 | 41 |
42 |
43 |
44 |

45 | adequately good 46 |

47 |

decent programming advice

48 |
49 |
50 |
51 |

52 | written by 53 | ben cherry 54 |

55 |
56 |
57 | 58 |
59 | 60 | 61 | 75 | 76 | 77 |
78 |
79 | 185 |
186 | 187 |
188 |
189 | 190 |
191 | 192 |
193 | 194 |
195 | all posts filed under 196 | css 197 |
198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 |
245 |
246 | 247 | 248 | 249 |

Managing CSS Through JavaScript

250 |
251 |
252 |

It’s often very difficult to keep track of what CSS goes where. Especially when you load up on Javascript controls and files in a large application, which render markup that depends on some CSS being there. One solution is to “inline” the CSS in the JavaScript, by adding style to each element as it’s created. This works, but it’s messy. Also, browsers are heavily optimized to apply CSS, faster than any Javascript solution could be. But when you’ve got a fancy script manager like LABjs, remembering to statically link all of the important CSS is a pain. Especially so if you’re not sure at page load whethe...

253 |
254 |
255 | 256 | 257 | 258 | 259 | 260 | 261 |
262 | 263 | 264 | 377 |
378 |
379 | 380 | 395 | 396 | 397 | 398 | 399 | 400 | -------------------------------------------------------------------------------- /about.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | About Ben 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 33 | 34 | 35 | 36 |
37 | 38 | 39 |
40 | 41 |
42 |
43 |
44 |

45 | adequately good 46 |

47 |

decent programming advice

48 |
49 |
50 |
51 |

52 | written by 53 | ben cherry 54 |

55 |
56 |
57 | 58 |
59 | 60 | 61 | 75 | 76 | 77 |
78 |
79 | 185 |
186 | 187 |
188 |
189 | 190 |
191 | 192 |
193 | 194 | 195 |
196 |
197 | 198 |

About Ben

199 |
200 |
201 |

Ben Cherry is an engineer in San Francisco, CA. He's worked at Slide, Twitter, tried (and failed!) to do his own startup, and now works as part of a small team on an exciting new startup, mostly writing Ruby and Objective-C.

202 | 203 |

When he started this blog, he thought he'd be writing a lot about Python, but was surprised to discover that he really likes JavaScript, so he mostly writes about that instead.

204 | 205 |

Follow him at @bcherry

206 | 207 |
208 |
209 | 210 |
211 |
212 | 225 | 228 |
229 | 230 |
231 | 232 | 233 | 346 |
347 |
348 | 349 | 364 | 365 | 366 | 367 | 368 | 369 | -------------------------------------------------------------------------------- /tag/hashbang/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Adequately Good - Posts tagged “hashbang” 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 33 | 34 | 35 | 36 |
37 | 38 | 39 |
40 | 41 |
42 |
43 |
44 |

45 | adequately good 46 |

47 |

decent programming advice

48 |
49 |
50 |
51 |

52 | written by 53 | ben cherry 54 |

55 |
56 |
57 | 58 |
59 | 60 | 61 | 75 | 76 | 77 |
78 |
79 | 185 |
186 | 187 |
188 |
189 | 190 |
191 | 192 |
193 | 194 |
195 | all posts filed under 196 | hashbang 197 |
198 | 199 | 200 | 201 | 202 |
203 |
204 | 205 | 206 | 207 |

Thoughts on the Hashbang

208 |
209 |
210 |

There’s been a lot of discussion this week about the “hashbang”, that ugly little bit you find in the middle of URLs like this one: http://twitter.com/#!/ded/status/18308450276. I wanted to provide a rebuttal to the arguments that the hashbang is bad for the Web, based on a lot of discussions we’ve been having inside Twitter since the #newtwitter project began last summer, and have continued...

211 |
212 |
213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 |
262 | 263 | 264 | 377 |
378 |
379 | 380 | 395 | 396 | 397 | 398 | 399 | 400 | -------------------------------------------------------------------------------- /tag/testing/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Adequately Good - Posts tagged “testing” 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 33 | 34 | 35 | 36 |
37 | 38 | 39 |
40 | 41 |
42 |
43 |
44 |

45 | adequately good 46 |

47 |

decent programming advice

48 |
49 |
50 |
51 |

52 | written by 53 | ben cherry 54 |

55 |
56 |
57 | 58 |
59 | 60 | 61 | 75 | 76 | 77 |
78 |
79 | 185 |
186 | 187 |
188 |
189 | 190 |
191 | 192 |
193 | 194 |
195 | all posts filed under 196 | testing 197 |
198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 |
207 |
208 | 209 | 210 | 211 |

Writing Testable JavaScript

212 |
213 |
214 |

The engineering culture at Twitter requires tests. Lots of tests. I haven’t had formal experience with JavaScript testing before Twitter, so I’ve been learning a lot as I go. In particular, a number of patterns I used to use, write about, and encourage have turned out to be b...

215 |
216 |
217 | 218 | 219 | 220 | 221 |
222 |
223 | 224 | 225 | 226 |

Spying Constructors in JavaScript

227 |
228 |
229 |

When writing unit-tests for code, a common technique is spying, where you set expectations on a method’s invoc...

230 |
231 |
232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 |
275 | 276 | 277 | 390 |
391 |
392 | 393 | 408 | 409 | 410 | 411 | 412 | 413 | -------------------------------------------------------------------------------- /tag/jquery/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Adequately Good - Posts tagged “jquery” 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 33 | 34 | 35 | 36 |
37 | 38 | 39 |
40 | 41 |
42 |
43 |
44 |

45 | adequately good 46 |

47 |

decent programming advice

48 |
49 |
50 |
51 |

52 | written by 53 | ben cherry 54 |

55 |
56 |
57 | 58 |
59 | 60 | 61 | 75 | 76 | 77 |
78 |
79 | 185 |
186 | 187 |
188 |
189 | 190 |
191 | 192 |
193 | 194 |
195 | all posts filed under 196 | jquery 197 |
198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 |
231 |
232 | 233 | 234 | 235 |

Search/Replace in the DOM with jQuery

236 |
237 |
238 |

Ever had a need to to a text search/replace through the DOM? For articles in drafting on this blog I often use the form (TODO: somethi...

239 |
240 |
241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 |
256 |
257 | 258 | 259 | 260 |

jQuery Micro-templates

261 |
262 |
263 | 264 |

John Resig wrote a neat micro-templating Javascript function a while back. I’ve been playing with this, and have discovered two things:

265 | 266 |
    267 |
  1. 268 |

    These templates are totally nestable. Just make an element to be templated within a temp...

    269 |
  2. 270 |
271 | 272 |
273 |
274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 |
283 | 284 | 285 | 398 |
399 |
400 | 401 | 416 | 417 | 418 | 419 | 420 | 421 | -------------------------------------------------------------------------------- /tag/timers/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Adequately Good - Posts tagged “timers” 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 33 | 34 | 35 | 36 |
37 | 38 | 39 |
40 | 41 |
42 |
43 |
44 |

45 | adequately good 46 |

47 |

decent programming advice

48 |
49 |
50 |
51 |

52 | written by 53 | ben cherry 54 |

55 |
56 |
57 | 58 |
59 | 60 | 61 | 75 | 76 | 77 |
78 |
79 | 185 |
186 | 187 |
188 |
189 | 190 |
191 | 192 |
193 | 194 |
195 | all posts filed under 196 | timers 197 |
198 | 199 | 200 |
201 |
202 | 203 | 204 | 205 |

Replacing `setTimeout` Globally

206 |
207 |
208 |

Sometimes, you might want to overwrite built-in global methods like setTimeout and setInterval. If you try, you might find that it’s much harder than you think to accomplish this in every browser, particularly if you ever want to find the originals again. After a lot of painful exp...

209 |
210 |
211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 |
236 |
237 | 238 | 239 | 240 |

Minimum Timer Intervals in JavaScript

241 |
242 |
243 |

I was talking with a co-worker today about the behavior of setTimeout and setInterval when given a small interval, like 0 or 1. The expectation would be tha...

244 |
245 |
246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 |
275 | 276 | 277 | 390 |
391 |
392 | 393 | 408 | 409 | 410 | 411 | 412 | 413 | --------------------------------------------------------------------------------