Browse Source

irrisponsibly massive commit

unreleased_contents
Brandon Mathis 14 years ago
parent
commit
e4c2d5790b
  1. 3
      .gitignore
  2. 1
      .rvmrc
  3. 19
      Gemfile
  4. 74
      Gemfile.lock
  5. 9
      Guardfile
  6. 129
      Rakefile
  7. 31
      _config.yml
  8. 46
      _plugins/custom_filters.rb
  9. 132
      _plugins/generate_sitemap.rb
  10. 83
      _plugins/gist_tag.rb
  11. 24
      _plugins/haml.rb
  12. 36
      _plugins/titlecase.rb
  13. 13
      config.rb
  14. 123
      public/2009/11/13/hello-world/index.html
  15. 114
      public/2011/03/14/test-post/index.html
  16. 164
      public/2011/04/07/test-of-typography/index.html
  17. 103
      public/about/index.html
  18. 103
      public/atom.xml
  19. BIN
      public/fonts/adellebasic_bold-webfont.eot
  20. 139
      public/fonts/adellebasic_bold-webfont.svg
  21. BIN
      public/fonts/adellebasic_bold-webfont.ttf
  22. BIN
      public/fonts/adellebasic_bold-webfont.woff
  23. BIN
      public/images/code_bg.png
  24. BIN
      public/images/rss.png
  25. BIN
      public/images/search_bg.png
  26. 177
      public/index.html
  27. 100
      public/javascripts/mootools-1.2.4.2-more.js
  28. 1322
      public/javascripts/mootools-more-1.3.1.1.js
  29. 5492
      public/javascripts/mootools-yui-compressed.js
  30. 76
      public/javascripts/octopress.js
  31. 52
      public/javascripts/pinboard.js
  32. 52
      public/javascripts/twitter.js
  33. 35
      public/sitemap.xml
  34. 3
      public/stylesheets/screen.css
  35. 483
      rubypants.rb
  36. 219
      source/_helpers.rb
  37. 18
      source/_includes/article.html
  38. 3
      source/_includes/delicious.haml
  39. 3
      source/_includes/delicious.html
  40. 11
      source/_includes/disqus_hook.haml
  41. 5
      source/_includes/disqus_thread.haml
  42. 7
      source/_includes/disqus_thread.html
  43. 7
      source/_includes/footer.haml
  44. 11
      source/_includes/footer.html
  45. 6
      source/_includes/google_analytics.html
  46. 22
      source/_includes/head.haml
  47. 28
      source/_includes/head.html
  48. 9
      source/_includes/header.haml
  49. 10
      source/_includes/header.html
  50. 8
      source/_includes/navigation.haml
  51. 5
      source/_includes/navigation.html
  52. 3
      source/_includes/pinboard.html
  53. 8
      source/_includes/post.haml
  54. 2
      source/_includes/sidebar.haml
  55. 24
      source/_includes/sidebar.html
  56. 4
      source/_includes/twitter.haml
  57. 5
      source/_includes/twitter.html
  58. 32
      source/_layouts/blog_post.haml
  59. 32
      source/_layouts/default.haml
  60. 15
      source/_layouts/default.html
  61. 10
      source/_layouts/post.html
  62. 10
      source/_posts/2009-11-13-hello-world.markdown
  63. 6
      source/_posts/2011-03-14-test-post.markdown
  64. 50
      source/_posts/2011-04-07-test-of-typography.markdown
  65. 14
      source/archives.haml
  66. 25
      source/atom.haml
  67. 28
      source/atom.xml
  68. BIN
      source/fonts/adellebasic_bold-webfont.eot
  69. 139
      source/fonts/adellebasic_bold-webfont.svg
  70. BIN
      source/fonts/adellebasic_bold-webfont.ttf
  71. BIN
      source/fonts/adellebasic_bold-webfont.woff
  72. 22
      source/index.haml
  73. 12
      source/index.html
  74. 1322
      source/javascripts/mootools-more-1.3.1.1.js
  75. 5848
      source/javascripts/mootools-yui-compressed.js
  76. 31
      source/javascripts/octopress.js
  77. 52
      source/javascripts/pinboard.js
  78. 197
      source/javascripts/twitter.js
  79. 17
      source/sass/screen.scss
  80. 13
      source/sass/themes/classic/_partials.scss
  81. 4
      source/sass/themes/classic/_style.scss
  82. 91
      source/sass/themes/classic/core/_layout.scss
  83. 45
      source/sass/themes/classic/core/_theme.scss
  84. 159
      source/sass/themes/classic/core/_typography.scss
  85. 23
      source/sass/themes/classic/partials/_blog.scss
  86. 11
      source/sass/themes/classic/partials/_footer.scss
  87. 11
      source/sass/themes/classic/partials/_header.scss
  88. 30
      source/sass/themes/classic/partials/_navigation.scss
  89. 8
      source/sass/themes/classic/partials/_page.scss
  90. 19
      source/sass/themes/classic/partials/_search.scss
  91. 12
      source/sass/themes/classic/partials/_shared.scss
  92. 38
      source/sass/themes/classic/partials/_sidebar.scss
  93. 279
      source/sass/themes/classic/partials/_syntax.scss
  94. 15
      source/sass/themes/classic/partials/_twitter.scss
  95. 3
      stylesheets/_base.sass
  96. 51
      stylesheets/_layout.sass
  97. 7
      stylesheets/_library.sass
  98. 13
      stylesheets/_partials.sass
  99. 47
      stylesheets/_theme.sass
  100. 45
      stylesheets/_typography.sass

3
.gitignore

@ -1,7 +1,8 @@
site
.bundle
.DS_Store
.rvmrc
.sass-cache
test
source/_stash
vendor/ruby
vendor/ruby

1
.rvmrc

@ -0,0 +1 @@
rvm 1.9.2

19
Gemfile

@ -1,12 +1,13 @@
source "http://rubygems.org"
source "http://gems.github.com"
source :rubygems
gem 'activesupport', "2.3.5"
gem 'henrik-jekyll'
gem 'compass'
gem 'compass-colors'
gem 'jekyll'
gem 'rdiscount'
gem 'fssm'
gem 'RedCloth'
gem "haml", "3.1.0.alpha.147"
gem 'compass', '0.11.beta.5'
gem 'rubypants'
gem 'rb-fsevent'
gem 'guard-shell'
gem 'guard-livereload'
gem 'serve'
gem 'mongrel'
gem 'rake'
gem 'rake'

74
Gemfile.lock

@ -0,0 +1,74 @@
GEM
remote: http://rubygems.org/
specs:
RedCloth (4.2.3)
activesupport (3.0.5)
addressable (2.2.4)
chunky_png (1.1.0)
classifier (1.3.3)
fast-stemmer (>= 1.0.0)
compass (0.11.beta.5)
chunky_png (~> 1.1.0)
sass (>= 3.1.0.alpha.249)
configuration (1.2.0)
directory_watcher (1.3.2)
em-websocket (0.2.1)
addressable (>= 2.1.1)
eventmachine (>= 0.12.9)
eventmachine (0.12.10)
fast-stemmer (1.0.0)
guard (0.3.0)
open_gem (~> 1.4.2)
thor (~> 0.14.6)
guard-livereload (0.1.9)
em-websocket (~> 0.2.0)
guard (>= 0.2.2)
json (~> 1.4.6)
guard-shell (0.1.1)
guard (>= 0.2.0)
haml (3.1.0.alpha.147)
i18n (0.4.2)
jekyll (0.10.0)
classifier (>= 1.3.1)
directory_watcher (>= 1.1.1)
liquid (>= 1.9.0)
maruku (>= 0.5.9)
json (1.4.6)
launchy (0.3.7)
configuration (>= 0.0.5)
rake (>= 0.8.1)
liquid (2.2.2)
maruku (0.6.0)
syntax (>= 1.0.0)
open_gem (1.4.2)
launchy (~> 0.3.5)
rack (1.2.1)
rake (0.8.7)
rb-fsevent (0.4.0)
rdiscount (1.6.8)
rubypants (0.2.0)
sass (3.1.0.alpha.252)
serve (1.0.0)
activesupport (~> 3.0.1)
i18n (~> 0.4.1)
rack (~> 1.2.1)
tzinfo (~> 0.3.23)
syntax (1.0.0)
thor (0.14.6)
tzinfo (0.3.24)
PLATFORMS
ruby
DEPENDENCIES
RedCloth
compass (= 0.11.beta.5)
guard-livereload
guard-shell
haml (= 3.1.0.alpha.147)
jekyll
rake
rb-fsevent
rdiscount
rubypants
serve

9
Guardfile

@ -0,0 +1,9 @@
guard 'shell' do
watch(/source\/sass\/(.*)\.s[ac]ss/) {|m| `compass compile` }
watch(%r{public/.+\.(js|html)}) {|m| `compass compile` }
end
guard 'livereload', :api_version => '1.6' do
watch(%r{public/.+\.(css)})
watch(%r{public/.+\.(js|html)})
end

129
Rakefile

@ -2,11 +2,8 @@ require "rubygems"
require "bundler"
Bundler.setup
require 'source/_helpers'
site_url = "http://yoursite.com" # deployed site url for sitemap.xml generator
port = "4000" # preview project port eg. http://localhost:4000
site = "site" # compiled site directory
site = "public" # compiled site directory
source = "source" # source file directory
stash = "_stash" # directory to stash posts for speedy generation
posts = "_posts" # directory for blog files
@ -19,6 +16,7 @@ document_root = "~/document_root/" # for rsync deployment
## -- Github Pages deploy config -- ##
# Read http://pages.github.com for guidance
# You can deploy to github pages with `rake push_github` or change the default push task below to :push_github
# If you're not using this, you can remove it
source_branch = "source" # this compiles to your deploy branch
deploy_branch = "master" # For user pages, use "master" for project pages use "gh-pages"
@ -32,13 +30,13 @@ def ok_failed(condition)
end
end
## if you're deploying with github, change the default deploy to deploy_github
desc "default deploy task"
task :deploy => [:deploy_rsync] do
## if you're deploying with github, change the default deploy to push_github
desc "default push task"
task :push => [:push_rsync] do
end
desc "Generate and deploy task"
task :generate_deploy => [:integrate, :generate, :clean_debug, :deploy] do
task :deploy => [:integrate, :generate, :clean_debug, :push] do
end
desc "generate website in output directory"
@ -49,10 +47,13 @@ end
# usage rake post[my-new-post] or rake post['my new post'] or rake post (defaults to "new-post")
desc "Begin a new post in #{source}/_posts"
task :post, :filename do |t, args|
require './_plugins/titlecase.rb'
args.with_defaults(:filename => 'new-post')
open("#{source}/_posts/#{Time.now.strftime('%Y-%m-%d_%H-%M')}-#{args.filename.downcase.gsub(/[ _]/, '-')}.#{post_format}", 'w') do |post|
open("#{source}/_posts/#{Time.now.strftime('%Y-%m-%d')}-#{args.filename.downcase.gsub(/[ _]/, '-')}.#{post_format}", 'w') do |post|
post.puts "---"
post.puts "title: \"#{args.filename.gsub(/[-_]/, ' ').titlecase}\""
post.puts "date: #{Time.now.strftime('%Y-%m-%d %H:%M')}"
post.puts "layout: post"
post.puts "---"
end
end
@ -98,124 +99,64 @@ end
desc "Generate site files only"
task :generate_site => [:clean, :generate_style] do
puts "\n\n>>> Generating site files <<<"
system "jekyll --pygments"
system "mv #{site}/atom.html #{site}/atom.xml"
end
def rebuild_site(relative)
puts "\n\n>>> Change Detected to: #{relative} <<<"
IO.popen('rake generate_site'){|io| print(io.readpartial(512)) until io.eof?}
puts '>>> Update Complete <<<'
end
def rebuild_style(relative)
puts "\n\n>>> Change Detected to: #{relative} <<<"
IO.popen('rake generate_style'){|io| print(io.readpartial(512)) until io.eof?}
puts '>>> Update Complete <<<'
system "jekyll"
end
desc "Watch the site and regenerate when it changes"
task :watch do
require 'fssm'
puts ">>> Watching for Changes <<<"
FSSM.monitor do
path "#{File.dirname(__FILE__)}/#{source}" do
update {|base, relative| rebuild_site(relative)}
delete {|base, relative| rebuild_site(relative)}
create {|base, relative| rebuild_site(relative)}
end
path "#{File.dirname(__FILE__)}/stylesheets" do
glob '**/*.sass'
update {|base, relative| rebuild_style(relative)}
delete {|base, relative| rebuild_style(relative)}
create {|base, relative| rebuild_style(relative)}
end
end
system "trap 'kill $jekyllPid $guardPid' Exit; guard & guardPid=$!; jekyll --auto & jekyllPid=$!; wait"
end
desc "generate and deploy website via rsync"
multitask :deploy_rsync do
puts ">>> Deploying website to #{site_url} <<<"
multitask :push_rsync do
puts ">>> Deploying website via Rsync <<<"
ok_failed system("rsync -avz --delete #{site}/ #{ssh_user}:#{document_root}")
end
desc "generate and deploy website to github user pages"
multitask :deploy_github do
desc "deploy website to github user pages"
multitask :push_github do
puts ">>> Deploying #{deploy_branch} branch to Github Pages <<<"
require 'git'
repo = Git.open('.')
puts "\n>>> Checking out #{deploy_branch} branch <<<\n"
repo.branch("#{deploy_branch}").checkout
(Dir["*"] - [site]).each { |f| rm_rf(f) }
(Dir["*"] - ["#{site}"]).each { |f| rm_rf(f) }
Dir["#{site}/*"].each {|f| mv(f, ".")}
rm_rf(site)
puts "\n>>> Moving generated site files <<<\n"
rm_rf("#{site}")
puts "\n>>> Moving generated /#{site} files <<<\n"
Dir["**/*"].each {|f| repo.add(f) }
repo.status.deleted.each {|f, s| repo.remove(f)}
puts "\n>>> Commiting: Site updated at #{Time.now.utc} <<<\n"
message = ENV["MESSAGE"] || "Site updated at #{Time.now.utc}"
repo.commit(message)
puts "\n>>> Pushing generated site to #{deploy_branch} branch <<<\n"
puts "\n>>> Pushing generated /#{site} files to #{deploy_branch} branch <<<\n"
repo.push
puts "\n>>> Github Pages deploy complete <<<\n"
repo.branch("#{source_branch}").checkout
end
desc "start up an instance of serve on the output files"
task :start_serve => :stop_serve do
cd "#{site}" do
print "Starting serve..."
system("serve #{port} > /dev/null 2>&1 &")
sleep 1
pid = `ps auxw | awk '/bin\\/serve\\ #{port}/ { print $2 }'`.strip
ok_failed !pid.empty?
system "open http://localhost:#{port}" unless pid.empty?
end
desc "start up a web server on the output files"
task :start_server => :stop_server do
print "Starting serve..."
system("serve #{site} #{port} > /dev/null 2>&1 &")
sleep 1
pid = `ps auxw | awk '/bin\\/serve #{site} #{port}/ { print $2 }'`.strip
ok_failed !pid.empty?
system "open http://localhost:#{port}" unless pid.empty?
end
desc "stop all instances of serve"
task :stop_serve do
pid = `ps auxw | awk '/bin\\/serve\\ #{port}/ { print $2 }'`.strip
desc "stop the web server"
task :stop_server do
pid = `ps auxw | awk '/bin\\/serve #{site} #{port}/ { print $2 }'`.strip
if pid.empty?
puts "Serve is not running"
puts "Adsf is not running"
else
print "Stoping serve..."
print "Stoping adsf..."
ok_failed system("kill -9 #{pid}")
end
end
desc "preview the site in a web browser"
task :preview => [:generate, :start_serve, :watch]
desc "Build an XML sitemap of all html files."
task :sitemap do
html_files = FileList.new("#{site}/**/*.html").map{|f| f[("#{site}".size)..-1]}.map do |f|
if f.ends_with?("index.html")
f[0..(-("index.html".size + 1))]
else
f
end
end.sort_by{|f| f.size}
open("#{site}/sitemap.xml", 'w') do |sitemap|
sitemap.puts %Q{<?xml version="1.0" encoding="UTF-8"?>}
sitemap.puts %Q{<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">}
html_files.each do |f|
priority = case f
when %r{^/$}
1.0
when %r{^/articles}
0.9
else
0.8
end
sitemap.puts %Q{ <url>}
sitemap.puts %Q{ <loc>#{site_url}#{f}</loc>}
sitemap.puts %Q{ <lastmod>#{Time.now.strftime('%Y-%m-%d')}</lastmod>}
sitemap.puts %Q{ <changefreq>weekly</changefreq>}
sitemap.puts %Q{ <priority>#{priority}</priority>}
sitemap.puts %Q{ </url>}
end
sitemap.puts %Q{</urlset>}
puts "Created #{site}/sitemap.xml"
end
task :preview do
system "trap 'kill $servePid $jekyllPid $guardPid' Exit; serve #{site} #{port} > /dev/null 2>&1 & servePid=$!; jekyll --auto & jekyllPid=$!; guard & guardPid=$!; compass compile; open http://localhost:#{port}; wait"
end

31
_config.yml

@ -1,11 +1,28 @@
source: source
destination: site
destination: public
exclude: sass, *.scss
markdown: rdiscount
pygments: true
permalink: /blog/:year/:month/:day/:title
permalink: pretty
url: http://yoursite.com
multiviews: true
sass: false
haml: true
post_defaults:
layout: blog_post
title: My Octopress Blog
author: Your Name
email: you@domain.com #Add your email (optional) for the atom feed
recent_posts: 10
twitter_user: imathis
tweet_count: 3
show_replies: false
delicious_user:
delicious_count: 3
pinboard_user: imathis
pinboard_count: 3
disqus_short_name:
google_custom_search_id:
google_analytics_tracking_id:

46
_plugins/custom_filters.rb

@ -0,0 +1,46 @@
#custom filters for Octopress
module OctopressFilters
def exerpt(input, url, url_text="Reade more&hellip;", permalink_text=false)
if input.index(/<!--\s?more\s?-->/i)
input.split(/<!--\s?more\s?-->/i)[0] + "<p><a href='#{url}'>#{url_text}</a></p>"
elsif permalink_text
input + "<p><a href='#{url}'>#{permalink_text}</a></p>"
else
input
end
end
def full_urls(input, url='')
input.gsub /(\s+(href|src)\s*=\s*["|']{1})(\/[^\"'>]+)/ do
$1+url+$3
end
end
def smart_quotes(input)
require 'rubypants'
RubyPants.new(input).to_html
end
def titlecase(input)
require 'titlecase'
input.titlecase
end
def ordinalize(date)
if date.class == String
date = Time.parse(date)
end
"#{date.strftime('%B')} #{ordinal(date.strftime('%e').to_i)}, #{date.strftime('%Y')}"
end
def ordinal(number)
if (11..13).include?(number.to_i % 100)
"#{number}<span>th</span>"
else
case number.to_i % 10
when 1; "#{number}<span>st</span>"
when 2; "#{number}<span>nd<span>"
when 3; "#{number}<span>rd</span>"
else "#{number}<span>th</span>"
end
end
end
end
Liquid::Template.register_filter OctopressFilters

132
_plugins/generate_sitemap.rb

@ -0,0 +1,132 @@
# Jekyll sitemap page generator.
# http://recursive-design.com/projects/jekyll-plugins/
#
# Version: 0.1.3 (201101061053)
#
# Copyright (c) 2010 Dave Perrett, http://recursive-design.com/
# Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
#
# A generator that creates a sitemap.xml page for jekyll sites, suitable for submission to
# google etc.
#
# To use it, simply drop this script into the _plugins directory of your Jekyll site.
#
# When you compile your jekyll site, this plugin will loop through the list of pages in your
# site, and generate an entry in sitemap.xml for each one.
require 'pathname'
module Jekyll
# Monkey-patch an accessor for a page's containing folder, since
# we need it to generate the sitemap.
class Page
def subfolder
@dir
end
end
# Sub-class Jekyll::StaticFile to allow recovery from unimportant exception
# when writing the sitemap file.
class StaticSitemapFile < StaticFile
def write(dest)
super(dest) rescue ArgumentError
true
end
end
# Generates a sitemap.xml file containing URLs of all pages and posts.
class SitemapGenerator < Generator
safe true
priority :low
# Domain that you are generating the sitemap for - update this to match your site.
BASE_URL = 'http://recursive-design.com'
# Generates the sitemap.xml file.
#
# +site+ is the global Site object.
def generate(site)
# Create the destination folder if necessary.
site_folder = site.config['destination']
unless File.directory?(site_folder)
p = Pathname.new(site_folder)
p.mkdir
end
# Write the contents of sitemap.xml.
File.open(File.join(site_folder, 'sitemap.xml'), 'w') do |f|
f.write(generate_header())
f.write(generate_content(site))
f.write(generate_footer())
f.close
end
# Add a static file entry for the zip file, otherwise Site::cleanup will remove it.
site.static_files << Jekyll::StaticSitemapFile.new(site, site.dest, '/', 'sitemap.xml')
end
private
# Returns the XML header.
def generate_header
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">"
end
# Returns a string containing the the XML entries.
#
# +site+ is the global Site object.
def generate_content(site)
result = ''
# First, try to find any stand-alone pages.
site.pages.each{ |page|
path = page.subfolder + '/' + page.name
mod_date = File.mtime(site.source + path)
# Remove the trailing 'index.html' if there is one, and just output the folder name.
if path=~/index.html$/
path = path[0..-11]
end
unless path =~/error/
result += entry(path, mod_date)
end
}
# Next, find all the posts.
posts = site.site_payload['site']['posts']
for post in posts do
result += entry(post.id, post.date)
end
result
end
# Returns the XML footer.
def generate_footer
"\n</urlset>"
end
# Creates an XML entry from the given path and date.
#
# +path+ is the URL path to the page.
# +date+ is the date the file was modified (in the case of regular pages), or published (for blog posts).
def entry(path, date)
# Force extensions to .html from markdown, textile.
path = path.gsub(/\.(markdown|textile)$/i, '.html')
"
<url>
<loc>#{BASE_URL}#{path}</loc>
<lastmod>#{date.strftime("%Y-%m-%d")}</lastmod>
</url>"
end
end
end

83
_plugins/gist_tag.rb

@ -0,0 +1,83 @@
# Nicked from Brandon Tilly
# Gist https://gist.github.com/803483
# Post http://brandontilley.com/2011/01/31/gist-tag-for-jekyll.html
#
# Example usage: {% gist 803483 gist_tag.rb %} //embeds a gist for this plugin
require 'digest/md5'
require 'net/https'
require 'uri'
module Jekyll
class GistTag < Liquid::Tag
def initialize(tag_name, text, token)
super
system('mkdir -p .gist_cache')
@text = text
@cache = true
@cache_folder = File.expand_path "../.gist_cache", File.dirname(__FILE__)
end
def render(context)
return "" unless @text =~ /([\d]*) (.*)/
gist, file = $1.strip, $2.strip
script_url = "https://gist.github.com/#{gist}.js?file=#{file}"
code = get_cached_gist(gist, file) || get_gist_from_web(gist, file)
code = code.gsub "<", "&lt;"
string = "<script src='#{script_url}'></script>"
string += "<noscript><pre><code>#{code}</code></pre></noscript>"
return string
end
def get_gist_url_for(gist, file)
"https://gist.github.com/raw/#{gist}/#{file}"
end
def cache_gist(gist, file, data)
file = get_cache_file_for gist, file
File.open(file, "w+") do |f|
f.write(data)
end
end
def get_cached_gist(gist, file)
return nil if @cache == false
file = get_cache_file_for gist, file
return nil unless File.exist?(file)
return File.new(file).readlines.join
end
def get_cache_file_for(gist, file)
gist.gsub! /[^a-zA-Z0-9\-_\.]/, ''
file.gsub! /[^a-zA-Z0-9\-_\.]/, ''
md5 = Digest::MD5.hexdigest "#{gist}-#{file}"
File.join @cache_folder, "#{gist}-#{file}-#{md5}.cache"
end
def get_gist_from_web(gist, file)
gist_url = get_gist_url_for(gist, file)
raw_uri = URI.parse(gist_url)
https = Net::HTTP.new(raw_uri.host, raw_uri.port)
https.use_ssl = true
https.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(raw_uri.request_uri)
data = https.request(request)
data = data.body
cache_gist(gist, file, data) unless @cache == false
data
end
end
class GistTagNoCache < GistTag
def initialize(tag_name, text, token)
super
@cache = false
end
end
end
Liquid::Template.register_tag('gist', Jekyll::GistTag)
Liquid::Template.register_tag('gistnocache', Jekyll::GistTagNoCache)

24
_plugins/haml.rb

@ -0,0 +1,24 @@
module Jekyll
require 'haml'
class HamlConverter < Converter
safe true
priority :low
def matches(ext)
ext =~ /haml/i
end
def output_ext(ext)
".html"
end
def convert(content)
begin
engine = Haml::Engine.new(content)
engine.render
rescue StandardError => e
puts "!!! HAML Error: " + e.message
end
end
end
end

36
_plugins/titlecase.rb

@ -0,0 +1,36 @@
class String
def titlecase
small_words = %w(a an and as at but by en for if in of on or the to v v. via vs vs.)
x = split(" ").map do |word|
# note: word could contain non-word characters!
# downcase all small_words, capitalize the rest
small_words.include?(word.gsub(/\W/, "").downcase) ? word.downcase! : word.smart_capitalize!
word
end
# capitalize first and last words
x.first.to_s.smart_capitalize!
x.last.to_s.smart_capitalize!
# small words after colons are capitalized
x.join(" ").gsub(/:\s?(\W*#{small_words.join("|")}\W*)\s/) { ": #{$1.smart_capitalize} " }
end
def titlecase!
replace(titlecase)
end
def smart_capitalize
# ignore any leading crazy characters and capitalize the first real character
if self =~ /^['"\(\[']*([a-z])/
i = index($1)
x = self[i,self.length]
# word with capitals and periods mid-word are left alone
self[i,1] = self[i,1].upcase unless x =~ /[A-Z]/ or x =~ /\.\w+/
end
self
end
def smart_capitalize!
replace(smart_capitalize)
end
end

13
config.rb

@ -1,10 +1,13 @@
# Require any additional compass plugins here.
require 'compass-colors'
project_type = :stand_alone
# Set this to the root of your project when deployed:
http_path = "/"
css_dir = "site/stylesheets"
sass_dir = "stylesheets"
css_dir = "public/stylesheets"
sass_dir = "source/sass"
images_dir = "source/images"
images_dir = "source/images/"
http_images_path = "/images"
http_images_dir = "images"
fonts_dir = "source/fonts"
http_fonts_dir = "fonts"
line_comments = false
output_style = :compressed

123
public/2009/11/13/hello-world/index.html

@ -0,0 +1,123 @@
<!DOCTYPE html>
<html>
<head>
<title>Hello World! I'm Octopress! - My Octopress Blog</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
<script src="/javascripts/mootools-yui-compressed.js" type="text/javascript"></script>
<script src="/javascripts/mootools-more-1.3.1.1.js" type="text/javascript"></script>
<script src="/javascripts/octopress.js" type="text/javascript"></script>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<meta name="viewport" content="initial-scale=1.0 width=device-width">
<script>
var twitter_user = "imathis";
var show_replies = false;
var tweet_count = 3;
</script>
<script src="/javascripts/twitter.js" type="text/javascript"></script>
<link href="/atom.xml" rel="alternate" title="My Octopress Blog" type="application/atom+xml"/>
</head>
<body id="">
<header><div><h1><a href="/">My Octopress Blog</a></h1>
</div></header>
<nav id="nav"><div><ul>
<li><a href="/">Blog</a></li>
<li><a href="/about/">About</a></li>
<li class="subscribe"><a href="/atom.xml">Subscribe</a></li>
</ul>
</div></nav>
<div id="page">
<div>
<div id="main"><article><article>
<header>
<p>
<time>November 13<span>th</span>, 2009</time>
<span class="byline"><em>by</em> <span class="author">Your Name</span></span>
</p>
<h1><a href="/2009/11/13/hello-world/">Hello World! I'm Octopress!</a></h1>
</header>
<div class="entry"><p><strong>Octopress is a blogging framework designed for hackers</strong>, based on <a href="http://github.com/mojombo/jekyll">Jekyll</a> the blog aware static site generator powering <a href="http://pages.github.com/">Github pages</a>.
If you don&#8217;t know what Jekyll is, <a href="http://metajack.im/2009/01/23/blogging-with-git-emacs-and-jekyll/">Jack Moffitt</a> wrote a good summary:</p>
<blockquote><p>Jekyll is a static blog generator; it transforms a directory of input files into another directory of files suitable for a blog. The management of the blog is handled by standard, familiar tools like creating and renaming files, the text editor of your choice, and version control.</p></blockquote>
<p><cite><strong>Jack Moffitt</strong> <a href="http://metajack.im/2009/01/23/blogging-with-git-emacs-and-jekyll/">Blogging with Git Emacs and Jekyll</a></cite></p>
<p>There&#8217;s no database to set up, and you get to use tools like Emacs, Vim, or TextMate to write your posts, not some lame in-browser text editor. Just write, generate, deploy, using the same tools and patterns you already use for your daily work.</p>
<p><a href="http://wiki.github.com/imathis/octopress/">Read the wiki to learn more</a></p>
</div>
<p class="updated"><em>updated</em> <time>March 10<span>th</span>, 2010</time></p>
</article>
</article></div>
<aside><h4>About Me</h4>
<p> Yo everybody! </p>
<section>
<h4>Recent Posts</h4>
<ul id="recent_posts">
<li class="post">
<a href="/2011/04/07/test-of-typography/">Test of Typography</a>
<time>April 07, 2011</time>
</li>
<li class="post">
<a href="/2011/03/14/test-post/">Test Post</a>
<time>March 14, 2011</time>
</li>
<li class="post">
<a href="/2009/11/13/hello-world/">Hello World! I'm Octopress!</a>
<time>November 13, 2009</time>
</li>
</ul>
</section>
<section><h4>On Twitter</h4>
<ul id="tweets">
Status updating...
</ul>
<p>Follow <a href="http://twitter.com/#{page.twitter_user}">@imathis</a></p>
</section>
<section><h4>My Pinboard</h4>
<ul id="pinboard_linkroll">Fetching linkroll...</ul>
<p><a href="http://pinboard.in/u:imathis">My Pinboard Bookmarks &raquo;</a></p>
</section>
</aside>
</div>
</div>
<footer><div><p>
Copyright &copy; 2011 - Your Name -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
<script language="javascript">
var pinboard_user = "imathis";
var pinboard_count = "3";
</script>
<script language="javascript" src="/javascripts/pinboard.js"></script>
</div></footer>
</body>
</html>

114
public/2011/03/14/test-post/index.html

@ -0,0 +1,114 @@
<!DOCTYPE html>
<html>
<head>
<title>Test Post - My Octopress Blog</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
<script src="/javascripts/mootools-yui-compressed.js" type="text/javascript"></script>
<script src="/javascripts/mootools-more-1.3.1.1.js" type="text/javascript"></script>
<script src="/javascripts/octopress.js" type="text/javascript"></script>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<meta name="viewport" content="initial-scale=1.0 width=device-width">
<script>
var twitter_user = "imathis";
var show_replies = false;
var tweet_count = 3;
</script>
<script src="/javascripts/twitter.js" type="text/javascript"></script>
<link href="/atom.xml" rel="alternate" title="My Octopress Blog" type="application/atom+xml"/>
</head>
<body id="">
<header><div><h1><a href="/">My Octopress Blog</a></h1>
</div></header>
<nav id="nav"><div><ul>
<li><a href="/">Blog</a></li>
<li><a href="/about/">About</a></li>
<li class="subscribe"><a href="/atom.xml">Subscribe</a></li>
</ul>
</div></nav>
<div id="page">
<div>
<div id="main"><article><article>
<header>
<p>
<time>March 14<span>th</span>, 2011</time>
<span class="byline"><em>by</em> <span class="author">Your Name</span></span>
</p>
<h1><a href="/2011/03/14/test-post/">Test Post</a></h1>
</header>
<div class="entry"><p>This is a test!</p>
</div>
</article>
</article></div>
<aside><h4>About Me</h4>
<p> Yo everybody! </p>
<section>
<h4>Recent Posts</h4>
<ul id="recent_posts">
<li class="post">
<a href="/2011/04/07/test-of-typography/">Test of Typography</a>
<time>April 07, 2011</time>
</li>
<li class="post">
<a href="/2011/03/14/test-post/">Test Post</a>
<time>March 14, 2011</time>
</li>
<li class="post">
<a href="/2009/11/13/hello-world/">Hello World! I'm Octopress!</a>
<time>November 13, 2009</time>
</li>
</ul>
</section>
<section><h4>On Twitter</h4>
<ul id="tweets">
Status updating...
</ul>
<p>Follow <a href="http://twitter.com/#{page.twitter_user}">@imathis</a></p>
</section>
<section><h4>My Pinboard</h4>
<ul id="pinboard_linkroll">Fetching linkroll...</ul>
<p><a href="http://pinboard.in/u:imathis">My Pinboard Bookmarks &raquo;</a></p>
</section>
</aside>
</div>
</div>
<footer><div><p>
Copyright &copy; 2011 - Your Name -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
<script language="javascript">
var pinboard_user = "imathis";
var pinboard_count = "3";
</script>
<script language="javascript" src="/javascripts/pinboard.js"></script>
</div></footer>
</body>
</html>

164
public/2011/04/07/test-of-typography/index.html

@ -0,0 +1,164 @@
<!DOCTYPE html>
<html>
<head>
<title>Test of Typography - My Octopress Blog</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
<script src="/javascripts/mootools-yui-compressed.js" type="text/javascript"></script>
<script src="/javascripts/mootools-more-1.3.1.1.js" type="text/javascript"></script>
<script src="/javascripts/octopress.js" type="text/javascript"></script>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<meta name="viewport" content="initial-scale=1.0 width=device-width">
<script>
var twitter_user = "imathis";
var show_replies = false;
var tweet_count = 3;
</script>
<script src="/javascripts/twitter.js" type="text/javascript"></script>
<link href="/atom.xml" rel="alternate" title="My Octopress Blog" type="application/atom+xml"/>
</head>
<body id="">
<header><div><h1><a href="/">My Octopress Blog</a></h1>
</div></header>
<nav id="nav"><div><ul>
<li><a href="/">Blog</a></li>
<li><a href="/about/">About</a></li>
<li class="subscribe"><a href="/atom.xml">Subscribe</a></li>
</ul>
</div></nav>
<div id="page">
<div>
<div id="main"><article><article>
<header>
<p>
<time>April 7<span>th</span>, 2011</time>
<span class="byline"><em>by</em> <span class="author">Your Name</span></span>
</p>
<h1><a href="/2011/04/07/test-of-typography/">Test of Typography</a></h1>
</header>
<div class="entry"><p>In the past I&#8217;ve always designed my own business cards, printed them on expensive card stock, and hand-cut them with an X-Acto knife. My cards were way nicer than those my clients had gotten <em>professionally</em> printed with bubbly ink, no-bleed designs, and cheap paper. Though I put tremendous care into my cards, I never was happy with the design.</p>
<h2>Why Have Business Cards?</h2>
<p>I&#8217;m rarely asked for my business card except when I attend conferences, of which I attend one or two each year. As a freelance contractor, I leave work by walking twenty-five feet from my office to the couch. Many of the
people I work for I&#8217;ve never met in-person.</p>
<p>When someone gives me their business card, I read it, pocket it, and eventually throw it out &mdash; sometimes before I remember to copy the information to my address book (sorry, just being honest). The reality is, with the ubiquity of the internet and with frictionless social networks like Twitter, I can connect with people immediately. So why have business cards?</p>
<!-- more -->
<h3>Inspiration Demands Action</h3>
<p>In one of our campfire chats <a href="http://twitter.com/NTalbott">Nathaniel Talbott</a> showed off his business cards which he printed through <a href="http://moo.com">Moo</a>. They were half the size of regular business cards featuring the company logo on the front, and the url on the back. The unique size of the card intrigued me, and days later I couldn&#8217;t stop thinking about designing a set of mini-cards for myself.</p>
<p><img src="/content/blog/2010/cards/box.jpg" alt="cards in a box" width="300px" class="right"/> Moo&#8217;s <a href="http://moo.com/products/minicards.php">MiniCard&#8217;s</a> are very unique. You can print 100 cards, each with a totally different back. With a typical printing service this would be prohibitively expensive, but with Moo the rules are different. This freedom encourages us to go beyond nicely styled contact information and branding. Some clever uses involve offering unique invite codes for a web application, or sharing a photography portfolio with Moo&#8217;s Flickr import feature.</p>
<p>I realized that I could print several design iterations and decide later which worked best. Without the pressure to choose a single design, I felt the freedom to create.</p>
<h3>The Freedom to Fail</h3>
<p><img src="/content/blog/2010/cards/concepts.jpg" alt="card concepts" width="270px" class="left"/> I could be cheeky and print up half of my cards with my logo on one side and only my Twitter name on the other. For less than $20 for 100 cards, I wasn&#8217;t even concerned about possibly screwing up a whole batch. So that&#8217;s what I did. I designed cards that were good enough and I printed them. If the cards did&#8217;t turn out how I wanted them to, I could improve and print again.</p>
<p><img src="/content/blog/2010/cards/handout.jpg" alt="handout cards" width="220px" class="right"/> The process was fun and simple, and as soon as I finished, I wanted to do it again. When my cards arrived, I was absolutely delighted by the print quality and the care put into their presentation. Smartly Moo even included some beautiful promotional cards to hand out when people inevitably ask about mine.</p>
<h3>A Second Iteration</h3>
<p>After holding the finished product, I began to see how my design could be improved. I learned that Gill Sans is harder to read at a small size in a high contrast print, so I switched to Futura. I showed my cards to some far-sighted friends and adjusted my font size accordingly. I discarded a background gradient (which I should have known wouldn&#8217;t translate well to print) in favor of a solid color. <strong>Sidenote:</strong> On screen, gradients emulate the subtleties of a natural light source, but on a real object it doesn&#8217;t make sense and generally looks bad.</p>
<p>I changed my approach choosing a single design with multiple color variations. In the promotional cards Moo sent me, I learned that they do a fantastic job with bright colors and I wanted to use that boldness in my design. I was inspired by what <a href="http://sethgodin.typepad.com/seths_blog/2009/07/welcome-to-island-marketing.html">Seth Godin said</a>:</p>
<blockquote><p>Every interaction is both precious and an opportunity to delight.</p></blockquote>
<p><img src="/content/blog/2010/cards/holder.jpg" alt="MiniCard Holder" width="220px" class="right"/> I pictured sliding a card out of my <a href="http://moo.com/products/accessories/holders/moo_minicard_holders">MiniCard Holder</a> and revealing another brightly-colored card beneath. As I hand someone a card they&#8217;ll see the flash of color and realize that their card was special, and different from my other cards. That&#8217;s what I want my clients and future clients to feel.</p>
<h3>The Final Design</h3>
<p><img src="/content/blog/2010/cards/all.jpg" alt="all card designs" width="640px"/></p>
<p>The MiniCard&#8217;s unique constraints inspired me with a fresh challenge and their pricing model encouraged me to experiment. Instead of treating business cards like a necessary design task, I saw them as a opportunity to release quickly, fail cheaply, and improve. Now when I give someone a business card, it&#8217;s something valuable to me, and I hope they&#8217;re delighted.</p>
<p><strong>Update:</strong> I thought I&#8217;d share some other great uses of Moo&#8217;s MiniCards. There&#8217;s a fantastic <a href="http://www.flickr.com/groups/moo/pool/">Flikr pool</a>, but here are some of my favorites. Enjoy:</p>
<ul>
<li><a href="http://www.flickr.com/photos/lushlampwork/4131018201/in/pool-moo">Product</a> <a href="http://www.flickr.com/photos/lushlampwork/4297224179/in/pool-moo">tags</a></li>
<li><a href="http://www.flickr.com/photos/thisiswoly/4206576342/in/pool-moo">Photography</a> or <a href="http://www.flickr.com/photos/lesleybarnes/4276368956/in/pool-moo">art</a> <a href="http://www.flickr.com/photos/playinprogress/4158223112/in/pool-moo">portfolios</a></li>
<li><a href="http://www.flickr.com/photos/polkadotcreations/4167249758/in/pool-moo">Gift</a> <a href="http://www.flickr.com/photos/22338102@N04/4278114745/in/pool-moo">tags</a></li>
<li><a href="http://www.flickr.com/photos/bcome/4177034036/in/pool-moo">An advent calendar</a></li>
</ul>
</div>
</article>
</article></div>
<aside><h4>About Me</h4>
<p> Yo everybody! </p>
<section>
<h4>Recent Posts</h4>
<ul id="recent_posts">
<li class="post">
<a href="/2011/04/07/test-of-typography/">Test of Typography</a>
<time>April 07, 2011</time>
</li>
<li class="post">
<a href="/2011/03/14/test-post/">Test Post</a>
<time>March 14, 2011</time>
</li>
<li class="post">
<a href="/2009/11/13/hello-world/">Hello World! I'm Octopress!</a>
<time>November 13, 2009</time>
</li>
</ul>
</section>
<section><h4>On Twitter</h4>
<ul id="tweets">
Status updating...
</ul>
<p>Follow <a href="http://twitter.com/#{page.twitter_user}">@imathis</a></p>
</section>
<section><h4>My Pinboard</h4>
<ul id="pinboard_linkroll">Fetching linkroll...</ul>
<p><a href="http://pinboard.in/u:imathis">My Pinboard Bookmarks &raquo;</a></p>
</section>
</aside>
</div>
</div>
<footer><div><p>
Copyright &copy; 2011 - Your Name -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
<script language="javascript">
var pinboard_user = "imathis";
var pinboard_count = "3";
</script>
<script language="javascript" src="/javascripts/pinboard.js"></script>
</div></footer>
</body>
</html>

103
public/about/index.html

@ -0,0 +1,103 @@
<!DOCTYPE html>
<html>
<head>
<title>About Me - My Octopress Blog</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
<script src="/javascripts/mootools-yui-compressed.js" type="text/javascript"></script>
<script src="/javascripts/mootools-more-1.3.1.1.js" type="text/javascript"></script>
<script src="/javascripts/octopress.js" type="text/javascript"></script>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<meta name="viewport" content="initial-scale=1.0 width=device-width">
<script>
var twitter_user = "imathis";
var show_replies = false;
var tweet_count = 3;
</script>
<script src="/javascripts/twitter.js" type="text/javascript"></script>
<link href="/atom.xml" rel="alternate" title="My Octopress Blog" type="application/atom+xml"/>
</head>
<body id="">
<header><div><h1><a href="/">My Octopress Blog</a></h1>
</div></header>
<nav id="nav"><div><ul>
<li><a href="/">Blog</a></li>
<li><a href="/about/">About</a></li>
<li class="subscribe"><a href="/atom.xml">Subscribe</a></li>
</ul>
</div></nav>
<div id="page">
<div>
<div id="main"><article><!-- use the :mardown filter if you want to write pages with Markdown -->
<h1>About Me</h1>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum.</p>
<p>Ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt.</p>
<p>Dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent.</p>
</article></div>
<aside><h4>About Me</h4>
<p> Yo everybody! </p>
<section>
<h4>Recent Posts</h4>
<ul id="recent_posts">
<li class="post">
<a href="/2011/04/07/test-of-typography/">Test of Typography</a>
<time>April 07, 2011</time>
</li>
<li class="post">
<a href="/2011/03/14/test-post/">Test Post</a>
<time>March 14, 2011</time>
</li>
<li class="post">
<a href="/2009/11/13/hello-world/">Hello World! I'm Octopress!</a>
<time>November 13, 2009</time>
</li>
</ul>
</section>
<section><h4>On Twitter</h4>
<ul id="tweets">
Status updating...
</ul>
<p>Follow <a href="http://twitter.com/#{page.twitter_user}">@imathis</a></p>
</section>
<section><h4>My Pinboard</h4>
<ul id="pinboard_linkroll">Fetching linkroll...</ul>
<p><a href="http://pinboard.in/u:imathis">My Pinboard Bookmarks &raquo;</a></p>
</section>
</aside>
</div>
</div>
<footer><div><p>
Copyright &copy; 2011 - Your Name -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
<script language="javascript">
var pinboard_user = "imathis";
var pinboard_count = "3";
</script>
<script language="javascript" src="/javascripts/pinboard.js"></script>
</div></footer>
</body>
</html>

103
public/atom.xml

@ -0,0 +1,103 @@
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title></title>
<link href="http://yoursite.com/atom.xml" rel="self"/>
<link href="http://yoursite.com/"/>
<updated>2011-04-11T16:23:20-05:00</updated>
<id>http://yoursite.com/</id>
<author>
<name>Your Name</name>
<email>you@domain.com</email>
</author>
<entry>
<title>Test of Typography</title>
<link href="http://yoursite.com/2011/04/07/test-of-typography/"/>
<updated>2011-04-07T19:17:00-05:00</updated>
<id>http://yoursite.com/2011/04/07/test-of-typography</id>
<content type="html">&lt;p&gt;In the past I've always designed my own business cards, printed them on expensive card stock, and hand-cut them with an X-Acto knife. My cards were way nicer than those my clients had gotten &lt;em&gt;professionally&lt;/em&gt; printed with bubbly ink, no-bleed designs, and cheap paper. Though I put tremendous care into my cards, I never was happy with the design.&lt;/p&gt;
&lt;h2&gt;Why Have Business Cards?&lt;/h2&gt;
&lt;p&gt;I'm rarely asked for my business card except when I attend conferences, of which I attend one or two each year. As a freelance contractor, I leave work by walking twenty-five feet from my office to the couch. Many of the
people I work for I've never met in-person.&lt;/p&gt;
&lt;p&gt;When someone gives me their business card, I read it, pocket it, and eventually throw it out &amp;mdash; sometimes before I remember to copy the information to my address book (sorry, just being honest). The reality is, with the ubiquity of the internet and with frictionless social networks like Twitter, I can connect with people immediately. So why have business cards?&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h3&gt;Inspiration Demands Action&lt;/h3&gt;
&lt;p&gt;In one of our campfire chats &lt;a href=&quot;http://twitter.com/NTalbott&quot;&gt;Nathaniel Talbott&lt;/a&gt; showed off his business cards which he printed through &lt;a href=&quot;http://moo.com&quot;&gt;Moo&lt;/a&gt;. They were half the size of regular business cards featuring the company logo on the front, and the url on the back. The unique size of the card intrigued me, and days later I couldn't stop thinking about designing a set of mini-cards for myself.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://yoursite.com/content/blog/2010/cards/box.jpg&quot; alt=&quot;cards in a box&quot; width=&quot;300px&quot; class=&quot;right&quot;/&gt; Moo's &lt;a href=&quot;http://moo.com/products/minicards.php&quot;&gt;MiniCard's&lt;/a&gt; are very unique. You can print 100 cards, each with a totally different back. With a typical printing service this would be prohibitively expensive, but with Moo the rules are different. This freedom encourages us to go beyond nicely styled contact information and branding. Some clever uses involve offering unique invite codes for a web application, or sharing a photography portfolio with Moo's Flickr import feature.&lt;/p&gt;
&lt;p&gt;I realized that I could print several design iterations and decide later which worked best. Without the pressure to choose a single design, I felt the freedom to create.&lt;/p&gt;
&lt;h3&gt;The Freedom to Fail&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;http://yoursite.com/content/blog/2010/cards/concepts.jpg&quot; alt=&quot;card concepts&quot; width=&quot;270px&quot; class=&quot;left&quot;/&gt; I could be cheeky and print up half of my cards with my logo on one side and only my Twitter name on the other. For less than $20 for 100 cards, I wasn't even concerned about possibly screwing up a whole batch. So that's what I did. I designed cards that were good enough and I printed them. If the cards did't turn out how I wanted them to, I could improve and print again.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://yoursite.com/content/blog/2010/cards/handout.jpg&quot; alt=&quot;handout cards&quot; width=&quot;220px&quot; class=&quot;right&quot;/&gt; The process was fun and simple, and as soon as I finished, I wanted to do it again. When my cards arrived, I was absolutely delighted by the print quality and the care put into their presentation. Smartly Moo even included some beautiful promotional cards to hand out when people inevitably ask about mine.&lt;/p&gt;
&lt;h3&gt;A Second Iteration&lt;/h3&gt;
&lt;p&gt;After holding the finished product, I began to see how my design could be improved. I learned that Gill Sans is harder to read at a small size in a high contrast print, so I switched to Futura. I showed my cards to some far-sighted friends and adjusted my font size accordingly. I discarded a background gradient (which I should have known wouldn't translate well to print) in favor of a solid color. &lt;strong&gt;Sidenote:&lt;/strong&gt; On screen, gradients emulate the subtleties of a natural light source, but on a real object it doesn't make sense and generally looks bad.&lt;/p&gt;
&lt;p&gt;I changed my approach choosing a single design with multiple color variations. In the promotional cards Moo sent me, I learned that they do a fantastic job with bright colors and I wanted to use that boldness in my design. I was inspired by what &lt;a href=&quot;http://sethgodin.typepad.com/seths_blog/2009/07/welcome-to-island-marketing.html&quot;&gt;Seth Godin said&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Every interaction is both precious and an opportunity to delight.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;http://yoursite.com/content/blog/2010/cards/holder.jpg&quot; alt=&quot;MiniCard Holder&quot; width=&quot;220px&quot; class=&quot;right&quot;/&gt; I pictured sliding a card out of my &lt;a href=&quot;http://moo.com/products/accessories/holders/moo_minicard_holders&quot;&gt;MiniCard Holder&lt;/a&gt; and revealing another brightly-colored card beneath. As I hand someone a card they'll see the flash of color and realize that their card was special, and different from my other cards. That's what I want my clients and future clients to feel.&lt;/p&gt;
&lt;h3&gt;The Final Design&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;http://yoursite.com/content/blog/2010/cards/all.jpg&quot; alt=&quot;all card designs&quot; width=&quot;640px&quot;/&gt;&lt;/p&gt;
&lt;p&gt;The MiniCard's unique constraints inspired me with a fresh challenge and their pricing model encouraged me to experiment. Instead of treating business cards like a necessary design task, I saw them as a opportunity to release quickly, fail cheaply, and improve. Now when I give someone a business card, it's something valuable to me, and I hope they're delighted.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; I thought I'd share some other great uses of Moo's MiniCards. There's a fantastic &lt;a href=&quot;http://www.flickr.com/groups/moo/pool/&quot;&gt;Flikr pool&lt;/a&gt;, but here are some of my favorites. Enjoy:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.flickr.com/photos/lushlampwork/4131018201/in/pool-moo&quot;&gt;Product&lt;/a&gt; &lt;a href=&quot;http://www.flickr.com/photos/lushlampwork/4297224179/in/pool-moo&quot;&gt;tags&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.flickr.com/photos/thisiswoly/4206576342/in/pool-moo&quot;&gt;Photography&lt;/a&gt; or &lt;a href=&quot;http://www.flickr.com/photos/lesleybarnes/4276368956/in/pool-moo&quot;&gt;art&lt;/a&gt; &lt;a href=&quot;http://www.flickr.com/photos/playinprogress/4158223112/in/pool-moo&quot;&gt;portfolios&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.flickr.com/photos/polkadotcreations/4167249758/in/pool-moo&quot;&gt;Gift&lt;/a&gt; &lt;a href=&quot;http://www.flickr.com/photos/22338102@N04/4278114745/in/pool-moo&quot;&gt;tags&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.flickr.com/photos/bcome/4177034036/in/pool-moo&quot;&gt;An advent calendar&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
</entry>
<entry>
<title>Test Post</title>
<link href="http://yoursite.com/2011/03/14/test-post/"/>
<updated>2011-03-14T00:00:00-05:00</updated>
<id>http://yoursite.com/2011/03/14/test-post</id>
<content type="html">&lt;p&gt;This is a test!&lt;/p&gt;
</content>
</entry>
<entry>
<title>Hello World! I'm Octopress!</title>
<link href="http://yoursite.com/2009/11/13/hello-world/"/>
<updated>2009-11-13T00:00:00-06:00</updated>
<id>http://yoursite.com/2009/11/13/hello-world</id>
<content type="html">&lt;p&gt;&lt;strong&gt;Octopress is a blogging framework designed for hackers&lt;/strong&gt;, based on &lt;a href=&quot;http://github.com/mojombo/jekyll&quot;&gt;Jekyll&lt;/a&gt; the blog aware static site generator powering &lt;a href=&quot;http://pages.github.com/&quot;&gt;Github pages&lt;/a&gt;.
If you don't know what Jekyll is, &lt;a href=&quot;http://metajack.im/2009/01/23/blogging-with-git-emacs-and-jekyll/&quot;&gt;Jack Moffitt&lt;/a&gt; wrote a good summary:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Jekyll is a static blog generator; it transforms a directory of input files into another directory of files suitable for a blog. The management of the blog is handled by standard, familiar tools like creating and renaming files, the text editor of your choice, and version control.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;cite&gt;&lt;strong&gt;Jack Moffitt&lt;/strong&gt; &lt;a href=&quot;http://metajack.im/2009/01/23/blogging-with-git-emacs-and-jekyll/&quot;&gt;Blogging with Git Emacs and Jekyll&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;There's no database to set up, and you get to use tools like Emacs, Vim, or TextMate to write your posts, not some lame in-browser text editor. Just write, generate, deploy, using the same tools and patterns you already use for your daily work.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://wiki.github.com/imathis/octopress/&quot;&gt;Read the wiki to learn more&lt;/a&gt;&lt;/p&gt;
</content>
</entry>
</feed>

BIN
public/fonts/adellebasic_bold-webfont.eot

Binary file not shown.

139
public/fonts/adellebasic_bold-webfont.svg

@ -0,0 +1,139 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>
This is a custom SVG webfont generated by Font Squirrel.
Copyright : Copyright c 2009 by TypeTogether All rights reserved
Designer : Veronika Burian Jos Scaglione
Foundry : TypeTogether
Foundry URL : wwwtypetogethercom
</metadata>
<defs>
<font id="webfontKykxqSyz" horiz-adv-x="1167" >
<font-face units-per-em="2048" ascent="1546" descent="-502" />
<missing-glyph horiz-adv-x="413" />
<glyph unicode=" " horiz-adv-x="413" />
<glyph unicode="&#x09;" horiz-adv-x="413" />
<glyph unicode="&#xa0;" horiz-adv-x="413" />
<glyph unicode="!" horiz-adv-x="569" d="M414 401h-258l-37 719v363h330v-363zM461 135q0 -160 -176 -160t-176 160t176 160t176 -160z" />
<glyph unicode="&#x22;" horiz-adv-x="825" d="M358 915h-276v531h276v-531zM743 915h-276v531h276v-531z" />
<glyph unicode="#" horiz-adv-x="1243" d="M831 0h-210l34 248h-176l-37 -248h-213l37 248h-205l45 207h193l35 231h-205l43 209h193l32 217h213l-32 -217h176l32 217h213l-32 -217h207l-41 -209h-197l-35 -231h207l-41 -207h-199zM688 455l35 231h-176l-37 -231h178z" />
<glyph unicode="$" horiz-adv-x="1083" d="M999 399q0 -158 -85 -254t-234 -129v-180h-254v166q-227 10 -356 74v327h223l26 -143q4 -23 11.5 -31t27.5 -14q51 -18 152 -18q207 0 207 145q0 72 -65.5 114t-159 66.5t-186.5 58t-158.5 113.5t-65.5 209q0 160 93 256t251 129v160h256v-150q152 -10 293 -59v-350 l-225 22l-25 136q-6 35 -41 45q-41 10 -117 10q-203 0 -202 -137q0 -68 65.5 -109t158.5 -67.5t186 -61.5t158.5 -118t65.5 -210z" />
<glyph unicode="%" horiz-adv-x="1818" d="M410 526q-182 0 -263 99.5t-81 261.5q0 180 90 281.5t270 101.5q342 0 342 -357q0 -180 -91 -283.5t-267 -103.5zM662 -35h-285l772 1307h283zM420 694q61 0 89 51.5t28 159.5q0 100 -27 147.5t-88 47.5q-121 0 -121 -199q0 -207 119 -207zM1395 -25q-182 0 -263 99.5 t-81 261.5q0 180 90 281.5t270 101.5q342 0 342 -357q0 -180 -91 -283.5t-267 -103.5zM1402.5 143q63.5 0 90.5 50.5t27 160.5q0 100 -26 147.5t-89 47.5q-119 0 -119 -199q0 -106 26.5 -156.5t90 -50.5z" />
<glyph unicode="&#x26;" horiz-adv-x="1470" d="M1409 0h-346l-113 131q-166 -156 -413 -156q-211 0 -338 112t-127 310q0 295 295 418q-76 119 -76 238q0 156 109.5 247t285.5 91q104 0 206.5 -28t158.5 -63v-321l-220 8l-24 137q-4 25 -29 33q-27 8 -73 8q-59 0 -90 -30.5t-31 -81.5q0 -86 112 -217l230 -271 q29 88 47 228h352v-158l-94 -19q-18 -4 -25.5 -9t-9.5 -25q-29 -133 -76 -232l129 -147q18 -23 39 -25l121 -18v-160zM784 317l-270 308q-145 -61 -145 -213q0 -82 47 -136.5t145 -54.5q135 0 223 96z" />
<glyph unicode="'" horiz-adv-x="442" d="M358 915h-276v531h276v-531z" />
<glyph unicode="(" horiz-adv-x="729" d="M655 -221l-235 -133q-145 190 -239.5 429.5t-94.5 497.5q0 485 352 951l232 -138q-131 -195 -192.5 -388t-61.5 -425q0 -238 59 -413.5t180 -380.5z" />
<glyph unicode=")" horiz-adv-x="729" d="M297 -354l-231 135q125 190 187 380.5t62 428.5q0 231 -59 412.5t-186 386.5l233 135q147 -188 243.5 -433t96.5 -501q0 -483 -346 -944z" />
<glyph unicode="*" horiz-adv-x="976" d="M342 782l-174 129l88 115l178 115l-213 -8l-137 45l70 204l137 -45l162 -133l-74 199v143h215v-143l-72 -199h-69l-19 -63l53 -41l-59 -201zM809 911l-174 -129l-86 117l-62 201l56 41l-21 63l164 133l137 45l68 -204l-137 -45l-211 8l178 -115z" />
<glyph unicode="+" d="M705 248h-246v295h-273v237h273v287h246v-287h274v-237h-274v-295z" />
<glyph unicode="," horiz-adv-x="516" d="M281 -244l-140 41l56 219q6 18 -11 25l-84 29l45 221q141 -2 214 -33t73 -127q0 -55 -43 -141z" />
<glyph unicode="-" horiz-adv-x="636" d="M596 465h-555v260h555v-260z" />
<glyph unicode="." horiz-adv-x="555" d="M453 135q0 -160 -174 -160q-176 0 -176.5 160t176.5 160q174 0 174 -160z" />
<glyph unicode="/" horiz-adv-x="929" d="M315 -188h-292l575 1734h291z" />
<glyph unicode="0" horiz-adv-x="1232" d="M606 -25q-291 0 -409.5 160t-118.5 459q0 616 553 616q287 0 405.5 -155.5t118.5 -444.5q0 -305 -128 -470t-421 -165zM618 195q113 0 161 93t48 310q0 213 -45 301t-157 88q-117 0 -167 -92t-50 -305q0 -211 46.5 -303t163.5 -92z" />
<glyph unicode="1" horiz-adv-x="831" d="M791 0h-719v162l176 14q20 2 26.5 9.5t6.5 31.5v715q0 35 -27 43l-178 37l22 168h492v-963q0 -25 5 -32t28 -9l168 -14v-162z" />
<glyph unicode="2" horiz-adv-x="1073" d="M1012 0h-946v190l274 269q129 125 175 173t83 108.5t37 117.5q0 131 -146 131q-88 0 -123.5 -38t-35.5 -144l-279 24q2 379 465 379q430 0 430 -327q0 -90 -45 -178.5t-92 -139.5t-145 -145l-232 -221h301q29 0 33 24l29 162h217v-385z" />
<glyph unicode="3" horiz-adv-x="1062" d="M723 551v-8q270 -41 270 -316q0 -197 -134 -297t-361 -100q-154 0 -285 50t-211 138l164 181q139 -135 307 -136q213 0 213 185q0 176 -205 176q-66 0 -151 -14v204l100 13q227 29 227 221q0 141 -149 141q-88 0 -126 -39t-38 -143l-281 24q0 379 459 379 q229 0 332.5 -85t103.5 -255q0 -123 -66.5 -205.5t-168.5 -113.5z" />
<glyph unicode="4" horiz-adv-x="1140" d="M934 -137h-283v264h-598v211l420 879l268 -123l-387 -727h297v329l283 43v-372h170v-240h-170v-264z" />
<glyph unicode="5" horiz-adv-x="1110" d="M942 922h-543l-28 -281q106 70 260 70q184 0 289.5 -106.5t105.5 -311.5q0 -199 -133 -331t-371 -132q-340 0 -516 188l164 187q139 -139 326 -139q96 0 158.5 56t62.5 161q0 113 -57.5 155.5t-133.5 42.5q-113 0 -196 -88l-203 84l45 703h535q20 0 26 24l27 113l182 12 v-407z" />
<glyph unicode="6" horiz-adv-x="1157" d="M1067 1004l-289 -35q0 92 -31.5 126.5t-113.5 34.5q-217 0 -230 -382q135 80 287 79q184 0 292 -100t108 -295q0 -229 -134.5 -343t-357.5 -114q-145 0 -246.5 50.5t-158 145.5t-81 211t-24.5 267q0 121 25.5 232.5t83 220t171 174t271.5 65.5q428 1 428 -337zM403 543 q2 -74 10.5 -126t28 -105.5t60.5 -82t102 -28.5q172 0 172 217q0 104 -37 147t-129 43q-101 1 -207 -65z" />
<glyph unicode="7" horiz-adv-x="1089" d="M625 -137h-326q53 625 446 1059h-391q-14 0 -18 -5.5t-8 -21.5l-33 -172l-215 -16v473h989v-232q-186 -199 -311 -491.5t-133 -593.5z" />
<glyph unicode="8" horiz-adv-x="1105" d="M823 696q215 -123 215 -325q0 -193 -139 -294.5t-367 -101.5q-223 0 -343.5 90.5t-120.5 264.5q0 111 51 192.5t143 157.5q-152 104 -151 281q0 182 124.5 281t323.5 99q201 0 313.5 -87t112.5 -240q0 -177 -162 -318zM459 575q-135 -125 -135 -229q0 -166 213 -166 q94 0 142 43t48 113q0 27 -6 49.5t-26 42.5l-31 34q-12 13 -47 33l-47 26q-13 7 -57 28.5t-54 25.5zM618 795q106 111 107 204q0 139 -164 140q-76 0 -115.5 -37t-39.5 -96q0 -37 15 -68t49 -56.5t63.5 -42.5t84.5 -44z" />
<glyph unicode="9" d="M109 -18l131 188q131 -111 284 -111q135 0 186.5 90.5t57.5 251.5q-121 -78 -287 -77q-176 0 -287.5 113.5t-111.5 316.5q0 219 129 337.5t356 118.5q518 0 518 -659q0 -719 -546 -719q-123 0 -240.5 40t-189.5 110zM768 623q-4 78 -12 134t-28.5 113.5t-61.5 87 t-101 29.5q-170 0 -170 -217q0 -113 37 -167t127 -54q105 0 209 74z" />
<glyph unicode=":" horiz-adv-x="555" d="M453 135q0 -160 -174 -160q-176 0 -176.5 160t176.5 160q174 0 174 -160zM453 913.5q0 -159.5 -174 -159.5q-176 0 -176.5 159.5t176.5 159.5q174 0 174 -159.5z" />
<glyph unicode=";" horiz-adv-x="522" d="M281 -244l-140 41l56 219q6 18 -11 25l-84 29l45 221q141 -2 214 -33t73 -127q0 -55 -43 -141zM461 913.5q0 -159.5 -174 -159.5q-176 0 -176 159.5t176 159.5q174 0 174 -159.5z" />
<glyph unicode="&#x3c;" d="M940 172l-799 281v286l795 291l70 -231l-598 -201l602 -201z" />
<glyph unicode="=" d="M979 266h-791v240h791v-240zM979 647h-791v240h791v-240z" />
<glyph unicode="&#x3e;" d="M1010 453l-799 -281l-70 225l602 201l-596 201l68 231l795 -291v-286z" />
<glyph unicode="?" horiz-adv-x="1081" d="M600 401h-309v373q70 6 112.5 11.5t106 23.5t99.5 46t63.5 78t27.5 118q0 86 -43 133t-122 47q-78 0 -138 -25q-23 -8 -26 -41l-19 -131l-250 -18v377q236 90 447 90q496 0 495 -422q0 -199 -113.5 -322t-330.5 -149v-189zM621 135q0 -160 -175 -160q-176 0 -176 160 t176 160q175 0 175 -160z" />
<glyph unicode="@" horiz-adv-x="1722" d="M1219 -143l49 -168q-164 -72 -416 -72q-340 0 -537.5 187.5t-197.5 539.5q0 369 220 594t574 225q322 0 515.5 -171t193.5 -480q0 -272 -108.5 -404.5t-294.5 -132.5q-184 0 -236 142q-145 -141 -250 -142q-109 0 -171 75t-62 214q0 229 121.5 389t328.5 160 q145 0 285 -65l-47 -302q-27 -147 -27 -217q0 -80 76 -79q51 0 89 35.5t56.5 93t26.5 111.5t8 106q0 231 -125 357t-385 126q-283 0 -432 -184.5t-149 -450.5q0 -268 144 -409.5t409 -141.5q168 1 342 64zM963 262l59 377q-35 25 -90 25q-92 0 -159.5 -103.5t-67.5 -263.5 q0 -143 82 -143.5t176 108.5z" />
<glyph unicode="A" horiz-adv-x="1554" d="M1548 0h-647v160l168 18l-74 213h-508l-71 -213l162 -18v-160h-572v160l90 22q41 10 51 39l449 1262h362l447 -1266q8 -25 49 -35l94 -22v-160zM934 612l-182 557h-13l-188 -557h383z" />
<glyph unicode="B" horiz-adv-x="1376" d="M750 0h-672v160l129 14q20 2 26.5 10.5t6.5 30.5v1049q0 25 -6.5 32t-26.5 9l-129 14v164h690q449 0 449 -363q0 -135 -72 -222t-178 -122v-6q342 -39 342 -362q0 -408 -559 -408zM555 221h141q141 0 213 47t72 172q0 215 -254 215h-172v-434zM555 860h82q129 0 203.5 45 t74.5 164q0 115 -62 153t-185 38h-113v-400z" />
<glyph unicode="C" horiz-adv-x="1386" d="M1294 469v-381q-184 -113 -512 -113q-719 0 -719 773q0 342 197 551.5t565 209.5q287 0 465 -116v-402l-225 19l-33 200q-6 29 -33 37q-78 25 -182 25q-199 0 -312.5 -134t-113.5 -390q0 -266 108.5 -402.5t303.5 -136.5q119 0 205 27q18 4 25 12t11 31l31 190h219z" />
<glyph unicode="D" horiz-adv-x="1540" d="M707 0h-629v164l129 14q20 2 26.5 9.5t6.5 31.5v1047q0 23 -6.5 31t-26.5 10l-129 14v162h663q375 0 555.5 -187.5t180.5 -531.5q0 -354 -192.5 -559t-577.5 -205zM557 221h117q481 0 481 524q0 279 -110.5 398t-358.5 119h-129v-1041z" />
<glyph unicode="E" horiz-adv-x="1284" d="M1212 0h-1134v160l129 14q20 2 26.5 10.5t6.5 30.5v1051q0 25 -6.5 32t-26.5 9l-129 14v162h1089v-414l-225 10l-29 156q-6 27 -34 27h-322v-404h479v-227h-479v-412h367q29 0 32 23l33 180h223v-422z" />
<glyph unicode="F" horiz-adv-x="1234" d="M891 0h-813v160l129 14q20 2 26.5 10.5t6.5 30.5v1051q0 25 -6.5 32t-26.5 9l-129 14v162h1081v-414l-225 10l-29 156q-6 27 -35 27h-313v-402h471v-227h-471v-414q0 -25 5 -32t28 -9l301 -16v-162z" />
<glyph unicode="G" horiz-adv-x="1478" d="M1460 551l-84 -8q-33 -2 -33 -29v-440q-207 -98 -530 -99q-205 0 -353.5 57.5t-233.5 164t-125 241.5t-40 307q0 342 197 553t571 211q119 0 247 -30.5t216 -87.5v-387l-227 16l-31 184q-8 35 -33 41q-94 27 -188 27q-197 0 -309.5 -140.5t-112.5 -381.5 q0 -258 109.5 -398.5t326.5 -140.5q88 0 170 14q33 6 33 37v268h-227l28 185h629v-164z" />
<glyph unicode="H" horiz-adv-x="1675" d="M1604 0h-648v160l129 14q20 2 26.5 10.5t6.5 30.5v432h-561v-430q0 -25 5 -32t28 -9l137 -16v-160h-649v160l129 14q20 2 26.5 10.5t6.5 30.5v1049q0 25 -6.5 32t-26.5 9l-129 14v164h649v-164l-137 -16q-23 -2 -28 -9.5t-5 -29.5v-387h561v387q0 25 -6 32t-27 9l-129 14 v164h648v-164l-138 -16q-23 -2 -27.5 -9.5t-4.5 -29.5v-1047q0 -25 5 -32t27 -9l138 -16v-160z" />
<glyph unicode="I" horiz-adv-x="827" d="M762 0h-688v160l149 14q20 2 26.5 9t6.5 32v1049q0 25 -6 32t-27 9l-149 14v164h688v-164l-158 -16q-23 -2 -28 -9.5t-5 -29.5v-1047q0 -25 5.5 -32t27.5 -9l158 -16v-160z" />
<glyph unicode="J" horiz-adv-x="1056" d="M526 336v930q0 23 -6 30t-26 9l-185 14v164h705v-164l-137 -16q-23 -2 -28 -8.5t-5 -28.5v-932q0 -182 -92.5 -270.5t-294.5 -88.5q-117 0 -227.5 25t-157.5 55v365l229 -17l21 -147q2 -20 22 -27q37 -12 82 -12q55 0 77.5 26.5t22.5 92.5z" />
<glyph unicode="K" horiz-adv-x="1540" d="M1522 0h-453l-383 592l-129 -154v-219q0 -25 5 -32t28 -9l158 -16v-162h-670v162l129 14q20 2 26.5 9.5t6.5 31.5v1049q0 23 -6.5 31t-26.5 10l-129 14v162h649v-162l-137 -16q-23 -2 -28 -9.5t-5 -29.5v-512l483 549l-127 16v164h537v-164l-86 -14q-41 -6 -64 -35 l-376 -426l411 -629q18 -29 60 -33l127 -20v-162z" />
<glyph unicode="L" horiz-adv-x="1277" d="M1212 0h-1134v162l129 14q20 2 26.5 10.5t6.5 30.5v1049q0 25 -6.5 32t-26.5 9l-129 14v162h682v-162l-170 -16q-23 -2 -28 -9.5t-5 -29.5v-1047h365q29 0 32 23l33 204h225v-446z" />
<glyph unicode="M" horiz-adv-x="1970" d="M1898 0h-673v160l168 14q20 2 26 10.5t6 30.5v778h-8l-293 -698h-333l-289 700h-10v-778q0 -25 5 -32t27 -9l176 -16v-160h-622v160l129 14q20 2 26.5 10.5t6.5 30.5v1051q0 23 -6.5 31t-26.5 10l-129 14v162h549l356 -928h8l375 928h532v-160l-137 -16 q-23 -2 -27.5 -9.5t-4.5 -29.5v-1053q0 -35 32 -39l137 -16v-160z" />
<glyph unicode="N" horiz-adv-x="1693" d="M1466 0h-336l-653 1069v-852q0 -25 5 -32t28 -9l137 -16v-160h-569v160l129 14q20 2 26.5 10.5t6.5 30.5v1053q0 25 -6.5 32t-26.5 9l-129 14v160h508l643 -1071v852q0 25 -6 32t-27 9l-129 14v164h569v-164l-137 -16q-23 -2 -28 -9.5t-5 -29.5v-1264z" />
<glyph unicode="O" horiz-adv-x="1554" d="M768 -25q-356 0 -530.5 206t-174.5 556q0 342 190.5 557t543.5 215q346 0 520 -207.5t174 -537.5q0 -371 -183.5 -580t-539.5 -209zM780 227q385 0 385 518q0 506 -372 506q-184 0 -293 -127t-109 -381q0 -516 389 -516z" />
<glyph unicode="P" horiz-adv-x="1323" d="M881 0h-803v162l129 14q20 2 26.5 10.5t6.5 30.5v1047q0 25 -6.5 32t-26.5 9l-129 14v164h694q264 0 379 -120t115 -316q0 -500 -561 -500h-150v-328q0 -25 5 -32t28 -9l293 -16v-162zM555 766h102q59 0 103.5 9t88.5 35t68.5 81t24.5 137q0 135 -69.5 183.5t-196.5 48.5 h-121v-494z" />
<glyph unicode="Q" horiz-adv-x="1552" d="M1182 -176l59 -180q-143 -76 -291 -76q-324 0 -323 305q0 55 6 111q-291 35 -434.5 235.5t-143.5 517.5q0 342 190.5 557t542.5 215q236 0 395.5 -102t229.5 -266t70 -377q0 -326 -143.5 -528.5t-421.5 -245.5q-4 -25 -5 -70q0 -63 28 -95t93 -32q72 0 148 31zM774 227 q385 0 385 518q0 506 -373 506q-186 0 -294.5 -127t-108.5 -381q0 -516 391 -516z" />
<glyph unicode="R" horiz-adv-x="1406" d="M1403 0h-447l-184 514q-18 53 -44 72.5t-77 19.5h-96v-385q0 -25 5 -32t28 -9l143 -16v-164h-653v164l129 14q20 2 26.5 9.5t6.5 31.5v1047q0 23 -6.5 31t-26.5 10l-129 14v162h698q256 0 366.5 -115t110.5 -295q0 -274 -270 -393q70 -33 119 -164l112 -293 q18 -33 62 -39l127 -20v-164zM555 819h94q131 0 205 49.5t74 186.5q0 115 -64.5 160t-206.5 45h-102v-441z" />
<glyph unicode="S" horiz-adv-x="1214" d="M1090 1028l-232 21l-24 165q-4 31 -25 39q-72 23 -150 23q-113 0 -171 -47t-58 -127q0 -39 18.5 -71t38 -50t70.5 -39.5t74.5 -30t93.5 -28.5q94 -29 149.5 -52.5t125 -72.5t103.5 -128t34 -188q0 -238 -161 -352.5t-415 -114.5q-129 0 -266 27t-203 57v400h230l40 -195 q4 -31 35 -37q90 -23 172 -22q258 0 258 190q0 47 -18 82t-58 59.5t-78 38t-100 31.5q-201 57 -274 101q-178 106 -178 342q0 227 151.5 343.5t397.5 116.5q225 0 420 -82v-399z" />
<glyph unicode="T" horiz-adv-x="1421" d="M1128 0h-819v162l211 14q20 2 26.5 9.5t6.5 31.5v1043h-211q-29 0 -33 -23l-33 -178h-225v424h1319v-424h-223l-33 178q-4 23 -33 23h-211v-1043q0 -23 5.5 -30t27.5 -9l225 -16v-162z" />
<glyph unicode="U" horiz-adv-x="1607" d="M1112 588v678q0 25 -6 32t-27 9l-129 14v162h606v-162l-137 -16q-23 -2 -28 -9.5t-5 -29.5v-736q0 -283 -151.5 -419t-431.5 -136q-303 0 -442.5 137.5t-139.5 426.5v727q0 25 -6 32t-27 9l-127 14v162h648v-162l-138 -16q-23 -2 -27.5 -9.5t-4.5 -29.5v-670 q0 -188 58 -275.5t218 -87.5q164 0 230.5 80t66.5 275z" />
<glyph unicode="V" horiz-adv-x="1505" d="M981 0h-418l-411 1266q-8 25 -50 34l-92 23l21 160h620v-160l-166 -18l308 -1024h16l297 1024l-164 18l21 160h530v-160l-86 -23q-45 -10 -51 -38z" />
<glyph unicode="W" horiz-adv-x="2136" d="M1688 0h-414l-201 750h-12l-189 -750h-401l-309 1264q-6 27 -45 36l-105 23l21 160h626v-160l-172 -20l209 -1002h17l235 907h312l233 -913h16l211 1008l-172 20l21 160h553v-160l-97 -23q-37 -6 -47 -36z" />
<glyph unicode="X" horiz-adv-x="1583" d="M1548 0h-671v160l161 18l-278 375l-277 -375l158 -18v-160h-586v160l119 22q35 8 53 39l389 504l-409 541q-16 27 -49 34l-107 23l21 160h641v-160l-160 -18l266 -373l279 373l-158 18l21 160h540v-160l-100 -23q-29 -8 -51 -38l-383 -496l419 -545q31 -33 52 -39 l110 -22v-160z" />
<glyph unicode="Y" horiz-adv-x="1384" d="M1120 0h-803v162l205 14q20 2 26.5 9.5t6.5 31.5v336l-408 713q-14 23 -49 34l-92 23l21 160h614v-160l-160 -18l248 -484h16l248 484l-157 18l20 160h522v-160l-86 -23q-39 -10 -51 -38l-371 -705v-340q0 -23 5.5 -30t27.5 -9l217 -16v-162z" />
<glyph unicode="Z" horiz-adv-x="1376" d="M1284 0h-1180v199l766 1063h-454q-29 0 -33 -23l-39 -192l-221 -7v443h1124v-207l-755 -1057h499q29 0 33 23l39 219h221v-461z" />
<glyph unicode="[" horiz-adv-x="630" d="M557 -293h-459v1776h459v-156l-127 -22q-33 -4 -33 -41v-1336q0 -39 33 -43l127 -22v-156z" />
<glyph unicode="\" horiz-adv-x="921" d="M897 -188h-283l-573 1734h281z" />
<glyph unicode="]" horiz-adv-x="630" d="M532 1483v-1776h-464v156l133 22q33 4 32 43v1295q0 76 -32 82l-133 22v156h464z" />
<glyph unicode="^" horiz-adv-x="1247" d="M1186 612h-295l-273 492l-266 -492h-291l404 748h313z" />
<glyph unicode="_" horiz-adv-x="1024" d="M1024 -371h-1024v219h1024v-219z" />
<glyph unicode="`" horiz-adv-x="1024" d="M762 1251l-117 -102l-364 299l168 160z" />
<glyph unicode="a" horiz-adv-x="1140" d="M1118 0h-377l-20 111l-10 2q-141 -137 -344 -138q-299 0 -299 304q0 152 94 227.5t289 87.5l235 16v113q0 84 -24.5 123t-112.5 39q-82 0 -116 -25.5t-34 -111.5l-288 24q0 315 440 315q240 0 338 -79.5t98 -290.5v-498q0 -25 5 -32t28 -9l98 -16v-162zM686 270v170 l-139 -10q-90 -6 -127 -32.5t-37 -88.5q0 -113 117 -112q86 -1 186 73z" />
<glyph unicode="b" horiz-adv-x="1247" d="M420 0h-293q31 197 31 299v999q0 35 -27 43l-113 39l23 166h422v-567l8 -2q135 111 309 110q178 0 287 -126.5t109 -397.5q0 -303 -115 -445.5t-316 -142.5q-186 0 -301 129l-10 -2zM465 774v-479q88 -80 188 -80q199 0 199 332q0 131 -46 215t-142 84q-90 0 -199 -72z " />
<glyph unicode="c" horiz-adv-x="1044" d="M901 266l80 -190q-166 -100 -389 -101q-266 0 -401.5 148.5t-135.5 394.5q0 279 152.5 424t408.5 145q113 0 212.5 -25.5t152.5 -60.5v-321l-219 10l-25 135q-4 27 -24 33q-43 14 -105 14q-100 0 -163.5 -77.5t-63.5 -245.5q0 -342 264 -342q119 0 256 59z" />
<glyph unicode="d" horiz-adv-x="1251" d="M1221 0h-381l-21 115l-14 2q-145 -141 -336 -142q-397 0 -397 545q0 289 122.5 428t311.5 139q156 0 289 -98v311q0 33 -27 41l-113 39l23 166h412v-1331q0 -23 5 -30t27 -9l99 -14v-162zM782 305v483q-90 61 -176 62q-109 0 -160 -88t-51 -236q0 -309 187 -309 q98 0 200 88z" />
<glyph unicode="e" horiz-adv-x="1075" d="M930 283l76 -203q-215 -104 -420 -105q-281 0 -406 153t-125 413q0 266 142.5 406t365.5 140q213 0 332 -119.5t119 -375.5q0 -55 -4 -137h-627q16 -242 242 -242q117 0 305 70zM385 649h326q-2 217 -154 217q-156 0 -172 -217z" />
<glyph unicode="f" horiz-adv-x="894" d="M799 0h-744v164l115 12q20 2 26.5 10.5t6.5 32.5v623q0 20 -17 20h-137v205h154v113q0 203 110.5 297t327.5 94q80 0 139.5 -12.5t113.5 -42t84 -90t30 -150.5l-287 -35v13q0 65 -20 89q-22 27 -74 27q-72 0 -93.5 -36t-21.5 -117v-130q0 -20 16 -20h324v-205h-340v-637 q0 -25 7 -32t30 -9l250 -22v-162z" />
<glyph unicode="g" horiz-adv-x="1165" d="M1139 893l-189 -14q76 -96 76 -207q0 -168 -120 -264.5t-316 -96.5q-96 0 -162 19l-68 -109l201 -12q299 -18 391 -51q150 -49 168 -199q4 -25 4 -55q0 -176 -147.5 -272.5t-415.5 -96.5q-512 0 -512 256q0 63 25.5 107.5t87.5 101.5q-90 39 -90 135q0 61 59 125 q47 49 127 123q-80 39 -128 119t-48 188q0 182 120 289.5t349 107.5q111 0 188 -20h400v-174zM756 700q0 90 -49.5 137.5t-137.5 47.5q-90 0 -143 -46t-53 -143q0 -170 190 -170q86 0 139.5 47t53.5 127zM643 -76l-299 21q-53 -66 -53 -109q0 -106 248 -106q281 0 280 118 q0 25 -11 39.5t-42 21.5t-52.5 10t-70.5 5z" />
<glyph unicode="h" horiz-adv-x="1277" d="M1253 0h-444v668q0 174 -108.5 174t-213.5 -76v-549q0 -25 5.5 -32t27.5 -9l98 -14v-162h-565v162l92 14q20 2 26.5 10.5t6.5 30.5v1081q0 35 -26 43l-113 39l22 166h422v-579l11 -2q150 123 327 122q158 0 227.5 -82.5t69.5 -248.5v-539q0 -25 5 -32t28 -9l102 -14v-162 z" />
<glyph unicode="i" horiz-adv-x="647" d="M492 1415q0 -88 -49.5 -136t-137.5 -48t-136 48t-48 136t48 134t136 46q90 0 138.5 -46t48.5 -134zM625 0h-584v162l104 14q20 2 26.5 10.5t6.5 30.5v602q0 35 -26 43l-111 39l22 166h424v-850q0 -25 5.5 -32t27.5 -9l105 -14v-162z" />
<glyph unicode="j" horiz-adv-x="622" d="M174 -57v876q0 35 -27 43l-116 39l24 166h428v-1176q0 -348 -356 -348q-113 0 -206 34t-136 71l88 170q86 -53 178 -54q66 0 94.5 38.5t28.5 140.5zM489 1415q0 -88 -49 -136t-137 -48t-137 48t-49 136q0 86 49 133t137 47q90 0 138 -46t48 -134z" />
<glyph unicode="k" horiz-adv-x="1269" d="M1255 0h-397l-260 522l-111 -121v-184q0 -25 5.5 -32t27.5 -9l123 -14v-162h-600v162l102 14q20 2 26.5 10.5t6.5 30.5v1081q0 35 -26 43l-113 39l22 166h426v-874l375 395h283v-162l-107 -20q-27 -4 -51 -31l-145 -154l262 -489q16 -31 61 -37l90 -14v-160z" />
<glyph unicode="l" horiz-adv-x="647" d="M621 0h-578v162l102 14q20 2 26.5 10.5t6.5 30.5v1081q0 35 -26 43l-113 39l22 166h426v-1329q0 -25 5.5 -32t27.5 -9l101 -14v-162z" />
<glyph unicode="m" horiz-adv-x="1820" d="M1794 0h-444v662q0 51 -5.5 83.5t-33 62.5t-76.5 30q-82 0 -166 -56q6 -49 6 -100v-465q0 -27 5 -34t28 -9l82 -12v-162h-424v672q0 35 -3 58.5t-12.5 51t-33 42t-60.5 14.5q-92 0 -170 -66v-555q0 -25 4.5 -31t28.5 -10l101 -14v-162h-568v162l92 14q20 2 26.5 10.5 t6.5 30.5v602q0 35 -26 43l-111 39l22 166h361l16 -106l11 -3q158 129 327 129q176 0 250 -122q156 123 330 122q162 0 231.5 -82.5t69.5 -263.5v-524q0 -25 5 -33t28 -10l102 -12v-162z" />
<glyph unicode="n" horiz-adv-x="1277" d="M1253 0h-444v662q0 59 -5 91.5t-29.5 60.5t-74.5 28q-53 0 -114.5 -23.5t-98.5 -52.5v-549q0 -25 5.5 -32t27.5 -9l98 -14v-162h-565v164l92 12q20 2 26.5 10.5t6.5 30.5v602q0 35 -26 43l-111 39l25 166h358l16 -106l9 -5q176 131 360 131q164 0 236.5 -87t72.5 -261 v-522q0 -25 5 -32t28 -9l102 -14v-162z" />
<glyph unicode="o" horiz-adv-x="1189" d="M582 -25q-268 0 -397.5 148.5t-129.5 402.5q0 262 139.5 411.5t413.5 149.5q270 0 398.5 -144t128.5 -394q0 -268 -139.5 -421t-413.5 -153zM596 190q215 0 215 349q0 176 -51 251.5t-156 75.5q-225 0 -225 -329q0 -347 217 -347z" />
<glyph unicode="p" horiz-adv-x="1259" d="M719 -434h-668v164l82 12q23 4 30 12t7 31v1034q0 35 -27 43l-108 39l22 166h361l18 -104l10 -5q160 129 349 129q182 0 287.5 -125.5t105.5 -398.5q0 -80 -11.5 -155.5t-41 -156.5t-74.5 -140.5t-122 -97.5t-173 -38q-164 0 -293 105v-293q0 -25 5 -32t28 -9l213 -18 v-162zM477 770v-477q90 -78 193 -78q195 0 194 332q0 297 -174 297q-104 0 -213 -74z" />
<glyph unicode="q" horiz-adv-x="1220" d="M1219 -434h-623v164l176 14q25 2 33 9t8 28v321l-10 4q-154 -131 -324 -131q-190 0 -298.5 130.5t-108.5 406.5q0 293 126 434t312 141q162 0 297 -116l31 96h268q-16 -154 -16 -332v-954q0 -23 5 -30t27 -9l97 -14v-162zM780 301v483q-96 66 -180 66q-104 0 -155.5 -89 t-51.5 -235q0 -309 193 -309q96 0 194 84z" />
<glyph unicode="r" horiz-adv-x="968" d="M723 0h-670v166l92 12q20 2 26.5 10.5t6.5 30.5v600q0 35 -26 43l-111 39l22 166h361l25 -164h12q119 184 289 184q113 0 178 -18v-373l-246 9l-20 108q-4 23 -27 23q-66 0 -148 -72v-543q0 -25 5.5 -32t27.5 -9l203 -16v-164z" />
<glyph unicode="s" horiz-adv-x="997" d="M911 731l-219 14l-20 107q-2 25 -21 29q-53 16 -131 16q-160 0 -160 -104q0 -37 32 -61.5t70 -36t107 -27.5q18 -4 29 -6q74 -16 124 -35t106.5 -54.5t85 -97t28.5 -147.5q0 -178 -127 -265.5t-336 -87.5q-127 0 -250 26t-155 48v297l219 -16l20 -117q2 -27 25 -31 q61 -20 158 -20q170 0 170 106q0 55 -47.5 82t-139.5 43l-77.5 14.5t-75 18.5t-77 27.5t-64.5 40t-56 57.5t-32.5 77t-14.5 101q0 178 130 268t323 90q225 0 376 -59v-297z" />
<glyph unicode="t" horiz-adv-x="892" d="M791 238l55 -181q-168 -82 -334 -82q-180 0 -258 78t-78 252v537q0 20 -16 20h-144v182q135 14 196.5 90t78.5 244h194v-291q0 -20 17 -20h289v-205h-306v-489q0 -94 29 -131t111 -37q78 0 166 33z" />
<glyph unicode="u" horiz-adv-x="1275" d="M1241 0h-381l-16 111l-10 2q-53 -41 -94.5 -65.5t-115 -48.5t-155.5 -24q-158 0 -227.5 89.5t-69.5 271.5v500q0 25 -5 31.5t-28 11.5l-98 20l20 168h420v-678q0 -96 22.5 -134t86.5 -38q109 0 211 94v527q0 25 -5 30.5t-28 10.5l-88 20l22 168h408v-850q0 -23 5 -30 t24 -9l102 -14v-164z" />
<glyph unicode="v" horiz-adv-x="1275" d="M819 0h-358l-326 848q-10 27 -43 35l-86 18l33 166h555v-166l-131 -16l209 -584h14l217 584l-133 16l27 166h473v-166l-74 -12q-41 -10 -51 -35z" />
<glyph unicode="w" horiz-adv-x="1800" d="M1419 0h-323l-160 686h-12l-162 -686h-369l-258 848q-8 27 -43 35l-86 18l33 166h518v-170l-115 -12l164 -576h15l182 731h309l176 -731h12l154 576l-117 12l27 170h430v-166l-74 -14q-39 -6 -49 -41z" />
<glyph unicode="x" horiz-adv-x="1234" d="M1214 0h-581v160l96 18l-156 205l-170 -203l115 -18v-162h-491v160l92 18q27 4 53 35l270 299l-278 332q-25 27 -49 35l-82 22l20 166h545v-166l-100 -16l151 -191l168 191l-112 16l20 166h453v-166l-95 -20q-12 -4 -51 -39l-250 -277l287 -350q33 -33 53 -37l92 -16 v-162z" />
<glyph unicode="y" horiz-adv-x="1267" d="M907 -434h-682v166l160 18q33 2 51 45l88 195l-391 856q-8 27 -43 35l-84 20l33 166h543v-166l-129 -16l227 -541h14l217 541l-133 16l27 166h457v-166l-66 -12q-39 -6 -51 -35l-451 -1102l213 -22v-164z" />
<glyph unicode="z" horiz-adv-x="1058" d="M1001 0h-929v172l549 702h-287q-18 0 -23 -26l-24 -115l-217 -12v346h899v-176l-539 -701h301q18 0 23 27l24 141l223 11v-369z" />
<glyph unicode="{" horiz-adv-x="677" d="M610 -141l-20 -164q-246 4 -343 64.5t-97 220.5q0 53 14 177t14 201q0 84 -33.5 116t-109.5 36v162q76 4 109.5 35.5t33.5 115.5q0 78 -14 203t-14 178q0 160 97 220.5t343 64.5l20 -164q-86 -20 -115.5 -47t-29.5 -100q0 -51 16.5 -170t16.5 -185q0 -178 -129 -233 q129 -55 129 -232q0 -63 -16.5 -182t-16.5 -170q0 -74 29.5 -100.5t115.5 -46.5z" />
<glyph unicode="|" horiz-adv-x="573" d="M426 -293h-281v1839h281v-1839z" />
<glyph unicode="}" horiz-adv-x="677" d="M88 -305l-20 164q86 20 115.5 46.5t29.5 100.5q0 51 -16.5 170t-16.5 182q0 176 129 232q-129 55 -129 233q0 66 16.5 184.5t16.5 170.5q0 74 -29.5 100.5t-115.5 46.5l20 164q246 -4 343 -64.5t97 -220.5q0 -53 -14 -178t-14 -203q0 -84 33.5 -115.5t109.5 -35.5v-162 q-76 -4 -109.5 -36t-33.5 -116q0 -78 14 -201.5t14 -176.5q0 -160 -97 -220.5t-343 -64.5z" />
<glyph unicode="~" horiz-adv-x="1073" d="M868 942l160 -59q-25 -147 -80 -218t-151 -71q-78 0 -237 47t-216 47q-51 0 -83 -20.5t-62 -77.5l-152 74q33 121 101.5 196.5t162.5 75.5q82 0 231.5 -47t213.5 -47q47 0 69.5 21.5t42.5 78.5z" />
<glyph unicode="&#xad;" horiz-adv-x="636" d="M596 465h-555v260h555v-260z" />
<glyph unicode="&#x2000;" horiz-adv-x="802" />
<glyph unicode="&#x2001;" horiz-adv-x="1607" />
<glyph unicode="&#x2002;" horiz-adv-x="802" />
<glyph unicode="&#x2003;" horiz-adv-x="1607" />
<glyph unicode="&#x2004;" horiz-adv-x="534" />
<glyph unicode="&#x2005;" horiz-adv-x="401" />
<glyph unicode="&#x2006;" horiz-adv-x="266" />
<glyph unicode="&#x2007;" horiz-adv-x="266" />
<glyph unicode="&#x2008;" horiz-adv-x="200" />
<glyph unicode="&#x2009;" horiz-adv-x="321" />
<glyph unicode="&#x200a;" horiz-adv-x="88" />
<glyph unicode="&#x2010;" horiz-adv-x="636" d="M596 465h-555v260h555v-260z" />
<glyph unicode="&#x2011;" horiz-adv-x="636" d="M596 465h-555v260h555v-260z" />
<glyph unicode="&#x2012;" horiz-adv-x="636" d="M596 465h-555v260h555v-260z" />
<glyph unicode="&#x2013;" horiz-adv-x="1024" d="M1022 465h-1022v219h1022v-219z" />
<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M2048 465h-2048v219h2048v-219z" />
<glyph unicode="&#x2018;" horiz-adv-x="460" d="M389 1296l-41 -196q-86 2 -137 10t-90 43t-39 96q0 53 39 131l98 207l129 -39l-47 -202q-2 -16 10 -23z" />
<glyph unicode="&#x2019;" horiz-adv-x="460" d="M244 1100l-131 39l47 202q6 18 -10 25l-78 25l41 196q63 0 104 -5t82 -19.5t60.5 -46t19.5 -78.5q0 -57 -37 -131z" />
<glyph unicode="&#x201c;" horiz-adv-x="829" d="M389 1296l-41 -196q-86 2 -137 10t-90 43t-39 96q0 53 39 131l98 207l129 -39l-47 -202q-2 -16 10 -23zM758 1296l-41 -196q-86 2 -137.5 10t-90 43t-38.5 96q0 53 38 131l99 207l129 -39l-47 -202q-2 -16 10 -23z" />
<glyph unicode="&#x201d;" horiz-adv-x="829" d="M244 1100l-131 39l47 202q6 18 -10 25l-78 25l41 196q63 0 104 -5t82 -19.5t60.5 -46t19.5 -78.5q0 -57 -37 -131zM612 1100l-131 39l47 202q6 18 -10 25l-78 25l41 196q63 0 104.5 -5t82.5 -19.5t60.5 -46t19.5 -78.5q0 -57 -37 -131z" />
<glyph unicode="&#x2026;" horiz-adv-x="1443" d="M432 135q0 -160 -174 -160q-176 0 -176 160t176 160q174 0 174 -160zM899 135q0 -160 -174 -160q-176 0 -176 160t176 160q174 0 174 -160zM1362 135q0 -160 -174 -160q-176 0 -176 160t176 160q174 0 174 -160z" />
<glyph unicode="&#x202f;" horiz-adv-x="321" />
<glyph unicode="&#x205f;" horiz-adv-x="401" />
<glyph unicode="&#xe000;" horiz-adv-x="1065" d="M0 1065h1065v-1065h-1065v1065z" />
<glyph horiz-adv-x="1024" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 27 KiB

BIN
public/fonts/adellebasic_bold-webfont.ttf

Binary file not shown.

BIN
public/fonts/adellebasic_bold-webfont.woff

Binary file not shown.

BIN
public/images/code_bg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 B

BIN
public/images/rss.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

BIN
public/images/search_bg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

177
public/index.html

@ -0,0 +1,177 @@
<!DOCTYPE html>
<html>
<head>
<title>Octopress - My Octopress Blog</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
<script src="/javascripts/mootools-yui-compressed.js" type="text/javascript"></script>
<script src="/javascripts/mootools-more-1.3.1.1.js" type="text/javascript"></script>
<script src="/javascripts/octopress.js" type="text/javascript"></script>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<meta name="viewport" content="initial-scale=1.0 width=device-width">
<script>
var twitter_user = "imathis";
var show_replies = false;
var tweet_count = 3;
</script>
<script src="/javascripts/twitter.js" type="text/javascript"></script>
<link href="/atom.xml" rel="alternate" title="My Octopress Blog" type="application/atom+xml"/>
</head>
<body id="">
<header><div><h1><a href="/">My Octopress Blog</a></h1>
</div></header>
<nav id="nav"><div><ul>
<li><a href="/">Blog</a></li>
<li><a href="/about/">About</a></li>
<li class="subscribe"><a href="/atom.xml">Subscribe</a></li>
</ul>
</div></nav>
<div id="page">
<div>
<div id="main"><article>
<article>
<header>
<p>
<time>April 7<span>th</span>, 2011</time>
<span class="byline"><em>by</em> <span class="author">Your Name</span></span>
</p>
<h1><a href="/2011/04/07/test-of-typography/">Test of Typography</a></h1>
</header>
<div class="entry"><p>In the past I&#8217;ve always designed my own business cards, printed them on expensive card stock, and hand-cut them with an X-Acto knife. My cards were way nicer than those my clients had gotten <em>professionally</em> printed with bubbly ink, no-bleed designs, and cheap paper. Though I put tremendous care into my cards, I never was happy with the design.</p>
<h2>Why Have Business Cards?</h2>
<p>I&#8217;m rarely asked for my business card except when I attend conferences, of which I attend one or two each year. As a freelance contractor, I leave work by walking twenty-five feet from my office to the couch. Many of the
people I work for I&#8217;ve never met in-person.</p>
<p>When someone gives me their business card, I read it, pocket it, and eventually throw it out &mdash; sometimes before I remember to copy the information to my address book (sorry, just being honest). The reality is, with the ubiquity of the internet and with frictionless social networks like Twitter, I can connect with people immediately. So why have business cards?</p>
<p><a href='/2011/04/07/test-of-typography/'>Continue reading &raquo;</a></p></div>
</article>
<article>
<header>
<p>
<time>March 14<span>th</span>, 2011</time>
<span class="byline"><em>by</em> <span class="author">Your Name</span></span>
</p>
<h1><a href="/2011/03/14/test-post/">Test Post</a></h1>
</header>
<div class="entry"><p>This is a test!</p>
</div>
</article>
<article>
<header>
<p>
<time>November 13<span>th</span>, 2009</time>
<span class="byline"><em>by</em> <span class="author">Your Name</span></span>
</p>
<h1><a href="/2009/11/13/hello-world/">Hello World! I'm Octopress!</a></h1>
</header>
<div class="entry"><p><strong>Octopress is a blogging framework designed for hackers</strong>, based on <a href="http://github.com/mojombo/jekyll">Jekyll</a> the blog aware static site generator powering <a href="http://pages.github.com/">Github pages</a>.
If you don&#8217;t know what Jekyll is, <a href="http://metajack.im/2009/01/23/blogging-with-git-emacs-and-jekyll/">Jack Moffitt</a> wrote a good summary:</p>
<blockquote><p>Jekyll is a static blog generator; it transforms a directory of input files into another directory of files suitable for a blog. The management of the blog is handled by standard, familiar tools like creating and renaming files, the text editor of your choice, and version control.</p></blockquote>
<p><cite><strong>Jack Moffitt</strong> <a href="http://metajack.im/2009/01/23/blogging-with-git-emacs-and-jekyll/">Blogging with Git Emacs and Jekyll</a></cite></p>
<p>There&#8217;s no database to set up, and you get to use tools like Emacs, Vim, or TextMate to write your posts, not some lame in-browser text editor. Just write, generate, deploy, using the same tools and patterns you already use for your daily work.</p>
<p><a href="http://wiki.github.com/imathis/octopress/">Read the wiki to learn more</a></p>
</div>
<p class="updated"><em>updated</em> <time>March 10<span>th</span>, 2010</time></p>
</article>
</article></div>
<aside><h4>About Me</h4>
<p> Yo everybody! </p>
<section>
<h4>Recent Posts</h4>
<ul id="recent_posts">
<li class="post">
<a href="/2011/04/07/test-of-typography/">Test of Typography</a>
<time>April 07, 2011</time>
</li>
<li class="post">
<a href="/2011/03/14/test-post/">Test Post</a>
<time>March 14, 2011</time>
</li>
<li class="post">
<a href="/2009/11/13/hello-world/">Hello World! I'm Octopress!</a>
<time>November 13, 2009</time>
</li>
</ul>
</section>
<section><h4>On Twitter</h4>
<ul id="tweets">
Status updating...
</ul>
<p>Follow <a href="http://twitter.com/#{page.twitter_user}">@imathis</a></p>
</section>
<section><h4>My Pinboard</h4>
<ul id="pinboard_linkroll">Fetching linkroll...</ul>
<p><a href="http://pinboard.in/u:imathis">My Pinboard Bookmarks &raquo;</a></p>
</section>
</aside>
</div>
</div>
<footer><div><p>
Copyright &copy; 2011 - Your Name -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
<script language="javascript">
var pinboard_user = "imathis";
var pinboard_count = "3";
</script>
<script language="javascript" src="/javascripts/pinboard.js"></script>
</div></footer>
</body>
</html>

100
public/javascripts/mootools-1.2.4.2-more.js

@ -0,0 +1,100 @@
//MooTools More, <http://mootools.net/more>. Copyright (c) 2006-2009 Aaron Newton <http://clientcide.com/>, Valerio Proietti <http://mad4milk.net> & the MooTools team <http://mootools.net/developers>, MIT Style License.
MooTools.More={version:"1.2.4.2",build:"bd5a93c0913cce25917c48cbdacde568e15e02ef"};(function(){var a={language:"en-US",languages:{"en-US":{}},cascades:["en-US"]};
var b;MooTools.lang=new Events();$extend(MooTools.lang,{setLanguage:function(c){if(!a.languages[c]){return this;}a.language=c;this.load();this.fireEvent("langChange",c);
return this;},load:function(){var c=this.cascade(this.getCurrentLanguage());b={};$each(c,function(e,d){b[d]=this.lambda(e);},this);},getCurrentLanguage:function(){return a.language;
},addLanguage:function(c){a.languages[c]=a.languages[c]||{};return this;},cascade:function(e){var c=(a.languages[e]||{}).cascades||[];c.combine(a.cascades);
c.erase(e).push(e);var d=c.map(function(f){return a.languages[f];},this);return $merge.apply(this,d);},lambda:function(c){(c||{}).get=function(e,d){return $lambda(c[e]).apply(this,$splat(d));
};return c;},get:function(e,d,c){if(b&&b[e]){return(d?b[e].get(d,c):b[e]);}},set:function(d,e,c){this.addLanguage(d);langData=a.languages[d];if(!langData[e]){langData[e]={};
}$extend(langData[e],c);if(d==this.getCurrentLanguage()){this.load();this.fireEvent("langChange",d);}return this;},list:function(){return Hash.getKeys(a.languages);
}});})();(function(){var i=this.Date;if(!i.now){i.now=$time;}i.Methods={ms:"Milliseconds",year:"FullYear",min:"Minutes",mo:"Month",sec:"Seconds",hr:"Hours"};
["Date","Day","FullYear","Hours","Milliseconds","Minutes","Month","Seconds","Time","TimezoneOffset","Week","Timezone","GMTOffset","DayOfYear","LastMonth","LastDayOfMonth","UTCDate","UTCDay","UTCFullYear","AMPM","Ordinal","UTCHours","UTCMilliseconds","UTCMinutes","UTCMonth","UTCSeconds"].each(function(p){i.Methods[p.toLowerCase()]=p;
});var d=function(q,p){return new Array(p-String(q).length+1).join("0")+q;};i.implement({set:function(t,r){switch($type(t)){case"object":for(var s in t){this.set(s,t[s]);
}break;case"string":t=t.toLowerCase();var q=i.Methods;if(q[t]){this["set"+q[t]](r);}}return this;},get:function(q){q=q.toLowerCase();var p=i.Methods;if(p[q]){return this["get"+p[q]]();
}return null;},clone:function(){return new i(this.get("time"));},increment:function(p,r){p=p||"day";r=$pick(r,1);switch(p){case"year":return this.increment("month",r*12);
case"month":var q=this.get("date");this.set("date",1).set("mo",this.get("mo")+r);return this.set("date",q.min(this.get("lastdayofmonth")));case"week":return this.increment("day",r*7);
case"day":return this.set("date",this.get("date")+r);}if(!i.units[p]){throw new Error(p+" is not a supported interval");}return this.set("time",this.get("time")+r*i.units[p]());
},decrement:function(p,q){return this.increment(p,-1*$pick(q,1));},isLeapYear:function(){return i.isLeapYear(this.get("year"));},clearTime:function(){return this.set({hr:0,min:0,sec:0,ms:0});
},diff:function(q,p){if($type(q)=="string"){q=i.parse(q);}return((q-this)/i.units[p||"day"](3,3)).toInt();},getLastDayOfMonth:function(){return i.daysInMonth(this.get("mo"),this.get("year"));
},getDayOfYear:function(){return(i.UTC(this.get("year"),this.get("mo"),this.get("date")+1)-i.UTC(this.get("year"),0,1))/i.units.day();},getWeek:function(){return(this.get("dayofyear")/7).ceil();
},getOrdinal:function(p){return i.getMsg("ordinal",p||this.get("date"));},getTimezone:function(){return this.toString().replace(/^.*? ([A-Z]{3}).[0-9]{4}.*$/,"$1").replace(/^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/,"$1$2$3");
},getGMTOffset:function(){var p=this.get("timezoneOffset");return((p>0)?"-":"+")+d((p.abs()/60).floor(),2)+d(p%60,2);},setAMPM:function(p){p=p.toUpperCase();
var q=this.get("hr");if(q>11&&p=="AM"){return this.decrement("hour",12);}else{if(q<12&&p=="PM"){return this.increment("hour",12);}}return this;},getAMPM:function(){return(this.get("hr")<12)?"AM":"PM";
},parse:function(p){this.set("time",i.parse(p));return this;},isValid:function(p){return !!(p||this).valueOf();},format:function(p){if(!this.isValid()){return"invalid date";
}p=p||"%x %X";p=k[p.toLowerCase()]||p;var q=this;return p.replace(/%([a-z%])/gi,function(s,r){switch(r){case"a":return i.getMsg("days")[q.get("day")].substr(0,3);
case"A":return i.getMsg("days")[q.get("day")];case"b":return i.getMsg("months")[q.get("month")].substr(0,3);case"B":return i.getMsg("months")[q.get("month")];
case"c":return q.toString();case"d":return d(q.get("date"),2);case"H":return d(q.get("hr"),2);case"I":return((q.get("hr")%12)||12);case"j":return d(q.get("dayofyear"),3);
case"m":return d((q.get("mo")+1),2);case"M":return d(q.get("min"),2);case"o":return q.get("ordinal");case"p":return i.getMsg(q.get("ampm"));case"S":return d(q.get("seconds"),2);
case"U":return d(q.get("week"),2);case"w":return q.get("day");case"x":return q.format(i.getMsg("shortDate"));case"X":return q.format(i.getMsg("shortTime"));
case"y":return q.get("year").toString().substr(2);case"Y":return q.get("year");case"T":return q.get("GMTOffset");case"Z":return q.get("Timezone");}return r;
});},toISOString:function(){return this.format("iso8601");}});i.alias("toISOString","toJSON");i.alias("diff","compare");i.alias("format","strftime");var k={db:"%Y-%m-%d %H:%M:%S",compact:"%Y%m%dT%H%M%S",iso8601:"%Y-%m-%dT%H:%M:%S%T",rfc822:"%a, %d %b %Y %H:%M:%S %Z","short":"%d %b %H:%M","long":"%B %d, %Y %H:%M"};
var g=[];var e=i.parse;var n=function(s,u,r){var q=-1;var t=i.getMsg(s+"s");switch($type(u)){case"object":q=t[u.get(s)];break;case"number":q=t[month-1];
if(!q){throw new Error("Invalid "+s+" index: "+index);}break;case"string":var p=t.filter(function(v){return this.test(v);},new RegExp("^"+u,"i"));if(!p.length){throw new Error("Invalid "+s+" string");
}if(p.length>1){throw new Error("Ambiguous "+s);}q=p[0];}return(r)?t.indexOf(q):q;};i.extend({getMsg:function(q,p){return MooTools.lang.get("Date",q,p);
},units:{ms:$lambda(1),second:$lambda(1000),minute:$lambda(60000),hour:$lambda(3600000),day:$lambda(86400000),week:$lambda(608400000),month:function(q,p){var r=new i;
return i.daysInMonth($pick(q,r.get("mo")),$pick(p,r.get("year")))*86400000;},year:function(p){p=p||new i().get("year");return i.isLeapYear(p)?31622400000:31536000000;
}},daysInMonth:function(q,p){return[31,i.isLeapYear(p)?29:28,31,30,31,30,31,31,30,31,30,31][q];},isLeapYear:function(p){return((p%4===0)&&(p%100!==0))||(p%400===0);
},parse:function(r){var q=$type(r);if(q=="number"){return new i(r);}if(q!="string"){return r;}r=r.clean();if(!r.length){return null;}var p;g.some(function(t){var s=t.re.exec(r);
return(s)?(p=t.handler(s)):false;});return p||new i(e(r));},parseDay:function(p,q){return n("day",p,q);},parseMonth:function(q,p){return n("month",q,p);
},parseUTC:function(q){var p=new i(q);var r=i.UTC(p.get("year"),p.get("mo"),p.get("date"),p.get("hr"),p.get("min"),p.get("sec"));return new i(r);},orderIndex:function(p){return i.getMsg("dateOrder").indexOf(p)+1;
},defineFormat:function(p,q){k[p]=q;},defineFormats:function(p){for(var q in p){i.defineFormat(q,p[q]);}},parsePatterns:g,defineParser:function(p){g.push((p.re&&p.handler)?p:l(p));
},defineParsers:function(){Array.flatten(arguments).each(i.defineParser);},define2DigitYearStart:function(p){h=p%100;m=p-h;}});var m=1900;var h=70;var j=function(p){return new RegExp("(?:"+i.getMsg(p).map(function(q){return q.substr(0,3);
}).join("|")+")[a-z]*");};var a=function(p){switch(p){case"x":return((i.orderIndex("month")==1)?"%m[.-/]%d":"%d[.-/]%m")+"([.-/]%y)?";case"X":return"%H([.:]%M)?([.:]%S([.:]%s)?)? ?%p? ?%T?";
}return null;};var o={d:/[0-2]?[0-9]|3[01]/,H:/[01]?[0-9]|2[0-3]/,I:/0?[1-9]|1[0-2]/,M:/[0-5]?\d/,s:/\d+/,o:/[a-z]*/,p:/[ap]\.?m\.?/,y:/\d{2}|\d{4}/,Y:/\d{4}/,T:/Z|[+-]\d{2}(?::?\d{2})?/};
o.m=o.I;o.S=o.M;var c;var b=function(p){c=p;o.a=o.A=j("days");o.b=o.B=j("months");g.each(function(r,q){if(r.format){g[q]=l(r.format);}});};var l=function(r){if(!c){return{format:r};
}var p=[];var q=(r.source||r).replace(/%([a-z])/gi,function(t,s){return a(s)||t;}).replace(/\((?!\?)/g,"(?:").replace(/ (?!\?|\*)/g,",? ").replace(/%([a-z%])/gi,function(t,s){var u=o[s];
if(!u){return s;}p.push(s);return"("+u.source+")";}).replace(/\[a-z\]/gi,"[a-z\\u00c0-\\uffff]");return{format:r,re:new RegExp("^"+q+"$","i"),handler:function(u){u=u.slice(1).associate(p);
var s=new i().clearTime();if("d" in u){f.call(s,"d",1);}if("m" in u){f.call(s,"m",1);}for(var t in u){f.call(s,t,u[t]);}return s;}};};var f=function(p,q){if(!q){return this;
}switch(p){case"a":case"A":return this.set("day",i.parseDay(q,true));case"b":case"B":return this.set("mo",i.parseMonth(q,true));case"d":return this.set("date",q);
case"H":case"I":return this.set("hr",q);case"m":return this.set("mo",q-1);case"M":return this.set("min",q);case"p":return this.set("ampm",q.replace(/\./g,""));
case"S":return this.set("sec",q);case"s":return this.set("ms",("0."+q)*1000);case"w":return this.set("day",q);case"Y":return this.set("year",q);case"y":q=+q;
if(q<100){q+=m+(q<h?100:0);}return this.set("year",q);case"T":if(q=="Z"){q="+00";}var r=q.match(/([+-])(\d{2}):?(\d{2})?/);r=(r[1]+"1")*(r[2]*60+(+r[3]||0))+this.getTimezoneOffset();
return this.set("time",this-r*60000);}return this;};i.defineParsers("%Y([-./]%m([-./]%d((T| )%X)?)?)?","%Y%m%d(T%H(%M%S?)?)?","%x( %X)?","%d%o( %b( %Y)?)?( %X)?","%b( %d%o)?( %Y)?( %X)?","%Y %b( %d%o( %X)?)?","%o %b %d %X %T %Y");
MooTools.lang.addEvent("langChange",function(p){if(MooTools.lang.get("Date")){b(p);}}).fireEvent("langChange",MooTools.lang.getCurrentLanguage());})();
Date.implement({timeDiffInWords:function(a){return Date.distanceOfTimeInWords(this,a||new Date);},timeDiff:function(g,b){if(g==null){g=new Date;}var f=((g-this)/1000).toInt();
if(!f){return"0s";}var a={s:60,m:60,h:24,d:365,y:0};var e,d=[];for(var c in a){if(!f){break;}if((e=a[c])){d.unshift((f%e)+c);f=(f/e).toInt();}else{d.unshift(f+c);
}}return d.join(b||":");}});Date.alias("timeDiffInWords","timeAgoInWords");Date.extend({distanceOfTimeInWords:function(b,a){return Date.getTimePhrase(((a-b)/1000).toInt());
},getTimePhrase:function(f){var d=(f<0)?"Until":"Ago";if(f<0){f*=-1;}var b={minute:60,hour:60,day:24,week:7,month:52/12,year:12,eon:Infinity};var e="lessThanMinute";
for(var c in b){var a=b[c];if(f<1.5*a){if(f>0.75*a){e=c;}break;}f/=a;e=c+"s";}return Date.getMsg(e+d).substitute({delta:f.round()});}});Date.defineParsers({re:/^(?:tod|tom|yes)/i,handler:function(a){var b=new Date().clearTime();
switch(a[0]){case"tom":return b.increment();case"yes":return b.decrement();default:return b;}}},{re:/^(next|last) ([a-z]+)$/i,handler:function(e){var f=new Date().clearTime();
var b=f.getDay();var c=Date.parseDay(e[2],true);var a=c-b;if(c<=b){a+=7;}if(e[1]=="last"){a-=7;}return f.set("date",f.getDate()+a);}});Element.implement({measure:function(e){var g=function(h){return !!(!h||h.offsetHeight||h.offsetWidth);
};if(g(this)){return e.apply(this);}var d=this.getParent(),f=[],b=[];while(!g(d)&&d!=document.body){b.push(d.expose());d=d.getParent();}var c=this.expose();
var a=e.apply(this);c();b.each(function(h){h();});return a;},expose:function(){if(this.getStyle("display")!="none"){return $empty;}var a=this.style.cssText;
this.setStyles({display:"block",position:"absolute",visibility:"hidden"});return function(){this.style.cssText=a;}.bind(this);},getDimensions:function(a){a=$merge({computeSize:false},a);
var f={};var d=function(g,e){return(e.computeSize)?g.getComputedSize(e):g.getSize();};var b=this.getParent("body");if(b&&this.getStyle("display")=="none"){f=this.measure(function(){return d(this,a);
});}else{if(b){try{f=d(this,a);}catch(c){}}else{f={x:0,y:0};}}return $chk(f.x)?$extend(f,{width:f.x,height:f.y}):$extend(f,{x:f.width,y:f.height});},getComputedSize:function(a){a=$merge({styles:["padding","border"],plains:{height:["top","bottom"],width:["left","right"]},mode:"both"},a);
var c={width:0,height:0};switch(a.mode){case"vertical":delete c.width;delete a.plains.width;break;case"horizontal":delete c.height;delete a.plains.height;
break;}var b=[];$each(a.plains,function(g,f){g.each(function(h){a.styles.each(function(i){b.push((i=="border")?i+"-"+h+"-width":i+"-"+h);});});});var e={};
b.each(function(f){e[f]=this.getComputedStyle(f);},this);var d=[];$each(a.plains,function(g,f){var h=f.capitalize();c["total"+h]=c["computed"+h]=0;g.each(function(i){c["computed"+i.capitalize()]=0;
b.each(function(k,j){if(k.test(i)){e[k]=e[k].toInt()||0;c["total"+h]=c["total"+h]+e[k];c["computed"+i.capitalize()]=c["computed"+i.capitalize()]+e[k];}if(k.test(i)&&f!=k&&(k.test("border")||k.test("padding"))&&!d.contains(k)){d.push(k);
c["computed"+h]=c["computed"+h]-e[k];}});});});["Width","Height"].each(function(g){var f=g.toLowerCase();if(!$chk(c[f])){return;}c[f]=c[f]+this["offset"+g]+c["computed"+g];
c["total"+g]=c[f]+c["total"+g];delete c["computed"+g];},this);return $extend(e,c);}});Element.implement({isDisplayed:function(){return this.getStyle("display")!="none";
},isVisible:function(){var a=this.offsetWidth,b=this.offsetHeight;return(a==0&&b==0)?false:(a>0&&b>0)?true:this.isDisplayed();},toggle:function(){return this[this.isDisplayed()?"hide":"show"]();
},hide:function(){var b;try{if((b=this.getStyle("display"))=="none"){b=null;}}catch(a){}return this.store("originalDisplay",b||"block").setStyle("display","none");
},show:function(a){return this.setStyle("display",a||this.retrieve("originalDisplay")||"block");},swapClass:function(a,b){return this.removeClass(a).addClass(b);
}});Fx.Reveal=new Class({Extends:Fx.Morph,options:{link:"cancel",styles:["padding","border","margin"],transitionOpacity:!Browser.Engine.trident4,mode:"vertical",display:"block",hideInputs:Browser.Engine.trident?"select, input, textarea, object, embed":false},dissolve:function(){try{if(!this.hiding&&!this.showing){if(this.element.getStyle("display")!="none"){this.hiding=true;
this.showing=false;this.hidden=true;this.cssText=this.element.style.cssText;var d=this.element.getComputedSize({styles:this.options.styles,mode:this.options.mode});
this.element.setStyle("display","block");if(this.options.transitionOpacity){d.opacity=1;}var b={};$each(d,function(f,e){b[e]=[f,0];},this);this.element.setStyle("overflow","hidden");
var a=this.options.hideInputs?this.element.getElements(this.options.hideInputs):null;this.$chain.unshift(function(){if(this.hidden){this.hiding=false;$each(d,function(f,e){d[e]=f;
},this);this.element.style.cssText=this.cssText;this.element.setStyle("display","none");if(a){a.setStyle("visibility","visible");}}this.fireEvent("hide",this.element);
this.callChain();}.bind(this));if(a){a.setStyle("visibility","hidden");}this.start(b);}else{this.callChain.delay(10,this);this.fireEvent("complete",this.element);
this.fireEvent("hide",this.element);}}else{if(this.options.link=="chain"){this.chain(this.dissolve.bind(this));}else{if(this.options.link=="cancel"&&!this.hiding){this.cancel();
this.dissolve();}}}}catch(c){this.hiding=false;this.element.setStyle("display","none");this.callChain.delay(10,this);this.fireEvent("complete",this.element);
this.fireEvent("hide",this.element);}return this;},reveal:function(){try{if(!this.showing&&!this.hiding){if(this.element.getStyle("display")=="none"||this.element.getStyle("visiblity")=="hidden"||this.element.getStyle("opacity")==0){this.showing=true;
this.hiding=this.hidden=false;var d;this.cssText=this.element.style.cssText;this.element.measure(function(){d=this.element.getComputedSize({styles:this.options.styles,mode:this.options.mode});
}.bind(this));$each(d,function(f,e){d[e]=f;});if($chk(this.options.heightOverride)){d.height=this.options.heightOverride.toInt();}if($chk(this.options.widthOverride)){d.width=this.options.widthOverride.toInt();
}if(this.options.transitionOpacity){this.element.setStyle("opacity",0);d.opacity=1;}var b={height:0,display:this.options.display};$each(d,function(f,e){b[e]=0;
});this.element.setStyles($merge(b,{overflow:"hidden"}));var a=this.options.hideInputs?this.element.getElements(this.options.hideInputs):null;if(a){a.setStyle("visibility","hidden");
}this.start(d);this.$chain.unshift(function(){this.element.style.cssText=this.cssText;this.element.setStyle("display",this.options.display);if(!this.hidden){this.showing=false;
}if(a){a.setStyle("visibility","visible");}this.callChain();this.fireEvent("show",this.element);}.bind(this));}else{this.callChain();this.fireEvent("complete",this.element);
this.fireEvent("show",this.element);}}else{if(this.options.link=="chain"){this.chain(this.reveal.bind(this));}else{if(this.options.link=="cancel"&&!this.showing){this.cancel();
this.reveal();}}}}catch(c){this.element.setStyles({display:this.options.display,visiblity:"visible",opacity:1});this.showing=false;this.callChain.delay(10,this);
this.fireEvent("complete",this.element);this.fireEvent("show",this.element);}return this;},toggle:function(){if(this.element.getStyle("display")=="none"||this.element.getStyle("visiblity")=="hidden"||this.element.getStyle("opacity")==0){this.reveal();
}else{this.dissolve();}return this;},cancel:function(){this.parent.apply(this,arguments);this.element.style.cssText=this.cssText;this.hidding=false;this.showing=false;
}});Element.Properties.reveal={set:function(a){var b=this.retrieve("reveal");if(b){b.cancel();}return this.eliminate("reveal").store("reveal:options",a);
},get:function(a){if(a||!this.retrieve("reveal")){if(a||!this.retrieve("reveal:options")){this.set("reveal",a);}this.store("reveal",new Fx.Reveal(this,this.retrieve("reveal:options")));
}return this.retrieve("reveal");}};Element.Properties.dissolve=Element.Properties.reveal;Element.implement({reveal:function(a){this.get("reveal",a).reveal();
return this;},dissolve:function(a){this.get("reveal",a).dissolve();return this;},nix:function(){var a=Array.link(arguments,{destroy:Boolean.type,options:Object.type});
this.get("reveal",a.options).dissolve().chain(function(){this[a.destroy?"destroy":"dispose"]();}.bind(this));return this;},wink:function(){var b=Array.link(arguments,{duration:Number.type,options:Object.type});
var a=this.get("reveal",b.options);a.reveal().chain(function(){(function(){a.dissolve();}).delay(b.duration||2000);});}});MooTools.lang.set("en-US","Date",{months:["January","February","March","April","May","June","July","August","September","October","November","December"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dateOrder:["month","date","year"],shortDate:"%m/%d/%Y",shortTime:"%I:%M%p",AM:"AM",PM:"PM",ordinal:function(a){return(a>3&&a<21)?"th":["th","st","nd","rd","th"][Math.min(a%10,4)];
},lessThanMinuteAgo:"less than a minute ago",minuteAgo:"about a minute ago",minutesAgo:"{delta} minutes ago",hourAgo:"about an hour ago",hoursAgo:"about {delta} hours ago",dayAgo:"1 day ago",daysAgo:"{delta} days ago",weekAgo:"1 week ago",weeksAgo:"{delta} weeks ago",monthAgo:"1 month ago",monthsAgo:"{delta} months ago",yearAgo:"1 year ago",yearsAgo:"{delta} years ago",lessThanMinuteUntil:"less than a minute from now",minuteUntil:"about a minute from now",minutesUntil:"{delta} minutes from now",hourUntil:"about an hour from now",hoursUntil:"about {delta} hours from now",dayUntil:"1 day from now",daysUntil:"{delta} days from now",weekUntil:"1 week from now",weeksUntil:"{delta} weeks from now",monthUntil:"1 month from now",monthsUntil:"{delta} months from now",yearUntil:"1 year from now",yearsUntil:"{delta} years from now"});

1322
public/javascripts/mootools-more-1.3.1.1.js

File diff suppressed because it is too large

5492
public/javascripts/mootools-yui-compressed.js

File diff suppressed because it is too large

76
public/javascripts/octopress.js

@ -0,0 +1,76 @@
window.addEvent('domready', function() {
codeblocks = $$('div.highlight');
codeblocks.each(addExpander);
});
window.addEvents({
domready: function(){
if(twitter_user){
new Request.Twitter(twitter_user, {
include_replies: false,
data: { count: 3 },
onSuccess: function(tweets){
$('tweets').empty();
for (var i = tweets.length; i--; ){
new Element('li', {
'class': 'tweet'
}).adopt(
new Element('p', { 'html': tweets[i].text+' ' }).adopt(
new Element('a', {
'href': 'http://twitter.com/'+twitter_user+'/status/'+tweets[i].id_str,
'text': new Date(tweets[i].created_at).timeDiffInWords()
}))
).inject('tweets', 'top');
}
}
}).send();
}
$$('#recent_posts time').each(function(date){
date.set('text', new Date(date.get('text')).timeDiffInWords());
});
},
});
function addExpander(div){
new Element('span',{
html: 'expand &raquo;',
'class': 'pre_expander',
'events': {
'click': function(){
toggleExpander(this);
}
}
}).inject(div, 'top');
}
function toggleExpander(expander){
var html = '';
var expanderPos = expander.getPosition().y;
if($('page').toggleClass('expanded').hasClass('expanded'))
html = '&laquo; contract';
else
html = 'expand &raquo;';
$$('div.highlight span.pre_expander').each(function(span){
span.set('html',html);
});
fixScroll(expander, expanderPos);
}
function fixScroll(el, position){
pos = el.getPosition().y - position;
window.scrollTo(window.getScroll().x ,window.getScroll().y + pos);
}
function enableCompressedLayout(codeblocks){
if(!codeblocks.length) return;
new Element('span',{
html: 'Collapse layout',
'id': 'collapser',
'events': {
'click': function(){
if($('page').toggleClass('collapsed').hasClass('collapsed'))
this.set('html','Expand layout');
else
this.set('html','Collapse layout');
}
}
}).inject($('main'), 'top');
}

52
public/javascripts/pinboard.js

@ -0,0 +1,52 @@
var count = pinboard_count;
var linkroll = 'pinboard_linkroll';
function pinboardNS_fetch_script(url) {
document.writeln('<s'+'cript type="text/javascript" src="' + url + '"></s'+'cript>');
}
function pinboardNS_show_bmarks(r) {
var lr = new Pinboard_Linkroll();
lr.set_items(r);
lr.show_bmarks();
}
var json_URL = "http://feeds.pinboard.in/json/v1/u:"+pinboard_user+"/?cb=pinboardNS_show_bmarks\&count=" + count;
pinboardNS_fetch_script(json_URL);
function Pinboard_Linkroll() {
var items;
this.set_items = function(i) {
this.items = i;
}
this.show_bmarks = function() {
var lines = [];
for (var i = 0; i < this.items.length; i++) {
var item = this.items[i];
var str = this.format_item(item);
lines.push(str);
}
$(linkroll).set('html', lines.join("\n"));
}
this.cook = function(v) {
return v.replace('<', '&lt;').replace('>', '&gt>');
}
this.format_item = function(it) {
var str = "<li class=\"pin-item\">";
if (!it.d) { return; }
str += "<p><a class=\"pin-title\" href=\"" + this.cook(it.u) + "\">" + this.cook(it.d) + "</a>";
if (it.n) {
str += "<span class=\"pin-description\">" + this.cook(it.n) + "</span>\n";
}
if (it.t.length > 0) {
for (var i = 0; i < it.t.length; i++) {
var tag = it.t[i];
str += " <a class=\"pin-tag\" href=\"http://pinboard.in/u:"+ this.cook(it.a) + "/t:" + this.cook(tag) + "\">" + this.cook(tag) + "</a> ";
}
}
str += "</p></li>\n";
return str;
}
}
Pinboard_Linkroll.prototype = new Pinboard_Linkroll();

52
public/javascripts/twitter.js

@ -0,0 +1,52 @@
Request.Twitter = new Class({
Extends: Request.JSONP,
options: {
linkify: true,
url: 'http://twitter.com/statuses/user_timeline/{term}.json',
include_replies: true,
data: {
count: 5,
trim_user: true
}
},
initialize: function(term, options){
this.parent(options);
if(this.options.include_replies == false){
this.options.count = this.options.data.count
this.options.data.count += 30; // adds 30 tweets to request for filtering
}
this.options.url = this.options.url.substitute({term: term});
console.log(this.options.url);
},
success: function(args, index){
if(!this.options.include_replies){
args[0] = args[0].filter(function(item, index, array){
return item.in_reply_to_screen_name == null;
});
if(args[0].length > this.options.count){ args[0].length = this.options.count; }
}
var data = args[0];
if (this.options.linkify) data.each(function(tweet){
tweet.text = this.linkify(tweet.text);
}, this);
if (data[0]) this.options.data.since_id = data[0].id; // keep subsequent calls newer
this.parent(args, index);
},
linkify: function(text){
// modified from TwitterGitter by David Walsh (davidwalsh.name)
// courtesy of Jeremy Parrish (rrish.org)
return text.replace(/(https?:\/\/[\w\-:;?&=+.%#\/]+)/gi, '<a href="$1">$1</a>')
.replace(/(^|\W)@(\w+)/g, '$1<a href="http://twitter.com/$2">@$2</a>')
.replace(/(^|\W)#(\w+)/g, '$1#<a href="http://search.twitter.com/search?q=%23$2">$2</a>');
}
});

35
public/sitemap.xml

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://recursive-design.com/about.haml</loc>
<lastmod>2009-11-24</lastmod>
</url>
<url>
<loc>http://recursive-design.com/atom.xml</loc>
<lastmod>2011-03-13</lastmod>
</url>
<url>
<loc>http://recursive-design.com/</loc>
<lastmod>2011-04-08</lastmod>
</url>
<url>
<loc>http://recursive-design.com/test/syntax.html</loc>
<lastmod>2010-04-10</lastmod>
</url>
<url>
<loc>http://recursive-design.com/test/typography.haml</loc>
<lastmod>2009-11-24</lastmod>
</url>
<url>
<loc>http://recursive-design.com/2011/04/07/test-of-typography</loc>
<lastmod>2011-04-07</lastmod>
</url>
<url>
<loc>http://recursive-design.com/2011/03/14/test-post</loc>
<lastmod>2011-03-14</lastmod>
</url>
<url>
<loc>http://recursive-design.com/2009/11/13/hello-world</loc>
<lastmod>2009-11-13</lastmod>
</url>
</urlset>

3
public/stylesheets/screen.css

@ -0,0 +1,3 @@
@charset "UTF-8";html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}body{line-height:1}ol,ul{list-style:none}table{border-collapse:collapse;border-spacing:0}caption,th,td{text-align:left;font-weight:normal;vertical-align:middle}q,blockquote{quotes:none}q:before,q:after,blockquote:before,blockquote:after{content:"";content:none}a img{border:none}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}.group,.inner-wrap,.core-layout > div,body > header > div,body > nav > div,body > footer > div,#page,#page > div{*zoom:1}.group:after,.inner-wrap:after,.core-layout > div:after,body > header > div:after,body > nav > div:after,body > footer > div:after,#page:after,#page > div:after{content:"\0020";display:block;height:0;clear:both;overflow:hidden;visibility:hidden}.inner-wrap,.core-layout > div,body > header > div,body > nav > div,body > footer > div{position:relative;margin:0 auto;padding:0 40px;max-width:1440px}body > header,body > nav,body > footer{min-width:320px}#page{padding:0;max-width:1520px;margin:0 auto}#page > div{margin-right:320px}#page > div > aside{float:left;width:260px;margin:0 -100% 0 0;padding:30px}#main{float:left;width:100%;padding-top:25px;padding-bottom:25px}#main > *{padding-right:40px;padding-left:40px}@media (min-device-width:1024px) and (max-width:800px),
screen and (max-device-width:480px), (max-device-width:480px) and (orientation:landscape),
(min-device-width:481px) and (max-device-width:1024px) and (orientation:portrait){#page > div{margin-right:0}#page > div #main{float:none}#page > div > aside{margin:0;float:none}page > div > aside{float:none}body > header > div,body > nav > div,body > footer > div{padding:0 15px}#main > *{padding-left:15px;padding-right:15px}}@media only screen and (min-device-width: 320px) and (max-device-width: 480px){body > header > div,body > nav > div,body > footer > div{padding:0 10px}#main > *{padding-left:10px;padding-right:10px}#page > div{margin:none}#page > div > aside{float:none}}@font-face{font-family:"Adelle";src:url('/fonts/adellebasic_bold-webfont.eot');src:url('/fonts/adellebasic_bold-webfont.eot?iefix') format('eot'), url('/fonts/adellebasic_bold-webfont.woff') format('woff'), url('/fonts/adellebasic_bold-webfont.ttf') format('truetype'), url('/fonts/adellebasic_bold-webfont.svg#webfontKykxqSyz') format('svg')}.heading-font,body > header h1,h1,h2,h3,h4,h5,h6{font-family:Adelle, "Helvetica Neue", Helvetica, Arial, sans}body > header h1{font-size:3em;line-height:1.2em;margin-bottom:0.6667em}body{font-size:1em;line-height:1.5em;color:black;font-family:Georgia, Times, serif}article{margin-bottom:1.5em;padding-bottom:1.5em;padding-top:1em}article + article{border-top:3px solid #555555}article:last-child{border-bottom:none}article h2{padding-top:0.8em;border-top:3px double #dddddd}article .author,article time{text-transform:uppercase}article .updated{font-size:.8em;color:#555555}article time span{font-size:.7em;line-height:0;position:relative;top:-0.4em}article header p{padding:0 0 1.5em;font-size:.8em;color:#555555;font-family:Palatino, Times, "Times New Roman";top-width:1px}h1,h2,h3,h4,h5,h6{font-weight:normal;line-height:1em;text-rendering:optimizelegibility}h1{font-size:2.6em;margin-bottom:0.6667em}h2,section h1{font-size:1.8em;margin-bottom:0.6667em}h3,section h2,section section h1{font-size:1.6em;margin-bottom:0.875em}h4,section h3,section section h2,section section section h1{font-size:1.3em;margin-bottom:0.875em}h5,section h4,section section h3{font-size:1.1em;margin-bottom:0.75em}h6,section h5,section section h4,section section section h3{font-size:1em;margin-bottom:0.5em}p,blockquote,ul,ol{margin-bottom:1.5em}ul{list-style-type:disc}ol{list-style-type:decimal}ol ol{list-style-type:lower-alpha}ul ul,ol ol{margin-left:1.75em}li{margin-bottom:.5em}strong{font-weight:bold}em{font-style:italic}sup,sub{font-size:0.8em;position:relative;display:inline-block}sup{top:-0.5em}sub{bottom:-0.5em}q{font-style:italic}q:before{content:"\201C"}q:after{content:"\201D"}em,dfn{font-style:italic}strong,dfn{font-weight:bold}del,s{text-decoration:line-through}abbr,acronym{border-bottom:1px dotted;cursor:help}sub,sup{line-height:0}hr{margin-bottom:0.2em}small{font-size:.8em}big{font-size:1.2em}blockquote{font-style:italic;position:relative;margin-left:2em}blockquote > p:first-child:before{content:"\201C";position:absolute;top:0.1em;left:-0.7em;font-size:3em;color:#dddddd}blockquote > p:last-child:after{content:"\201D";position:relative;top:0.3em;line-height:0;font-size:2em;color:#dddddd}blockquote + p > cite{margin-left:2em;text-align:right}blockquote + p > cite:before{content:'– ';color:#555555}blockquote + p > cite a{font-style:italic}

483
rubypants.rb

@ -1,483 +0,0 @@
#
# = RubyPants - SmartyPants ported to Ruby
#
# Ported by Christian Neukirchen <mailto:chneukirchen@gmail.com>
# Copyright (C) 2004 Christian Neukirchen
#
# Incooporates ideas, comments and documentation by Chad Miller
# Copyright (C) 2004 Chad Miller
#
# Original SmartyPants by John Gruber
# Copyright (C) 2003 John Gruber
#
#
# = RubyPants - SmartyPants ported to Ruby
#
# == Synopsis
#
# RubyPants is a Ruby port of the smart-quotes library SmartyPants.
#
# The original "SmartyPants" is a free web publishing plug-in for
# Movable Type, Blosxom, and BBEdit that easily translates plain ASCII
# punctuation characters into "smart" typographic punctuation HTML
# entities.
#
#
# == Description
#
# RubyPants can perform the following transformations:
#
# * Straight quotes (<tt>"</tt> and <tt>'</tt>) into "curly" quote
# HTML entities
# * Backticks-style quotes (<tt>``like this''</tt>) into "curly" quote
# HTML entities
# * Dashes (<tt>--</tt> and <tt>---</tt>) into en- and em-dash
# entities
# * Three consecutive dots (<tt>...</tt> or <tt>. . .</tt>) into an
# ellipsis entity
#
# This means you can write, edit, and save your posts using plain old
# ASCII straight quotes, plain dashes, and plain dots, but your
# published posts (and final HTML output) will appear with smart
# quotes, em-dashes, and proper ellipses.
#
# RubyPants does not modify characters within <tt><pre></tt>,
# <tt><code></tt>, <tt><kbd></tt>, <tt><math></tt> or
# <tt><script></tt> tag blocks. Typically, these tags are used to
# display text where smart quotes and other "smart punctuation" would
# not be appropriate, such as source code or example markup.
#
#
# == Backslash Escapes
#
# If you need to use literal straight quotes (or plain hyphens and
# periods), RubyPants accepts the following backslash escape sequences
# to force non-smart punctuation. It does so by transforming the
# escape sequence into a decimal-encoded HTML entity:
#
# \\ \" \' \. \- \`
#
# This is useful, for example, when you want to use straight quotes as
# foot and inch marks: 6'2" tall; a 17" iMac. (Use <tt>6\'2\"</tt>
# resp. <tt>17\"</tt>.)
#
#
# == Algorithmic Shortcomings
#
# One situation in which quotes will get curled the wrong way is when
# apostrophes are used at the start of leading contractions. For
# example:
#
# 'Twas the night before Christmas.
#
# In the case above, RubyPants will turn the apostrophe into an
# opening single-quote, when in fact it should be a closing one. I
# don't think this problem can be solved in the general case--every
# word processor I've tried gets this wrong as well. In such cases,
# it's best to use the proper HTML entity for closing single-quotes
# (``&#8217;``) by hand.
#
#
# == Bugs
#
# To file bug reports or feature requests (except see above) please
# send email to: mailto:chneukirchen@gmail.com
#
# If the bug involves quotes being curled the wrong way, please send
# example text to illustrate.
#
#
# == Authors
#
# John Gruber did all of the hard work of writing this software in
# Perl for Movable Type and almost all of this useful documentation.
# Chad Miller ported it to Python to use with Pyblosxom.
#
# Christian Neukirchen provided the Ruby port, as a general-purpose
# library that follows the *Cloth api.
#
#
# == Copyright and License
#
# === SmartyPants license:
#
# Copyright (c) 2003 John Gruber
# (http://daringfireball.net)
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
#
# * Neither the name "SmartyPants" nor the names of its contributors
# may be used to endorse or promote products derived from this
# software without specific prior written permission.
#
# This software is provided by the copyright holders and contributors
# "as is" and any express or implied warranties, including, but not
# limited to, the implied warranties of merchantability and fitness
# for a particular purpose are disclaimed. In no event shall the
# copyright owner or contributors be liable for any direct, indirect,
# incidental, special, exemplary, or consequential damages (including,
# but not limited to, procurement of substitute goods or services;
# loss of use, data, or profits; or business interruption) however
# caused and on any theory of liability, whether in contract, strict
# liability, or tort (including negligence or otherwise) arising in
# any way out of the use of this software, even if advised of the
# possibility of such damage.
#
# === RubyPants license
#
# RubyPants is a derivative work of SmartyPants and smartypants.py.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
#
# This software is provided by the copyright holders and contributors
# "as is" and any express or implied warranties, including, but not
# limited to, the implied warranties of merchantability and fitness
# for a particular purpose are disclaimed. In no event shall the
# copyright owner or contributors be liable for any direct, indirect,
# incidental, special, exemplary, or consequential damages (including,
# but not limited to, procurement of substitute goods or services;
# loss of use, data, or profits; or business interruption) however
# caused and on any theory of liability, whether in contract, strict
# liability, or tort (including negligence or otherwise) arising in
# any way out of the use of this software, even if advised of the
# possibility of such damage.
#
#
# == Links
#
# John Gruber:: http://daringfireball.net
# SmartyPants:: http://daringfireball.net/projects/smartypants
#
# Chad Miller:: http://web.chad.org
#
# Christian Neukirchen:: http://kronavita.de/chris
#
class RubyPants < String
VERSION = "0.1"
# Allowed elements in the options array:
#
# 0 :: do nothing
# 1 :: set all
# 2 :: set all, using old school en- and em- dash shortcuts
# 3 :: set all, using inverted old school en and em- dash shortcuts
# -1 :: stupefy (translate HTML entities to their ASCII-counterparts)
#
# <tt>:quotes</tt> :: quotes
# <tt>:backticks</tt> :: backtick quotes (``double'' only)
# <tt>:allbackticks</tt> :: backtick quotes (``double'' and `single')
# <tt>:dashes</tt> :: dashes
# <tt>:oldschool</tt> :: old school dashes
# <tt>:inverted</tt> :: inverted old school dashes
# <tt>:ellipses</tt> :: ellipses
# <tt>:convertquotes</tt> :: convert <tt>&quot;</tt> entities to
# <tt>"</tt> for Dreamweaver users
# <tt>:stupefy</tt> :: translate SmartyPants HTML entities
# to their ASCII counterparts.
#
def initialize(string, options=[2])
super string
@options = [*options]
end
# Apply SmartyPants transformations.
def to_html
do_quotes = do_backticks = do_dashes = do_ellipses = do_stupify = nil
convert_quotes = false
if @options.include? 0
# Do nothing.
return self
elsif @options.include? 1
# Do everything, turn all options on.
do_quotes = do_backticks = do_ellipses = true
do_dashes = :normal
elsif @options.include? 2
# Do everything, turn all options on, use old school dash shorthand.
do_quotes = do_backticks = do_ellipses = true
do_dashes = :oldschool
elsif @options.include? 3
# Do everything, turn all options on, use inverted old school
# dash shorthand.
do_quotes = do_backticks = do_ellipses = true
do_dashes = :inverted
elsif @options.include?(-1)
do_stupefy = true
else
do_quotes = @options.include? :quotes
do_backticks = @options.include? :backticks
do_backticks = :both if @options.include? :allbackticks
do_dashes = :normal if @options.include? :dashes
do_dashes = :oldschool if @options.include? :oldschool
do_dashes = :inverted if @options.include? :inverted
do_ellipses = @options.include? :ellipses
convert_quotes = @options.include? :convertquotes
do_stupefy = @options.include? :stupefy
end
# Parse the HTML
tokens = tokenize
# Keep track of when we're inside <pre> or <code> tags.
in_pre = false
# Here is the result stored in.
result = ""
# This is a cheat, used to get some context for one-character
# tokens that consist of just a quote char. What we do is remember
# the last character of the previous text token, to use as context
# to curl single- character quote tokens correctly.
prev_token_last_char = ""
tokens.each { |token|
if token.first == :tag
result << token[1]
if token[1] =~ %r!<(/?)(?:pre|code|kbd|script|math)[\s>]!
in_pre = ($1 != "/") # Opening or closing tag?
end
else
t = token[1]
# Remember last char of this token before processing.
last_char = t[-1]
unless in_pre
t = process_escapes t
t.gsub!(/&quot;/, '"') if convert_quotes
if do_dashes
t = educate_dashes t if do_dashes == :normal
t = educate_dashes_oldschool t if do_dashes == :oldschool
t = educate_dashes_inverted t if do_dashes == :inverted
end
t = educate_ellipses t if do_ellipses
# Note: backticks need to be processed before quotes.
if do_backticks
t = educate_backticks t
t = educate_single_backticks t if do_backticks == :both
end
if do_quotes
if t == "'"
# Special case: single-character ' token
if prev_token_last_char =~ /\S/
t = "&#8217;"
else
t = "&#8216;"
end
elsif t == '"'
# Special case: single-character " token
if prev_token_last_char =~ /\S/
t = "&#8221;"
else
t = "&#8220;"
end
else
# Normal case:
t = educate_quotes t
end
end
t = stupefy_entities t if do_stupefy
end
prev_token_last_char = last_char
result << t
end
}
# Done
result
end
protected
# Return the string, with after processing the following backslash
# escape sequences. This is useful if you want to force a "dumb" quote
# or other character to appear.
#
# Escaped are:
# \\ \" \' \. \- \`
#
def process_escapes(str)
str.gsub(/\\\\/, '&#92;').
gsub(/\\"/, '&#34;').
gsub(/\\'/, '&#39;').
gsub(/\\\./, '&#46;').
gsub(/\\-/, '&#45;').
gsub(/\\`/, '&#96;')
end
# The string, with each instance of "<tt>--</tt>" translated to an
# em-dash HTML entity.
#
def educate_dashes(str)
str.gsub(/--/, '&#8212;')
end
# The string, with each instance of "<tt>--</tt>" translated to an
# en-dash HTML entity, and each "<tt>---</tt>" translated to an
# em-dash HTML entity.
#
def educate_dashes_oldschool(str)
str.gsub(/---/, '&#8212;').gsub(/--/, '&#8211;')
end
# Return the string, with each instance of "<tt>--</tt>" translated
# to an em-dash HTML entity, and each "<tt>---</tt>" translated to
# an en-dash HTML entity. Two reasons why: First, unlike the en- and
# em-dash syntax supported by +educate_dashes_oldschool+, it's
# compatible with existing entries written before SmartyPants 1.1,
# back when "<tt>--</tt>" was only used for em-dashes. Second,
# em-dashes are more common than en-dashes, and so it sort of makes
# sense that the shortcut should be shorter to type. (Thanks to
# Aaron Swartz for the idea.)
#
def educate_dashes_inverted(str)
str.gsub(/---/, '&#8211;').gsub(/--/, '&#8212;')
end
# Return the string, with each instance of "<tt>...</tt>" translated
# to an ellipsis HTML entity. Also converts the case where there are
# spaces between the dots.
#
def educate_ellipses(str)
str.gsub('...', '&#8230;').gsub('. . .', '&#8230;')
end
# Return the string, with <tt>``backticks''</tt>-style single quotes
# translated into HTML curly quote entities.
#
def educate_backticks(str)
str.gsub("``", '&#8220;').gsub("''", '&#8221;')
end
# Return the string, with <tt>`backticks'</tt>-style single quotes
# translated into HTML curly quote entities.
#
def educate_single_backticks(str)
str.gsub("`", '&#8216;').gsub("'", '&#8217;')
end
# Return the string, with "educated" curly quote HTML entities.
#
def educate_quotes(str)
punct_class = '[!"#\$\%\'()*+,\-.\/:;<=>?\@\[\\\\\]\^_`{|}~]'
str = str.dup
# Special case if the very first character is a quote followed by
# punctuation at a non-word-break. Close the quotes by brute
# force:
str.gsub!(/^'(?=#{punct_class}\B)/, '&#8217;')
str.gsub!(/^"(?=#{punct_class}\B)/, '&#8221;')
# Special case for double sets of quotes, e.g.:
# <p>He said, "'Quoted' words in a larger quote."</p>
str.gsub!(/"'(?=\w)/, '&#8220;&#8216;')
str.gsub!(/'"(?=\w)/, '&#8216;&#8220;')
# Special case for decade abbreviations (the '80s):
str.gsub!(/'(?=\d\ds)/, '&#8217;')
close_class = %![^\ \t\r\n\\[\{\(\-]!
dec_dashes = '&#8211;|&#8212;'
# Get most opening single quotes:
str.gsub!(/(\s|&nbsp;|--|&[mn]dash;|#{dec_dashes}|&#x201[34];)'(?=\w)/,
'\1&#8216;')
# Single closing quotes:
str.gsub!(/(#{close_class})'/, '\1&#8217;')
str.gsub!(/'(\s|s\b|$)/, '&#8217;\1')
# Any remaining single quotes should be opening ones:
str.gsub!(/'/, '&#8216;')
# Get most opening double quotes:
str.gsub!(/(\s|&nbsp;|--|&[mn]dash;|#{dec_dashes}|&#x201[34];)"(?=\w)/,
'\1&#8220;')
# Double closing quotes:
str.gsub!(/(#{close_class})"/, '\1&#8221;')
str.gsub!(/"(\s|s\b|$)/, '&#8221;\1')
# Any remaining quotes should be opening ones:
str.gsub!(/"/, '&#8220;')
str
end
# Return the string, with each SmartyPants HTML entity translated to
# its ASCII counterpart.
#
def stupefy_entities(str)
str.
gsub(/&#8211;/, '-'). # en-dash
gsub(/&#8212;/, '--'). # em-dash
gsub(/&#8216;/, "'"). # open single quote
gsub(/&#8217;/, "'"). # close single quote
gsub(/&#8220;/, '"'). # open double quote
gsub(/&#8221;/, '"'). # close double quote
gsub(/&#8230;/, '...') # ellipsis
end
# Return an array of the tokens comprising the string. Each token is
# either a tag (possibly with nested, tags contained therein, such
# as <tt><a href="<MTFoo>"></tt>, or a run of text between
# tags. Each element of the array is a two-element array; the first
# is either :tag or :text; the second is the actual value.
#
# Based on the <tt>_tokenize()</tt> subroutine from Brad Choate's
# MTRegex plugin. <http://www.bradchoate.com/past/mtregex.php>
#
# This is actually the easier variant using tag_soup, as used by
# Chad Miller in the Python port of SmartyPants.
#
def tokenize
tag_soup = /([^<]*)(<[^>]*>)/
tokens = []
prev_end = 0
scan(tag_soup) {
tokens << [:text, $1] if $1 != ""
tokens << [:tag, $2]
prev_end = $~.end(0)
}
if prev_end < size
tokens << [:text, self[prev_end..-1]]
end
tokens
end
end

219
source/_helpers.rb

@ -1,219 +0,0 @@
gem 'activesupport', "2.3.5"
require 'active_support'
require 'rubypants'
module Helpers
module EscapeHelper
HTML_ESCAPE = { '&' => '&amp; ', '>' => '&gt;', '<' => '&lt;', '"' => '&quot;' }
JSON_ESCAPE = { '&' => '\u0026 ', '>' => '\u003E', '<' => '\u003C' }
# A utility method for escaping HTML tag characters.
# This method is also aliased as <tt>h</tt>.
#
# In your ERb templates, use this method to escape any unsafe content. For example:
# <%=h @person.name %>
#
# ==== Example:
# puts html_escape("is a > 0 & a < 10?")
# # => is a &gt; 0 &amp; a &lt; 10?
def html_escape(html)
html.to_s.gsub(/[&"><]/) { |special| HTML_ESCAPE[special] }
end
def escape_once(html)
html.to_s.gsub(/[\"><]|&(?!([a-zA-Z]+|(#\d+));)/) { |special| HTML_ESCAPE[special] }
end
alias h escape_once
# A utility method for escaping HTML entities in JSON strings.
# This method is also aliased as <tt>j</tt>.
#
# In your ERb templates, use this method to escape any HTML entities:
# <%=j @person.to_json %>
#
# ==== Example:
# puts json_escape("is a > 0 & a < 10?")
# # => is a \u003E 0 \u0026 a \u003C 10?
def json_escape(s)
s.to_s.gsub(/[&"><]/) { |special| JSON_ESCAPE[special] }
end
alias j json_escape
end
include EscapeHelper
module ParamsHelper
def params
@params ||= begin
q = request.query.dup
q.each { |(k,v)| q[k.to_s.intern] = v }
q
end
end
end
include ParamsHelper
module TagHelper
def content_tag(name, content, html_options={})
%{<#{name}#{html_attributes(html_options)}>#{content}</#{name}>}
end
def tag(name, html_options={})
%{<#{name}#{html_attributes(html_options)} />}
end
def image_tag(src, html_options = {})
tag(:img, html_options.merge({:src=>src}))
end
def javascript_tag(content = nil, html_options = {})
content_tag(:script, javascript_cdata_section(content), html_options.merge(:type => "text/javascript"))
end
def link_to(name, href, html_options = {})
html_options = html_options.stringify_keys
confirm = html_options.delete("confirm")
onclick = "if (!confirm('#{html_escape(confirm)}')) return false;" if confirm
content_tag(:a, name, html_options.merge(:href => href, :onclick=>onclick))
end
def link_to_function(name, *args, &block)
html_options = {}
html_options = args.pop if args.last.is_a? Hash
function = args[0] || ''
onclick = "#{"#{html_options[:onclick]}; " if html_options[:onclick]}#{function}; return false;"
href = html_options[:href] || '#'
content_tag(:a, name, html_options.merge(:href => href, :onclick => onclick))
end
private
def cdata_section(content)
"<![CDATA[#{content}]]>"
end
def javascript_cdata_section(content) #:nodoc:
"\n//#{cdata_section("\n#{content}\n//")}\n"
end
def html_attributes(options)
unless options.blank?
attrs = []
options.each_pair do |key, value|
if value == true
attrs << %(#{key}="#{key}") if value
else
attrs << %(#{key}="#{value}") unless value.nil?
end
end
" #{attrs.sort * ' '}" unless attrs.empty?
end
end
end
include TagHelper
def to_html_email(address)
email = string_to_html(address)
"<a href=\"#{string_to_html('mailto:')}#{email}\">#{email}</a>"
end
def string_to_html(s)
s.strip.unpack("C*").map{|ch| "&#" + ch.to_s + ";" }.to_s
end
def show_part (file)
data = ''
f = File.open(Dir.pwd+"/source/"+file)
f.each_line do |line|
data += line
end
data
end
def shorten_words (string, word_limit = 25)
words = string.split(/\s/)
if words.size >= word_limit
words[0,(word_limit-1)].join(" ") + '&hellip;'
else
string
end
end
def shorten (string, char_limit = 55)
chars = string.scan(/.{1,1}/)
if chars.size >= char_limit
chars[0,(char_limit-1)].join + '&hellip;'
else
"blah2"
end
end
def absolute_url(input, url)
input.gsub(/(href|src)(\s*=\s*)(["'])(\/.*?)\3/) { $1 + $2 + $3 + url + $4 + $3 }
end
def rp(input)
RubyPants.new(input).to_html
end
def style_amp(input)
input.gsub(" & "," <span class='amp'>&</span> ")
end
module PartialsHelper
# A very hackish way to handle partials. We'll go with it till it breaks...
def include(partial_name)
file_ext = partial_name[(partial_name.index('.') + 1)..partial_name.length]
contents = IO.read("source/_includes/#{partial_name}")
case file_ext
when 'haml'
Haml::Engine.new(contents).render(binding)
when 'textile'
RedCloth.new(contents).to_html
when 'markdown'
RDiscount.new(contents).to_html
else
contents
end
end
end
include PartialsHelper
end
class String
def titlecase
small_words = %w(a an and as at but by en for if in of on or the to v v. via vs vs.)
x = split(" ").map do |word|
# note: word could contain non-word characters!
# downcase all small_words, capitalize the rest
small_words.include?(word.gsub(/\W/, "").downcase) ? word.downcase! : word.smart_capitalize!
word
end
# capitalize first and last words
x.first.to_s.smart_capitalize!
x.last.to_s.smart_capitalize!
# small words after colons are capitalized
x.join(" ").gsub(/:\s?(\W*#{small_words.join("|")}\W*)\s/) { ": #{$1.smart_capitalize} " }
end
def titlecase!
replace(titlecase)
end
def smart_capitalize
# ignore any leading crazy characters and capitalize the first real character
if self =~ /^['"\(\[']*([a-z])/
i = index($1)
x = self[i,self.length]
# word with capitals and periods mid-word are left alone
self[i,1] = self[i,1].upcase unless x =~ /[A-Z]/ or x =~ /\.\w+/
end
self
end
def smart_capitalize!
replace(smart_capitalize)
end
end

18
source/_includes/article.html

@ -0,0 +1,18 @@
<header>
<p>
<time>{{ page.date | ordinalize }}</time>
{% if site.author or site.author == page.author %}
<span class="byline"><em>by</em> <span class="author">{{ site.author }}</span></span>
{% elsif page.author %}
<span class="byline"><em>by</em> <span class="author">{{ page.author }}</span></span>
{% endif %}
</p>
<h1><a href="{{ page.url }}">{{ page.title }}</a></h1>
</header>
{% if index %}
<div class="entry">{{ content | exerpt(content, page.url, 'Continue reading &raquo;') | smart_quotes }}</div>
{% else %}
<div class="entry">{{ content | smart_quotes }}</div>
{% endif %}
{% if page.updated %}<p class="updated"><em>updated</em> <time>{{ page.updated | ordinalize }}</time></p>{% endif %}

3
source/_includes/delicious.haml

@ -1,3 +0,0 @@
%h4 My Delicious <a class="small" href="http://delicious.com/#{page.delicious_user}">more &rarr;</a>
#delicious
%script(type="text/javascript" src="http://feeds.delicious.com/v2/js/#{page.delicious_user}?title=&count=#{page.delicious_count}&sort=date&extended")

3
source/_includes/delicious.html

@ -0,0 +1,3 @@
<h4>On Delicious</h4>
<script type="text/javascript" src="http://feeds.delicious.com/v2/js/{{ site.delicious_user }}?title=&count={{ site.delicious_count }}&sort=date&extended"></script>
<p><a href="http://delicious.com/{{ site.delicious_user }}">My Delicious Bookmarks &raquo;</a></p>

11
source/_includes/disqus_hook.haml

@ -1,11 +0,0 @@
:javascript
(function() {
var links = document.getElementsByTagName('a');
var query = '?';
for(var i = 0; i < links.length; i++) {
if(links[i].href.indexOf('#disqus_thread') >= 0) {
query += 'url' + i + '=' + encodeURIComponent(links[i].href) + '&';
}
}
document.write('<script charset="utf-8" type="text/javascript" src="http://disqus.com/forums/#{page.disqus_short_name}/get_num_replies.js' + query + '"></' + 'script>');
})();

5
source/_includes/disqus_thread.haml

@ -1,5 +0,0 @@
:javascript
var disqus_url = "#{page.full_url}#{page.url}";
%noscript
%a(href="http://#{page.disqus_short_name}.disqus.com/?url=ref") View the discussion thread
%script(type="text/javascript" src="http://disqus.com/forums/#{page.disqus_short_name}/embed.js")

7
source/_includes/disqus_thread.html

@ -0,0 +1,7 @@
<script type="text/javascript">
var disqus_url = "{{ site.url }}{{ page.url }}";
</script>
<noscript>
<a href="http://{{ site.disqus_short_name }}.disqus.com/?url=ref">View the discussion thread</a>
</noscript>
<script type="text/javascript" src="http://disqus.com/forums/{{ site.disqus_short_name }}/embed.js"></script>

7
source/_includes/footer.haml

@ -1,7 +0,0 @@
#footer
.content
Copyright &copy; #{Time.now.strftime('%Y')} - #{page.blog_title} -
%span.credit Powered by <a href="http://octopress.org">Octopress</a>
= include "disqus_hook.haml" if page.respond_to?(:disqus_short_name) && page.disqus_short_name
= include "google_analytics.haml" if page.respond_to?(:google_analytics_tracking_id) && page.google_analytics_tracking_id

11
source/_includes/footer.html

@ -0,0 +1,11 @@
<p>
Copyright &copy; {{ site.time | date: "%Y" }} - {{ site.author }} -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
{% if site.pinboard_user %}
<script language="javascript">
var pinboard_user = "{{ site.pinboard_user }}";
var pinboard_count = "{{ site.pinboard_count }}";
</script>
<script language="javascript" src="/javascripts/pinboard.js"></script>
{% endif %}

6
source/_includes/google_analytics.haml → source/_includes/google_analytics.html

@ -1,4 +1,5 @@
:javascript
<script src="http://www.google-analytics.com/ga.js" type="text/javascript"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', '#{page.google_analytics_tracking_id}']);
_gaq.push(['_trackPageview']);
@ -7,4 +8,5 @@
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
})();
})();
</script>

22
source/_includes/head.haml

@ -1,22 +0,0 @@
%head
%title #{page.blog_title} :: #{page.title}
%meta(http-equiv="Content-Type" content="text/html; charset=utf-8")
- if page.respond_to? :description
%meta(name="description" content="#{page.description}")/
- if page.respond_to? :keywords
%meta(name="keywords" content="#{page.keywords}")/
%link(href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css")
%script(src="http://ajax.googleapis.com/ajax/libs/mootools/1.2.4/mootools-yui-compressed.js" type="text/javascript")
%script(src="/javascripts/mootools-1.2.4.2-more.js" type="text/javascript")
- if page.respond_to? :twitter_user
:javascript
var twitter_user = "#{page.twitter_user}"
var show_replies = #{page.show_replies};
var tweet_count = #{page.tweet_count};
%script(src="/javascripts/octopress.js" type="text/javascript")
%script(src="/javascripts/twitter.js" type="text/javascript")
- if page.respond_to? :google_analytics
%script(src="http://www.google-analytics.com/ga.js" type="text/javascript")
- # RSS Feed
%link(href="/atom.xml" rel="alternate" title="#{page.blog_title}" type="application/atom+xml")

28
source/_includes/head.html

@ -0,0 +1,28 @@
<head>
<title>{{page.title}} - {{site.title}}</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
{% if page.description %}
<meta name="description" content="{{page.description}}"/>
{% endif %}
{% if page.keywords %}
<meta name="keywords" content="{{page.keywords}}"/>
{% endif %}
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
<script src="/javascripts/mootools-yui-compressed.js" type="text/javascript"></script>
<script src="/javascripts/mootools-more-1.3.1.1.js" type="text/javascript"></script>
<script src="/javascripts/octopress.js" type="text/javascript"></script>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<meta name="viewport" content="initial-scale=1.0 width=device-width">
{% if site.twitter_user %}
<script>
var twitter_user = "{{site.twitter_user}}";
var show_replies = {{site.show_replies}};
var tweet_count = {{site.tweet_count}};
</script>
<script src="/javascripts/twitter.js" type="text/javascript"></script>
{% endif %}
{% if site.google_analytics_tracking_id %}
{% include google_analytics.html %}
{% endif %}
<link href="/atom.xml" rel="alternate" title="{{site.title}}" type="application/atom+xml"/>
</head>

9
source/_includes/header.haml

@ -1,9 +0,0 @@
.content
%h1
%a.title(href="/")=page.blog_title
- if page.respond_to?(:google_custom_search_id) && page.google_custom_search_id
#search
%form(action="http://www.google.com/cse" id="cse-search-box")
%input(type="hidden" name="cx" value="#{page.google_custom_search_id}")
%input(type="hidden" name="ie" value="UTF-8")
%input#q(type="text" name="q")

10
source/_includes/header.html

@ -0,0 +1,10 @@
<h1><a href="/">{{ site.title }}</a></h1>
{% if site.google_custom_search_id && site.google_custom_search_id %}
<div id="search">
<form action="http://www.google.com/cse" id="cse-search-box">
<input type="hidden" name="cx" value="{{ site.google_custom_search_id }}">
<input type="hidden" name="ie" value="UTF-8">
<input#q type="text" name="q">
</form>
</div>
{% endif %}

8
source/_includes/navigation.haml

@ -1,8 +0,0 @@
.content
%ul
%li.alpha
%a(href="/") Blog
%li.omega
%a(href="/about.html") About
%li.subscribe
%a(href="/atom.xml") Subscribe

5
source/_includes/navigation.html

@ -0,0 +1,5 @@
<ul>
<li><a href="/">Blog</a></li>
<li><a href="/about/">About</a></li>
<li class="subscribe"><a href="/atom.xml">Subscribe</a></li>
</ul>

3
source/_includes/pinboard.html

@ -0,0 +1,3 @@
<h4>My Pinboard</h4>
<ul id="pinboard_linkroll">Fetching linkroll...</ul>
<p><a href="http://pinboard.in/u:{{ site.pinboard_user }}">My Pinboard Bookmarks &raquo;</a></p>

8
source/_includes/post.haml

@ -1,8 +0,0 @@
.article
%h2= page.title
.meta
- author = (page.respond_to?(:author) && page.author) ? 'by: ' + page.author + ' |' : ''
#{author} posted: #{page.date.strftime("%B #{page.date.day.ordinalize}, %Y")}
= (page.respond_to?(:updated) && page.updated) ? " | updated: #{page.updated}" : ''
= preserve rp(content)
#disqus_thread= include "disqus_thread.haml" if page.respond_to?(:disqus_short_name) && page.disqus_short_name

2
source/_includes/sidebar.haml

@ -1,2 +0,0 @@
= include "twitter.haml" if page.respond_to?(:twitter_user) && page.twitter_user
= include "delicious.haml" if page.respond_to?(:delicious_user) && page.delicious_user

24
source/_includes/sidebar.html

@ -0,0 +1,24 @@
<h4>About Me</h4>
<p> Yo everybody! </p>
{% if site.recent_posts %}
<section>
<h4>Recent Posts</h4>
<ul id="recent_posts">
{% for post in site.posts limit: site.recent_posts %}
<li class="post">
<a href="{{ post.url }}">{{ post.title }}</a>
<time>{{ post.date | date: "%B %d, %Y" }}</time>
</li>
{% endfor %}
</ul>
</section>
{% endif %}
{% if site.twitter_user %}
<section>{% include twitter.html %}</section>
{% endif %}
{% if site.delicious_user %}
<section>{% include delicious.html %}</section>
{% endif %}
{% if site.pinboard_user %}
<section>{% include pinboard.html %}</section>
{% endif %}

4
source/_includes/twitter.haml

@ -1,4 +0,0 @@
%h4 Twitter <a class="small" href="http://twitter.com/#{page.twitter_user}">@#{page.twitter_user}</a>
#twitter
%ul#twitter_status
Status updating...

5
source/_includes/twitter.html

@ -0,0 +1,5 @@
<h4>On Twitter</h4>
<ul id="tweets">
Status updating...
</ul>
<p>Follow <a href="http://twitter.com/#{page.twitter_user}">@{{ site.twitter_user }}</a></p>

32
source/_layouts/blog_post.haml

@ -1,32 +0,0 @@
---
blog_title: My Octopress Blog
author:
twitter_user:
tweet_count: 3
show_replies: false
delicious_user:
delicious_count: 3
full_url:
disqus_short_name:
google_custom_search_id:
google_analytics_tracking_id:
---
!!! 1.1 Transitional
%html(xmlns="http://www.w3.org/1999/xhtml" xml:lang="en")
= include "head.haml"
%body(id="#{(page.respond_to?(:body_id) ? page.body_id : nil)}")
#header= include "header.haml"
#nav= include "navigation.haml"
#page
#content
#main
.blog.content= include "post.haml"
#sidebar= include "sidebar.haml"
= include "footer.haml"

32
source/_layouts/default.haml

@ -1,32 +0,0 @@
---
blog_title: My Octopress Blog
author:
twitter_user: imathis
tweet_count: 3
show_replies: false
delicious_user:
delicious_count: 3
full_url:
disqus_short_name:
google_custom_search_id:
google_analytics_tracking_id:
---
!!! 1.1 Transitional
%html(xmlns="http://www.w3.org/1999/xhtml" xml:lang="en")
= include "head.haml"
%body(id="#{(page.respond_to?(:body_id) ? page.body_id : nil)}")
#header= include "header.haml"
#nav= include "navigation.haml"
#page
#content
#main
.content= preserve rp(content)
#sidebar= include "sidebar.haml"
= include "footer.haml"

15
source/_layouts/default.html

@ -0,0 +1,15 @@
<!DOCTYPE html>
<html>
{% include head.html %}
<body id="{{ page.body_id }}">
<header><div>{% include header.html %}</div></header>
<nav id="nav"><div>{% include navigation.html %}</div></nav>
<div id="page">
<div>
<div id="main"><article>{{ content }}</article></div>
<aside>{% include sidebar.html %}</aside>
</div>
</div>
<footer><div>{% include footer.html %}</div></footer>
</body>
</html>

10
source/_layouts/post.html

@ -0,0 +1,10 @@
---
layout: default
---
<article>
{% include article.html %}
{% if site.disqus_short_name %}
<div id="disqus_thread">{% include disqus_thread.html %}</div>
{% endif %}
</article>

10
source/_posts/2009-11-13-hello-world.markdown

@ -1,14 +1,16 @@
---
title: Hello World! I'm Octopress!
layout: post
updated: March 10th, 2010
---
**Octopress is a blogging framework designed for hackers**, based on [Jekyll](http://github.com/mojombo/jekyll) the blog aware static site generator powering [Github pages](http://pages.github.com/).
If you don't know what Jekyll is, [Jack Moffitt](http://metajack.im/2009/01/23/blogging-with-git-emacs-and-jekyll/) wrote a good summary:
> Jekyll is a static blog generator; it transforms a directory of input files into another directory of files suitable for a blog. The management of the blog is handled by standard, familiar tools like creating and renaming files, the text editor of your choice, and version control.
> <cite>**Jack Moffitt** [Blogging with Git Emacs and Jekyll](http://metajack.im/2009/01/23/blogging-with-git-emacs-and-jekyll/)</cite>
> Jekyll is a static blog generator; it transforms a directory of input files into another directory of files suitable for a blog. The management of the blog is handled by standard, familiar tools like creating and renaming files, the text editor of your choice, and version control.
There's no database to set up, and you get to use tools like Emacs, vim, or TextMate to write your posts, not some lame in-browser text editor. Just write, generate, deploy, using the same tools and patters you already use for your daily work.
<cite>**Jack Moffitt** [Blogging with Git Emacs and Jekyll](http://metajack.im/2009/01/23/blogging-with-git-emacs-and-jekyll/)</cite>
[Read the wiki to learn more](http://wiki.github.com/imathis/octopress/)
There's no database to set up, and you get to use tools like Emacs, Vim, or TextMate to write your posts, not some lame in-browser text editor. Just write, generate, deploy, using the same tools and patterns you already use for your daily work.
[Read the wiki to learn more](http://wiki.github.com/imathis/octopress/)

6
source/_posts/2011-03-14-test-post.markdown

@ -0,0 +1,6 @@
---
title: Test Post
layout: post
---
This is a test!

50
source/_posts/2011-04-07-test-of-typography.markdown

@ -0,0 +1,50 @@
---
title: "Test of Typography"
date: 2011-04-07 19:17
layout: post
---
In the past I've always designed my own business cards, printed them on expensive card stock, and hand-cut them with an X-Acto knife. My cards were way nicer than those my clients had gotten *professionally* printed with bubbly ink, no-bleed designs, and cheap paper. Though I put tremendous care into my cards, I never was happy with the design.
## Why Have Business Cards?
I'm rarely asked for my business card except when I attend conferences, of which I attend one or two each year. As a freelance contractor, I leave work by walking twenty-five feet from my office to the couch. Many of the
people I work for I've never met in-person.
When someone gives me their business card, I read it, pocket it, and eventually throw it out &mdash; sometimes before I remember to copy the information to my address book (sorry, just being honest). The reality is, with the ubiquity of the internet and with frictionless social networks like Twitter, I can connect with people immediately. So why have business cards?
<!-- more -->
### Inspiration Demands Action
In one of our campfire chats [Nathaniel Talbott](http://twitter.com/NTalbott) showed off his business cards which he printed through [Moo](http://moo.com). They were half the size of regular business cards featuring the company logo on the front, and the url on the back. The unique size of the card intrigued me, and days later I couldn't stop thinking about designing a set of mini-cards for myself.
<img src="/content/blog/2010/cards/box.jpg" alt="cards in a box" width="300px" class="right"/> Moo's [MiniCard's](http://moo.com/products/minicards.php) are very unique. You can print 100 cards, each with a totally different back. With a typical printing service this would be prohibitively expensive, but with Moo the rules are different. This freedom encourages us to go beyond nicely styled contact information and branding. Some clever uses involve offering unique invite codes for a web application, or sharing a photography portfolio with Moo's Flickr import feature.
I realized that I could print several design iterations and decide later which worked best. Without the pressure to choose a single design, I felt the freedom to create.
### The Freedom to Fail
<img src="/content/blog/2010/cards/concepts.jpg" alt="card concepts" width="270px" class="left"/> I could be cheeky and print up half of my cards with my logo on one side and only my Twitter name on the other. For less than $20 for 100 cards, I wasn't even concerned about possibly screwing up a whole batch. So that's what I did. I designed cards that were good enough and I printed them. If the cards did't turn out how I wanted them to, I could improve and print again.
<img src="/content/blog/2010/cards/handout.jpg" alt="handout cards" width="220px" class="right"/> The process was fun and simple, and as soon as I finished, I wanted to do it again. When my cards arrived, I was absolutely delighted by the print quality and the care put into their presentation. Smartly Moo even included some beautiful promotional cards to hand out when people inevitably ask about mine.
### A Second Iteration
After holding the finished product, I began to see how my design could be improved. I learned that Gill Sans is harder to read at a small size in a high contrast print, so I switched to Futura. I showed my cards to some far-sighted friends and adjusted my font size accordingly. I discarded a background gradient (which I should have known wouldn't translate well to print) in favor of a solid color. **Sidenote:** On screen, gradients emulate the subtleties of a natural light source, but on a real object it doesn't make sense and generally looks bad.
I changed my approach choosing a single design with multiple color variations. In the promotional cards Moo sent me, I learned that they do a fantastic job with bright colors and I wanted to use that boldness in my design. I was inspired by what [Seth Godin said](http://sethgodin.typepad.com/seths_blog/2009/07/welcome-to-island-marketing.html):
> Every interaction is both precious and an opportunity to delight.
<img src="/content/blog/2010/cards/holder.jpg" alt="MiniCard Holder" width="220px" class="right"/> I pictured sliding a card out of my [MiniCard Holder](http://moo.com/products/accessories/holders/moo_minicard_holders) and revealing another brightly-colored card beneath. As I hand someone a card they'll see the flash of color and realize that their card was special, and different from my other cards. That's what I want my clients and future clients to feel.
### The Final Design
<img src="/content/blog/2010/cards/all.jpg" alt="all card designs" width="640px"/>
The MiniCard's unique constraints inspired me with a fresh challenge and their pricing model encouraged me to experiment. Instead of treating business cards like a necessary design task, I saw them as a opportunity to release quickly, fail cheaply, and improve. Now when I give someone a business card, it's something valuable to me, and I hope they're delighted.
**Update:** I thought I'd share some other great uses of Moo's MiniCards. There's a fantastic [Flikr pool](http://www.flickr.com/groups/moo/pool/), but here are some of my favorites. Enjoy:
- [Product](http://www.flickr.com/photos/lushlampwork/4131018201/in/pool-moo) [tags](http://www.flickr.com/photos/lushlampwork/4297224179/in/pool-moo)
- [Photography](http://www.flickr.com/photos/thisiswoly/4206576342/in/pool-moo) or [art](http://www.flickr.com/photos/lesleybarnes/4276368956/in/pool-moo) [portfolios](http://www.flickr.com/photos/playinprogress/4158223112/in/pool-moo)
- [Gift](http://www.flickr.com/photos/polkadotcreations/4167249758/in/pool-moo) [tags](http://www.flickr.com/photos/22338102@N04/4278114745/in/pool-moo)
- [An advent calendar](http://www.flickr.com/photos/bcome/4177034036/in/pool-moo)

14
source/archives.haml

@ -1,14 +0,0 @@
---
layout: default
title: Blog Archives
---
%h2 Blog Archives
- posts = site.posts.reverse.group_by { |p| p.date.strftime("%Y") }
- posts.keys.each do |year|
%h3= year
%ul
- posts[year].each do |post|
%li(class="#{(post.data['link'] ? "link" : nil )}")
= link_to(post.title, post.url)
%span.pubdate= post.date.strftime("%d %b, %Y")

25
source/atom.haml

@ -1,25 +0,0 @@
---
layout: nil
author: Your Name
email: author@domain.com
blog_title: My Octopress Blog
full_url: http://yoursite.com
---
!!! XML
%feed(xmlns="http://www.w3.org/2005/Atom")
%title= page.blog_title
%link(href="#{page.full_url}/atom.xml" rel="self")
%link(href="#{page.full_url}")
%updated= Time.now.xmlschema
%id=page.full_url
%author
%name= page.author
%email= page.email
- site.posts.reverse[0..14].each do |post|
%entry
%title= rp(post.title)
%link(href="#{page.full_url}#{post.url}")
%updated=post.date.xmlschema
%id= "#{page.full_url}#{post.id}"
%content(type="html")
= h(absolute_url(rp(post.content), page.full_url))

28
source/atom.xml

@ -0,0 +1,28 @@
---
layout: nil
---
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>{{ site.blog_title }}</title>
<link href="{{ site.url }}/atom.xml" rel="self"/>
<link href="{{ site.url }}/"/>
<updated>{{ site.time | date_to_xmlschema }}</updated>
<id>{{ site.url }}/</id>
<author>
<name>{{ site.author }}</name>
{% if site.email %}
<email>{{ site.email }}</email>
{% endif %}
</author>
{% for post in site.posts %}
<entry>
<title>{{ post.title }}</title>
<link href="{{ site.url }}{{ post.url }}"/>
<updated>{{ post.date | date_to_xmlschema }}</updated>
<id>{{ site.url }}{{ post.id }}</id>
<content type="html">{{ post.content | full_urls: site.url | xml_escape }}</content>
</entry>
{% endfor %}
</feed>

BIN
source/fonts/adellebasic_bold-webfont.eot

Binary file not shown.

139
source/fonts/adellebasic_bold-webfont.svg

@ -0,0 +1,139 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>
This is a custom SVG webfont generated by Font Squirrel.
Copyright : Copyright c 2009 by TypeTogether All rights reserved
Designer : Veronika Burian Jos Scaglione
Foundry : TypeTogether
Foundry URL : wwwtypetogethercom
</metadata>
<defs>
<font id="webfontKykxqSyz" horiz-adv-x="1167" >
<font-face units-per-em="2048" ascent="1546" descent="-502" />
<missing-glyph horiz-adv-x="413" />
<glyph unicode=" " horiz-adv-x="413" />
<glyph unicode="&#x09;" horiz-adv-x="413" />
<glyph unicode="&#xa0;" horiz-adv-x="413" />
<glyph unicode="!" horiz-adv-x="569" d="M414 401h-258l-37 719v363h330v-363zM461 135q0 -160 -176 -160t-176 160t176 160t176 -160z" />
<glyph unicode="&#x22;" horiz-adv-x="825" d="M358 915h-276v531h276v-531zM743 915h-276v531h276v-531z" />
<glyph unicode="#" horiz-adv-x="1243" d="M831 0h-210l34 248h-176l-37 -248h-213l37 248h-205l45 207h193l35 231h-205l43 209h193l32 217h213l-32 -217h176l32 217h213l-32 -217h207l-41 -209h-197l-35 -231h207l-41 -207h-199zM688 455l35 231h-176l-37 -231h178z" />
<glyph unicode="$" horiz-adv-x="1083" d="M999 399q0 -158 -85 -254t-234 -129v-180h-254v166q-227 10 -356 74v327h223l26 -143q4 -23 11.5 -31t27.5 -14q51 -18 152 -18q207 0 207 145q0 72 -65.5 114t-159 66.5t-186.5 58t-158.5 113.5t-65.5 209q0 160 93 256t251 129v160h256v-150q152 -10 293 -59v-350 l-225 22l-25 136q-6 35 -41 45q-41 10 -117 10q-203 0 -202 -137q0 -68 65.5 -109t158.5 -67.5t186 -61.5t158.5 -118t65.5 -210z" />
<glyph unicode="%" horiz-adv-x="1818" d="M410 526q-182 0 -263 99.5t-81 261.5q0 180 90 281.5t270 101.5q342 0 342 -357q0 -180 -91 -283.5t-267 -103.5zM662 -35h-285l772 1307h283zM420 694q61 0 89 51.5t28 159.5q0 100 -27 147.5t-88 47.5q-121 0 -121 -199q0 -207 119 -207zM1395 -25q-182 0 -263 99.5 t-81 261.5q0 180 90 281.5t270 101.5q342 0 342 -357q0 -180 -91 -283.5t-267 -103.5zM1402.5 143q63.5 0 90.5 50.5t27 160.5q0 100 -26 147.5t-89 47.5q-119 0 -119 -199q0 -106 26.5 -156.5t90 -50.5z" />
<glyph unicode="&#x26;" horiz-adv-x="1470" d="M1409 0h-346l-113 131q-166 -156 -413 -156q-211 0 -338 112t-127 310q0 295 295 418q-76 119 -76 238q0 156 109.5 247t285.5 91q104 0 206.5 -28t158.5 -63v-321l-220 8l-24 137q-4 25 -29 33q-27 8 -73 8q-59 0 -90 -30.5t-31 -81.5q0 -86 112 -217l230 -271 q29 88 47 228h352v-158l-94 -19q-18 -4 -25.5 -9t-9.5 -25q-29 -133 -76 -232l129 -147q18 -23 39 -25l121 -18v-160zM784 317l-270 308q-145 -61 -145 -213q0 -82 47 -136.5t145 -54.5q135 0 223 96z" />
<glyph unicode="'" horiz-adv-x="442" d="M358 915h-276v531h276v-531z" />
<glyph unicode="(" horiz-adv-x="729" d="M655 -221l-235 -133q-145 190 -239.5 429.5t-94.5 497.5q0 485 352 951l232 -138q-131 -195 -192.5 -388t-61.5 -425q0 -238 59 -413.5t180 -380.5z" />
<glyph unicode=")" horiz-adv-x="729" d="M297 -354l-231 135q125 190 187 380.5t62 428.5q0 231 -59 412.5t-186 386.5l233 135q147 -188 243.5 -433t96.5 -501q0 -483 -346 -944z" />
<glyph unicode="*" horiz-adv-x="976" d="M342 782l-174 129l88 115l178 115l-213 -8l-137 45l70 204l137 -45l162 -133l-74 199v143h215v-143l-72 -199h-69l-19 -63l53 -41l-59 -201zM809 911l-174 -129l-86 117l-62 201l56 41l-21 63l164 133l137 45l68 -204l-137 -45l-211 8l178 -115z" />
<glyph unicode="+" d="M705 248h-246v295h-273v237h273v287h246v-287h274v-237h-274v-295z" />
<glyph unicode="," horiz-adv-x="516" d="M281 -244l-140 41l56 219q6 18 -11 25l-84 29l45 221q141 -2 214 -33t73 -127q0 -55 -43 -141z" />
<glyph unicode="-" horiz-adv-x="636" d="M596 465h-555v260h555v-260z" />
<glyph unicode="." horiz-adv-x="555" d="M453 135q0 -160 -174 -160q-176 0 -176.5 160t176.5 160q174 0 174 -160z" />
<glyph unicode="/" horiz-adv-x="929" d="M315 -188h-292l575 1734h291z" />
<glyph unicode="0" horiz-adv-x="1232" d="M606 -25q-291 0 -409.5 160t-118.5 459q0 616 553 616q287 0 405.5 -155.5t118.5 -444.5q0 -305 -128 -470t-421 -165zM618 195q113 0 161 93t48 310q0 213 -45 301t-157 88q-117 0 -167 -92t-50 -305q0 -211 46.5 -303t163.5 -92z" />
<glyph unicode="1" horiz-adv-x="831" d="M791 0h-719v162l176 14q20 2 26.5 9.5t6.5 31.5v715q0 35 -27 43l-178 37l22 168h492v-963q0 -25 5 -32t28 -9l168 -14v-162z" />
<glyph unicode="2" horiz-adv-x="1073" d="M1012 0h-946v190l274 269q129 125 175 173t83 108.5t37 117.5q0 131 -146 131q-88 0 -123.5 -38t-35.5 -144l-279 24q2 379 465 379q430 0 430 -327q0 -90 -45 -178.5t-92 -139.5t-145 -145l-232 -221h301q29 0 33 24l29 162h217v-385z" />
<glyph unicode="3" horiz-adv-x="1062" d="M723 551v-8q270 -41 270 -316q0 -197 -134 -297t-361 -100q-154 0 -285 50t-211 138l164 181q139 -135 307 -136q213 0 213 185q0 176 -205 176q-66 0 -151 -14v204l100 13q227 29 227 221q0 141 -149 141q-88 0 -126 -39t-38 -143l-281 24q0 379 459 379 q229 0 332.5 -85t103.5 -255q0 -123 -66.5 -205.5t-168.5 -113.5z" />
<glyph unicode="4" horiz-adv-x="1140" d="M934 -137h-283v264h-598v211l420 879l268 -123l-387 -727h297v329l283 43v-372h170v-240h-170v-264z" />
<glyph unicode="5" horiz-adv-x="1110" d="M942 922h-543l-28 -281q106 70 260 70q184 0 289.5 -106.5t105.5 -311.5q0 -199 -133 -331t-371 -132q-340 0 -516 188l164 187q139 -139 326 -139q96 0 158.5 56t62.5 161q0 113 -57.5 155.5t-133.5 42.5q-113 0 -196 -88l-203 84l45 703h535q20 0 26 24l27 113l182 12 v-407z" />
<glyph unicode="6" horiz-adv-x="1157" d="M1067 1004l-289 -35q0 92 -31.5 126.5t-113.5 34.5q-217 0 -230 -382q135 80 287 79q184 0 292 -100t108 -295q0 -229 -134.5 -343t-357.5 -114q-145 0 -246.5 50.5t-158 145.5t-81 211t-24.5 267q0 121 25.5 232.5t83 220t171 174t271.5 65.5q428 1 428 -337zM403 543 q2 -74 10.5 -126t28 -105.5t60.5 -82t102 -28.5q172 0 172 217q0 104 -37 147t-129 43q-101 1 -207 -65z" />
<glyph unicode="7" horiz-adv-x="1089" d="M625 -137h-326q53 625 446 1059h-391q-14 0 -18 -5.5t-8 -21.5l-33 -172l-215 -16v473h989v-232q-186 -199 -311 -491.5t-133 -593.5z" />
<glyph unicode="8" horiz-adv-x="1105" d="M823 696q215 -123 215 -325q0 -193 -139 -294.5t-367 -101.5q-223 0 -343.5 90.5t-120.5 264.5q0 111 51 192.5t143 157.5q-152 104 -151 281q0 182 124.5 281t323.5 99q201 0 313.5 -87t112.5 -240q0 -177 -162 -318zM459 575q-135 -125 -135 -229q0 -166 213 -166 q94 0 142 43t48 113q0 27 -6 49.5t-26 42.5l-31 34q-12 13 -47 33l-47 26q-13 7 -57 28.5t-54 25.5zM618 795q106 111 107 204q0 139 -164 140q-76 0 -115.5 -37t-39.5 -96q0 -37 15 -68t49 -56.5t63.5 -42.5t84.5 -44z" />
<glyph unicode="9" d="M109 -18l131 188q131 -111 284 -111q135 0 186.5 90.5t57.5 251.5q-121 -78 -287 -77q-176 0 -287.5 113.5t-111.5 316.5q0 219 129 337.5t356 118.5q518 0 518 -659q0 -719 -546 -719q-123 0 -240.5 40t-189.5 110zM768 623q-4 78 -12 134t-28.5 113.5t-61.5 87 t-101 29.5q-170 0 -170 -217q0 -113 37 -167t127 -54q105 0 209 74z" />
<glyph unicode=":" horiz-adv-x="555" d="M453 135q0 -160 -174 -160q-176 0 -176.5 160t176.5 160q174 0 174 -160zM453 913.5q0 -159.5 -174 -159.5q-176 0 -176.5 159.5t176.5 159.5q174 0 174 -159.5z" />
<glyph unicode=";" horiz-adv-x="522" d="M281 -244l-140 41l56 219q6 18 -11 25l-84 29l45 221q141 -2 214 -33t73 -127q0 -55 -43 -141zM461 913.5q0 -159.5 -174 -159.5q-176 0 -176 159.5t176 159.5q174 0 174 -159.5z" />
<glyph unicode="&#x3c;" d="M940 172l-799 281v286l795 291l70 -231l-598 -201l602 -201z" />
<glyph unicode="=" d="M979 266h-791v240h791v-240zM979 647h-791v240h791v-240z" />
<glyph unicode="&#x3e;" d="M1010 453l-799 -281l-70 225l602 201l-596 201l68 231l795 -291v-286z" />
<glyph unicode="?" horiz-adv-x="1081" d="M600 401h-309v373q70 6 112.5 11.5t106 23.5t99.5 46t63.5 78t27.5 118q0 86 -43 133t-122 47q-78 0 -138 -25q-23 -8 -26 -41l-19 -131l-250 -18v377q236 90 447 90q496 0 495 -422q0 -199 -113.5 -322t-330.5 -149v-189zM621 135q0 -160 -175 -160q-176 0 -176 160 t176 160q175 0 175 -160z" />
<glyph unicode="@" horiz-adv-x="1722" d="M1219 -143l49 -168q-164 -72 -416 -72q-340 0 -537.5 187.5t-197.5 539.5q0 369 220 594t574 225q322 0 515.5 -171t193.5 -480q0 -272 -108.5 -404.5t-294.5 -132.5q-184 0 -236 142q-145 -141 -250 -142q-109 0 -171 75t-62 214q0 229 121.5 389t328.5 160 q145 0 285 -65l-47 -302q-27 -147 -27 -217q0 -80 76 -79q51 0 89 35.5t56.5 93t26.5 111.5t8 106q0 231 -125 357t-385 126q-283 0 -432 -184.5t-149 -450.5q0 -268 144 -409.5t409 -141.5q168 1 342 64zM963 262l59 377q-35 25 -90 25q-92 0 -159.5 -103.5t-67.5 -263.5 q0 -143 82 -143.5t176 108.5z" />
<glyph unicode="A" horiz-adv-x="1554" d="M1548 0h-647v160l168 18l-74 213h-508l-71 -213l162 -18v-160h-572v160l90 22q41 10 51 39l449 1262h362l447 -1266q8 -25 49 -35l94 -22v-160zM934 612l-182 557h-13l-188 -557h383z" />
<glyph unicode="B" horiz-adv-x="1376" d="M750 0h-672v160l129 14q20 2 26.5 10.5t6.5 30.5v1049q0 25 -6.5 32t-26.5 9l-129 14v164h690q449 0 449 -363q0 -135 -72 -222t-178 -122v-6q342 -39 342 -362q0 -408 -559 -408zM555 221h141q141 0 213 47t72 172q0 215 -254 215h-172v-434zM555 860h82q129 0 203.5 45 t74.5 164q0 115 -62 153t-185 38h-113v-400z" />
<glyph unicode="C" horiz-adv-x="1386" d="M1294 469v-381q-184 -113 -512 -113q-719 0 -719 773q0 342 197 551.5t565 209.5q287 0 465 -116v-402l-225 19l-33 200q-6 29 -33 37q-78 25 -182 25q-199 0 -312.5 -134t-113.5 -390q0 -266 108.5 -402.5t303.5 -136.5q119 0 205 27q18 4 25 12t11 31l31 190h219z" />
<glyph unicode="D" horiz-adv-x="1540" d="M707 0h-629v164l129 14q20 2 26.5 9.5t6.5 31.5v1047q0 23 -6.5 31t-26.5 10l-129 14v162h663q375 0 555.5 -187.5t180.5 -531.5q0 -354 -192.5 -559t-577.5 -205zM557 221h117q481 0 481 524q0 279 -110.5 398t-358.5 119h-129v-1041z" />
<glyph unicode="E" horiz-adv-x="1284" d="M1212 0h-1134v160l129 14q20 2 26.5 10.5t6.5 30.5v1051q0 25 -6.5 32t-26.5 9l-129 14v162h1089v-414l-225 10l-29 156q-6 27 -34 27h-322v-404h479v-227h-479v-412h367q29 0 32 23l33 180h223v-422z" />
<glyph unicode="F" horiz-adv-x="1234" d="M891 0h-813v160l129 14q20 2 26.5 10.5t6.5 30.5v1051q0 25 -6.5 32t-26.5 9l-129 14v162h1081v-414l-225 10l-29 156q-6 27 -35 27h-313v-402h471v-227h-471v-414q0 -25 5 -32t28 -9l301 -16v-162z" />
<glyph unicode="G" horiz-adv-x="1478" d="M1460 551l-84 -8q-33 -2 -33 -29v-440q-207 -98 -530 -99q-205 0 -353.5 57.5t-233.5 164t-125 241.5t-40 307q0 342 197 553t571 211q119 0 247 -30.5t216 -87.5v-387l-227 16l-31 184q-8 35 -33 41q-94 27 -188 27q-197 0 -309.5 -140.5t-112.5 -381.5 q0 -258 109.5 -398.5t326.5 -140.5q88 0 170 14q33 6 33 37v268h-227l28 185h629v-164z" />
<glyph unicode="H" horiz-adv-x="1675" d="M1604 0h-648v160l129 14q20 2 26.5 10.5t6.5 30.5v432h-561v-430q0 -25 5 -32t28 -9l137 -16v-160h-649v160l129 14q20 2 26.5 10.5t6.5 30.5v1049q0 25 -6.5 32t-26.5 9l-129 14v164h649v-164l-137 -16q-23 -2 -28 -9.5t-5 -29.5v-387h561v387q0 25 -6 32t-27 9l-129 14 v164h648v-164l-138 -16q-23 -2 -27.5 -9.5t-4.5 -29.5v-1047q0 -25 5 -32t27 -9l138 -16v-160z" />
<glyph unicode="I" horiz-adv-x="827" d="M762 0h-688v160l149 14q20 2 26.5 9t6.5 32v1049q0 25 -6 32t-27 9l-149 14v164h688v-164l-158 -16q-23 -2 -28 -9.5t-5 -29.5v-1047q0 -25 5.5 -32t27.5 -9l158 -16v-160z" />
<glyph unicode="J" horiz-adv-x="1056" d="M526 336v930q0 23 -6 30t-26 9l-185 14v164h705v-164l-137 -16q-23 -2 -28 -8.5t-5 -28.5v-932q0 -182 -92.5 -270.5t-294.5 -88.5q-117 0 -227.5 25t-157.5 55v365l229 -17l21 -147q2 -20 22 -27q37 -12 82 -12q55 0 77.5 26.5t22.5 92.5z" />
<glyph unicode="K" horiz-adv-x="1540" d="M1522 0h-453l-383 592l-129 -154v-219q0 -25 5 -32t28 -9l158 -16v-162h-670v162l129 14q20 2 26.5 9.5t6.5 31.5v1049q0 23 -6.5 31t-26.5 10l-129 14v162h649v-162l-137 -16q-23 -2 -28 -9.5t-5 -29.5v-512l483 549l-127 16v164h537v-164l-86 -14q-41 -6 -64 -35 l-376 -426l411 -629q18 -29 60 -33l127 -20v-162z" />
<glyph unicode="L" horiz-adv-x="1277" d="M1212 0h-1134v162l129 14q20 2 26.5 10.5t6.5 30.5v1049q0 25 -6.5 32t-26.5 9l-129 14v162h682v-162l-170 -16q-23 -2 -28 -9.5t-5 -29.5v-1047h365q29 0 32 23l33 204h225v-446z" />
<glyph unicode="M" horiz-adv-x="1970" d="M1898 0h-673v160l168 14q20 2 26 10.5t6 30.5v778h-8l-293 -698h-333l-289 700h-10v-778q0 -25 5 -32t27 -9l176 -16v-160h-622v160l129 14q20 2 26.5 10.5t6.5 30.5v1051q0 23 -6.5 31t-26.5 10l-129 14v162h549l356 -928h8l375 928h532v-160l-137 -16 q-23 -2 -27.5 -9.5t-4.5 -29.5v-1053q0 -35 32 -39l137 -16v-160z" />
<glyph unicode="N" horiz-adv-x="1693" d="M1466 0h-336l-653 1069v-852q0 -25 5 -32t28 -9l137 -16v-160h-569v160l129 14q20 2 26.5 10.5t6.5 30.5v1053q0 25 -6.5 32t-26.5 9l-129 14v160h508l643 -1071v852q0 25 -6 32t-27 9l-129 14v164h569v-164l-137 -16q-23 -2 -28 -9.5t-5 -29.5v-1264z" />
<glyph unicode="O" horiz-adv-x="1554" d="M768 -25q-356 0 -530.5 206t-174.5 556q0 342 190.5 557t543.5 215q346 0 520 -207.5t174 -537.5q0 -371 -183.5 -580t-539.5 -209zM780 227q385 0 385 518q0 506 -372 506q-184 0 -293 -127t-109 -381q0 -516 389 -516z" />
<glyph unicode="P" horiz-adv-x="1323" d="M881 0h-803v162l129 14q20 2 26.5 10.5t6.5 30.5v1047q0 25 -6.5 32t-26.5 9l-129 14v164h694q264 0 379 -120t115 -316q0 -500 -561 -500h-150v-328q0 -25 5 -32t28 -9l293 -16v-162zM555 766h102q59 0 103.5 9t88.5 35t68.5 81t24.5 137q0 135 -69.5 183.5t-196.5 48.5 h-121v-494z" />
<glyph unicode="Q" horiz-adv-x="1552" d="M1182 -176l59 -180q-143 -76 -291 -76q-324 0 -323 305q0 55 6 111q-291 35 -434.5 235.5t-143.5 517.5q0 342 190.5 557t542.5 215q236 0 395.5 -102t229.5 -266t70 -377q0 -326 -143.5 -528.5t-421.5 -245.5q-4 -25 -5 -70q0 -63 28 -95t93 -32q72 0 148 31zM774 227 q385 0 385 518q0 506 -373 506q-186 0 -294.5 -127t-108.5 -381q0 -516 391 -516z" />
<glyph unicode="R" horiz-adv-x="1406" d="M1403 0h-447l-184 514q-18 53 -44 72.5t-77 19.5h-96v-385q0 -25 5 -32t28 -9l143 -16v-164h-653v164l129 14q20 2 26.5 9.5t6.5 31.5v1047q0 23 -6.5 31t-26.5 10l-129 14v162h698q256 0 366.5 -115t110.5 -295q0 -274 -270 -393q70 -33 119 -164l112 -293 q18 -33 62 -39l127 -20v-164zM555 819h94q131 0 205 49.5t74 186.5q0 115 -64.5 160t-206.5 45h-102v-441z" />
<glyph unicode="S" horiz-adv-x="1214" d="M1090 1028l-232 21l-24 165q-4 31 -25 39q-72 23 -150 23q-113 0 -171 -47t-58 -127q0 -39 18.5 -71t38 -50t70.5 -39.5t74.5 -30t93.5 -28.5q94 -29 149.5 -52.5t125 -72.5t103.5 -128t34 -188q0 -238 -161 -352.5t-415 -114.5q-129 0 -266 27t-203 57v400h230l40 -195 q4 -31 35 -37q90 -23 172 -22q258 0 258 190q0 47 -18 82t-58 59.5t-78 38t-100 31.5q-201 57 -274 101q-178 106 -178 342q0 227 151.5 343.5t397.5 116.5q225 0 420 -82v-399z" />
<glyph unicode="T" horiz-adv-x="1421" d="M1128 0h-819v162l211 14q20 2 26.5 9.5t6.5 31.5v1043h-211q-29 0 -33 -23l-33 -178h-225v424h1319v-424h-223l-33 178q-4 23 -33 23h-211v-1043q0 -23 5.5 -30t27.5 -9l225 -16v-162z" />
<glyph unicode="U" horiz-adv-x="1607" d="M1112 588v678q0 25 -6 32t-27 9l-129 14v162h606v-162l-137 -16q-23 -2 -28 -9.5t-5 -29.5v-736q0 -283 -151.5 -419t-431.5 -136q-303 0 -442.5 137.5t-139.5 426.5v727q0 25 -6 32t-27 9l-127 14v162h648v-162l-138 -16q-23 -2 -27.5 -9.5t-4.5 -29.5v-670 q0 -188 58 -275.5t218 -87.5q164 0 230.5 80t66.5 275z" />
<glyph unicode="V" horiz-adv-x="1505" d="M981 0h-418l-411 1266q-8 25 -50 34l-92 23l21 160h620v-160l-166 -18l308 -1024h16l297 1024l-164 18l21 160h530v-160l-86 -23q-45 -10 -51 -38z" />
<glyph unicode="W" horiz-adv-x="2136" d="M1688 0h-414l-201 750h-12l-189 -750h-401l-309 1264q-6 27 -45 36l-105 23l21 160h626v-160l-172 -20l209 -1002h17l235 907h312l233 -913h16l211 1008l-172 20l21 160h553v-160l-97 -23q-37 -6 -47 -36z" />
<glyph unicode="X" horiz-adv-x="1583" d="M1548 0h-671v160l161 18l-278 375l-277 -375l158 -18v-160h-586v160l119 22q35 8 53 39l389 504l-409 541q-16 27 -49 34l-107 23l21 160h641v-160l-160 -18l266 -373l279 373l-158 18l21 160h540v-160l-100 -23q-29 -8 -51 -38l-383 -496l419 -545q31 -33 52 -39 l110 -22v-160z" />
<glyph unicode="Y" horiz-adv-x="1384" d="M1120 0h-803v162l205 14q20 2 26.5 9.5t6.5 31.5v336l-408 713q-14 23 -49 34l-92 23l21 160h614v-160l-160 -18l248 -484h16l248 484l-157 18l20 160h522v-160l-86 -23q-39 -10 -51 -38l-371 -705v-340q0 -23 5.5 -30t27.5 -9l217 -16v-162z" />
<glyph unicode="Z" horiz-adv-x="1376" d="M1284 0h-1180v199l766 1063h-454q-29 0 -33 -23l-39 -192l-221 -7v443h1124v-207l-755 -1057h499q29 0 33 23l39 219h221v-461z" />
<glyph unicode="[" horiz-adv-x="630" d="M557 -293h-459v1776h459v-156l-127 -22q-33 -4 -33 -41v-1336q0 -39 33 -43l127 -22v-156z" />
<glyph unicode="\" horiz-adv-x="921" d="M897 -188h-283l-573 1734h281z" />
<glyph unicode="]" horiz-adv-x="630" d="M532 1483v-1776h-464v156l133 22q33 4 32 43v1295q0 76 -32 82l-133 22v156h464z" />
<glyph unicode="^" horiz-adv-x="1247" d="M1186 612h-295l-273 492l-266 -492h-291l404 748h313z" />
<glyph unicode="_" horiz-adv-x="1024" d="M1024 -371h-1024v219h1024v-219z" />
<glyph unicode="`" horiz-adv-x="1024" d="M762 1251l-117 -102l-364 299l168 160z" />
<glyph unicode="a" horiz-adv-x="1140" d="M1118 0h-377l-20 111l-10 2q-141 -137 -344 -138q-299 0 -299 304q0 152 94 227.5t289 87.5l235 16v113q0 84 -24.5 123t-112.5 39q-82 0 -116 -25.5t-34 -111.5l-288 24q0 315 440 315q240 0 338 -79.5t98 -290.5v-498q0 -25 5 -32t28 -9l98 -16v-162zM686 270v170 l-139 -10q-90 -6 -127 -32.5t-37 -88.5q0 -113 117 -112q86 -1 186 73z" />
<glyph unicode="b" horiz-adv-x="1247" d="M420 0h-293q31 197 31 299v999q0 35 -27 43l-113 39l23 166h422v-567l8 -2q135 111 309 110q178 0 287 -126.5t109 -397.5q0 -303 -115 -445.5t-316 -142.5q-186 0 -301 129l-10 -2zM465 774v-479q88 -80 188 -80q199 0 199 332q0 131 -46 215t-142 84q-90 0 -199 -72z " />
<glyph unicode="c" horiz-adv-x="1044" d="M901 266l80 -190q-166 -100 -389 -101q-266 0 -401.5 148.5t-135.5 394.5q0 279 152.5 424t408.5 145q113 0 212.5 -25.5t152.5 -60.5v-321l-219 10l-25 135q-4 27 -24 33q-43 14 -105 14q-100 0 -163.5 -77.5t-63.5 -245.5q0 -342 264 -342q119 0 256 59z" />
<glyph unicode="d" horiz-adv-x="1251" d="M1221 0h-381l-21 115l-14 2q-145 -141 -336 -142q-397 0 -397 545q0 289 122.5 428t311.5 139q156 0 289 -98v311q0 33 -27 41l-113 39l23 166h412v-1331q0 -23 5 -30t27 -9l99 -14v-162zM782 305v483q-90 61 -176 62q-109 0 -160 -88t-51 -236q0 -309 187 -309 q98 0 200 88z" />
<glyph unicode="e" horiz-adv-x="1075" d="M930 283l76 -203q-215 -104 -420 -105q-281 0 -406 153t-125 413q0 266 142.5 406t365.5 140q213 0 332 -119.5t119 -375.5q0 -55 -4 -137h-627q16 -242 242 -242q117 0 305 70zM385 649h326q-2 217 -154 217q-156 0 -172 -217z" />
<glyph unicode="f" horiz-adv-x="894" d="M799 0h-744v164l115 12q20 2 26.5 10.5t6.5 32.5v623q0 20 -17 20h-137v205h154v113q0 203 110.5 297t327.5 94q80 0 139.5 -12.5t113.5 -42t84 -90t30 -150.5l-287 -35v13q0 65 -20 89q-22 27 -74 27q-72 0 -93.5 -36t-21.5 -117v-130q0 -20 16 -20h324v-205h-340v-637 q0 -25 7 -32t30 -9l250 -22v-162z" />
<glyph unicode="g" horiz-adv-x="1165" d="M1139 893l-189 -14q76 -96 76 -207q0 -168 -120 -264.5t-316 -96.5q-96 0 -162 19l-68 -109l201 -12q299 -18 391 -51q150 -49 168 -199q4 -25 4 -55q0 -176 -147.5 -272.5t-415.5 -96.5q-512 0 -512 256q0 63 25.5 107.5t87.5 101.5q-90 39 -90 135q0 61 59 125 q47 49 127 123q-80 39 -128 119t-48 188q0 182 120 289.5t349 107.5q111 0 188 -20h400v-174zM756 700q0 90 -49.5 137.5t-137.5 47.5q-90 0 -143 -46t-53 -143q0 -170 190 -170q86 0 139.5 47t53.5 127zM643 -76l-299 21q-53 -66 -53 -109q0 -106 248 -106q281 0 280 118 q0 25 -11 39.5t-42 21.5t-52.5 10t-70.5 5z" />
<glyph unicode="h" horiz-adv-x="1277" d="M1253 0h-444v668q0 174 -108.5 174t-213.5 -76v-549q0 -25 5.5 -32t27.5 -9l98 -14v-162h-565v162l92 14q20 2 26.5 10.5t6.5 30.5v1081q0 35 -26 43l-113 39l22 166h422v-579l11 -2q150 123 327 122q158 0 227.5 -82.5t69.5 -248.5v-539q0 -25 5 -32t28 -9l102 -14v-162 z" />
<glyph unicode="i" horiz-adv-x="647" d="M492 1415q0 -88 -49.5 -136t-137.5 -48t-136 48t-48 136t48 134t136 46q90 0 138.5 -46t48.5 -134zM625 0h-584v162l104 14q20 2 26.5 10.5t6.5 30.5v602q0 35 -26 43l-111 39l22 166h424v-850q0 -25 5.5 -32t27.5 -9l105 -14v-162z" />
<glyph unicode="j" horiz-adv-x="622" d="M174 -57v876q0 35 -27 43l-116 39l24 166h428v-1176q0 -348 -356 -348q-113 0 -206 34t-136 71l88 170q86 -53 178 -54q66 0 94.5 38.5t28.5 140.5zM489 1415q0 -88 -49 -136t-137 -48t-137 48t-49 136q0 86 49 133t137 47q90 0 138 -46t48 -134z" />
<glyph unicode="k" horiz-adv-x="1269" d="M1255 0h-397l-260 522l-111 -121v-184q0 -25 5.5 -32t27.5 -9l123 -14v-162h-600v162l102 14q20 2 26.5 10.5t6.5 30.5v1081q0 35 -26 43l-113 39l22 166h426v-874l375 395h283v-162l-107 -20q-27 -4 -51 -31l-145 -154l262 -489q16 -31 61 -37l90 -14v-160z" />
<glyph unicode="l" horiz-adv-x="647" d="M621 0h-578v162l102 14q20 2 26.5 10.5t6.5 30.5v1081q0 35 -26 43l-113 39l22 166h426v-1329q0 -25 5.5 -32t27.5 -9l101 -14v-162z" />
<glyph unicode="m" horiz-adv-x="1820" d="M1794 0h-444v662q0 51 -5.5 83.5t-33 62.5t-76.5 30q-82 0 -166 -56q6 -49 6 -100v-465q0 -27 5 -34t28 -9l82 -12v-162h-424v672q0 35 -3 58.5t-12.5 51t-33 42t-60.5 14.5q-92 0 -170 -66v-555q0 -25 4.5 -31t28.5 -10l101 -14v-162h-568v162l92 14q20 2 26.5 10.5 t6.5 30.5v602q0 35 -26 43l-111 39l22 166h361l16 -106l11 -3q158 129 327 129q176 0 250 -122q156 123 330 122q162 0 231.5 -82.5t69.5 -263.5v-524q0 -25 5 -33t28 -10l102 -12v-162z" />
<glyph unicode="n" horiz-adv-x="1277" d="M1253 0h-444v662q0 59 -5 91.5t-29.5 60.5t-74.5 28q-53 0 -114.5 -23.5t-98.5 -52.5v-549q0 -25 5.5 -32t27.5 -9l98 -14v-162h-565v164l92 12q20 2 26.5 10.5t6.5 30.5v602q0 35 -26 43l-111 39l25 166h358l16 -106l9 -5q176 131 360 131q164 0 236.5 -87t72.5 -261 v-522q0 -25 5 -32t28 -9l102 -14v-162z" />
<glyph unicode="o" horiz-adv-x="1189" d="M582 -25q-268 0 -397.5 148.5t-129.5 402.5q0 262 139.5 411.5t413.5 149.5q270 0 398.5 -144t128.5 -394q0 -268 -139.5 -421t-413.5 -153zM596 190q215 0 215 349q0 176 -51 251.5t-156 75.5q-225 0 -225 -329q0 -347 217 -347z" />
<glyph unicode="p" horiz-adv-x="1259" d="M719 -434h-668v164l82 12q23 4 30 12t7 31v1034q0 35 -27 43l-108 39l22 166h361l18 -104l10 -5q160 129 349 129q182 0 287.5 -125.5t105.5 -398.5q0 -80 -11.5 -155.5t-41 -156.5t-74.5 -140.5t-122 -97.5t-173 -38q-164 0 -293 105v-293q0 -25 5 -32t28 -9l213 -18 v-162zM477 770v-477q90 -78 193 -78q195 0 194 332q0 297 -174 297q-104 0 -213 -74z" />
<glyph unicode="q" horiz-adv-x="1220" d="M1219 -434h-623v164l176 14q25 2 33 9t8 28v321l-10 4q-154 -131 -324 -131q-190 0 -298.5 130.5t-108.5 406.5q0 293 126 434t312 141q162 0 297 -116l31 96h268q-16 -154 -16 -332v-954q0 -23 5 -30t27 -9l97 -14v-162zM780 301v483q-96 66 -180 66q-104 0 -155.5 -89 t-51.5 -235q0 -309 193 -309q96 0 194 84z" />
<glyph unicode="r" horiz-adv-x="968" d="M723 0h-670v166l92 12q20 2 26.5 10.5t6.5 30.5v600q0 35 -26 43l-111 39l22 166h361l25 -164h12q119 184 289 184q113 0 178 -18v-373l-246 9l-20 108q-4 23 -27 23q-66 0 -148 -72v-543q0 -25 5.5 -32t27.5 -9l203 -16v-164z" />
<glyph unicode="s" horiz-adv-x="997" d="M911 731l-219 14l-20 107q-2 25 -21 29q-53 16 -131 16q-160 0 -160 -104q0 -37 32 -61.5t70 -36t107 -27.5q18 -4 29 -6q74 -16 124 -35t106.5 -54.5t85 -97t28.5 -147.5q0 -178 -127 -265.5t-336 -87.5q-127 0 -250 26t-155 48v297l219 -16l20 -117q2 -27 25 -31 q61 -20 158 -20q170 0 170 106q0 55 -47.5 82t-139.5 43l-77.5 14.5t-75 18.5t-77 27.5t-64.5 40t-56 57.5t-32.5 77t-14.5 101q0 178 130 268t323 90q225 0 376 -59v-297z" />
<glyph unicode="t" horiz-adv-x="892" d="M791 238l55 -181q-168 -82 -334 -82q-180 0 -258 78t-78 252v537q0 20 -16 20h-144v182q135 14 196.5 90t78.5 244h194v-291q0 -20 17 -20h289v-205h-306v-489q0 -94 29 -131t111 -37q78 0 166 33z" />
<glyph unicode="u" horiz-adv-x="1275" d="M1241 0h-381l-16 111l-10 2q-53 -41 -94.5 -65.5t-115 -48.5t-155.5 -24q-158 0 -227.5 89.5t-69.5 271.5v500q0 25 -5 31.5t-28 11.5l-98 20l20 168h420v-678q0 -96 22.5 -134t86.5 -38q109 0 211 94v527q0 25 -5 30.5t-28 10.5l-88 20l22 168h408v-850q0 -23 5 -30 t24 -9l102 -14v-164z" />
<glyph unicode="v" horiz-adv-x="1275" d="M819 0h-358l-326 848q-10 27 -43 35l-86 18l33 166h555v-166l-131 -16l209 -584h14l217 584l-133 16l27 166h473v-166l-74 -12q-41 -10 -51 -35z" />
<glyph unicode="w" horiz-adv-x="1800" d="M1419 0h-323l-160 686h-12l-162 -686h-369l-258 848q-8 27 -43 35l-86 18l33 166h518v-170l-115 -12l164 -576h15l182 731h309l176 -731h12l154 576l-117 12l27 170h430v-166l-74 -14q-39 -6 -49 -41z" />
<glyph unicode="x" horiz-adv-x="1234" d="M1214 0h-581v160l96 18l-156 205l-170 -203l115 -18v-162h-491v160l92 18q27 4 53 35l270 299l-278 332q-25 27 -49 35l-82 22l20 166h545v-166l-100 -16l151 -191l168 191l-112 16l20 166h453v-166l-95 -20q-12 -4 -51 -39l-250 -277l287 -350q33 -33 53 -37l92 -16 v-162z" />
<glyph unicode="y" horiz-adv-x="1267" d="M907 -434h-682v166l160 18q33 2 51 45l88 195l-391 856q-8 27 -43 35l-84 20l33 166h543v-166l-129 -16l227 -541h14l217 541l-133 16l27 166h457v-166l-66 -12q-39 -6 -51 -35l-451 -1102l213 -22v-164z" />
<glyph unicode="z" horiz-adv-x="1058" d="M1001 0h-929v172l549 702h-287q-18 0 -23 -26l-24 -115l-217 -12v346h899v-176l-539 -701h301q18 0 23 27l24 141l223 11v-369z" />
<glyph unicode="{" horiz-adv-x="677" d="M610 -141l-20 -164q-246 4 -343 64.5t-97 220.5q0 53 14 177t14 201q0 84 -33.5 116t-109.5 36v162q76 4 109.5 35.5t33.5 115.5q0 78 -14 203t-14 178q0 160 97 220.5t343 64.5l20 -164q-86 -20 -115.5 -47t-29.5 -100q0 -51 16.5 -170t16.5 -185q0 -178 -129 -233 q129 -55 129 -232q0 -63 -16.5 -182t-16.5 -170q0 -74 29.5 -100.5t115.5 -46.5z" />
<glyph unicode="|" horiz-adv-x="573" d="M426 -293h-281v1839h281v-1839z" />
<glyph unicode="}" horiz-adv-x="677" d="M88 -305l-20 164q86 20 115.5 46.5t29.5 100.5q0 51 -16.5 170t-16.5 182q0 176 129 232q-129 55 -129 233q0 66 16.5 184.5t16.5 170.5q0 74 -29.5 100.5t-115.5 46.5l20 164q246 -4 343 -64.5t97 -220.5q0 -53 -14 -178t-14 -203q0 -84 33.5 -115.5t109.5 -35.5v-162 q-76 -4 -109.5 -36t-33.5 -116q0 -78 14 -201.5t14 -176.5q0 -160 -97 -220.5t-343 -64.5z" />
<glyph unicode="~" horiz-adv-x="1073" d="M868 942l160 -59q-25 -147 -80 -218t-151 -71q-78 0 -237 47t-216 47q-51 0 -83 -20.5t-62 -77.5l-152 74q33 121 101.5 196.5t162.5 75.5q82 0 231.5 -47t213.5 -47q47 0 69.5 21.5t42.5 78.5z" />
<glyph unicode="&#xad;" horiz-adv-x="636" d="M596 465h-555v260h555v-260z" />
<glyph unicode="&#x2000;" horiz-adv-x="802" />
<glyph unicode="&#x2001;" horiz-adv-x="1607" />
<glyph unicode="&#x2002;" horiz-adv-x="802" />
<glyph unicode="&#x2003;" horiz-adv-x="1607" />
<glyph unicode="&#x2004;" horiz-adv-x="534" />
<glyph unicode="&#x2005;" horiz-adv-x="401" />
<glyph unicode="&#x2006;" horiz-adv-x="266" />
<glyph unicode="&#x2007;" horiz-adv-x="266" />
<glyph unicode="&#x2008;" horiz-adv-x="200" />
<glyph unicode="&#x2009;" horiz-adv-x="321" />
<glyph unicode="&#x200a;" horiz-adv-x="88" />
<glyph unicode="&#x2010;" horiz-adv-x="636" d="M596 465h-555v260h555v-260z" />
<glyph unicode="&#x2011;" horiz-adv-x="636" d="M596 465h-555v260h555v-260z" />
<glyph unicode="&#x2012;" horiz-adv-x="636" d="M596 465h-555v260h555v-260z" />
<glyph unicode="&#x2013;" horiz-adv-x="1024" d="M1022 465h-1022v219h1022v-219z" />
<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M2048 465h-2048v219h2048v-219z" />
<glyph unicode="&#x2018;" horiz-adv-x="460" d="M389 1296l-41 -196q-86 2 -137 10t-90 43t-39 96q0 53 39 131l98 207l129 -39l-47 -202q-2 -16 10 -23z" />
<glyph unicode="&#x2019;" horiz-adv-x="460" d="M244 1100l-131 39l47 202q6 18 -10 25l-78 25l41 196q63 0 104 -5t82 -19.5t60.5 -46t19.5 -78.5q0 -57 -37 -131z" />
<glyph unicode="&#x201c;" horiz-adv-x="829" d="M389 1296l-41 -196q-86 2 -137 10t-90 43t-39 96q0 53 39 131l98 207l129 -39l-47 -202q-2 -16 10 -23zM758 1296l-41 -196q-86 2 -137.5 10t-90 43t-38.5 96q0 53 38 131l99 207l129 -39l-47 -202q-2 -16 10 -23z" />
<glyph unicode="&#x201d;" horiz-adv-x="829" d="M244 1100l-131 39l47 202q6 18 -10 25l-78 25l41 196q63 0 104 -5t82 -19.5t60.5 -46t19.5 -78.5q0 -57 -37 -131zM612 1100l-131 39l47 202q6 18 -10 25l-78 25l41 196q63 0 104.5 -5t82.5 -19.5t60.5 -46t19.5 -78.5q0 -57 -37 -131z" />
<glyph unicode="&#x2026;" horiz-adv-x="1443" d="M432 135q0 -160 -174 -160q-176 0 -176 160t176 160q174 0 174 -160zM899 135q0 -160 -174 -160q-176 0 -176 160t176 160q174 0 174 -160zM1362 135q0 -160 -174 -160q-176 0 -176 160t176 160q174 0 174 -160z" />
<glyph unicode="&#x202f;" horiz-adv-x="321" />
<glyph unicode="&#x205f;" horiz-adv-x="401" />
<glyph unicode="&#xe000;" horiz-adv-x="1065" d="M0 1065h1065v-1065h-1065v1065z" />
<glyph horiz-adv-x="1024" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 27 KiB

BIN
source/fonts/adellebasic_bold-webfont.ttf

Binary file not shown.

BIN
source/fonts/adellebasic_bold-webfont.woff

Binary file not shown.

22
source/index.haml

@ -1,22 +0,0 @@
---
layout: default
title: Blog
author:
disqus:
---
.blog
- site.posts.sort_by(&:date).reverse[0..9].each_with_index do |post,index|
.article
%h2= link_to(post.title, post.url, {:class=>"title"})
.meta
- author = (page.respond_to?(:author) && page.author) ? 'by: ' + page.author + ' |' : ''
#{author} posted: #{post.date.strftime("%B #{post.date.day.ordinalize}, %Y")}
= (page.respond_to?(:updated) && page.updated) ? " | updated: #{page.updated}" : ''
= preserve rp(post.content)
- if page.respond_to?(:disqus) && page.disqus
- if post.data["comments_off"]
%em.comments_off Comments disabled
- else
%a(href="#{post.url}/#disqus_thread")Comments
.footer
%a(href="/archives.html" title="archives") &laquo; Blog Archives

12
source/index.html

@ -0,0 +1,12 @@
---
layout: default
title: Octopress
---
{% for page in site.posts limit:3 %}
{% assign content = page.content %}
{% assign index = true %}
<article>
{% include article.html %}
</article>
{% endfor %}

1322
source/javascripts/mootools-more-1.3.1.1.js

File diff suppressed because it is too large

5848
source/javascripts/mootools-yui-compressed.js

File diff suppressed because it is too large

31
source/javascripts/octopress.js

@ -3,6 +3,35 @@ window.addEvent('domready', function() {
codeblocks.each(addExpander);
});
window.addEvents({
domready: function(){
if(twitter_user){
new Request.Twitter(twitter_user, {
include_replies: false,
data: { count: 3 },
onSuccess: function(tweets){
$('tweets').empty();
for (var i = tweets.length; i--; ){
new Element('li', {
'class': 'tweet'
}).adopt(
new Element('p', { 'html': tweets[i].text+' ' }).adopt(
new Element('a', {
'href': 'http://twitter.com/'+twitter_user+'/status/'+tweets[i].id_str,
'text': new Date(tweets[i].created_at).timeDiffInWords()
}))
).inject('tweets', 'top');
}
}
}).send();
}
$$('#recent_posts time').each(function(date){
date.set('text', new Date(date.get('text')).timeDiffInWords());
});
},
});
function addExpander(div){
new Element('span',{
html: 'expand &raquo;',
@ -44,4 +73,4 @@ function enableCompressedLayout(codeblocks){
}
}
}).inject($('main'), 'top');
}
}

52
source/javascripts/pinboard.js

@ -0,0 +1,52 @@
var count = pinboard_count;
var linkroll = 'pinboard_linkroll';
function pinboardNS_fetch_script(url) {
document.writeln('<s'+'cript type="text/javascript" src="' + url + '"></s'+'cript>');
}
function pinboardNS_show_bmarks(r) {
var lr = new Pinboard_Linkroll();
lr.set_items(r);
lr.show_bmarks();
}
var json_URL = "http://feeds.pinboard.in/json/v1/u:"+pinboard_user+"/?cb=pinboardNS_show_bmarks\&count=" + count;
pinboardNS_fetch_script(json_URL);
function Pinboard_Linkroll() {
var items;
this.set_items = function(i) {
this.items = i;
}
this.show_bmarks = function() {
var lines = [];
for (var i = 0; i < this.items.length; i++) {
var item = this.items[i];
var str = this.format_item(item);
lines.push(str);
}
$(linkroll).set('html', lines.join("\n"));
}
this.cook = function(v) {
return v.replace('<', '&lt;').replace('>', '&gt>');
}
this.format_item = function(it) {
var str = "<li class=\"pin-item\">";
if (!it.d) { return; }
str += "<p><a class=\"pin-title\" href=\"" + this.cook(it.u) + "\">" + this.cook(it.d) + "</a>";
if (it.n) {
str += "<span class=\"pin-description\">" + this.cook(it.n) + "</span>\n";
}
if (it.t.length > 0) {
for (var i = 0; i < it.t.length; i++) {
var tag = it.t[i];
str += " <a class=\"pin-tag\" href=\"http://pinboard.in/u:"+ this.cook(it.a) + "/t:" + this.cook(tag) + "\">" + this.cook(tag) + "</a> ";
}
}
str += "</p></li>\n";
return str;
}
}
Pinboard_Linkroll.prototype = new Pinboard_Linkroll();

197
source/javascripts/twitter.js

@ -1,151 +1,52 @@
//
// The Octopress Twitter Feed is based on the following work:
// Valerio's javascript framework Mootools: Mootools.net
// David Walsh's Twitter Gitter plugin: http://davidwalsh.name/mootools-twitter-plugin
// Aaron Newton’s JSONP plugin: http://clientcide.com/js
// PrettyDate by John Resig at http://ejohn.org/files/pretty.js
//
/*
Plugin: Octopress Twitter Feed
Author: Brandon Mathis
Website: http://brandonmathis.com
Date: 11/07/2009
*/
var tweet_container = 'li';
var twitter_container = 'twitter_status';
var key = '-!-!-';
var show_source = false;
window.addEvent('domready',function() {
getTwitterStatus(twitter_user);
});
function showTweets(the_tweets, from_cookie){
if(from_cookie){
the_tweets = the_tweets.split('^!^!^');
Request.Twitter = new Class({
Extends: Request.JSONP,
options: {
linkify: true,
url: 'http://twitter.com/statuses/user_timeline/{term}.json',
include_replies: true,
data: {
count: 5,
trim_user: true
}
},
initialize: function(term, options){
this.parent(options);
if(this.options.include_replies == false){
this.options.count = this.options.data.count
this.options.data.count += 30; // adds 30 tweets to request for filtering
}
this.options.url = this.options.url.substitute({term: term});
console.log(this.options.url);
},
success: function(args, index){
if(!this.options.include_replies){
args[0] = args[0].filter(function(item, index, array){
return item.in_reply_to_screen_name == null;
});
if(args[0].length > this.options.count){ args[0].length = this.options.count; }
}
var data = args[0];
if (this.options.linkify) data.each(function(tweet){
tweet.text = this.linkify(tweet.text);
}, this);
if (data[0]) this.options.data.since_id = data[0].id; // keep subsequent calls newer
this.parent(args, index);
},
linkify: function(text){
// modified from TwitterGitter by David Walsh (davidwalsh.name)
// courtesy of Jeremy Parrish (rrish.org)
return text.replace(/(https?:\/\/[\w\-:;?&=+.%#\/]+)/gi, '<a href="$1">$1</a>')
.replace(/(^|\W)@(\w+)/g, '$1<a href="http://twitter.com/$2">@$2</a>')
.replace(/(^|\W)#(\w+)/g, '$1#<a href="http://search.twitter.com/search?q=%23$2">$2</a>');
}
$(twitter_container).set('html', '');
the_tweets.each(function(tweet){
tweet = parseTweetMeta(tweet)
tweet = '<p>' + tweet.replace(/\n\n/gi,'</p><p>') + '</p>';
new Element(tweet_container,{
html: tweet
}).inject(twitter_container);
});
}
function parseTweetMeta(tweet_data){
var tweet_data = tweet_data.split(key);
var tweet = tweet_data[0];
var date = tweet_data[1];
var tweet_id = tweet_data[2];
var source = tweet_data[3];
date = prettyDate(new Date().parse(date));
return tweet + '<span class="meta"><a href="http://twitter.com/'+twitter_user + '/status/' + tweet_id + '">' + date + '</a>' + (show_source ? ' from '+source : '') + '</span>';
}
function prettyDate(time){
var date = time;
var diff = (((new Date()).getTime() - date.getTime()) / 1000)
var day_diff = Math.floor(diff / 86400);
if ( isNaN(day_diff) || day_diff < 0)
return;
return day_diff == 0 && (
diff < 60 && "just now" ||
diff < 120 && "1 minute ago" ||
diff < 3600 && Math.floor( diff / 60 ) + " minutes ago" ||
diff < 7200 && "1 hour ago" ||
diff < 86400 && Math.floor( diff / 3600 ) + " hours ago") ||
day_diff == 1 && "1 day ago" ||
day_diff < 7 && day_diff + " days ago" ||
day_diff < 31 && Math.ceil( day_diff / 7 ) + " weeks ago" ||
true && Math.ceil( day_diff / 30 ) + " months ago";
}
function getTwitterStatus(twitter_name){
var container = $(twitter_container);
if(!container) return;
var tweet_cookie = 'tweets_by_' + twitter_name + tweet_count;
container.set('html', 'Fetching tweets...');
if(!Cookie.read(tweet_cookie)) {
var myTwitterGitter = new TwitterGitter(twitter_name,{
count: ((show_replies) ? tweet_count : 15 + tweet_count),
onComplete: function(tweets,user) {
the_tweets = Array();
tweets.each(function(tweet,i) {
if((tweet.in_reply_to_status_id && show_replies) || !tweet.in_reply_to_status_id){
if(the_tweets.length == tweet_count) return;
the_tweets.push(tweet.text + key + tweet.created_at + key + tweet.id + key + tweet.source);
}
});
Cookie.write(tweet_cookie,the_tweets.join('^!^!^'), { duration: 0.02 });
showTweets(the_tweets);
}
}).retrieve();
} else {
showTweets(Cookie.read(tweet_cookie),true);
}
}
/*
Plugin: TwitterGitter
Author: David Walsh
Website: http://davidwalsh.name
Date: 2/21/2009
*/
var TwitterGitter = new Class({
//implements
Implements: [Options,Events],
//options
options: {
count: 2,
sinceID: 1,
link: true,
onRequest: $empty,
onComplete: $empty
},
//initialization
initialize: function(username,options) {
//set options
this.setOptions(options);
this.info = {};
this.username = username;
},
//get it!
retrieve: function() {
new JsonP('http://twitter.com/statuses/user_timeline/' + this.username + '.json',{
data: {
count: this.options.count,
since_id: this.options.sinceID
},
onRequest: this.fireEvent('request'),
onComplete: function(data) {
//linkify?
if(this.options.link) {
data.each(function(tweet) { tweet.text = this.linkify(tweet.text); },this);
}
//complete!
this.fireEvent('complete',[data,data[0].user]);
}.bind(this)
}).request();
return this;
},
//format
linkify: function(text) {
//courtesy of Jeremy Parrish (rrish.org)
return text.replace(/(https?:\/\/[\w\-:;?&=+.%#\/]+)/gi,'<a href="$1">$1</a>').replace(/(^|\s)@(\w+)/g,'$1<a class="user" href="http://twitter.com/$2">@$2</a>').replace(/(^|\s)#(\w+)/g,'$1<a class="topic" href="http://search.twitter.com/search?q=%23$2">#$2</a>');
}
});
//Compact Jsonp from http://clientcide.com/js
MooTools.More={'version':'1.2.3.1'};var Log=new Class({log:function(){Log.logger.call(this,arguments)}});Log.logged=[];Log.logger=function(){if(window.console&&console.log)console.log.apply(console,arguments);else Log.logged.push(arguments)};Class.refactor=function(original,refactors){$each(refactors,function(item,name){var origin=original.prototype[name];if(origin&&(origin=origin._origin)&&typeof item=='function')original.implement(name,function(){var old=this.previous;this.previous=origin;var value=item.apply(this,arguments);this.previous=old;return value});else original.implement(name,item)});return original};Request.JSONP=new Class({Implements:[Chain,Events,Options,Log],options:{url:'',data:{},retries:0,timeout:0,link:'ignore',callbackKey:'callback',injectScript:document.head},initialize:function(options){this.setOptions(options);this.running=false;this.requests=0;this.triesRemaining=[]},check:function(){if(!this.running)return true;switch(this.options.link){case'cancel':this.cancel();return true;case'chain':this.chain(this.caller.bind(this,arguments));return false}return false},send:function(options){if(!$chk(arguments[1])&&!this.check(options))return this;var type=$type(options),old=this.options,index=$chk(arguments[1])?arguments[1]:this.requests++;if(type=='string'||type=='element')options={data:options};options=$extend({data:old.data,url:old.url},options);if(!$chk(this.triesRemaining[index]))this.triesRemaining[index]=this.options.retries;var remaining=this.triesRemaining[index];(function(){var script=this.getScript(options);this.log('JSONP retrieving script with url: '+script.get('src'));this.fireEvent('request',script);this.running=true;(function(){if(remaining){this.triesRemaining[index]=remaining-1;if(script){script.destroy();this.send(options,index);this.fireEvent('retry',this.triesRemaining[index])}}else if(script&&this.options.timeout){script.destroy();this.cancel();this.fireEvent('failure')}}).delay(this.options.timeout,this)}).delay(Browser.Engine.trident?50:0,this);return this},cancel:function(){if(!this.running)return this;this.running=false;this.fireEvent('cancel');return this},getScript:function(options){var index=Request.JSONP.counter,data;Request.JSONP.counter++;switch($type(options.data)){case'element':data=document.id(options.data).toQueryString();break;case'object':case'hash':data=Hash.toQueryString(options.data)}var src=options.url+(options.url.test('\\?')?'&':'?')+(options.callbackKey||this.options.callbackKey)+'=Request.JSONP.request_map.request_'+index+(data?'&'+data:'');if(src.length>2083)this.log('JSONP '+src+' will fail in Internet Explorer, which enforces a 2083 bytes length limit on URIs');var script=new Element('script',{type:'text/javascript',src:src});Request.JSONP.request_map['request_'+index]=function(data){this.success(data,script)}.bind(this);return script.inject(this.options.injectScript)},success:function(data,script){if(script)script.destroy();this.running=false;this.log('JSONP successfully retrieved: ',data);this.fireEvent('complete',[data]).fireEvent('success',[data]).callChain()}});Request.JSONP.counter=0;Request.JSONP.request_map={};var JsonP=Class.refactor(Request.JSONP,{initialize:function(){var params=Array.link(arguments,{url:String.type,options:Object.type});options=(params.options||{});options.url=options.url||params.url;if(options.callBackKey)options.callbackKey=options.callBackKey;this.previous(options)},getScript:function(options){var queryString=options.queryString||this.options.queryString;if(options.url&&queryString)options.url+=(options.url.indexOf("?")>=0?"&":"?")+queryString;var script=this.previous(options);if($chk(options.globalFunction)){window[options.globalFunction]=function(r){JsonP.requestors[index].handleResults(r)}}return script},request:function(url){this.send({url:url||this.options.url})}});

17
source/sass/screen.scss

@ -0,0 +1,17 @@
@import "compass";
@import "compass/layout";
@include global-reset;
@include reset-html5;
/* SASS mixins */
//@import "library/typography";
/* primary SASS */
//@import "theme";
//@import "typography";
@import "themes/classic/style";
/* specific SASS */
//@import "partials";

13
source/sass/themes/classic/_partials.scss

@ -0,0 +1,13 @@
@import "partials/shared";
@import "partials/syntax";
@import "partials/search";
@import "partials/sidebar";
@import "partials/twitter";
/* layout partials */
@import "partials/header";
@import "partials/navigation";
@import "partials/page";
@import "partials/sidebar";
@import "partials/blog";
@import "partials/footer";

4
source/sass/themes/classic/_style.scss

@ -0,0 +1,4 @@
@import "core/layout";
@import "core/theme";
@import "core/typography";
//@import "partials";

91
source/sass/themes/classic/core/_layout.scss

@ -0,0 +1,91 @@
$page-pad: 40px;
$min-width: 320px;
$max-width: 1440px;
$sidebar-width: 320px;
$sidebar-pad: 30px;
$default-border-radius: 4px;
//html { background-color: $body_bg; }
//body { color: $body_color; }
//a {
//color: $link_color;
//&:hover, &:focus {
//color: saturate(darken($link_color, 15), 20); }
//&:visited {
//color: darken(adjust_hue($link_color, 70), 10); } }
.group { @include pie-clearfix; }
.inner-wrap {
position: relative;
margin: 0 auto;
padding: 0 $page_pad;
max-width: $max-width;
@extend .group;
}
.core-layout { > div { @extend .inner-wrap; } }
body { > header, > nav, > footer {
@extend .core-layout;
min-width: $min-width;
}
}
#page {
@extend .group;
padding: 0;
max-width: $max-width + $page-pad*2;
margin: 0 auto;
> div {
@extend .group;
//min-width: 480px;
margin-right: $sidebar-width;
> aside {
float: left;
width: $sidebar-width - $sidebar-pad*2;
margin: 0 -100% 0 0;
padding: $sidebar-pad;
}
}
}
#main {
float: left;
width: 100%;
padding-top: 25px;
padding-bottom: 25px;
> * {
padding-right: $page-pad;
padding-left: $page-pad;
}
}
@media (min-device-width:1024px) and (max-width:800px),
screen and (max-device-width:480px), (max-device-width:480px) and (orientation:landscape),
(min-device-width:481px) and (max-device-width:1024px) and (orientation:portrait) {
#page > div { margin-right: 0;
#main { float: none; }
> aside { margin: 0; float: none; }
}
page > div > aside { float: none; }
body { > header, > nav, > footer { > div { padding: 0 15px; }}}
#main > * { padding-left: 15px; padding-right: 15px; }
}
@media only screen and (min-device-width: 320px) and (max-device-width: 480px) {
body { > header, > nav, > footer { > div { padding: 0 10px; }}}
#main > * { padding-left: 10px; padding-right: 10px; }
#page > div { margin: none; > aside { float: none; }}
}
//*{
//transition: width .5s;
//-moz-transition: width .5s;
//-webkit-transition: margin .5s;
//}
//#search { left: $page-width + $sidebar-margin - $sidebar-width; }

45
source/sass/themes/classic/core/_theme.scss

@ -0,0 +1,45 @@
// Link Colors
$link_color: lighten(#165b94, 0.3);
// Main Section Colors
$body_color: #333333;
$light_text: #999999;
$body_bg: #323232;
$header_bg: #323232;
$header_border: #181818;
$title_color: #dddddd;
$nav_color: #555555;
$nav_color_hover: black;
$nav_bg: #e8e8e8;
$nav_border_top: white;
$nav_border_bottom: #aaaaaa;
$nav_border_left: #cccccc;
$nav_border_right: white;
$sidebar_bg: #f2f2f2;
$sidebar_border: #d5d5d5;
// Blog
$article_border: #eeeeee;
$main_bg: #fff;
$footer_color: #999999;
$footer_bg: #444444;
// Form Colors
$fieldset_bg: #ececec;
$fieldset_border: #c3c3c3;
$textinput_color: #333333;
$textinput_bg: #f4f4f4;
$textinput_bg_focus: #fefeee;
$textinput_border_top: #aaaaaa;
$textinput_border_bottom: #c6c6c6;
$textinput_border_left: #c3c3c3;
$textinput_border_right: #c3c3c3;
$textinput_border_focus: #989898;
$twitter_topic: #888888;

159
source/sass/themes/classic/core/_typography.scss

@ -0,0 +1,159 @@
$type-border: #ddd;
$type-color-light: #555;
$type-color: #000;
$blockquote: $type-border !default; //darken($type-border, 20) !default;
// Fonts
@include font-face("Adelle", font-files("adellebasic_bold-webfont.woff", woff, "adellebasic_bold-webfont.ttf", truetype, "adellebasic_bold-webfont.svg#webfontKykxqSyz", svg), $eot: "adellebasic_bold-webfont.eot" );
.heading-font { font-family: Adelle, "Helvetica Neue", Helvetica, Arial, sans; }
body > header h1 {
font-size: 3em;
@extend .heading-font;
line-height: 1.2em;
margin-bottom: 0.6667em;
}
body {
font-size: 1em;
line-height: 1.5em;
color: $type-color;
font-family: Georgia, Times, serif;
}
article {
margin-bottom: 1.5em;
padding-bottom: 1.5em;
padding-top: 1em;
+ article { border-top: 3px solid $type-color-light; }
&:last-child { border-bottom: none; }
h2 {
padding-top: 0.8em;
border-top: 3px double $type-border;
}
.author, time { text-transform: uppercase; }
.updated { font-size: .8em; color: $type-color-light; }
time span {
font-size: .7em;
line-height: 0;
position: relative;
top: -.4em;
}
header {
p {
padding: 0 0 1.5em;
font-size: .8em;
color: $type-color-light;
font-family: Palatino, Times, "Times New Roman";
//margin-top: -1.2em;
//border: {
top-width: 1px;
//bottom-width: 1px;
//style: dashed;
//color: $type-border;
//}
}
}
}
#{headings()}{
@extend .heading-font; font-weight: normal;
line-height: 1em;
text-rendering: optimizelegibility;
}
h1 {
font-size: 2.6em;
margin-bottom: 0.6667em;
}
h2, section h1 {
font-size: 1.8em;
margin-bottom: 0.6667em;
}
h3, section h2, section section h1 {
font-size: 1.6em;
margin-bottom: 0.875em;
}
h4, section h3, section section h2, section section section h1 {
font-size: 1.3em;
margin-bottom: 0.875em;
}
h5, section h4, section section h3 {
font-size: 1.1em;
margin-bottom: 0.75em;
}
h6, section h5, section section h4, section section section h3 {
font-size: 1em;
margin-bottom: 0.5em;
}
p, blockquote, ul, ol { margin-bottom: 1.5em; }
ul{ list-style-type: disc; }
ol{ list-style-type: decimal; ol { list-style-type: lower-alpha; } }
ul ul, ol ol { margin-left: 1.75em; }
li { margin-bottom: .5em; }
strong { font-weight: bold; }
em { font-style: italic; }
sup, sub { font-size: 0.8em; position: relative; display: inline-block; }
sup { top: -.5em; }
sub { bottom: -.5em; }
q { font-style: italic;
&:before { content: "\201C"; }
&:after { content: "\201D"; }
}
em, dfn { font-style: italic; }
strong, dfn { font-weight: bold; }
del, s { text-decoration: line-through; }
abbr, acronym { border-bottom: 1px dotted; cursor: help; }
pre, code, tt { @extend .mono-font; }
sub, sup { line-height: 0; }
hr { margin-bottom: 0.2em; }
small { font-size: .8em; }
big { font-size: 1.2em; }
blockquote {
$bq-margin: 2em;
font-style: italic;
position: relative;
margin-left: $bq-margin;
> p {
&:first-child:before {
content: "\201C";
position: absolute;
top: 0.1em;
left: -.7em;
font-size: 3em;
color: $blockquote;
}
&:last-child:after {
content: "\201D";
position: relative;
top: 0.3em;
line-height: 0;
font-size: 2em;
color: $blockquote;
}
}
+ p > cite {
margin-left: $bq-margin;
text-align: right;
&:before { content: ''; color: $type-color-light; }
a { font-style: italic; }
}
}

23
source/sass/themes/classic/partials/_blog.scss

@ -0,0 +1,23 @@
article {
h2 {
padding-top: 0;
margin-bottom: 0.1em; }
.title {
text-decoration: none;
&:hover {
text-decoration: underline; } }
.entry {
border-bottom: 1px solid $article-border;
&:first-child {
padding-top: 0; } }
#disqus_thread { }
.meta {
border-bottom: 1px dashed #dddddd;
text-transform: uppercase;
color: #777777;
padding: 8px 0 5px;
margin-bottom: 1.5em;
font-size: 75%;
letter-spacing: 1px; }
.footer {
padding-top: 15px; } }

11
source/sass/themes/classic/partials/_footer.scss

@ -0,0 +1,11 @@
footer {
@include background(linear-gradient(darken($body-bg, 5), $body-bg));
//color: $footer-color;
//border-top: 10px solid $footer-bg;
padding: 15px 0;
position: relative;
z-index: 2;
a {
color: #dddddd;
&:hover {
color: white; } } }

11
source/sass/themes/classic/partials/_header.scss

@ -0,0 +1,11 @@
body > header {
background-color: $header_bg;
border-bottom: 1px solid $header_border;
padding: 25px 0;
h1 {
display: inline-block;
margin: 0;
a, a:visited {
font-weight: normal;
color: $title_color;
text-decoration: none; } } }

30
source/sass/themes/classic/partials/_navigation.scss

@ -0,0 +1,30 @@
#nav {
@extend .group;
position: relative;
z-index: 1;
background-color: $nav-bg;
@include background-image(linear-gradient(#fcfcfc, #f4f4f4 0.3, #dddddd));
border: {
top: 1px solid $nav-border-top;
bottom: 1px solid $nav-border-bottom; };
ul {
position: relative;
@include horizontal-list;
margin: 0 auto;
padding: 6px 0;
li {
padding: 0 15px;
border-left: 1px solid $nav-border-left;
border-right: 1px solid $nav-border-right;
&:first-child {
border-left: none;
padding-left: 0; }
&:last-child {
border-right: 0; }
a {
display: inline-block;
color: $nav-color;
line-height: 150%;
text-decoration: none;
&:hover {
color: $nav-color-hover; } } } } }

8
source/sass/themes/classic/partials/_page.scss

@ -0,0 +1,8 @@
body {
background-color: $sidebar_bg;
}
#page > div {
background-color: $main_bg; border-right: 1px solid $sidebar_border;
@include box-shadow(rgba(#000, .1) 0 0 18px);
}

19
source/sass/themes/classic/partials/_search.scss

@ -0,0 +1,19 @@
#search {
position: absolute;
top: 30%;
form {
background: image-url("search_bg.png") no-repeat;
padding: 0;
height: 28px;
width: 218px; }
#q {
background: none;
position: relative;
top: 1px;
width: 160px;
margin-left: 30px;
font-size: 15px;
border: none;
color: #aaaaaa;
&:focus {
outline: none; } } }

12
source/sass/themes/classic/partials/_shared.scss

@ -0,0 +1,12 @@
#collapser {
display: block;
cursor: pointer;
background: #f8f8f8;
color: #888888;
padding: 5px 10px;
font-size: 10px;
line-height: 150%;
cursor: pointer;
position: absolute;
top: 0;
right: 0; }

38
source/sass/themes/classic/partials/_sidebar.scss

@ -0,0 +1,38 @@
.subscribe a {
display: inline-block;
padding-left: 28px;
background: image-url("rss.png") left top no-repeat; }
#sidebar {
line-height: 1.45em;
font-size: 90%;
h3 {
margin: 20px -15px 10px;
padding: 12px 15px;
background: white;
border-bottom: 1px solid #e5e5e5;
border-top: 1px solid #e5e5e5;
&:first-child {
margin-top: 0; } } }
#twitter, #delicious {
@include border-radius;
background: #f8f8f8;
border: 1px solid #eeeeee;
padding: 5px 0;
ul {
list-style-type: none;
margin: 0; }
li {
margin: 0 15px;
padding: 10px 0 0;
border-bottom: #dddddd 1px dashed;
&:last-child {
border-bottom: 0; } } }
#delicious {
p {
font-style: italic; }
li {
color: #666666;
font-style: normal;
padding-bottom: 8px; } }

279
source/sass/themes/classic/partials/_syntax.scss

@ -0,0 +1,279 @@
.code_window {
@include border-top-radius(5px);
@include border-bottom-radius(2px);
background: #aaaaaa image-url("code_bg.png") top repeat-x;
position: relative;
margin: 0.3em 0 1.3em;
padding: 0 3px 3px;
font-size: 14px;
border: 1px solid #898989;
border-top-color: #cbcbcb;
border-left-color: #a5a5a5;
border-right-color: #a5a5a5;
em {
text-align: center;
text-shadow: #cccccc 1px 1px 1px;
display: block;
padding: 1px 0;
color: #333333;
font-style: normal; }
.highlight {
margin: 0; } }
pre {
color: #cccccc;
font-size: 13px;
background: #222222;
line-height: 1.5em;
border: #aaaaaa 1px solid;
overflow-x: auto;
overflow-y: hidden;
padding: 25px 20px;
.lineno {
color: #888888;
background: #e3e3e3;
display: inline-block;
padding: 0 0 0 10px;
&:first-child {
padding-top: 15px;
display: inline-block; } } }
.highlight {
position: relative;
.pre_expander {
font-size: 10px;
text-align: right;
padding: 4px 8px;
line-height: 150%;
position: absolute;
cursor: pointer;
top: 2px;
right: 2px;
@include border-bottom-left-radius;
display: block;
color: #777777;
background: #333333;
&:hover {
background: #444444;
color: #cccccc; } } }
// based on: http://github.com/mojombo/tpw/raw/master/css/syntax.css
.editor {
background: rgb(0, 22, 41);
line-height: 1.25; }
pre.console {
background-color: black;
color: lighten(green, 25);
letter-spacing: 1px;
padding: 0.5em;
.prompt {
color: lighten(navy, 50);
&:before {
color: white;
content: "["; }
&:after {
color: white;
content: "]"; } }
.stdin {
font-weight: bold;
color: lighten(green, 75); } }
.highlight {
padding: 0 0 0.1em;
color: white;
// Comment
.c {
color: #999988;
font-style: italic; }
// Error
.err {
color: #a61717;
background-color: #e3d2d2; }
// Name
.n {
color: white; }
// Keyword
.k {
color: rgb(255, 157, 0); }
// Paren
.p {
color: darken(#ff9d00, 33); }
// Operator
.o {
color: rgb(255, 157, 0); }
// Comment.Multiline
.cm {
color: #999988;
font-style: italic; }
// Comment.Preproc
.cp {
color: #999999; }
// Comment.Single
.c1 {
color: #999988;
font-style: italic; }
// Comment.Special
.cs {
color: #999999;
font-style: italic; }
// Generic.Deleted
.gd {
color: black;
background-color: #ffdddd; }
// Generic.Deleted.Specific
.gd .x {
color: black;
background-color: #ffaaaa; }
// Generic.Emph
.ge {
font-style: italic; }
// Generic.Error
.gr {
color: #aa0000; }
// Generic.Heading
.gh {
color: #999999; }
// Generic.Inserted
.gi {
color: black;
background-color: #ddffdd; }
// Generic.Inserted.Specific
.gi .x {
color: black;
background-color: #aaffaa; }
// Generic.Output
.go {
color: #888888; }
// Generic.Prompt
.gp {
color: #555555; }
// Generic.Strong
.gs {
color: white; }
// Generic.Subheading
.gu {
color: #aaaaaa; }
// Generic.Traceback
.gt {
color: #aa0000; }
// Keyword.Constant
.kc {
color: white; }
// Keyword.Declaration
.kd {
color: white; }
// Keyword.Pseudo
.kp {
color: white; }
// Keyword.Reserved
.kr {
color: white; }
// Keyword.Type
.kt {
color: #445588; }
// Literal.Number
.m {
color: rgb(255, 98, 140); }
// Literal.String
.s {
color: #dd1144; }
// Name.Attribute
.na {
color: teal; }
// Name.Builtin
.nb {
color: darken(rgb(128, 255, 187), 20); }
// Name.Class
.nc {
color: darken(rgb(128, 255, 187), 20); }
// Name.Constant
.no {
color: rgb(128, 255, 187); }
// Name.Entity
.ni {
color: purple; }
// Name.Exception
.ne {
color: rgb(255, 221, 0); }
// Name.Function
.nf {
color: rgb(255, 221, 0); }
// Name.Namespace
.nn {
color: #555555; }
// Name.Tag
.nt {
color: white; }
// Name.Variable
.nv {
color: teal; }
// Operator.Word
.ow {
color: white; }
// Text.Whitespace
.w {
color: #bbbbbb; }
// Literal.Number
.nl {
color: rgb(255, 98, 140); }
// Literal.Number.Float
.mf {
color: rgb(255, 98, 140); }
// Literal.Number.Hex
.mh {
color: rgb(255, 98, 140); }
// Literal.Number.Integer
.mi {
color: rgb(255, 98, 140); }
// Literal.Number.Oct
.mo {
color: rgb(255, 98, 140); }
// Literal.String.Backtick
.sb {
color: rgb(58, 217, 0); }
// Literal.String.Char
.sc {
color: rgb(58, 217, 0); }
// Literal.String.Doc
.sd {
color: rgb(58, 217, 0); }
// Literal.String.Double
.s2 {
color: rgb(58, 217, 0); }
// Literal.String.Escape
.se {
color: rgb(58, 217, 0); }
// Literal.String.Heredoc
.sh {
color: rgb(58, 217, 0); }
// Literal.String.Interpol
.si {
color: rgb(158, 255, 128); }
// Literal.String.Other
.sx {
color: rgb(58, 217, 0); }
// Literal.String.Regex
.sr {
color: #009926; }
// Literal.String.Single
.s1 {
color: rgb(58, 217, 0); }
// Literal.String.Symbol
.ss {
color: rgb(255, 98, 140); }
// Name.Builtin.Pseudo
.bp {
color: #999999; }
// Name.Variable.Class
.vc {
color: teal; }
// Name.Variable.Global
.vg {
color: teal; }
// Name.Variable.Instance
.vi {
color: teal; }
// Literal.Number.Integer.Long
.il {
color: rgb(255, 98, 140); } }

15
source/sass/themes/classic/partials/_twitter.scss

@ -0,0 +1,15 @@
#twitter {
p {
padding-bottom: 10px;
a.topic {
color: $twitter_topic; } }
.meta {
color: $light_text;
font-size: 80%;
display: block;
padding: 8px 0 0;
a {
color: inherit;
text-decoration: none;
&:hover {
text-decoration: underline; } } } }

3
stylesheets/_base.sass

@ -1,3 +0,0 @@
//compass default reset
+global-reset
@import compass

51
stylesheets/_layout.sass

@ -1,51 +0,0 @@
$page_pad: 30px
$page_width: 980px
$sidebar_margin: 20px
$sidebar_width: 280px
$default_border_radius: 4px
html body
background-color: $body_bg
color: $body_color
a
color: $link_color
&:hover, &:focus
color: saturate(darken($link_color, 15), 20)
&:visited
color: darken(adjust_hue($link_color, 70), 10)
#header, #footer, #nav
.content
position: relative
margin: 0 auto
width: $page_width - $page_pad
padding: 0 $page_pad/2
#page, #header, #footer, #nav
min-width: $page_width
#page, #content, .content
+pie-clearfix
#content
margin: 0 auto
width: $page_width - $sidebar_width - $page_pad/2
padding: 0 $sidebar_width 0 $page_pad/2
#main
float: left
width: 100%
.content
padding-right: $sidebar_margin
#sidebar
float: left
width: $sidebar_width - $sidebar_margin
margin: 0 -100% 0 0
padding: $page_pad 0 $page_pad $sidebar_margin
#page.expanded
#content
width: $page_width - $page_pad/2
padding: 0 0 0 $page_pad/2
#sidebar
float: none
margin: 0
padding: 0 0 $page_pad

7
stylesheets/_library.sass

@ -1,7 +0,0 @@
@import compass/utilities
@import compass/css3
@import library/reset
@import library/list_borders
@import library/typography
@import library/link_colors

13
stylesheets/_partials.sass

@ -1,13 +0,0 @@
@import partials/shared
@import partials/syntax
@import partials/search
@import partials/sidebar
@import partials/twitter
/* layout partials */
@import partials/header
@import partials/navigation
@import partials/page
@import partials/sidebar
@import partials/blog
@import partials/footer

47
stylesheets/_theme.sass

@ -1,47 +0,0 @@
// Link Colors
$link_color: lighten(#165B94, .30)
// Main Section Colors
$body_color: #333
$light_text: #999
$body_bg: #323232
$header_bg: #323232
$header_border: #181818
$title_color: #ddd
$nav_color: #555
$nav_color_hover: #000
$nav_bg: #e8e8e8
$nav_border_top: #fff
$nav_border_bottom: #aaa
$nav_border_left: #ccc
$nav_border_right: #fff
$page_border_sides: #ccc
$page_bg: #f0f0f0
$sidebar_bg: #fcfcfc
$sidebar_border: #eee
// Blog
$article_border: #eee
$main_bg: #fff
$footer_color: #999
$footer_bg: #444
// Form Colors
$fieldset_bg: #ececec
$fieldset_border: #c3c3c3
$textinput_color: #333
$textinput_bg: #f4f4f4
$textinput_bg_focus: #fefeee
$textinput_border_top: #aaa
$textinput_border_bottom: #c6c6c6
$textinput_border_left: #c3c3c3
$textinput_border_right: #c3c3c3
$textinput_border_focus: #989898
$twitter_topic: #888

45
stylesheets/_typography.sass

@ -1,45 +0,0 @@
$base_font_size: 16px
$base_font_size_small: 13px
$base_font_color: #333
$default_border_radius: 6px
+general-typography
=heading-font
+serif-font
=quote-font
+serif-font
body
font-size: $base_font_size
+serif-font
h1,h2,h3,h4,h5,h6
color: #333
font-weight: bold
+heading-font
h1,h2,h3,h4
letter-spacing: -1px
blockquote
+quote-font
font-style: italic
color: #555
background: #f8f8f8
border:
top: 1px solid #e5e5e5
bottom: 1px solid #e5e5e5
&:before
color: #ddd
cite
+sans-font
font-size: $base_font_size - 2px
display: block
padding-top: $base_font_size
&:before
content: "\30FC"
padding-right: 2px
a
color: inherit !important
&:hover
color: $link_color !important

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save