1
0
mirror of https://github.com/danbee/cv synced 2025-03-04 08:59:12 +00:00

Move the site over to Middleman.

This includes converting the haml templates to erb.
This commit is contained in:
Dan Barber 2015-02-14 14:48:04 +00:00
parent 4adbf2ce82
commit 861d947fe3
121 changed files with 748 additions and 7593 deletions

21
.gitignore vendored
View File

@ -1,3 +1,18 @@
.DS_*
.sass-cache
*.esproj
# See http://help.github.com/ignore-files/ for more about ignoring files.
#
# If you find yourself ignoring temporary files generated by your text editor
# or operating system, you probably want to add a global ignore instead:
# git config --global core.excludesfile ~/.gitignore_global
# Ignore bundler config
/.bundle
# Ignore the build directory
/build
# Ignore cache
/.sass-cache
/.cache
# Ignore .DS_store file
.DS_Store

22
Gemfile
View File

@ -1,14 +1,14 @@
source "http://rubygems.org"
# If you do not have OpenSSL installed, update
# the following line to use "http://" instead
source 'https://rubygems.org'
gem "rake"
gem "middleman", "~>3.3.7"
gem "stasis"
gem "therubyracer"
gem "hpricot"
gem "haml"
gem "sass"
gem "redcarpet"
gem "coffee-script"
# Live-reloading plugin
gem "middleman-livereload", "~> 3.1.0"
# for deployment
gem "net-ssh"
# For faster file watcher updates on Windows:
gem "wdm", "~> 0.1.0", :platforms => [:mswin, :mingw]
# Windows does not come with time zone data
gem "tzinfo-data", platforms: [:mswin, :mingw]

View File

@ -1,43 +1,129 @@
GEM
remote: http://rubygems.org/
remote: https://rubygems.org/
specs:
coffee-script (2.2.0)
activesupport (4.1.9)
i18n (~> 0.6, >= 0.6.9)
json (~> 1.7, >= 1.7.7)
minitest (~> 5.1)
thread_safe (~> 0.1)
tzinfo (~> 1.1)
celluloid (0.16.0)
timers (~> 4.0.0)
chunky_png (1.3.3)
coffee-script (2.3.0)
coffee-script-source
execjs
coffee-script-source (1.6.2)
directory_watcher (1.4.1)
execjs (1.4.0)
coffee-script-source (1.9.0)
compass (1.0.3)
chunky_png (~> 1.2)
compass-core (~> 1.0.2)
compass-import-once (~> 1.0.5)
rb-fsevent (>= 0.9.3)
rb-inotify (>= 0.9)
sass (>= 3.3.13, < 3.5)
compass-core (1.0.3)
multi_json (~> 1.0)
haml (4.0.0)
sass (>= 3.3.0, < 3.5)
compass-import-once (1.0.5)
sass (>= 3.2, < 3.5)
em-websocket (0.5.1)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0)
erubis (2.7.0)
eventmachine (1.0.7)
execjs (2.3.0)
ffi (1.9.6)
haml (4.0.6)
tilt
hpricot (0.8.6)
libv8 (3.11.8.13)
multi_json (1.7.1)
net-ssh (2.6.6)
rake (10.0.3)
redcarpet (2.2.2)
ref (1.0.3)
sass (3.2.7)
slop (3.3.2)
stasis (0.2.0)
directory_watcher (= 1.4.1)
slop (= 3.3.2)
tilt (= 1.3.3)
therubyracer (0.11.4)
libv8 (~> 3.11.8.12)
ref
tilt (1.3.3)
hike (1.2.3)
hitimes (1.2.2)
hooks (0.4.0)
uber (~> 0.0.4)
http_parser.rb (0.6.0)
i18n (0.6.11)
json (1.8.2)
kramdown (1.5.0)
listen (2.8.5)
celluloid (>= 0.15.2)
rb-fsevent (>= 0.9.3)
rb-inotify (>= 0.9)
middleman (3.3.7)
coffee-script (~> 2.2)
compass (>= 1.0.0, < 2.0.0)
compass-import-once (= 1.0.5)
execjs (~> 2.0)
haml (>= 4.0.5)
kramdown (~> 1.2)
middleman-core (= 3.3.7)
middleman-sprockets (>= 3.1.2)
sass (>= 3.4.0, < 4.0)
uglifier (~> 2.5)
middleman-core (3.3.7)
activesupport (~> 4.1.0)
bundler (~> 1.1)
erubis
hooks (~> 0.3)
i18n (~> 0.6.9)
listen (>= 2.7.9, < 3.0)
padrino-helpers (~> 0.12.3)
rack (>= 1.4.5, < 2.0)
rack-test (~> 0.6.2)
thor (>= 0.15.2, < 2.0)
tilt (~> 1.4.1, < 2.0)
middleman-livereload (3.1.1)
em-websocket (>= 0.2.0)
middleman-core (>= 3.0.2)
multi_json (~> 1.0)
rack-livereload
middleman-sprockets (3.4.1)
middleman-core (>= 3.3)
sprockets (~> 2.12.1)
sprockets-helpers (~> 1.1.0)
sprockets-sass (~> 1.3.0)
minitest (5.5.1)
multi_json (1.10.1)
padrino-helpers (0.12.4)
i18n (~> 0.6, >= 0.6.7)
padrino-support (= 0.12.4)
tilt (~> 1.4.1)
padrino-support (0.12.4)
activesupport (>= 3.1)
rack (1.6.0)
rack-livereload (0.3.15)
rack
rack-test (0.6.3)
rack (>= 1.0)
rb-fsevent (0.9.4)
rb-inotify (0.9.5)
ffi (>= 0.5.0)
sass (3.4.11)
sprockets (2.12.3)
hike (~> 1.2)
multi_json (~> 1.0)
rack (~> 1.0)
tilt (~> 1.1, != 1.3.0)
sprockets-helpers (1.1.0)
sprockets (~> 2.0)
sprockets-sass (1.3.1)
sprockets (~> 2.0)
tilt (~> 1.1)
thor (0.19.1)
thread_safe (0.3.4)
tilt (1.4.1)
timers (4.0.1)
hitimes
tzinfo (1.2.2)
thread_safe (~> 0.1)
uber (0.0.13)
uglifier (2.7.0)
execjs (>= 0.3.0)
json (>= 1.8.0)
PLATFORMS
ruby
DEPENDENCIES
coffee-script
haml
hpricot
net-ssh
rake
redcarpet
sass
stasis
therubyracer
middleman (~> 3.3.7)
middleman-livereload (~> 3.1.0)
tzinfo-data
wdm (~> 0.1.0)

View File

@ -1,816 +0,0 @@
<?xml version="1.0"?>
<project name="Boilerplate Build" default="build" basedir="../"> <!-- one back since we're in build/ -->
<!-- Load in Ant-Contrib to give us access to some very useful tasks! -->
<!-- the .jar file is located in the tools directory -->
<taskdef resource="net/sf/antcontrib/antcontrib.properties">
<classpath>
<pathelement location="${basedir}/build/tools/ant-contrib-1.0b3.jar"/>
</classpath>
</taskdef>
<!-- load shell environment -->
<property environment="ENV" />
<!-- load property files -->
<property file="build/config/project.properties"/>
<property file="build/config/default.properties"/>
<!-- merge the stylesheet properties -->
<var name="stylesheet-files" value="${file.stylesheets}, ${file.default.stylesheets}"/>
<!-- merge the pages properties -->
<var name="page-files" value="${file.pages}, ${file.pages.default.include}"/>
<!--
*************************************************
* BASE TARGETS *
*************************************************
-->
<target name="basics">
<if>
<equals arg1="${env}" arg2="dev"/>
<then>
<!-- Build a dev environment -->
<echo message="Building a Development Environment..."/>
<antcall target="-basics.dev"/>
</then>
<elseif>
<equals arg1="${env}" arg2="test"/>
<then>
<!-- Build a test environment -->
<echo message="Building a Test Environment..."/>
<antcall target="-basics.test"/>
</then>
</elseif>
<else>
<!-- Build a production environment -->
<echo message="Building a Production Environment..."/>
<antcall target="-basics.production"/>
</else>
</if>
</target>
<target name="text">
<if>
<equals arg1="${env}" arg2="dev"/>
<then>
<!-- Build a dev environment -->
<echo message="Building a Development Environment..."/>
<antcall target="-text.dev"/>
</then>
<elseif>
<equals arg1="${env}" arg2="test"/>
<then>
<!-- Build a test environment -->
<echo message="Building a Test Environment..."/>
<antcall target="-text.test"/>
</then>
</elseif>
<else>
<!-- Build a production environment -->
<echo message="Building a Production Environment..."/>
<antcall target="-text.production"/>
</else>
</if>
<!-- funky order due to jpegtran being a jerk. See comment at top of imagesjpg task -->
<antcall target="-jpgcopy"/>
</target>
<target name="buildkit">
<if>
<equals arg1="${env}" arg2="dev"/>
<then>
<!-- Build a dev environment -->
<echo message="Building a Development Environment..."/>
<antcall target="-buildkit.dev"/>
</then>
<elseif>
<equals arg1="${env}" arg2="test"/>
<then>
<!-- Build a test environment -->
<echo message="Building a Test Environment..."/>
<antcall target="-buildkit.test"/>
</then>
</elseif>
<else>
<!-- Build a production environment -->
<echo message="Building a Production Environment..."/>
<antcall target="-buildkit.production"/>
</else>
</if>
</target>
<target name="build">
<if>
<equals arg1="${env}" arg2="dev"/>
<then>
<!-- Build a dev environment -->
<echo message="Building a Development Environment..."/>
<antcall target="-build.dev" />
</then>
<elseif>
<equals arg1="${env}" arg2="test"/>
<then>
<!-- Build a test environment -->
<echo message="Building a Test Environment..."/>
<antcall target="-build.test" />
</then>
</elseif>
<else>
<!-- Build a production environment -->
<echo message="Building a Production Environment..."/>
<antcall target="-build.production" />
</else>
</if>
</target>
<target name="minify">
<if>
<equals arg1="${env}" arg2="dev"/>
<then>
<!-- Build a dev environment -->
<echo message="Building a Development Environment..."/>
<antcall target="-minify.dev"/>
</then>
<elseif>
<equals arg1="${env}" arg2="test"/>
<then>
<!-- Build a test environment -->
<echo message="Building a Test Environment..."/>
<antcall target="-minify.test"/>
</then>
</elseif>
<else>
<!-- Build a production environment -->
<echo message="Building a Production Environment..."/>
<antcall target="-minify.production"/>
</else>
</if>
</target>
<!--
*************************************************
* BUILD TARGETS *
*************************************************
-->
<!-- Target: basics -->
<target name="-basics.dev"
depends="-rev,
-clean,
-copy"/>
<target name="-basics.test"
depends="-rev,
-clean,
-copy,
-usemin,
-js.all.minify,
-js.main.concat,
-js.mylibs.concat,
-js.scripts.concat,
-js.delete,
-css,
-html"/>
<target name="-basics.production"
depends="-rev,
-clean,
-copy,
-usemin,
-js.all.minify,
-js.main.concat,
-js.mylibs.concat,
-js.scripts.concat,
-js.delete,
-strip-console.log,
-css,
-html"/>
<!-- Target: text -->
<target name="-text.dev"
depends="-rev,
-clean,
-copy"/>
<target name="-text.test"
depends="-rev,
-clean,
-copy,
-usemin,
-js.all.minify,
-js.main.concat,
-js.mylibs.concat,
-js.scripts.concat,
-js.delete,
-css,
-html,
-htmlclean"/>
<target name="-text.production"
depends="-rev,
-clean,
-copy,
-usemin,
-js.all.minify,
-js.main.concat,
-js.mylibs.concat,
-js.scripts.concat,
-js.delete,
-strip-console.log,
-css,
-html,
-htmlclean"/>
<!-- Target: buildkit -->
<target name="-buildkit.dev"
depends="-rev,
-clean,
-prodcopy,
-imagespng,
-imagesjpg"/>
<target name="-buildkit.test"
depends="-rev,
-clean,
-prodcopy,
-usemin,
-js.all.minify,
-js.main.concat,
-js.mylibs.concat,
-js.scripts.concat,
-js.delete,
-css,
-html,
-htmlbuildkit,
-imagespng,
-imagesjpg"/>
<target name="-buildkit.production"
depends="-rev,
-clean,
-prodcopy,
-usemin,
-js.all.minify,
-js.main.concat,
-js.mylibs.concat,
-js.scripts.concat,
-js.delete,
-strip-console.log,
-css,
-html,
-htmlbuildkit,
-imagespng,
-imagesjpg"/>
<!-- Target: build -->
<target name="-build.dev"
depends="-rev,
-clean,
-prodcopy,
-imagespng,
-imagesjpg"/>
<target name="-build.test"
depends="-rev,
-clean,
-prodcopy,
-usemin,
-js.all.minify,
-js.main.concat,
-js.mylibs.concat,
-js.scripts.concat,
-js.delete,
-css,
-html,
-htmlclean,
-imagespng,
-imagesjpg"/>
<target name="-build.production"
depends="-rev,
-clean,
-prodcopy,
-usemin,
-js.all.minify,
-js.main.concat,
-js.mylibs.concat,
-js.scripts.concat,
-js.delete,
-strip-console.log,
-css,
-html,
-htmlclean,
-imagespng,
-imagesjpg"/>
<!-- Target: minify -->
<target name="-minify.dev"
depends="-rev,
-clean,
-prodcopy,
-imagespng,
-imagesjpg"/>
<target name="-minify.test"
depends="-rev,
-clean,
-prodcopy,
-usemin,
-js.all.minify,
-js.main.concat,
-js.mylibs.concat,
-js.scripts.concat,
-js.delete,
-css,
-html,
-htmlcompress,
-imagespng,
-imagesjpg"/>
<target name="-minify.production"
depends="-rev,
-clean,
-prodcopy,
-usemin,
-js.all.minify,
-js.main.concat,
-js.mylibs.concat,
-js.scripts.concat,
-js.delete,
-strip-console.log,
-css,
-html,
-htmlcompress,
-imagespng,
-imagesjpg"/>
<!--
*************************************************
* FUNCTION TARGETS *
*************************************************
-->
<target name="-load-build-info" description="(PRIVATE) Loads the build versioning information">
<property file="./${dir.build}/config/${build.version.info}"/>
</target>
<target name="-clean" description="(PRIVATE) Wipe the previous build (Deletes the dir.publish directory">
<!-- This is a private target -->
<echo message="Cleaning up previous build directory..."/>
<delete dir="./${dir.publish}/"/>
</target>
<target name="-rev" description="(PRIVATE) Increase the current build number by one and set build date">
<!-- This is a private target -->
<echo message="====================================================================="/>
<echo message="Welcome to the HTML5 Boilerplate Build Script!"/>
<echo message=" "/>
<echo message="We're going to get your site all ship-shape and ready for prime time."/>
<echo message=" "/>
<echo message="This should take somewhere between 15 seconds and a few minutes,"/>
<echo message="mostly depending on how many images we're going to compress."/>
<echo message=" "/>
<echo message="Feel free to come back or stay here and follow along."/>
<echo message="====================================================================="/>
<echo message=" "/>
<echo message=" "/>
<echo message="Increasing the build number..."/>
<propertyfile file="./${dir.build}/config/${build.version.info}" comment="Build Information File - DO NOT CHANGE">
<entry key="build.number" type="int" default="0000" operation="+" pattern="0000"/>
<entry key="build.date" type="date" value="now" pattern="dd.MM.yyyy HH:mm"/>
</propertyfile>
<property file="./${dir.build}/config/${build.version.info}"/>
<echo>Creating build ${build.number}</echo>
</target>
<target name="current-number" depends="-load-build-info" description="(PUBLIC) Returns the current build number">
<echo>Current build number: ${build.number}</echo>
</target>
<target name="-copy" depends="-load-build-info">
<!-- This is a private target -->
<echo message="Copying over new files..."/>
<!-- combine the 2 exclude properties -->
<var name="excluded-files" value="${file.default.exclude}, ${file.exclude}"/>
<copy todir="./${dir.publish}">
<fileset dir="${dir.source}/" excludes="${excluded-files}"/>
</copy>
<echo message="A copy of all non-dev files are now in: ./${dir.publish}."/>
</target>
<target name="-prodcopy" depends="-load-build-info">
<!-- This is a private target -->
<echo message="Copying over new files..."/>
<!-- combine the 2 exclude properties -->
<var name="prod-excluded-files" value="${file.default.exclude}, ${file.jpg.exclude}, ${file.exclude}"/>
<copy todir="./${dir.publish}">
<fileset dir="${dir.source}/" excludes="${prod-excluded-files}"/>
</copy>
<echo message="A copy of all non-dev files are now in: ./${dir.publish}."/>
</target>
<!-- JAVASCRIPT -->
<target name="-js.main.concat" depends="-load-build-info" description="(PRIVATE) Concatenates the JS files in dir.js">
<echo message="Concatenating Main JS scripts..."/>
<concat destfile="./${dir.publish}/${dir.js}/scripts-${build.number}.js">
<fileset dir="./${dir.publish}/">
<include name="**/${dir.js.main}/*.min.js"/>
<exclude name="**/${dir.js.mylibs}/*.js"/>
<exclude name="**/${dir.js.libs}/*.js"/>
</fileset>
</concat>
</target>
<target name="-js.mylibs.concat" depends="-load-build-info" description="(PRIVATE) Concatenates the JS files in dir.js.mylibs">
<echo message="Concatenating JS libraries"/>
<concat destfile="./${dir.publish}/${dir.js}/libs-${build.number}.js">
<fileset dir="./${dir.publish}/${dir.js.mylibs}/">
<include name="**/*.min.js"/>
</fileset>
</concat>
</target>
<target name="-js.scripts.concat" depends="-load-build-info" if="build.concat.scripts">
<echo message="Concatenating library file with main script file"/>
<concat destfile="./${dir.publish}/${dir.js}/scripts-${build.number}.min.js">
<fileset dir="./${dir.publish}/${dir.js}/">
<include name="libs-${build.number}.js"/>
<include name="scripts-${build.number}.js"/>
</fileset>
</concat>
<echo message="Concatenating library file with main debug script file"/>
<concat destfile="./${dir.publish}/${dir.js}/scripts-${build.number}-debug.min.js">
<fileset dir="./${dir.publish}/${dir.js}/">
<include name="libs-${build.number}.js"/>
<include name="scripts-${build.number}-debug.js"/>
</fileset>
</concat>
</target>
<target name="-js.all.minify" depends="-js.libs.minify" description="(PRIVATE) Minifies the scripts.js files created by js.scripts.concat">
<echo message="Minifying concatenated script- and library-file"/>
<apply executable="java" parallel="false">
<fileset dir="./${dir.publish}/${dir.js}">
<include name="**/*.js"/>
<exclude name="**/*.min.js"/>
<exclude name="**/${dir.js.libs}/*.js"/>
</fileset>
<arg line="-jar"/>
<arg path="./${dir.build.tools}/${tool.yuicompressor}"/>
<srcfile/>
<arg line="--line-break"/>
<arg line="4000"/>
<arg line="-o"/>
<mapper type="glob" from="*.js" to="../${dir.publish}/${dir.js}/*.min.js"/>
<targetfile/>
</apply>
</target>
<target name="-js.libs.minify" depends="-load-build-info" description="(PRIVATE) Minifies the helper files in dir.js.libs">
<echo message="Minifying helper JS files..."/>
<apply executable="java" parallel="false">
<fileset dir="./${dir.publish}/${dir.js.libs}/" includes="*.js" excludes="*.min.js"/>
<arg line="-jar"/>
<arg path="./${dir.build.tools}/${tool.yuicompressor}"/>
<srcfile/>
<arg line="-o"/>
<mapper type="glob" from="*.js" to="../${dir.publish}/${dir.js.libs}/*-${build.number}.min.js"/>
<targetfile/>
</apply>
</target>
<target name="-js.delete" depends="-load-build-info" description="(PRIVATE) Deletes the unoptimized js files from build if set">
<if>
<equals arg1="${build.delete.unoptimized}" arg2="true"/>
<then>
<echo message="Deleting unoptimized files..."/>
<delete file="./${dir.publish}/${dir.js}/scripts-${build.number}.js"/>
<delete file="./${dir.publish}/${dir.js}/scripts-${build.number}-debug.js"/>
<!--
<delete dir="./${dir.publish}/${dir.js.lib}/"/>
<delete file="./${dir.publish}/${dir.js}/libs-${build.number}.js"/>
this guy probably COULD be on but I think it's better if we keep him off for now. ^pi
<delete includeemptydirs="true">
<fileset dir="./${dir.publish}/${dir.js.libs}/" includes="*.js" excludes="*.min.js"/>
</delete>
-->
</then>
</if>
<if>
<and>
<equals arg1="${build.delete.unoptimized}" arg2="true"/>
<equals arg1="${build.concat.scripts}" arg2="true"/>
</and>
<then>
<delete file="./${dir.publish}/${dir.js}/libs-${build.number}.js"/>
<delete file="./${dir.publish}/${dir.js}/scripts-${build.number}.js"/>
</then>
</if>
</target>
<target name="-strip-console.log" description="(PRIVATE)Comments out any console.log statements">
<echo message="Commenting out console.log lines"/>
<replaceregexp match="(console.log\(.*\))" replace="/\*\1\*/" flags="g" >
<fileset dir="./${dir.publish}/${dir.js}/">
<include name="**/*.js"/>
<exclude name="**/*.min.js"/>
</fileset>
</replaceregexp>
</target>
<!-- HTML -->
<target name="-usemin" depends="-serverconfig" description="(PRIVATE) Replaces references to non-minified scripts">
<echo message="Switching to minified js files..."/>
<!-- switch from a regular jquery to minified -->
<replaceregexp match="jquery-(\d|\d(\.\d)+)\.js" replace="jquery-\1.min.js" flags="g">
<fileset dir="./${dir.publish}" includes="${page-files}"/>
</replaceregexp>
<!-- switch any google CDN reference to minified -->
<replaceregexp match="(\d|\d(\.\d)+)\/jquery\.js" replace="\1/jquery.min.js" flags="g">
<fileset dir="./${dir.publish}" includes="${page-files}"/>
</replaceregexp>
<echo>Kill off those versioning flags: ?v=2</echo>
<replaceregexp match='\?v=\d+">' replace='">' flags="g">
<fileset dir="./${dir.publish}" includes="${page-files}"/>
</replaceregexp>
<echo>Remove favicon.ico reference if it is pointing to the root</echo>
<replaceregexp match="&lt;link rel=&quot;shortcut icon&quot; href=&quot;/favicon\.ico&quot;&gt;" replace="">
<fileset dir="./${dir.publish}" includes="${page-files}"/>
</replaceregexp>
<!-- we maintain the apple-touch-icon reference for Android 2.2 www.ravelrumba.com/blog/android-apple-touch-icon
<replace token="&lt;link rel=&quot;apple-touch-icon&quot; href=&quot;/apple-touch-icon.png&quot;>" value="">
<fileset dir="./${dir.publish}" includes="${page-files}"/>
</replace>
-->
</target>
<target name="-html" depends="-load-build-info" description="(PRIVATE) Very basic clean up of the HTML">
<echo message="Update the HTML to reference our concatenated script file: scripts-${build.number}.min.js"/>
<!-- style.css replacement handled as a replacetoken above -->
<replaceregexp match="&lt;!-- scripts concatenated [\d\w\s\W]*?!-- end ((scripts)|(concatenated and minified scripts))--&gt;" replace="&lt;script src='${dir.js}/scripts-${build.number}.min.js\'&gt;&lt;/script&gt;" flags="m">
<fileset dir="./${dir.publish}" includes="${page-files}"/>
</replaceregexp>
<!--[! use comments like this one to avoid having them get minified -->
</target>
<target name="-htmlclean">
<echo message="Run htmlcompressor on the HTML"/>
<echo message=" - maintaining whitespace"/>
<echo message=" - removing html comments"/>
<echo message=" - compressing inline style/script tag contents"/>
<apply executable="java" parallel="false" force="true" dest="./${dir.publish}/" >
<fileset dir="./${dir.publish}/" includes="${page-files}"/>
<arg value="-jar"/>
<arg path="./${dir.build}/tools/${tool.htmlcompressor}"/>
<arg line="--type html"/>
<arg line="--preserve-multi-spaces"/>
<arg line="--remove-quotes"/>
<arg line="--compress-js"/>
<arg line="--compress-css"/>
<srcfile/>
<arg value="-o"/>
<mapper type="glob" from="*.html" to="../${dir.publish}/*.html"/>
<targetfile/>
</apply>
</target>
<target name="-htmlbuildkit">
<echo message="Run htmlcompressor on the HTML"/>
<echo message=" - maintaining whitespace"/>
<echo message=" - retain html comments"/>
<echo message=" - compressing inline style/script tag contents"/>
<apply executable="java" parallel="false" force="true" dest="./${dir.publish}/" >
<fileset dir="./${dir.publish}/" includes="${page-files}"/>
<arg value="-jar"/>
<arg path="./${dir.build}/tools/${tool.htmlcompressor}"/>
<arg value="--preserve-comments"/>
<arg line="--preserve-multi-spaces"/>
<arg line="--type html"/>
<arg line="--compress-js"/>
<arg line="--compress-css"/>
<srcfile/>
<arg value="-o"/>
<mapper type="glob" from="*.html" to="../${dir.publish}/*.html"/>
<targetfile/>
</apply>
</target>
<target name="-htmlcompress">
<echo message="Run htmlcompressor on the HTML"/>
<echo message=" - removing unnecessary whitespace"/>
<echo message=" - removing html comments"/>
<echo message=" - compressing inline style/script tag contents"/>
<apply executable="java" parallel="false" force="true" dest="./${dir.publish}/" >
<fileset dir="./${dir.publish}/" includes="${page-files}"/>
<arg value="-jar"/>
<arg path="./${dir.build}/tools/${tool.htmlcompressor}"/>
<arg line="--type html"/>
<arg line="--remove-quotes"/>
<arg line="--compress-js"/>
<arg line="--compress-css"/>
<srcfile/>
<arg value="-o"/>
<mapper type="glob" from="*.html" to="../${dir.publish}/*.html"/>
<targetfile/>
</apply>
</target>
<target name="-serverconfig" description="(PRIVATE) Upgrades expires headers">
<echo message="Upgrading expires header timeouts for js/css to 1yr..."/>
<replace file="./${dir.publish}/${file.serverconfig}" token="access plus 2 months" value="access plus 1 year"/>
</target>
<!-- CSS -->
<target name="-css" depends="-load-build-info" description="Concatenates and Minifies any stylesheets listed in the file.stylesheets property">
<echo message="Concatenating css..."/>
<concat destfile="./${dir.publish}/${dir.css}/style-${build.number}.css">
<filelist dir="./${dir.publish}/${dir.css}" files="${stylesheet-files}"/>
</concat>
<echo message="Minifying css..."/>
<apply executable="java" parallel="false">
<fileset dir="./${dir.publish}/${dir.css}/" includes="style-${build.number}.css"/>
<arg line="-jar"/>
<arg path="./${dir.build.tools}/${tool.yuicompressor}"/>
<srcfile/>
<arg line="-o"/>
<mapper type="glob" from="style-${build.number}.css" to="../${dir.publish}/${dir.css}/style-${build.number}.min.css"/>
<targetfile/>
</apply>
<echo message="Updating the HTML with the new css filename"/>
<replace token="style.css" value="style-${build.number}.min.css" dir="${dir.publish}" includes="${page-files}"/>
</target>
<!-- IMAGES -->
<target name="-imagespng" description="(PRIVATE) Optimizes .png images using optipng">
<echo message="Optimizing images..."/>
<echo message="This part might take a while. But everything else is already done."/>
<echo message=" "/>
<echo message="First, we run optipng on the .png files..."/>
<!-- osfamily=unix is actually true on OS X as well -->
<!-- On *nix's and OS X, check for optipng and give a helpful message if it's not installed -->
<if>
<and>
<os family="unix" />
<available file="optipng" filepath="${ENV.PATH}" />
</and>
<then>
<apply executable="optipng" osfamily="unix">
<arg value="-quiet"/>
<arg value="-o7"/>
<fileset dir="./${dir.publish}/">
<include name="**/*.png"/>
</fileset>
</apply>
</then>
<elseif>
<os family="unix" />
<then>
<echo message="*** optipng NOT INSTALLED. SKIPPING OPTIMIZATION OF PNGs." />
<echo message="*** Install optipng to enable png optimization." />
<echo message="*** For instructions see 'Dependencies' at: http://html5boilerplate.com/docs/#Build-script#dependencies" />
</then>
</elseif>
</if>
<apply executable="tools/optipng-0.6.4-exe/optipng.exe" osfamily="windows">
<arg value="-o7"/>
<arg value="-quiet"/>
<fileset dir="./${dir.publish}/">
<include name="**/*.png"/>
</fileset>
</apply>
</target>
<target name="-imagesjpg" description="(PRIVATE) Optimizes .jpg images using jpegtan">
<echo message="Now, we clean up those jpgs..."/>
<!-- jpegtran is a little weird in that it assumes a pre-existing file means it's already optimized. -->
<!-- why? good question. To combat this, we skipped copying over the ${dir.images}/*.jpg earlier in the -->
<!-- copy task. Now, we're using jpegtran to copy the files over while we crunch 'em. -->
<if>
<equals arg1="${images.strip.metadata}" arg2="true"/>
<then>
<var name="strip-meta-tags" value="none"/>
</then>
<else>
<var name="strip-meta-tags" value="all"/>
</else>
</if>
<!-- On *nix's and OS X, check for jpegtran and give a helpful message if it's not installed -->
<if>
<and>
<os family="unix" />
<available file="jpegtran" filepath="${ENV.PATH}" />
</and>
<then>
<apply executable="jpegtran" osfamily="unix">
<fileset dir="${dir.source}/${dir.images}" includes="*.jpg"/>
<arg value="-copy"/>
<arg value="${strip-meta-tags}"/>
<arg value="-optimize"/>
<srcfile/>
<redirector>
<outputmapper type="glob" from="*.jpg" to="./${dir.publish}/${dir.images}/*.jpg"/>
</redirector>
<!-- you may want to flag optimized images. If so, do it here. Otherwise change this to type="identity" -->
</apply>
</then>
<elseif>
<os family="unix" />
<then>
<echo message="*** jpegtran NOT INSTALLED. SKIPPING OPTIMIZATION OF JPEGs." />
<echo message="*** Install jpegtran to enable jpeg optimization." />
<echo message="*** For instructions see 'Dependencies' at: http://html5boilerplate.com/docs/#Build-script#dependencies" />
</then>
</elseif>
</if>
<apply executable="tools/jpegtran.exe" osfamily="windows">
<fileset dir="${dir.source}/${dir.images}" includes="*.jpg"/>
<arg value="-copy"/>
<arg value="${strip-meta-tags}"/>
<arg value="-optimize"/>
<srcfile/>
<targetfile/>
<!-- you may want to flag optimized images. If so, do it here. Otherwise change this to type="identity" -->
<mapper type="glob" from="*.jpg" to="../${dir.publish}/${dir.images}/*.jpg"/>
</apply>
</target>
<target name="-jpgcopy">
<echo message="Copying over the unmodified jpegs."/>
<copy todir="./${dir.publish}/${dir.images}">
<fileset dir="${dir.source}/${dir.images}" includes="*.jpg"/>
</copy>
</target>
</project>

View File

@ -1,80 +0,0 @@
#
# Default Build Settings
# you can override these settings on a project basis in a project.properties file
# so probably best not to touch these as they could be overwritten in later versions!
#
#
# Directory Paths
#
dir.source = .
dir.publish = publish
dir.build = build
dir.build.tools = ${dir.build}/tools
dir.test = test
dir.demo = demo
dir.js = js
dir.js.main = ${dir.js}
# scripts in the lib direcotry will only be minified, not concatenated together
dir.js.libs = ${dir.js}/libs
dir.js.mylibs = ${dir.js}/mylibs
dir.css = css
dir.images = img
#
# HTML, PHP, etc files to clean and update script/css references
#
file.pages.default.include = index.html, 404.html
# You will need to include the property file.pages.include in your project.properties file
# and add any extra pages you want to be updated by the scripts in a comma separated lis
# the server configuration you're going with. If you don't use apache,
# get a different one here: github.com/paulirish/html5-boilerplate-server-configs
file.serverconfig = .htaccess
#
# Files not to be copied over by the script to the publish directory
#
file.default.exclude = .gitignore, .project, .settings, README.markdown, README.md, **/.git/**, **/.svn/**, **/${dir.build}/**, **/${dir.test}/**, **/${dir.demo}/**
file.jpg.exclude = ${dir.images}/*.jpg
# Declare the file.exclude property in your project.properties file if you want to exclude files / folders you have added
# Note: you cannot decalre an empty file.exclude property
#
# Default Styleshee
#
file.default.stylesheets = style.css
#
# Script Optimisation
#
# If set, concat libraries with main scripts file, producing single script file
build.concat.scripts = true
# If set, delete minified but unconcatted files.
build.delete.unoptimized = true
#
# Image Optimisation
#
images.strip.metadata = true
# Seting this to true will strip the metadata from all jpeg files.
# YOU SHOULD ONLY DO THIS IF YOU OWN THE COPYRIGHT TO ALL THE IMAGES IN THE BUILD
# Build Info
build.version.info = buildinfo.properties
build.scripts.dir = ${dir.build}/build-scripts
# Tools
tool.yuicompressor = yuicompressor-2.4.2.jar
tool.htmlcompressor = htmlcompressor-0.9.9.jar
tool.csscompressor = css-compressor/cli.php

View File

@ -1,56 +0,0 @@
# project.properties file defines overrides for default.properties
# Explanation: This file should be created by each user as and when he or she needs to override particular values.
# Consequently, it should not be placed under version control.
# Stylesheets
#
# Note: Stylesheets will be concatenated in the order they are listed in the file.stylesheets property (i.e. the las
# file listed will be at the end of the concatenated file), so it probably makes sense to have the main style.css file
# as the first entry
# Example:
# file.stylesheets = style.css, lightbox.css, plugin.css
#
file.stylesheets =
# Web Pages
#
# These are the pages (files) that will be served to users (.html, .php, .asp, etc). Files in this property will
# be minified / optimised and have any stylesheet or javascript references updated to the minified examples
#
# The paths need to be relative
#
# Files can be added in a comma separated form
file.pages =
# Excluded files and dirs
#
# Add any files or directories you add to the project and do not want to be copied to the publish directory as a
# comma separated lis
# These files are ignored in addition to the default ones specified in default.properties.
file.exclude =
# Specify an environment to build
#
# By Default, it builds a production environmen
# Set to dev if buidling a development environmen
# Set to test if building a test environmen
env =
# Directory Structure
#
# Override any directory paths specific to this projec
#
# dir.publish
# dir.js
# dir.js.libs
# dir.js.mylibs
# dir.css
# dir.images

View File

@ -1,42 +0,0 @@
#!/usr/bin/env bash
#Generate a new project from your HTML5 Boilerplate repo clone
#Created 2010-10-13, Rick Waldron
##first run
# $ cd html5-boilerplate/build
# $ chmod +x createproject.sh && ./createproject.sh
##usage
# $ cd html5-boilerplate/build
# $ ./createproject.sh
# find project root (also ensure script is ran from within repo)
src=$(git rev-parse --show-toplevel) || exit 1
# get a name for new project
while [[ -z $name ]]
do
echo "To create a new html5-boilerplate project, enter a new directory name:"
read name || exit
done
dst=$src/../$name
if [[ -d $dst ]]
then
echo "$dst exists"
else
#create new project
mkdir "$dst" || exit 1
#sucess message
echo "Created Directory: $dst"
cd "$src"
cp -vr css js img build test *.html *.xml *.txt *.png *.ico .htaccess "$dst"
#sucess message
echo "Created Project: $dst"
fi

View File

@ -1,5 +0,0 @@
# This is for windows users only.
# If you're on a mac or linux, just run `ant build` from this folder in Terminal
set MYDIR=%~dp0
ant build

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,21 +0,0 @@
Copyright (C) 2001-2010 Cosmin Truta.
This software is provided 'as-is', without any express or implied
warranty. In no event will the author(s) be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not
be misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.

Binary file not shown.

74
config.rb Normal file
View File

@ -0,0 +1,74 @@
###
# Compass
###
# Change Compass configuration
# compass_config do |config|
# config.output_style = :compact
# end
###
# Page options, layouts, aliases and proxies
###
# Per-page layout changes:
#
# With no layout
# page "/path/to/file.html", :layout => false
#
# With alternative layout
# page "/path/to/file.html", :layout => :otherlayout
#
# A path which all have the same layout
# with_layout :admin do
# page "/admin/*"
# end
# Proxy pages (http://middlemanapp.com/basics/dynamic-pages/)
# proxy "/this-page-has-no-template.html", "/template-file.html", :locals => {
# :which_fake_page => "Rendering a fake page with a local variable" }
###
# Helpers
###
# Automatic image dimensions on image_tag helper
# activate :automatic_image_sizes
# Reload the browser automatically whenever files change
# configure :development do
# activate :livereload
# end
# Methods defined in the helpers block are available in templates
# helpers do
# def some_helper
# "Helping"
# end
# end
set :css_dir, 'stylesheets'
set :js_dir, 'javascripts'
set :images_dir, 'images'
set :markdown, auto_ids: false
# Build-specific configuration
configure :build do
# For example, change the Compass output style for deployment
# activate :minify_css
# Minify Javascript on build
# activate :minify_javascript
# Enable cache buster
# activate :asset_hash
# Use relative URLs
# activate :relative_assets
# Or use a different image path
# set :http_prefix, "/Content/images/"
end

View File

@ -1,17 +0,0 @@
.content.clearfix
%div{:role => "main"}
.container.clearfix
%section#profile
= render "sections/profile.markdown"
%section#skills
= render "sections/skills.markdown"
%section#experience
= render "sections/experience.markdown"
.container.clearfix
%section#portfolio
= render "sections/portfolio.markdown"
%section#interests
= render "sections/interests.markdown"
%section#contact.vcard
= render "sections/contact.html.haml"
%div{:role => "complementary"}

View File

@ -1,12 +0,0 @@
!!! 5
/
Dan Barber's CV
Author: Dan Barber
URL: http://pixelhum.com/cv
%html.no-js{:lang => "en", :manifest => "default.appcache?v=1"}
%head
= render "partials/_head.html.haml"
%body.clearfix
= render "partials/_header.html.haml"
= yield
= render "partials/_footer.html.haml"

View File

@ -1,25 +0,0 @@
%meta{:charset => "utf-8"}/
%title Dan Barber - Web Developer &amp; Designer
%meta{:content => "", :name => "description"}/
%meta{:content => "", :name => "author"}/
/ http://t.co/dKP3o1e
%meta{:content => "True", :name => "HandheldFriendly"}/
%meta{:content => "320", :name => "MobileOptimized"}/
%meta{:content => "target-densitydpi=160dpi, initial-scale=1", :name => "viewport"}/
/
For less capable mobile browsers
<link rel="stylesheet" media="handheld" href="css/handheld.css?v=1">
/ For all browsers
%link{:href => "css/style.css?v=1", :rel => "stylesheet"}/
/ JavaScript at bottom except for Modernizr and Typekit
%script{:src => "js/libs/modernizr-1.7.min.js"}
/ Typekit
%script{:src => "http://use.typekit.com/ewi2mjz.js", :type => "text/javascript"}
:javascript
try{Typekit.load();}catch(e){}
%link{:href => "favicon.png", :rel => "shortcut icon"}/
/ Microsoft. Delete if not required
%meta{:content => "on", "http-equiv" => "cleartype"}/
%meta{:content => "IE=edge,chrome=1", "http-equiv" => "X-UA-Compatible"}/
/ http://t.co/y1jPVnT
%link{:href => "/", :rel => "canonical"}/

View File

@ -1,8 +0,0 @@
%div#stripe
.container
%canvas#colours{ :width => 890, :height => 12 }
%header.clearfix{:role => "banner"}
.container
%h1#main_heading.icon-logo Dan Barber
%h2 Web Designer &amp;&nbsp;Developer

View File

@ -1,114 +0,0 @@
<!DOCTYPE html>
<!--
320 and Up boilerplate extension
Author: Andy Clarke
Version: 0.9b
URL: http://stuffandnonsense.co.uk/projects/320andup
-->
<!--[if IEMobile 7 ]><html class="no-js iem7" manifest="default.appcache?v=1"><![endif]-->
<!--[if lt IE 7 ]><html class="no-js ie6" lang="en"><![endif]-->
<!--[if IE 7 ]><html class="no-js ie7" lang="en"><![endif]-->
<!--[if IE 8 ]><html class="no-js ie8" lang="en"><![endif]-->
<!--[if (gte IE 9)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" manifest="default.appcache?v=1" lang="en"><!--<![endif]-->
<head>
<meta charset="utf-8">
<title>320 and up</title>
<meta name="description" content="">
<meta name="author" content="">
<!-- http://t.co/dKP3o1e -->
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initial-scale=1">
<!-- For less capable mobile browsers
<link rel="stylesheet" media="handheld" href="css/handheld.css?v=1"> -->
<!-- For all browsers -->
<link rel="stylesheet" href="css/style.css?v=1">
<!-- JavaScript at bottom except for Modernizr -->
<script src="js/libs/modernizr-1.7.min.js"></script>
<!-- For iPhone 4 -->
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="img/h/apple-touch-icon.png">
<!-- For iPad 1-->
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="img/m/apple-touch-icon.png">
<!-- For iPhone 3G, iPod Touch and Android -->
<link rel="apple-touch-icon-precomposed" href="img/l/apple-touch-icon-precomposed.png">
<!-- For Nokia -->
<link rel="shortcut icon" href="img/l/apple-touch-icon.png">
<!-- For everything else -->
<link rel="shortcut icon" href="/favicon.ico">
<!--iOS. Delete if not required -->
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<link rel="apple-touch-startup-image" href="img/splash.png">
<!--Microsoft. Delete if not required -->
<meta http-equiv="cleartype" content="on">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<!-- http://t.co/y1jPVnT -->
<link rel="canonical" href="/">
</head>
<body class="clearfix">
<header role="banner" class="clearfix">
<h1>320 and up</h1>
</header>
<div class="content clearfix">
<h1>Page not found</h1>
<div role="main">
<p>Sorry, but the page you&#8217;re looking for doesn&#8217;t not exist.</p>
<p>It looks like this was either the result of:</p>
<ul>
<li>A mis-typed address</li>
<li>An out-of-date link</li>
</ul>
<script>var GOOG_FIXURL_LANG = (navigator.language || '').slice(0,2), GOOG_FIXURL_SITE = location.host;</script>
<script src="http://linkhelp.clients.google.com/tbproxy/lh/wm/fixurl.js"></script>
</div>
<div role="complimentary">
</div>
</div>
<footer role="contentinfo" class="clearfix">
</footer>
<!-- mathiasbynens.be/notes/async-analytics-snippet Change UA-XXXXX-X to be your site's ID -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.js"></script>
<script>window.jQuery || document.write('<script src="js/libs/jquery-1.5.1.min.js">\x3C/script>')</script>
<!-- Scripts -->
<script src="js/plugins.js"></script>
<script src="js/script.js"></script>
<!--[if (lt IE 9) & (!IEMobile)]>
<script src="js/libs/DOMAssistantCompressed-2.8.js"></script>
<script src="js/libs/selectivizr-1.0.1.js"></script>
<script src="js/libs/respond.min.js"></script>
<![endif]-->
<!-- http://t.co/HZe9oJ4 -->
<script>
var _gaq=[['_setAccount','UA-XXXXX-X'],['_trackPageview']]; // Change UA-XXXXX-X to be your site's ID
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.async=1;
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
s.parentNode.insertBefore(g,s)}(document,'script'));
</script>
<noscript>Your browser does not support JavaScript!</noscript>
</body>
</html>

View File

@ -1,816 +0,0 @@
<?xml version="1.0"?>
<project name="Boilerplate Build" default="build" basedir="../"> <!-- one back since we're in build/ -->
<!-- Load in Ant-Contrib to give us access to some very useful tasks! -->
<!-- the .jar file is located in the tools directory -->
<taskdef resource="net/sf/antcontrib/antcontrib.properties">
<classpath>
<pathelement location="${basedir}/build/tools/ant-contrib-1.0b3.jar"/>
</classpath>
</taskdef>
<!-- load shell environment -->
<property environment="ENV" />
<!-- load property files -->
<property file="build/config/project.properties"/>
<property file="build/config/default.properties"/>
<!-- merge the stylesheet properties -->
<var name="stylesheet-files" value="${file.stylesheets}, ${file.default.stylesheets}"/>
<!-- merge the pages properties -->
<var name="page-files" value="${file.pages}, ${file.pages.default.include}"/>
<!--
*************************************************
* BASE TARGETS *
*************************************************
-->
<target name="basics">
<if>
<equals arg1="${env}" arg2="dev"/>
<then>
<!-- Build a dev environment -->
<echo message="Building a Development Environment..."/>
<antcall target="-basics.dev"/>
</then>
<elseif>
<equals arg1="${env}" arg2="test"/>
<then>
<!-- Build a test environment -->
<echo message="Building a Test Environment..."/>
<antcall target="-basics.test"/>
</then>
</elseif>
<else>
<!-- Build a production environment -->
<echo message="Building a Production Environment..."/>
<antcall target="-basics.production"/>
</else>
</if>
</target>
<target name="text">
<if>
<equals arg1="${env}" arg2="dev"/>
<then>
<!-- Build a dev environment -->
<echo message="Building a Development Environment..."/>
<antcall target="-text.dev"/>
</then>
<elseif>
<equals arg1="${env}" arg2="test"/>
<then>
<!-- Build a test environment -->
<echo message="Building a Test Environment..."/>
<antcall target="-text.test"/>
</then>
</elseif>
<else>
<!-- Build a production environment -->
<echo message="Building a Production Environment..."/>
<antcall target="-text.production"/>
</else>
</if>
<!-- funky order due to jpegtran being a jerk. See comment at top of imagesjpg task -->
<antcall target="-jpgcopy"/>
</target>
<target name="buildkit">
<if>
<equals arg1="${env}" arg2="dev"/>
<then>
<!-- Build a dev environment -->
<echo message="Building a Development Environment..."/>
<antcall target="-buildkit.dev"/>
</then>
<elseif>
<equals arg1="${env}" arg2="test"/>
<then>
<!-- Build a test environment -->
<echo message="Building a Test Environment..."/>
<antcall target="-buildkit.test"/>
</then>
</elseif>
<else>
<!-- Build a production environment -->
<echo message="Building a Production Environment..."/>
<antcall target="-buildkit.production"/>
</else>
</if>
</target>
<target name="build">
<if>
<equals arg1="${env}" arg2="dev"/>
<then>
<!-- Build a dev environment -->
<echo message="Building a Development Environment..."/>
<antcall target="-build.dev" />
</then>
<elseif>
<equals arg1="${env}" arg2="test"/>
<then>
<!-- Build a test environment -->
<echo message="Building a Test Environment..."/>
<antcall target="-build.test" />
</then>
</elseif>
<else>
<!-- Build a production environment -->
<echo message="Building a Production Environment..."/>
<antcall target="-build.production" />
</else>
</if>
</target>
<target name="minify">
<if>
<equals arg1="${env}" arg2="dev"/>
<then>
<!-- Build a dev environment -->
<echo message="Building a Development Environment..."/>
<antcall target="-minify.dev"/>
</then>
<elseif>
<equals arg1="${env}" arg2="test"/>
<then>
<!-- Build a test environment -->
<echo message="Building a Test Environment..."/>
<antcall target="-minify.test"/>
</then>
</elseif>
<else>
<!-- Build a production environment -->
<echo message="Building a Production Environment..."/>
<antcall target="-minify.production"/>
</else>
</if>
</target>
<!--
*************************************************
* BUILD TARGETS *
*************************************************
-->
<!-- Target: basics -->
<target name="-basics.dev"
depends="-rev,
-clean,
-copy"/>
<target name="-basics.test"
depends="-rev,
-clean,
-copy,
-usemin,
-js.all.minify,
-js.main.concat,
-js.mylibs.concat,
-js.scripts.concat,
-js.delete,
-css,
-html"/>
<target name="-basics.production"
depends="-rev,
-clean,
-copy,
-usemin,
-js.all.minify,
-js.main.concat,
-js.mylibs.concat,
-js.scripts.concat,
-js.delete,
-strip-console.log,
-css,
-html"/>
<!-- Target: text -->
<target name="-text.dev"
depends="-rev,
-clean,
-copy"/>
<target name="-text.test"
depends="-rev,
-clean,
-copy,
-usemin,
-js.all.minify,
-js.main.concat,
-js.mylibs.concat,
-js.scripts.concat,
-js.delete,
-css,
-html,
-htmlclean"/>
<target name="-text.production"
depends="-rev,
-clean,
-copy,
-usemin,
-js.all.minify,
-js.main.concat,
-js.mylibs.concat,
-js.scripts.concat,
-js.delete,
-strip-console.log,
-css,
-html,
-htmlclean"/>
<!-- Target: buildkit -->
<target name="-buildkit.dev"
depends="-rev,
-clean,
-prodcopy,
-imagespng,
-imagesjpg"/>
<target name="-buildkit.test"
depends="-rev,
-clean,
-prodcopy,
-usemin,
-js.all.minify,
-js.main.concat,
-js.mylibs.concat,
-js.scripts.concat,
-js.delete,
-css,
-html,
-htmlbuildkit,
-imagespng,
-imagesjpg"/>
<target name="-buildkit.production"
depends="-rev,
-clean,
-prodcopy,
-usemin,
-js.all.minify,
-js.main.concat,
-js.mylibs.concat,
-js.scripts.concat,
-js.delete,
-strip-console.log,
-css,
-html,
-htmlbuildkit,
-imagespng,
-imagesjpg"/>
<!-- Target: build -->
<target name="-build.dev"
depends="-rev,
-clean,
-prodcopy,
-imagespng,
-imagesjpg"/>
<target name="-build.test"
depends="-rev,
-clean,
-prodcopy,
-usemin,
-js.all.minify,
-js.main.concat,
-js.mylibs.concat,
-js.scripts.concat,
-js.delete,
-css,
-html,
-htmlclean,
-imagespng,
-imagesjpg"/>
<target name="-build.production"
depends="-rev,
-clean,
-prodcopy,
-usemin,
-js.all.minify,
-js.main.concat,
-js.mylibs.concat,
-js.scripts.concat,
-js.delete,
-strip-console.log,
-css,
-html,
-htmlclean,
-imagespng,
-imagesjpg"/>
<!-- Target: minify -->
<target name="-minify.dev"
depends="-rev,
-clean,
-prodcopy,
-imagespng,
-imagesjpg"/>
<target name="-minify.test"
depends="-rev,
-clean,
-prodcopy,
-usemin,
-js.all.minify,
-js.main.concat,
-js.mylibs.concat,
-js.scripts.concat,
-js.delete,
-css,
-html,
-htmlcompress,
-imagespng,
-imagesjpg"/>
<target name="-minify.production"
depends="-rev,
-clean,
-prodcopy,
-usemin,
-js.all.minify,
-js.main.concat,
-js.mylibs.concat,
-js.scripts.concat,
-js.delete,
-strip-console.log,
-css,
-html,
-htmlcompress,
-imagespng,
-imagesjpg"/>
<!--
*************************************************
* FUNCTION TARGETS *
*************************************************
-->
<target name="-load-build-info" description="(PRIVATE) Loads the build versioning information">
<property file="./${dir.build}/config/${build.version.info}"/>
</target>
<target name="-clean" description="(PRIVATE) Wipe the previous build (Deletes the dir.publish directory">
<!-- This is a private target -->
<echo message="Cleaning up previous build directory..."/>
<delete dir="./${dir.publish}/"/>
</target>
<target name="-rev" description="(PRIVATE) Increase the current build number by one and set build date">
<!-- This is a private target -->
<echo message="====================================================================="/>
<echo message="Welcome to the HTML5 Boilerplate Build Script!"/>
<echo message=" "/>
<echo message="We're going to get your site all ship-shape and ready for prime time."/>
<echo message=" "/>
<echo message="This should take somewhere between 15 seconds and a few minutes,"/>
<echo message="mostly depending on how many images we're going to compress."/>
<echo message=" "/>
<echo message="Feel free to come back or stay here and follow along."/>
<echo message="====================================================================="/>
<echo message=" "/>
<echo message=" "/>
<echo message="Increasing the build number..."/>
<propertyfile file="./${dir.build}/config/${build.version.info}" comment="Build Information File - DO NOT CHANGE">
<entry key="build.number" type="int" default="0000" operation="+" pattern="0000"/>
<entry key="build.date" type="date" value="now" pattern="dd.MM.yyyy HH:mm"/>
</propertyfile>
<property file="./${dir.build}/config/${build.version.info}"/>
<echo>Creating build ${build.number}</echo>
</target>
<target name="current-number" depends="-load-build-info" description="(PUBLIC) Returns the current build number">
<echo>Current build number: ${build.number}</echo>
</target>
<target name="-copy" depends="-load-build-info">
<!-- This is a private target -->
<echo message="Copying over new files..."/>
<!-- combine the 2 exclude properties -->
<var name="excluded-files" value="${file.default.exclude}, ${file.exclude}"/>
<copy todir="./${dir.publish}">
<fileset dir="${dir.source}/" excludes="${excluded-files}"/>
</copy>
<echo message="A copy of all non-dev files are now in: ./${dir.publish}."/>
</target>
<target name="-prodcopy" depends="-load-build-info">
<!-- This is a private target -->
<echo message="Copying over new files..."/>
<!-- combine the 2 exclude properties -->
<var name="prod-excluded-files" value="${file.default.exclude}, ${file.jpg.exclude}, ${file.exclude}"/>
<copy todir="./${dir.publish}">
<fileset dir="${dir.source}/" excludes="${prod-excluded-files}"/>
</copy>
<echo message="A copy of all non-dev files are now in: ./${dir.publish}."/>
</target>
<!-- JAVASCRIPT -->
<target name="-js.main.concat" depends="-load-build-info" description="(PRIVATE) Concatenates the JS files in dir.js">
<echo message="Concatenating Main JS scripts..."/>
<concat destfile="./${dir.publish}/${dir.js}/scripts-${build.number}.js">
<fileset dir="./${dir.publish}/">
<include name="**/${dir.js.main}/*.min.js"/>
<exclude name="**/${dir.js.mylibs}/*.js"/>
<exclude name="**/${dir.js.libs}/*.js"/>
</fileset>
</concat>
</target>
<target name="-js.mylibs.concat" depends="-load-build-info" description="(PRIVATE) Concatenates the JS files in dir.js.mylibs">
<echo message="Concatenating JS libraries"/>
<concat destfile="./${dir.publish}/${dir.js}/libs-${build.number}.js">
<fileset dir="./${dir.publish}/${dir.js.mylibs}/">
<include name="**/*.min.js"/>
</fileset>
</concat>
</target>
<target name="-js.scripts.concat" depends="-load-build-info" if="build.concat.scripts">
<echo message="Concatenating library file with main script file"/>
<concat destfile="./${dir.publish}/${dir.js}/scripts-${build.number}.min.js">
<fileset dir="./${dir.publish}/${dir.js}/">
<include name="libs-${build.number}.js"/>
<include name="scripts-${build.number}.js"/>
</fileset>
</concat>
<echo message="Concatenating library file with main debug script file"/>
<concat destfile="./${dir.publish}/${dir.js}/scripts-${build.number}-debug.min.js">
<fileset dir="./${dir.publish}/${dir.js}/">
<include name="libs-${build.number}.js"/>
<include name="scripts-${build.number}-debug.js"/>
</fileset>
</concat>
</target>
<target name="-js.all.minify" depends="-js.libs.minify" description="(PRIVATE) Minifies the scripts.js files created by js.scripts.concat">
<echo message="Minifying concatenated script- and library-file"/>
<apply executable="java" parallel="false">
<fileset dir="./${dir.publish}/${dir.js}">
<include name="**/*.js"/>
<exclude name="**/*.min.js"/>
<exclude name="**/${dir.js.libs}/*.js"/>
</fileset>
<arg line="-jar"/>
<arg path="./${dir.build.tools}/${tool.yuicompressor}"/>
<srcfile/>
<arg line="--line-break"/>
<arg line="4000"/>
<arg line="-o"/>
<mapper type="glob" from="*.js" to="../${dir.publish}/${dir.js}/*.min.js"/>
<targetfile/>
</apply>
</target>
<target name="-js.libs.minify" depends="-load-build-info" description="(PRIVATE) Minifies the helper files in dir.js.libs">
<echo message="Minifying helper JS files..."/>
<apply executable="java" parallel="false">
<fileset dir="./${dir.publish}/${dir.js.libs}/" includes="*.js" excludes="*.min.js"/>
<arg line="-jar"/>
<arg path="./${dir.build.tools}/${tool.yuicompressor}"/>
<srcfile/>
<arg line="-o"/>
<mapper type="glob" from="*.js" to="../${dir.publish}/${dir.js.libs}/*-${build.number}.min.js"/>
<targetfile/>
</apply>
</target>
<target name="-js.delete" depends="-load-build-info" description="(PRIVATE) Deletes the unoptimized js files from build if set">
<if>
<equals arg1="${build.delete.unoptimized}" arg2="true"/>
<then>
<echo message="Deleting unoptimized files..."/>
<delete file="./${dir.publish}/${dir.js}/scripts-${build.number}.js"/>
<delete file="./${dir.publish}/${dir.js}/scripts-${build.number}-debug.js"/>
<!--
<delete dir="./${dir.publish}/${dir.js.lib}/"/>
<delete file="./${dir.publish}/${dir.js}/libs-${build.number}.js"/>
this guy probably COULD be on but I think it's better if we keep him off for now. ^pi
<delete includeemptydirs="true">
<fileset dir="./${dir.publish}/${dir.js.libs}/" includes="*.js" excludes="*.min.js"/>
</delete>
-->
</then>
</if>
<if>
<and>
<equals arg1="${build.delete.unoptimized}" arg2="true"/>
<equals arg1="${build.concat.scripts}" arg2="true"/>
</and>
<then>
<delete file="./${dir.publish}/${dir.js}/libs-${build.number}.js"/>
<delete file="./${dir.publish}/${dir.js}/scripts-${build.number}.js"/>
</then>
</if>
</target>
<target name="-strip-console.log" description="(PRIVATE)Comments out any console.log statements">
<echo message="Commenting out console.log lines"/>
<replaceregexp match="(console.log\(.*\))" replace="/\*\1\*/" flags="g" >
<fileset dir="./${dir.publish}/${dir.js}/">
<include name="**/*.js"/>
<exclude name="**/*.min.js"/>
</fileset>
</replaceregexp>
</target>
<!-- HTML -->
<target name="-usemin" depends="-serverconfig" description="(PRIVATE) Replaces references to non-minified scripts">
<echo message="Switching to minified js files..."/>
<!-- switch from a regular jquery to minified -->
<replaceregexp match="jquery-(\d|\d(\.\d)+)\.js" replace="jquery-\1.min.js" flags="g">
<fileset dir="./${dir.publish}" includes="${page-files}"/>
</replaceregexp>
<!-- switch any google CDN reference to minified -->
<replaceregexp match="(\d|\d(\.\d)+)\/jquery\.js" replace="\1/jquery.min.js" flags="g">
<fileset dir="./${dir.publish}" includes="${page-files}"/>
</replaceregexp>
<echo>Kill off those versioning flags: ?v=2</echo>
<replaceregexp match='\?v=\d+">' replace='">' flags="g">
<fileset dir="./${dir.publish}" includes="${page-files}"/>
</replaceregexp>
<echo>Remove favicon.ico reference if it is pointing to the root</echo>
<replaceregexp match="&lt;link rel=&quot;shortcut icon&quot; href=&quot;/favicon\.ico&quot;&gt;" replace="">
<fileset dir="./${dir.publish}" includes="${page-files}"/>
</replaceregexp>
<!-- we maintain the apple-touch-icon reference for Android 2.2 www.ravelrumba.com/blog/android-apple-touch-icon
<replace token="&lt;link rel=&quot;apple-touch-icon&quot; href=&quot;/apple-touch-icon.png&quot;>" value="">
<fileset dir="./${dir.publish}" includes="${page-files}"/>
</replace>
-->
</target>
<target name="-html" depends="-load-build-info" description="(PRIVATE) Very basic clean up of the HTML">
<echo message="Update the HTML to reference our concatenated script file: scripts-${build.number}.min.js"/>
<!-- style.css replacement handled as a replacetoken above -->
<replaceregexp match="&lt;!-- scripts concatenated [\d\w\s\W]*?!-- end ((scripts)|(concatenated and minified scripts))--&gt;" replace="&lt;script src='${dir.js}/scripts-${build.number}.min.js\'&gt;&lt;/script&gt;" flags="m">
<fileset dir="./${dir.publish}" includes="${page-files}"/>
</replaceregexp>
<!--[! use comments like this one to avoid having them get minified -->
</target>
<target name="-htmlclean">
<echo message="Run htmlcompressor on the HTML"/>
<echo message=" - maintaining whitespace"/>
<echo message=" - removing html comments"/>
<echo message=" - compressing inline style/script tag contents"/>
<apply executable="java" parallel="false" force="true" dest="./${dir.publish}/" >
<fileset dir="./${dir.publish}/" includes="${page-files}"/>
<arg value="-jar"/>
<arg path="./${dir.build}/tools/${tool.htmlcompressor}"/>
<arg line="--type html"/>
<arg line="--preserve-multi-spaces"/>
<arg line="--remove-quotes"/>
<arg line="--compress-js"/>
<arg line="--compress-css"/>
<srcfile/>
<arg value="-o"/>
<mapper type="glob" from="*.html" to="../${dir.publish}/*.html"/>
<targetfile/>
</apply>
</target>
<target name="-htmlbuildkit">
<echo message="Run htmlcompressor on the HTML"/>
<echo message=" - maintaining whitespace"/>
<echo message=" - retain html comments"/>
<echo message=" - compressing inline style/script tag contents"/>
<apply executable="java" parallel="false" force="true" dest="./${dir.publish}/" >
<fileset dir="./${dir.publish}/" includes="${page-files}"/>
<arg value="-jar"/>
<arg path="./${dir.build}/tools/${tool.htmlcompressor}"/>
<arg value="--preserve-comments"/>
<arg line="--preserve-multi-spaces"/>
<arg line="--type html"/>
<arg line="--compress-js"/>
<arg line="--compress-css"/>
<srcfile/>
<arg value="-o"/>
<mapper type="glob" from="*.html" to="../${dir.publish}/*.html"/>
<targetfile/>
</apply>
</target>
<target name="-htmlcompress">
<echo message="Run htmlcompressor on the HTML"/>
<echo message=" - removing unnecessary whitespace"/>
<echo message=" - removing html comments"/>
<echo message=" - compressing inline style/script tag contents"/>
<apply executable="java" parallel="false" force="true" dest="./${dir.publish}/" >
<fileset dir="./${dir.publish}/" includes="${page-files}"/>
<arg value="-jar"/>
<arg path="./${dir.build}/tools/${tool.htmlcompressor}"/>
<arg line="--type html"/>
<arg line="--remove-quotes"/>
<arg line="--compress-js"/>
<arg line="--compress-css"/>
<srcfile/>
<arg value="-o"/>
<mapper type="glob" from="*.html" to="../${dir.publish}/*.html"/>
<targetfile/>
</apply>
</target>
<target name="-serverconfig" description="(PRIVATE) Upgrades expires headers">
<echo message="Upgrading expires header timeouts for js/css to 1yr..."/>
<replace file="./${dir.publish}/${file.serverconfig}" token="access plus 2 months" value="access plus 1 year"/>
</target>
<!-- CSS -->
<target name="-css" depends="-load-build-info" description="Concatenates and Minifies any stylesheets listed in the file.stylesheets property">
<echo message="Concatenating css..."/>
<concat destfile="./${dir.publish}/${dir.css}/style-${build.number}.css">
<filelist dir="./${dir.publish}/${dir.css}" files="${stylesheet-files}"/>
</concat>
<echo message="Minifying css..."/>
<apply executable="java" parallel="false">
<fileset dir="./${dir.publish}/${dir.css}/" includes="style-${build.number}.css"/>
<arg line="-jar"/>
<arg path="./${dir.build.tools}/${tool.yuicompressor}"/>
<srcfile/>
<arg line="-o"/>
<mapper type="glob" from="style-${build.number}.css" to="../${dir.publish}/${dir.css}/style-${build.number}.min.css"/>
<targetfile/>
</apply>
<echo message="Updating the HTML with the new css filename"/>
<replace token="style.css" value="style-${build.number}.min.css" dir="${dir.publish}" includes="${page-files}"/>
</target>
<!-- IMAGES -->
<target name="-imagespng" description="(PRIVATE) Optimizes .png images using optipng">
<echo message="Optimizing images..."/>
<echo message="This part might take a while. But everything else is already done."/>
<echo message=" "/>
<echo message="First, we run optipng on the .png files..."/>
<!-- osfamily=unix is actually true on OS X as well -->
<!-- On *nix's and OS X, check for optipng and give a helpful message if it's not installed -->
<if>
<and>
<os family="unix" />
<available file="optipng" filepath="${ENV.PATH}" />
</and>
<then>
<apply executable="optipng" osfamily="unix">
<arg value="-quiet"/>
<arg value="-o7"/>
<fileset dir="./${dir.publish}/">
<include name="**/*.png"/>
</fileset>
</apply>
</then>
<elseif>
<os family="unix" />
<then>
<echo message="*** optipng NOT INSTALLED. SKIPPING OPTIMIZATION OF PNGs." />
<echo message="*** Install optipng to enable png optimization." />
<echo message="*** For instructions see 'Dependencies' at: http://html5boilerplate.com/docs/#Build-script#dependencies" />
</then>
</elseif>
</if>
<apply executable="tools/optipng-0.6.4-exe/optipng.exe" osfamily="windows">
<arg value="-o7"/>
<arg value="-quiet"/>
<fileset dir="./${dir.publish}/">
<include name="**/*.png"/>
</fileset>
</apply>
</target>
<target name="-imagesjpg" description="(PRIVATE) Optimizes .jpg images using jpegtan">
<echo message="Now, we clean up those jpgs..."/>
<!-- jpegtran is a little weird in that it assumes a pre-existing file means it's already optimized. -->
<!-- why? good question. To combat this, we skipped copying over the ${dir.images}/*.jpg earlier in the -->
<!-- copy task. Now, we're using jpegtran to copy the files over while we crunch 'em. -->
<if>
<equals arg1="${images.strip.metadata}" arg2="true"/>
<then>
<var name="strip-meta-tags" value="none"/>
</then>
<else>
<var name="strip-meta-tags" value="all"/>
</else>
</if>
<!-- On *nix's and OS X, check for jpegtran and give a helpful message if it's not installed -->
<if>
<and>
<os family="unix" />
<available file="jpegtran" filepath="${ENV.PATH}" />
</and>
<then>
<apply executable="jpegtran" osfamily="unix">
<fileset dir="${dir.source}/${dir.images}" includes="*.jpg"/>
<arg value="-copy"/>
<arg value="${strip-meta-tags}"/>
<arg value="-optimize"/>
<srcfile/>
<redirector>
<outputmapper type="glob" from="*.jpg" to="./${dir.publish}/${dir.images}/*.jpg"/>
</redirector>
<!-- you may want to flag optimized images. If so, do it here. Otherwise change this to type="identity" -->
</apply>
</then>
<elseif>
<os family="unix" />
<then>
<echo message="*** jpegtran NOT INSTALLED. SKIPPING OPTIMIZATION OF JPEGs." />
<echo message="*** Install jpegtran to enable jpeg optimization." />
<echo message="*** For instructions see 'Dependencies' at: http://html5boilerplate.com/docs/#Build-script#dependencies" />
</then>
</elseif>
</if>
<apply executable="tools/jpegtran.exe" osfamily="windows">
<fileset dir="${dir.source}/${dir.images}" includes="*.jpg"/>
<arg value="-copy"/>
<arg value="${strip-meta-tags}"/>
<arg value="-optimize"/>
<srcfile/>
<targetfile/>
<!-- you may want to flag optimized images. If so, do it here. Otherwise change this to type="identity" -->
<mapper type="glob" from="*.jpg" to="../${dir.publish}/${dir.images}/*.jpg"/>
</apply>
</target>
<target name="-jpgcopy">
<echo message="Copying over the unmodified jpegs."/>
<copy todir="./${dir.publish}/${dir.images}">
<fileset dir="${dir.source}/${dir.images}" includes="*.jpg"/>
</copy>
</target>
</project>

View File

@ -1,80 +0,0 @@
#
# Default Build Settings
# you can override these settings on a project basis in a project.properties file
# so probably best not to touch these as they could be overwritten in later versions!
#
#
# Directory Paths
#
dir.source = .
dir.publish = publish
dir.build = build
dir.build.tools = ${dir.build}/tools
dir.test = test
dir.demo = demo
dir.js = js
dir.js.main = ${dir.js}
# scripts in the lib direcotry will only be minified, not concatenated together
dir.js.libs = ${dir.js}/libs
dir.js.mylibs = ${dir.js}/mylibs
dir.css = css
dir.images = img
#
# HTML, PHP, etc files to clean and update script/css references
#
file.pages.default.include = index.html, 404.html
# You will need to include the property file.pages.include in your project.properties file
# and add any extra pages you want to be updated by the scripts in a comma separated lis
# the server configuration you're going with. If you don't use apache,
# get a different one here: github.com/paulirish/html5-boilerplate-server-configs
file.serverconfig = .htaccess
#
# Files not to be copied over by the script to the publish directory
#
file.default.exclude = .gitignore, .project, .settings, README.markdown, README.md, **/.git/**, **/.svn/**, **/${dir.build}/**, **/${dir.test}/**, **/${dir.demo}/**
file.jpg.exclude = ${dir.images}/*.jpg
# Declare the file.exclude property in your project.properties file if you want to exclude files / folders you have added
# Note: you cannot decalre an empty file.exclude property
#
# Default Styleshee
#
file.default.stylesheets = style.css
#
# Script Optimisation
#
# If set, concat libraries with main scripts file, producing single script file
build.concat.scripts = true
# If set, delete minified but unconcatted files.
build.delete.unoptimized = true
#
# Image Optimisation
#
images.strip.metadata = true
# Seting this to true will strip the metadata from all jpeg files.
# YOU SHOULD ONLY DO THIS IF YOU OWN THE COPYRIGHT TO ALL THE IMAGES IN THE BUILD
# Build Info
build.version.info = buildinfo.properties
build.scripts.dir = ${dir.build}/build-scripts
# Tools
tool.yuicompressor = yuicompressor-2.4.2.jar
tool.htmlcompressor = htmlcompressor-0.9.9.jar
tool.csscompressor = css-compressor/cli.php

View File

@ -1,56 +0,0 @@
# project.properties file defines overrides for default.properties
# Explanation: This file should be created by each user as and when he or she needs to override particular values.
# Consequently, it should not be placed under version control.
# Stylesheets
#
# Note: Stylesheets will be concatenated in the order they are listed in the file.stylesheets property (i.e. the las
# file listed will be at the end of the concatenated file), so it probably makes sense to have the main style.css file
# as the first entry
# Example:
# file.stylesheets = style.css, lightbox.css, plugin.css
#
file.stylesheets =
# Web Pages
#
# These are the pages (files) that will be served to users (.html, .php, .asp, etc). Files in this property will
# be minified / optimised and have any stylesheet or javascript references updated to the minified examples
#
# The paths need to be relative
#
# Files can be added in a comma separated form
file.pages =
# Excluded files and dirs
#
# Add any files or directories you add to the project and do not want to be copied to the publish directory as a
# comma separated lis
# These files are ignored in addition to the default ones specified in default.properties.
file.exclude =
# Specify an environment to build
#
# By Default, it builds a production environmen
# Set to dev if buidling a development environmen
# Set to test if building a test environmen
env =
# Directory Structure
#
# Override any directory paths specific to this projec
#
# dir.publish
# dir.js
# dir.js.libs
# dir.js.mylibs
# dir.css
# dir.images

View File

@ -1,42 +0,0 @@
#!/usr/bin/env bash
#Generate a new project from your HTML5 Boilerplate repo clone
#Created 2010-10-13, Rick Waldron
##first run
# $ cd html5-boilerplate/build
# $ chmod +x createproject.sh && ./createproject.sh
##usage
# $ cd html5-boilerplate/build
# $ ./createproject.sh
# find project root (also ensure script is ran from within repo)
src=$(git rev-parse --show-toplevel) || exit 1
# get a name for new project
while [[ -z $name ]]
do
echo "To create a new html5-boilerplate project, enter a new directory name:"
read name || exit
done
dst=$src/../$name
if [[ -d $dst ]]
then
echo "$dst exists"
else
#create new project
mkdir "$dst" || exit 1
#sucess message
echo "Created Directory: $dst"
cd "$src"
cp -vr css js img build test *.html *.xml *.txt *.png *.ico .htaccess "$dst"
#sucess message
echo "Created Project: $dst"
fi

View File

@ -1,5 +0,0 @@
# This is for windows users only.
# If you're on a mac or linux, just run `ant build` from this folder in Terminal
set MYDIR=%~dp0
ant build

Binary file not shown.

View File

@ -1,21 +0,0 @@
Copyright (C) 2001-2010 Cosmin Truta.
This software is provided 'as-is', without any express or implied
warranty. In no event will the author(s) be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not
be misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.

View File

@ -1,25 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<!-- Read this: www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html -->
<!-- Most restrictive policy: -->
<site-control permitted-cross-domain-policies="none"/>
<!-- Least restrictive policy: -->
<!--
<site-control permitted-cross-domain-policies="all"/>
<allow-access-from domain="*" to-ports="*" secure="false"/>
<allow-http-request-headers-from domain="*" headers="*" secure="false"/>
-->
<!--
If you host a crossdomain.xml file with allow-access-from domain=“*”
and dont understand all of the points described here, you probably
have a nasty security vulnerability. ~ simon willison
-->
</cross-domain-policy>

View File

@ -1,13 +0,0 @@
/* Handheld
_____________________________________________________
320 and Up boilerplate extension
Author: Andy Clarke
Version: 0.9b
URL: http://stuffandnonsense.co.uk/projects/320andup/
License: http://creativecommons.org/licenses/MIT/
_____________________________________________________
*/

View File

@ -1,130 +0,0 @@
/* Forms
_____________________________________________________
320 and Up boilerplate extension
Author: Andy Clarke
Version: 0.9b
URL: http://stuffandnonsense.co.uk/projects/320andup/
License: http://creativecommons.org/licenses/MIT/
_____________________________________________________
*/
form {
margin-bottom : 1.5em; }
fieldset {
margin-bottom : 1.5em;
padding : 0;
border-width : 0; }
legend {
margin-top : -.2em 0 1em 0;
font-weight : bold;
font-size : 1.2em; }
label {
font-weight : normal; }
button,
input,
select,
textarea {
margin : 0; }
label,
input[type="button"],
input[type="submit"],
input[type="image"],
button {
cursor : pointer; }
input,
select {
vertical-align : middle; }
input[type=text],
input[type=password],
input[type=tel],
input[type=email],
input[type=url],
input[type=search],
textarea {
padding : 2px;
width : 100%;
background-color : rgb(255,255,255);
border : 1px solid rgb(200,200,200);
font-family : inherit;
font-size : inherit; }
input[type=text]:focus,
input[type=password]:focus,
input[type=tel]:focus,
input[type=email]:focus,
input[type=url]:focus,
input[type=search]:focus,
textarea:focus {
border-color : rgb(100,100,100); }
input[type="radio"] {
vertical-align : text-bottom; }
input[type="checkbox"] {
vertical-align : bottom; }
/* Colors for form validity */
input:valid,
textarea:valid {
/* Styles */ }
input:invalid,
textarea:invalid {
-webkit-box-shadow : 0 0 2px rgb(255,0,0);
-moz-box-shadow : 0 0 2px rgb(255,0,0);
box-shadow : 0 0 2px rgb(255,0,0); }
.no-boxshadow input:invalid,
.no-boxshadow textarea:invalid {
background-color : rgb(240,221,221); }
select {
margin : .5em 0;
background-color : rgb(255,255,255);
border-width : 1px;
border-style : solid; }
textarea {
overflow : auto;
padding : 2px; }
button {
width : auto;
padding : 8px 12px 9px;
overflow : visible;
background-color : rgb(227,227,227);
border : 1px solid rgb(204,204,204);
border-bottom-color : rgb(187,187,187);
font-family : "Helvetica Neue", Helvetica, Arial;
font-size : .875em;
font-weight: bold;
text-align : center;
line-height : 1;
color : rgb(51,51,51);
text-shadow : 0 1px 0 rgb(255,255,255); }
button:hover {
cursor : pointer;
background-color : rgb(217,217,217); }
.ie6 legend,
.ie7 legend {
margin-left : -7px; }
.ie6 input {
vertical-align : text-bottom; }
.ie7 input[type="checkbox"],
.iem7 input[type="checkbox"] {
vertical-align : baseline; }

View File

@ -1,692 +0,0 @@
/* ====================================================
*
* Dan Barber CV Styles
* Based on:
* 320 and Up boilerplate extension
*
* Author: Andy Clarke
* Version: 0.9b
* URL: http://stuffandnonsense.co.uk/projects/320andup/
* _____________________________________________________
*
* 1.ROOT
* 2.HEADINGS
* 3.TYPOGRAPHY
* 4.LINKS
* 5.FIGURES & IMAGES
* 6.TABLES
* 7.FORMS (See css/mylibs/forms.css)
* 8.BANNER header[role="banner"]
* 9.NAVIGATION nav[role="navigation"]
* 10.CONTENT
* 11.MAIN div[role="main"]
* 12.COMPLIMENTARY div[role="complementary"]
* 13.CONTENTINFO footer[role="contentinfo"]
* 14.GLOBAL OBJECTS
* 15.VENDOR-SPECIFIC
* 16.TEMPLATE SPECIFICS
* 17.MODERNIZR
*
* COLOURS */
@font-face {
font-family: 'icomoon';
src: url("../fonts/icomoon.eot");
src: url("../fonts/icomoon.eot?#iefix") format("embedded-opentype"), url("../fonts/icomoon.woff") format("woff"), url("../fonts/icomoon.ttf") format("truetype"), url("../fonts/icomoon.svg#icomoon") format("svg");
font-weight: normal;
font-style: normal; }
/* Use the following CSS code if you want to use data attributes for inserting your icons */
[data-icon]:before {
font-family: 'icomoon';
content: attr(data-icon);
speak: none;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
-webkit-font-smoothing: antialiased; }
/* Use the following CSS code if you want to have a class per icon */
/*
Instead of a list of all class selectors,
you can use the generic selector below, but it's slower:
*/
[class*="icon-"]:before {
font-family: 'icomoon';
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
-webkit-font-smoothing: antialiased; }
.icon-logo:before {
content: "\e000"; }
.icon-mail:before {
content: "\e001"; }
.icon-earth:before {
content: "\e002"; }
.icon-phone:before {
content: "\e003"; }
.icon-github:before {
content: "\e004"; }
.icon-twitter:before {
content: "\e006"; }
.icon-apple:before {
content: "\e007"; }
.icon-skype:before {
content: "\e005"; }
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; }
article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {
display: block; }
abbr[title] {
border-bottom: 1px dotted;
cursor: help; }
/* 1.ROOT */
html {
overflow-y: scroll;
background: white; }
body {
margin: 0 auto;
padding: 0 0;
font: 100%/1.4 "museo-sans-1", "museo-sans-2", sans-serif;
font-weight: 100;
color: #262626;
background: white;
background: -moz-linear-gradient(left, #efefef 0%, white 35%, white 65%, #efefef 100%);
background: -webkit-gradient(linear, left top, right top, color-stop(0%, #efefef), color-stop(35%, white), color-stop(65%, white), color-stop(100%, #efefef));
background: -webkit-linear-gradient(left, #efefef 0%, white 35%, white 65%, #efefef 100%);
background: -o-linear-gradient(left, #efefef 0%, white 35%, white 65%, #efefef 100%);
background: -ms-linear-gradient(left, #efefef 0%, white 35%, white 65%, #efefef 100%);
background: linear-gradient(to right, #efefef 0%, white 35%, white 65%, #efefef 100%); }
#stripe {
background: #262626;
height: 12px;
line-height: 0;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); }
#stripe canvas {
height: 12px;
width: 100%; }
.container {
margin: 0 auto;
padding: 0 0;
width: 90%; }
/* 2.HEADINGS */
h1, h2, h3, h4, h5, h6 {
font-family: "museo-slab-1", "museo-slab-2", "Helvetica Neue", Helvetica, Arial, serif;
font-weight: black;
text-shadow: 1px 1px 1px white;
text-rendering: optimizeLegibility; }
h1 {
margin-top: 0;
margin-bottom: 0.1em;
font-size: 3em;
/* 48 / 16 = 3 */
line-height: 1.2;
font-weight: 900;
text-align: center;
width: 100%; }
h1:before {
display: block;
font-size: 1.5em;
margin-top: 0.3em;
margin-bottom: 0.1em;
text-align: center; }
/* Hide the logomark in ie7/8 as it just doesn't work correctly. It's not essential. */
.ie8 h1:before, .ie7 h1:before {
border: 1px solid red;
display: none; }
h2 {
margin-bottom: 0.75em;
font-size: 1.7em;
/* 36 / 16 = 2 */
line-height: 1.2;
text-align: center; }
h3 {
text-transform: uppercase;
margin-bottom: 1em;
font-size: 1.4em;
/* 24 / 16 = 1.5 */
line-height: 1.3; }
h4 {
margin-bottom: 0.75em;
margin-top: 1.7em;
font-size: 1.2em;
/* 20 / 16 = 1.25 */
line-height: 1.25;
font-weight: 500; }
h5 {
margin-bottom: 1.5em;
font-size: 1em;
/* 16 / 16 = 1 */ }
h6 {
font-size: 1em;
/* 16 / 16 = 1 */ }
/* 3.TYPOGRAPHY */
.link {
float: right; }
.period {
font-style: italic; }
p, ol, ul, dl, address {
margin-bottom: 0.75em;
font-size: 1em;
/* 16 / 16 = 1 */ }
ul, ol {
margin: 0 0 0 -24px;
padding-left: 24px; }
ul {
list-style-type: disc; }
ul ul {
padding-left: 0; }
ol {
list-style-type: decimal; }
li ul, li ol {
margin: 0;
font-size: 1em;
/* 16 / 16 = 1 */ }
.container > section {
border-top: 2px solid #666666;
padding-top: 1em;
margin-bottom: 2em; }
.container > section ul, .container > section ol {
list-style: none; }
dl, dd {
margin-bottom: 1.5em; }
dt {
font-weight: normal; }
blockquote {
margin: 0 0 1.5em -24px;
padding-left: 24px;
border-left: 1px solid #c8c8c8;
font-style: italic; }
blockquote:before, blockquote:after {
content: "";
content: none; }
q:before, q:after {
content: "";
content: none; }
b, strong {
font-weight: bold; }
i, em {
font-style: italic; }
sup, sub {
position: relative;
font-size: 75%;
line-height: 0; }
sup {
top: -0.5em; }
sub {
bottom: -0.25em; }
address {
font-style: normal; }
pre {
margin-bottom: 1.5em;
white-space: pre;
white-space: pre-wrap;
word-wrap: break-word;
font: 0.875em "andale mono", "lucida console", monospace;
line-height: 1.5; }
code {
font: 0.875em "andale mono", "lucida console", monospace;
line-height: 1.5; }
small {
font-size: 1em;
/* 16 / 16 = 1 */ }
/* 4.LINKS */
a {
outline: none;
color: #1777af;
text-decoration: none; }
a:visited {
outline: none;
color: #1777af;
text-decoration: none; }
a:hover, a:focus {
outline: none;
color: #282828;
text-decoration: underline; }
a:active {
outline: none;
color: black; }
/* 5.FIGURES & IMAGES */
figure {
margin-bottom: 1.5em; }
figure img, figure object, figure embed {
margin-bottom: 0.75em;
max-width: 100%; }
figcaption {
display: block;
font-weight: normal; }
/* 6.TABLES */
table {
border-collapse: collapse;
border-spacing: 0;
margin-bottom: 1.4em;
width: 100%;
font-size: 0.875em;
/* 14 / 16 = .875 */ }
th {
font-weight: bold;
padding: 0.25em 10px 0.25em 5px; }
td, caption {
padding: 0.25em 10px 0.25em 5px; }
tfoot {
font-style: italic; }
caption {
background-color: transparent; }
/* 7.FORMS (See css/mylibs/forms.css) */
/* 8.BANNER */
/* 9.NAVIGATION */
/* 10.CONTENT */
/* 11.MAIN */
/* 12.COMPLIMENTARY */
/* 13.CONTENTINFO */
/* 14.GLOBAL OBJECTS */
.clearfix {
zoom: 1; }
.clearfix:before {
content: "\0020";
display: block;
height: 0;
overflow: hidden; }
.clearfix:after {
content: "\0020";
display: block;
height: 0;
overflow: hidden;
clear: both; }
/* 15.VENDOR-SPECIFIC */
body {
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%; }
a:link {
-webkit-tap-highlight-color: #349edb; }
::-webkit-selection {
background: #1777af;
color: #fafafa;
text-shadow: none; }
::-moz-selection {
background: #1777af;
color: #fafafa;
text-shadow: none; }
::selection {
background: #1777af;
color: #fafafa;
text-shadow: none; }
::-webkit-input-placeholder {
padding: 10px;
font-size: 0.875em;
line-height: 1.4; }
/* input[type=search] { -webkit-appearance: none; }
*
*input[type="search"]::-webkit-search-decoration,
*input[type="search"]::-webkit-search-cancel-button { display: none; } */
input:-moz-placeholder {
padding: 10px;
font-size: 0.875em;
line-height: 1.4; }
.ie7 img, .iem7 img {
-ms-interpolation-mode: bicubic; }
div, input, textarea {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-o-box-sizing: border-box;
box-sizing: border-box; }
/* Non-semantic helper classes */
/* Image replacement */
.ir {
display: block;
text-indent: -999em;
overflow: hidden;
background-repeat: no-repeat;
text-align: left;
direction: ltr; }
/* Hide for screenreaders and visual browsers */
.hidden {
display: none;
visibility: hidden; }
/* Hide visually */
.visuallyhidden {
position: absolute;
clip: rect(0 0 0 0);
overflow: hidden;
margin: -1px;
padding: 0;
height: 1px;
width: 1px;
border: 0; }
.visuallyhidden.focusable:active, .visuallyhidden.focusable:focus {
position: static;
clip: auto;
overflow: visible;
height: auto;
margin: 0;
width: auto; }
/* Allow an element to be focusable via keyboard */
/* Hide but maintain layout */
.invisible {
visibility: hidden; }
/* 16.TEMPLATE SPECIFICS */
#goog-fixurl ul {
list-style-type: none; }
#goog-fixurl input {
margin-bottom: 1.5em; }
/* 17.MODERNIZR */
/* MEDIA QUERIES */
/*Print __________________________________________________________________________________________________________ */
@media print {
* {
background: transparent !important;
color: black !important;
text-shadow: none !important;
filter: none !important;
-ms-filter: none !important; }
a {
color: #444444 !important;
text-decoration: underline; }
a:visited {
color: #444444 !important;
text-decoration: underline; }
a[href]:after {
content: " (" attr(href) ")"; }
abbr[title]:after {
content: " (" attr(title) ")"; }
a[href^="javascript:"]:after, a[href^="#"]:after {
content: ""; }
pre, blockquote {
border: 1px solid #999999;
page-break-inside: avoid; }
thead {
display: table-header-group; }
tr, img {
page-break-inside: avoid; }
@page {
margin: 0.5cm; }
p, h2, h3 {
orphans: 3;
widows: 3; }
h2, h3 {
page-break-after: avoid; } }
/*/mediaquery */
/*500px __________________________________________________________________________________________________________ */
@media only screen and (min-width: 500px) {
/* 1.ROOT */
body {
font-size: 1.05em; }
/* 2.HEADINGS */
h1 {
margin-top: 0.5em;
text-align: left;
margin-bottom: 0;
font-size: 3.3em; }
h1:before {
float: right;
font-size: 1.5em;
width: 78px;
background-size: 78px;
background-position: top center;
position: relative;
top: 0em;
text-align: right;
margin-top: 0;
margin-bottom: -0.5em; }
h2 {
text-align: left; }
/* 3.TYPOGRAPHY */
/* 4.LINKS */
/* 5.FIGURES & IMAGES */
/* 6.TABLES */
/* 7.FORMS */
/* 8.BANNER */
/* 9.NAVIGATION */
/* 10.CONTENT */
/* #experience h4 { float: left; margin-top: 0; }
*#experience li { margin-top: 2.2em; }
*#experience .period { clear: none; text-align: right; position: relative; top: 0.1em; }
*#experience p { clear: both; } */
/* 11.MAIN */
/* 12.COMPLIMENTARY */
/* 13.CONTENTINFO */
/* 14.GLOBAL OBJECTS */
/* 15.VENDOR-SPECIFIC */
/* 16.TEMPLATE SPECIFICS */
/* 17.MODERNIZR */ }
/*/mediaquery */
/*480px __________________________________________________________________________________________________________ */
@media only screen and (min-width: 540px) {
/* 1.ROOT */
/* 2.HEADINGS */
/* 3.TYPOGRAPHY */
/* 4.LINKS */
/* 5.FIGURES & IMAGES */
/* 6.TABLES */
/* 7.FORMS */
/* 8.BANNER */
/* 9.NAVIGATION */
/* 10.CONTENT */
#profile, #experience {
float: left;
width: 63%; }
#skills {
float: right;
width: 30%;
margin-left: 7%; }
#portfolio {
float: left;
width: 63%; }
#interests, #contact {
float: right;
width: 30%;
margin-left: 7%; }
/* 11.MAIN */
/* 12.COMPLIMENTARY */
/* 13.CONTENTINFO */
/* 14.GLOBAL OBJECTS */
/* 15.VENDOR-SPECIFIC */
/* 16.TEMPLATE SPECIFICS */
/* 17.MODERNIZR */ }
/*/mediaquery */
/*768px __________________________________________________________________________________________________________ */
@media only screen and (min-width: 768px) {
/* 1.ROOT */
body {
font-size: 1.1em; }
/* 2.HEADINGS */
h1 {
font-size: 5em;
margin-bottom: 0em; }
h1:before {
width: 130px;
background-size: 130px;
background-position: top center;
position: relative;
top: 0em; }
h2 {
font-size: 2em; }
/* 3.TYPOGRAPHY */
/* 4.LINKS */
/* 5.FIGURES & IMAGES */
/* 6.TABLES */
/* 7.FORMS */
/* 8.BANNER */
/* 9.NAVIGATION */
/* 10.CONTENT */
/* 11.MAIN */
/* 12.COMPLIMENTARY */
/* 13.CONTENTINFO */
/* 14.GLOBAL OBJECTS */
/* 15.VENDOR-SPECIFIC */
/* 16.TEMPLATE SPECIFICS */
/* 17.MODERNIZR */ }
/*/mediaquery */
/*992px __________________________________________________________________________________________________________ */
@media only screen and (min-width: 992px) {
/* 1.ROOT */
.container {
max-width: 890px; }
/* 2.HEADINGS */
/* 3.TYPOGRAPHY */
/* 4.LINKS */
/* 5.FIGURES & IMAGES */
/* 6.TABLES */
/* 7.FORMS */
/* 8.BANNER */
/* 9.NAVIGATION */
/* 10.CONTENT */
/* 11.MAIN */
/* 12.COMPLIMENTARY */
/* 13.CONTENTINFO */
/* 14.GLOBAL OBJECTS */
/* 15.VENDOR-SPECIFIC */
/* 16.TEMPLATE SPECIFICS */
/* 17.MODERNIZR */ }
/*/mediaquery */
/*1382px __________________________________________________________________________________________________________ */
@media only screen and (min-width: 1382px) {
/* 1.ROOT */
/* 2.HEADINGS */
/* 3.TYPOGRAPHY */
/* 4.LINKS */
/* 5.FIGURES & IMAGES */
/* 6.TABLES */
/* 7.FORMS */
/* 8.BANNER */
/* 9.NAVIGATION */
/* 10.CONTENT */
/* 11.MAIN */
/* 12.COMPLIMENTARY */
/* 13.CONTENTINFO */
/* 14.GLOBAL OBJECTS */
/* 15.VENDOR-SPECIFIC */
/* 16.TEMPLATE SPECIFICS */
/* 17.MODERNIZR */ }
/*/mediaquery */
/*2x __________________________________________________________________________________________________________ */
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2) {
/* 1.ROOT */
/* 2.HEADINGS */
/* 3.TYPOGRAPHY */
/* 4.LINKS */
/* 5.FIGURES & IMAGES */
/* 6.TABLES */
/* 7.FORMS */
/* 8.BANNER */
/* 9.NAVIGATION */
/* 10.CONTENT */
/* 11.MAIN */
/* 12.COMPLIMENTARY */
/* 13.CONTENTINFO */
/* 14.GLOBAL OBJECTS */
/* 15.VENDOR-SPECIFIC */
/* 16.TEMPLATE SPECIFICS */
/* 17.MODERNIZR */ }
/*/mediaquery */
/* Sources:
* http://meyerweb.com/eric/tools/css/reset
* http://people.opera.com/patrickl/experiments/keyboard/test
* http://gist.github.com/413930
* http://pathf.com/blogs/2008/05/formatting-quoted-code-in-blog-posts-css21-white-space-pre-wrap
* http://sitepoint.com/blogs/2010/08/20/ie-remove-textarea-scrollbars
* http://tjkdesign.com/ez-css/css/base.css
* http://viget.com/inspire/styling-the-button-element-in-internet-explorer
* http://code.flickr.com/blog/2008/11/12/on-ui-quality-the-little-things-client-side-image-resizing
* http://html5doctor.com/html-5-reset-stylesheet/
* http://praegnanz.de/weblog/htmlcssjs-kickstart/
* http://camendesign.com/design/
* http://yui.yahooapis.com/2.8.1/build/base/base.css
* http://webaim.org/techniques/css/invisiblecontent/
* http://drupal.org/node/897638 */

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -1,14 +0,0 @@
/* the humans responsible & colophon */
/* humanstxt.org */
/* TEAM */
Designer & Coder: Dan Barber
Site: http://danbarber.me
Twitter: @danbee
Location: UK
/* SITE */
Standards: HTML5, CSS3
Components: Modernizr, jQuery
Software: Stasis, HAML, SASS, Vim

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 599 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 599 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 614 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 804 B

View File

@ -1,238 +0,0 @@
<!DOCTYPE html>
<!--
Dan Barber's CV
Author: Dan Barber
URL: http://pixelhum.com/cv
-->
<html class='no-js' lang='en' manifest='default.appcache?v=1'>
<head>
<meta charset='utf-8'>
<title>Dan Barber - Web Developer &amp; Designer</title>
<meta content='' name='description'>
<meta content='' name='author'>
<!-- http://t.co/dKP3o1e -->
<meta content='True' name='HandheldFriendly'>
<meta content='320' name='MobileOptimized'>
<meta content='target-densitydpi=160dpi, initial-scale=1' name='viewport'>
<!--
For less capable mobile browsers
<link rel="stylesheet" media="handheld" href="css/handheld.css?v=1">
-->
<!-- For all browsers -->
<link href='css/style.css?v=1' rel='stylesheet'>
<!-- JavaScript at bottom except for Modernizr and Typekit -->
<script src='js/libs/modernizr-1.7.min.js'></script>
<!-- Typekit -->
<script src='http://use.typekit.com/ewi2mjz.js' type='text/javascript'></script>
<script>
try{Typekit.load();}catch(e){}
</script>
<link href='favicon.png' rel='shortcut icon'>
<!-- Microsoft. Delete if not required -->
<meta content='on' http-equiv='cleartype'>
<meta content='IE=edge,chrome=1' http-equiv='X-UA-Compatible'>
<!-- http://t.co/y1jPVnT -->
<link href='/' rel='canonical'>
</head>
<body class='clearfix'>
<div id='stripe'>
<div class='container'>
<canvas height='12' id='colours' width='890'></canvas>
</div>
</div>
<header class='clearfix' role='banner'>
<div class='container'>
<h1 class='icon-logo' id='main_heading'>Dan Barber</h1>
<h2>Web Designer &amp;&nbsp;Developer</h2>
</div>
</header>
<div class='content clearfix'>
<div role='main'>
<div class='container clearfix'>
<section id='profile'>
<h3>Profile</h3>
<p>I have 14 years of experience building web sites and web applications, from small simple websites and services to large enterprise level systems. I focus on simple, usable interfaces and prefer to work by prototyping ideas.</p>
<p>I am detail orientated and I love working alongside others on interesting projects and ideas. I love learning new techniques and technologies and I love simple, elegant, maintainable code.</p>
</section>
<section id='skills'>
<h3>Skills</h3>
<h4>Web Technologies</h4>
<ul>
<li>HTML5/CSS3</li>
<li>Javascript/jQuery</li>
<li>Ruby on Rails</li>
<li>PHP</li>
</ul>
<h4>Databases</h4>
<ul>
<li>SQL</li>
<li>PostgreSQL</li>
<li>MySQL</li>
<li>SQLite3</li>
</ul>
<h4>Design</h4>
<ul>
<li>Photoshop/GIMP</li>
<li>Illustrator</li>
<li>InDesign</li>
<li>Typography</li>
</ul>
<h4>Linux Servers</h4>
<ul>
<li>Web (Apache)</li>
<li>MySQL</li>
<li>PostgreSQL</li>
<li>DNS</li>
<li>Samba</li>
</ul>
<h4>Networking</h4>
<p>Good knowledge of cabling, routing and protocols.</p>
</section>
<section id='experience'>
<h3>Experience</h3>
<h4><a href="http://new-bamboo.co.uk">New Bamboo</a></h4>
<p>Nov 2012 &mdash; Present</p>
<h4><a href="http://pixelhum.com">Pixelhum</a></h4>
<p>Aug 2010 &mdash; Present</p>
<p>Pixelhum is my own freelance/contract business. I design and build web applications for clients using Ruby on Rails.</p>
<h4><a href="http://www.webbased.co.uk/webbased">WebBased Ltd</a></h4>
<p>Dec 2011 &mdash; Nov 2012</p>
<p>Continued development of a CRM product built using Rails 2.3. I moved version control from SVN to git and brought the Rspec test suite up to date.</p>
<h4><a href="http://www.abiquo.com">Abiquo</a></h4>
<p>June 2010 &mdash; Oct 2011</p>
<p>Updated and maintained Abiquos websites, written in both PHP and Ruby on Rails. This includes the virtual image exchange site Thunderflash (thunderflash.com) which I rebuilt on Rails 3.</p>
<h4><a href="http://dbsmusic.co.uk">Deep Blue Sound</a></h4>
<p>Aug 2008 &mdash; June 2010</p>
<p>Administered and augmented the existing web systems including Moodle, SugarCRM and others. Deputised for the System Administrator.</p>
<h4><a href="http://footworksolutions.co.uk">Footwork Solutions</a></h4>
<p>Nov 2002 &mdash; Aug 2008</p>
<p>I was a lead developer and designer on the Halo care co-ordination system, including training and documentation and support. I was also the System Administrator for both the local network and remote server farm.</p>
<h4>Granite Internet</h4>
<p>2000 &mdash; 2002</p>
<p>Designed and developed and maintained several property company websites based on a single code base. Setup Windows, Linux and FreeBSD servers.</p>
<h4>North Devon Journal</h4>
<p>1998 &mdash; 2000</p>
<p>Set advertisements using QuarkXpress and was responsible for laying out the classified pages. Developed a love for typography.</p>
</section>
</div>
<div class='container clearfix'>
<section id='portfolio'>
<h3>Portfolio</h3>
<h4><a href="http://www.soundunlimited.co.uk">Soundunlimited</a></h4>
<p>I built a complete online shop system for a local music shop using Ruby on Rails. Rspec was used for testing.</p>
<h4><a href="http://pixelhum.com/neompc">NeoMPC</a></h4>
<p>Web based MPD client. Design and execution. Built using PHP and jQuery and uses mpd.class.php to connect to the MPD server.</p>
<h4><a href="http://pixelhum.com/portfolio/footwork/">Footwork Solutions</a></h4>
<p>Company logo and site design. I built the HTML for the Drupal template.</p>
<h4><a href="http://www.footworksolutions.co.uk">Halo</a></h4>
<p>Hosted care co-ordination system for drug treatment agencies. Design, initial implementation and ongoing development of key modules.</p>
<h4><a href="http://danbarberphoto.com">Dan Barber Photo</a></h4>
<p>My own photography portfolio site. I designed and implemented the site using Ruby on Rails and jQuery, including backend admin pages.</p>
<h4>My CV</h4>
<p>My CV is a responsive design built using Stasis, HAML, SASS and Markdown that makes extensive use of HTML5, CSS3, typography and web fonts. The source code is available on <a href="https://github.com/danbee/cv">Github</a>.</p>
</section>
<section id='interests'>
<h3>Interests</h3>
<ul>
<li>Drumming</li>
<li>Music</li>
<li>Sound Engineering &amp; Recording</li>
<li>Photography</li>
<li>Cycling</li>
</ul>
</section>
<section class='vcard' id='contact'>
<h3>Contact</h3>
<p class='fn n'>
<span class='given-name'>Dan</span>
<span class='family-name'>Barber</span>
</p>
<p>
<a class='email' href='mailto:hello@danbarber.me'>hello@danbarber.me</a>
</p>
<p class='tel'>+44 (0) 1752 546981</p>
<p>
<a class='url' href='http://pixelhum.com'>http://danbarber.me</a>
</p>
<p class='icon-github'>
<a class='url' href='http://github.com/danbee'>github.com/danbee</a>
</p>
<p class='icon-twitter'>
<a class='url' href='http://twitter.com/danbee'>@danbee</a>
</p>
</section>
</div>
</div>
<div role='complementary'></div>
</div>
<footer class='clearfix' role='contentinfo'></footer>
<!-- mathiasbynens.be/notes/async-analytics-snippet Change UA-XXXXX-X to be your site's ID -->
<script src='//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.js'></script>
<script>
window.jQuery || document.write('<script src="js/libs/jquery-1.5.1.min.js">\x3C/script>') / Scripts
</script>
<script src='js/plugins.js'></script>
<script src='js/script.js'></script>
<!--[if (lt IE 9) & (!IEMobile)]>
<script src="js/libs/DOMAssistantCompressed-2.8.js"></script>
<script src="js/libs/selectivizr-1.0.1.js"></script>
<script src="js/libs/respond.min.js"></script>
<![endif]-->
<!-- http://t.co/HZe9oJ4 -->
<script>
var _gaq=[['_setAccount','UA-603600-3'],['_trackPageview']]; // Change UA-XXXXX-X to be your site's ID
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.async=1;
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
s.parentNode.insertBefore(g,s)}(document,'script'));
</script>
<noscript>Your browser does not support JavaScript!</noscript>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@ -1,61 +0,0 @@
var imgSizer = {
Config : {
imgCache : []
,spacer : "/path/to/your/spacer.gif"
}
,collate : function(aScope) {
var isOldIE = (document.all && !window.opera && !window.XDomainRequest) ? 1 : 0;
if (isOldIE && document.getElementsByTagName) {
var c = imgSizer;
var imgCache = c.Config.imgCache;
var images = (aScope && aScope.length) ? aScope : document.getElementsByTagName("img");
for (var i = 0; i < images.length; i++) {
images[i].origWidth = images[i].offsetWidth;
images[i].origHeight = images[i].offsetHeight;
imgCache.push(images[i]);
c.ieAlpha(images[i]);
images[i].style.width = "100%";
}
if (imgCache.length) {
c.resize(function() {
for (var i = 0; i < imgCache.length; i++) {
var ratio = (imgCache[i].offsetWidth / imgCache[i].origWidth);
imgCache[i].style.height = (imgCache[i].origHeight * ratio) + "px";
}
});
}
}
}
,ieAlpha : function(img) {
var c = imgSizer;
if (img.oldSrc) {
img.src = img.oldSrc;
}
var src = img.src;
img.style.width = img.offsetWidth + "px";
img.style.height = img.offsetHeight + "px";
img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='scale')"
img.oldSrc = src;
img.src = c.Config.spacer;
}
// Ghettomodified version of Simon Willison's addLoadEvent() -- http://simonwillison.net/2004/May/26/addLoadEvent/
,resize : function(func) {
var oldonresize = window.onresize;
if (typeof window.onresize != 'function') {
window.onresize = func;
} else {
window.onresize = function() {
if (oldonresize) {
oldonresize();
}
func();
}
}
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,7 +0,0 @@
/*
* respond.js - A small and fast polyfill for min/max-width CSS3 Media Queries
* Copyright 2011, Scott Jehl, scottjehl.com
* Dual licensed under the MIT or GPL Version 2 licenses.
* Usage: Check out the readme file or github.com/scottjehl/respond
*/
(function(e,h){e.respond={};respond.update=function(){};respond.mediaQueriesSupported=h;if(h){return}var u=e.document,r=u.documentElement,i=[],k=[],p=[],o={},g=30,f=u.getElementsByTagName("head")[0]||r,b=f.getElementsByTagName("link"),d=[],a=function(){var B=b,w=B.length;for(var z=0;z<w;z++){var y=B[z],x=y.href,A=y.media,v=y.rel&&y.rel.toLowerCase()==="stylesheet";if(!!x&&v&&!o[x]){if(!/^([a-zA-Z]+?:(\/\/)?(www\.)?)/.test(x)||x.replace(RegExp.$1,"").split("/")[0]===e.location.host){d.push({href:x,media:A})}else{o[x]=true}}}t()},t=function(){if(d.length){var v=d.shift();n(v.href,function(w){m(w,v.href,v.media);o[v.href]=true;t()})}},m=function(G,v,x){var E=G.match(/@media ([^\{]+)\{([\S\s]+?)(?=\}\/\*\/mediaquery\*\/)/gmi),H=E&&E.length||0,v=v.substring(0,v.lastIndexOf("/")),w=function(I){return I.replace(/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,"$1"+v+"$2$3")},y=!H&&x;if(v.length){v+="/"}if(y){H=1}for(var B=0;B<H;B++){var C;if(y){C=x;k.push(w(G))}else{C=E[B].match(/@media ([^\{]+)\{([\S\s]+?)$/)&&RegExp.$1;k.push(RegExp.$2&&w(RegExp.$2))}var z=C.split(","),F=z.length;for(var A=0;A<F;A++){var D=z[A];i.push({media:D.match(/(only\s+)?([a-zA-Z]+)(\sand)?/)&&RegExp.$2,rules:k.length-1,minw:D.match(/\(min\-width:\s?(\s?[0-9]+)px\s?\)/)&&parseFloat(RegExp.$1),maxw:D.match(/\(max\-width:\s?(\s?[0-9]+)px\s?\)/)&&parseFloat(RegExp.$1)})}}j()},l,q,j=function(E){var v="clientWidth",x=r[v],D=u.compatMode==="CSS1Compat"&&x||u.body[v]||x,z={},C=u.createDocumentFragment(),B=b[b.length-1],w=(new Date()).getTime();if(E&&l&&w-l<g){clearTimeout(q);q=setTimeout(j,g);return}else{l=w}for(var y in i){var F=i[y];if(!F.minw&&!F.maxw||(!F.minw||F.minw&&D>=F.minw)&&(!F.maxw||F.maxw&&D<=F.maxw)){if(!z[F.media]){z[F.media]=[]}z[F.media].push(k[F.rules])}}for(var y in p){if(p[y]&&p[y].parentNode===f){f.removeChild(p[y])}}for(var y in z){var G=u.createElement("style"),A=z[y].join("\n");G.type="text/css";G.media=y;if(G.styleSheet){G.styleSheet.cssText=A}else{G.appendChild(u.createTextNode(A))}C.appendChild(G);p.push(G)}f.insertBefore(C,B.nextSibling)},n=function(v,x){var w=c();if(!w){return}w.open("GET",v,true);w.onreadystatechange=function(){if(w.readyState!=4||w.status!=200&&w.status!=304){return}x(w.responseText)};if(w.readyState==4){return}w.send()},c=(function(){var v=false,w=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml3.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new XMLHttpRequest()}],y=w.length;while(y--){try{v=w[y]()}catch(x){continue}break}return function(){return v}})();a();respond.update=a;function s(){j(true)}if(e.addEventListener){e.addEventListener("resize",s,false)}else{if(e.attachEvent){e.attachEvent("onresize",s)}}})(this,(function(g){if(g.matchMedia){return true}var c,f=document,a=f.documentElement,b=a.firstElementChild||a.firstChild,e=f.createElement("body"),h=f.createElement("div"),d="only all";h.id="mq-test-1";h.style.cssText="position:absolute;top:-99em";e.appendChild(h);h.innerHTML='_<style media="'+d+'"> #mq-test-1 { width: 9px; }</style>';a.insertBefore(e,b);h.removeChild(h.firstChild);c=h.offsetWidth==9;a.removeChild(e);return c})(this));

View File

@ -1,278 +0,0 @@
/*
* respond.js - A small and fast polyfill for min/max-width CSS3 Media Queries
* Copyright 2011, Scott Jehl, scottjehl.com
* Dual licensed under the MIT or GPL Version 2 licenses.
* Usage: Check out the readme file or github.com/scottjehl/respond
*/
(function( win, mqSupported ){
//exposed namespace
win.respond = {};
//define update even in native-mq-supporting browsers, to avoid errors
respond.update = function(){};
//expose media query support flag for external use
respond.mediaQueriesSupported = mqSupported;
//if media queries are supported, exit here
if( mqSupported ){ return; }
//define vars
var doc = win.document,
docElem = doc.documentElement,
mediastyles = [],
rules = [],
appendedEls = [],
parsedSheets = {},
resizeThrottle = 30,
head = doc.getElementsByTagName( "head" )[0] || docElem,
links = head.getElementsByTagName( "link" ),
requestQueue = [],
//loop stylesheets, send text content to translate
ripCSS = function(){
var sheets = links,
sl = sheets.length;
for( var i = 0; i < sl; i++ ){
var sheet = sheets[ i ],
href = sheet.href,
media = sheet.media,
isCSS = sheet.rel && sheet.rel.toLowerCase() === "stylesheet";
//only links plz and prevent re-parsing
if( !!href && isCSS && !parsedSheets[ href ] ){
if( !/^([a-zA-Z]+?:(\/\/)?(www\.)?)/.test( href )
|| href.replace( RegExp.$1, "" ).split( "/" )[0] === win.location.host ){
requestQueue.push( {
href: href,
media: media
} );
}
else{
parsedSheets[ href ] = true;
}
}
}
makeRequests();
},
//recurse through request queue, get css text
makeRequests = function(){
if( requestQueue.length ){
var thisRequest = requestQueue.shift();
ajax( thisRequest.href, function( styles ){
translate( styles, thisRequest.href, thisRequest.media );
parsedSheets[ thisRequest.href ] = true;
makeRequests();
} );
}
},
//find media blocks in css text, convert to style blocks
translate = function( styles, href, media ){
var qs = styles.match( /@media ([^\{]+)\{([\S\s]+?)(?=\}\/\*\/mediaquery\*\/)/gmi ),
ql = qs && qs.length || 0,
//try to get CSS path
href = href.substring( 0, href.lastIndexOf( "/" )),
repUrls = function( css ){
return css.replace( /(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g, "$1" + href + "$2$3" );
},
useMedia = !ql && media;
//if path exists, tack on trailing slash
if( href.length ){ href += "/"; }
//if no internal queries exist, but media attr does, use that
//note: this currently lacks support for situations where a media attr is specified on a link AND
//its associated stylesheet has internal CSS media queries.
//In those cases, the media attribute will currently be ignored.
if( useMedia ){
ql = 1;
}
for( var i = 0; i < ql; i++ ){
var fullq;
//media attr
if( useMedia ){
fullq = media;
rules.push( repUrls( styles ) );
}
//parse for styles
else{
fullq = qs[ i ].match( /@media ([^\{]+)\{([\S\s]+?)$/ ) && RegExp.$1;
rules.push( RegExp.$2 && repUrls( RegExp.$2 ) );
}
var eachq = fullq.split( "," ),
eql = eachq.length;
for( var j = 0; j < eql; j++ ){
var thisq = eachq[ j ];
mediastyles.push( {
media : thisq.match( /(only\s+)?([a-zA-Z]+)(\sand)?/ ) && RegExp.$2,
rules : rules.length - 1,
minw : thisq.match( /\(min\-width:\s?(\s?[0-9]+)px\s?\)/ ) && parseFloat( RegExp.$1 ),
maxw : thisq.match( /\(max\-width:\s?(\s?[0-9]+)px\s?\)/ ) && parseFloat( RegExp.$1 )
} );
}
}
applyMedia();
},
lastCall,
resizeDefer,
//enable/disable styles
applyMedia = function( fromResize ){
var name = "clientWidth",
docElemProp = docElem[ name ],
currWidth = doc.compatMode === "CSS1Compat" && docElemProp || doc.body[ name ] || docElemProp,
styleBlocks = {},
dFrag = doc.createDocumentFragment(),
lastLink = links[ links.length-1 ],
now = (new Date()).getTime();
//throttle resize calls
if( fromResize && lastCall && now - lastCall < resizeThrottle ){
clearTimeout( resizeDefer );
resizeDefer = setTimeout( applyMedia, resizeThrottle );
return;
}
else {
lastCall = now;
}
for( var i in mediastyles ){
var thisstyle = mediastyles[ i ];
if( !thisstyle.minw && !thisstyle.maxw ||
( !thisstyle.minw || thisstyle.minw && currWidth >= thisstyle.minw ) &&
(!thisstyle.maxw || thisstyle.maxw && currWidth <= thisstyle.maxw ) ){
if( !styleBlocks[ thisstyle.media ] ){
styleBlocks[ thisstyle.media ] = [];
}
styleBlocks[ thisstyle.media ].push( rules[ thisstyle.rules ] );
}
}
//remove any existing respond style element(s)
for( var i in appendedEls ){
if( appendedEls[ i ] && appendedEls[ i ].parentNode === head ){
head.removeChild( appendedEls[ i ] );
}
}
//inject active styles, grouped by media type
for( var i in styleBlocks ){
var ss = doc.createElement( "style" ),
css = styleBlocks[ i ].join( "\n" );
ss.type = "text/css";
ss.media = i;
if ( ss.styleSheet ){
ss.styleSheet.cssText = css;
}
else {
ss.appendChild( doc.createTextNode( css ) );
}
dFrag.appendChild( ss );
appendedEls.push( ss );
}
//append to DOM at once
head.insertBefore( dFrag, lastLink.nextSibling );
},
//tweaked Ajax functions from Quirksmode
ajax = function( url, callback ) {
var req = xmlHttp();
if (!req){
return;
}
req.open( "GET", url, true );
req.onreadystatechange = function () {
if ( req.readyState != 4 || req.status != 200 && req.status != 304 ){
return;
}
callback( req.responseText );
}
if ( req.readyState == 4 ){
return;
}
req.send();
},
//define ajax obj
xmlHttp = (function() {
var xmlhttpmethod = false,
attempts = [
function(){ return new ActiveXObject("Microsoft.XMLHTTP") },
function(){ return new ActiveXObject("Msxml3.XMLHTTP") },
function(){ return new ActiveXObject("Msxml2.XMLHTTP") },
function(){ return new XMLHttpRequest() }
],
al = attempts.length;
while( al-- ){
try {
xmlhttpmethod = attempts[ al ]();
}
catch(e) {
continue;
}
break;
}
return function(){
return xmlhttpmethod;
};
})();
//translate CSS
ripCSS();
//expose update for re-running respond later on
respond.update = ripCSS;
//adjust on resize
function callMedia(){
applyMedia( true );
}
if( win.addEventListener ){
win.addEventListener( "resize", callMedia, false );
}
else if( win.attachEvent ){
win.attachEvent( "onresize", callMedia );
}
})(
this,
(function( win ){
//for speed, flag browsers with window.matchMedia support and IE 9 as supported
if( win.matchMedia ){ return true; }
var bool,
doc = document,
docElem = doc.documentElement,
refNode = docElem.firstElementChild || docElem.firstChild,
// fakeBody required for <FF4 when executed in <head>
fakeBody = doc.createElement( "body" ),
div = doc.createElement( "div" ),
q = "only all";
div.id = "mq-test-1";
div.style.cssText = "position:absolute;top:-99em";
fakeBody.appendChild( div );
div.innerHTML = '_<style media="'+q+'"> #mq-test-1 { width: 9px; }</style>';
docElem.insertBefore( fakeBody, refNode );
div.removeChild( div.firstChild );
bool = div.offsetWidth == 9;
docElem.removeChild( fakeBody );
return bool;
})( this )
);

View File

@ -1,5 +0,0 @@
/*!
* selectivizr v1.0.1 - (c) Keith Clark, freely distributable under the terms of the MIT license.
* selectivizr.com
*/
var k=true,p=false;(function(A){function N(a){return a.replace(O,q).replace(P,function(b,e,c){b=c.split(",");c=0;for(var g=b.length;c<g;c++){var h=Q(b[c].replace(R,q).replace(S,q))+w,f=[];b[c]=h.replace(T,function(d,l,m,j,i){if(l){if(f.length>0){d=f;var x;i=h.substring(0,i).replace(U,o);if(i==o||i.charAt(i.length-1)==w)i+="*";try{x=y(i)}catch(ha){}if(x){i=0;for(m=x.length;i<m;i++){j=x[i];for(var B=j.className,C=0,V=d.length;C<V;C++){var r=d[C];if(!RegExp("(^|\\s)"+r.className+"(\\s|$)").test(j.className))if(r.b&&(r.b===k||r.b(j)===k))B=E(B,r.className,k)}j.className=B}}f=[]}return l}else{if(l=m?W(m):!F||F.test(j)?{className:G(j),b:k}:null){f.push(l);return"."+l.className}return d}})}return e+b.join(",")})}function W(a){var b=k,e=G(a.slice(1)),c=a.substring(0,5)==":not(",g,h;if(c)a=a.slice(5,-1);var f=a.indexOf("(");if(f>-1)a=a.substring(0,f);if(a.charAt(0)==":")switch(a.slice(1)){case "root":b=function(d){return c?d!=H:d==H};break;case "target":if(s==8){b=function(d){function l(){var m=location.hash,j=m.slice(1);return c?m==""||d.id!=j:m!=""&&d.id==j}t(A,"hashchange",function(){u(d,e,l())});return l()};break}return p;case "checked":b=function(d){X.test(d.type)&&t(d,"propertychange",function(){event.propertyName=="checked"&&u(d,e,d.checked!==c)});return d.checked!==c};break;case "disabled":c=!c;case "enabled":b=function(d){if(Y.test(d.tagName)){t(d,"propertychange",function(){event.propertyName=="$disabled"&&u(d,e,d.a===c)});z.push(d);d.a=d.disabled;return d.disabled===c}return a==":enabled"?c:!c};break;case "focus":g="focus";h="blur";case "hover":if(!g){g="mouseenter";h="mouseleave"}b=function(d){t(d,c?h:g,function(){u(d,e,k)});t(d,c?g:h,function(){u(d,e,p)});return c};break;default:if(!Z.test(a))return p}return{className:e,b:b}}function G(a){return I+"-"+(s==6&&$?aa++:a.replace(ba,function(b){return b.charCodeAt(0)}))}function Q(a){return a.replace(J,q).replace(ca,w)}function u(a,b,e){var c=a.className;b=E(c,b,e);if(b!=c){a.className=b;a.parentNode.className+=o}}function E(a,b,e){var c=RegExp("(^|\\s)"+b+"(\\s|$)"),g=c.test(a);return e?g?a:a+w+b:g?a.replace(c,q).replace(J,q):a}function t(a,b,e){a.attachEvent("on"+b,e)}function D(a,b){if(/^https?:\/\//i.test(a))return b.substring(0,b.indexOf("/",8))==a.substring(0,a.indexOf("/",8))?a:null;if(a.charAt(0)=="/")return b.substring(0,b.indexOf("/",8))+a;var e=b.split("?")[0];if(a.charAt(0)!="?"&&e.charAt(e.length-1)!="/")e=e.substring(0,e.lastIndexOf("/")+1);return e+a}function K(a){if(a){v.open("GET",a,p);v.send();return(v.status==200?v.responseText:o).replace(da,o).replace(ea,function(b,e,c,g,h){return K(D(c||h,a))}).replace(fa,function(b,e,c){e=e||"";return" url("+e+D(c,a)+e+") "})}return o}function ga(){var a,b;a=n.getElementsByTagName("BASE");for(var e=a.length>0?a[0].href:n.location.href,c=0;c<n.styleSheets.length;c++){b=n.styleSheets[c];if(b.href!=o)if(a=D(b.href,e))b.cssText=N(K(a))}z.length>0&&setInterval(function(){for(var g=0,h=z.length;g<h;g++){var f=z[g];if(f.disabled!==f.a)if(f.disabled){f.disabled=p;f.a=k;f.disabled=k}else f.a=f.disabled}},250)}if(!/*@cc_on!@*/true){var n=document,H=n.documentElement,v=function(){if(A.XMLHttpRequest)return new XMLHttpRequest;try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(a){return null}}(),s=/MSIE ([\d])/.exec(navigator.userAgent)[1];if(!(n.compatMode!="CSS1Compat"||s<6||s>8||!v)){var L={NW:"*.Dom.select",DOMAssistant:"*.$",Prototype:"$$",YAHOO:"*.util.Selector.query",MooTools:"$$",Sizzle:"*",jQuery:"*",dojo:"*.query"},y,z=[],aa=0,$=k,I="slvzr",M=I+"DOMReady",da=/(\/\*[^*]*\*+([^\/][^*]*\*+)*\/)\s*/g,ea=/@import\s*(?:(?:(?:url\(\s*(['"]?)(.*)\1)\s*\))|(?:(['"])(.*)\3))[^;]*;/g,fa=/\burl\(\s*(["']?)([^"')]+)\1\s*\)/g,Z=/^:(empty|(first|last|only|nth(-last)?)-(child|of-type))$/,O=/:(:first-(?:line|letter))/g,P=/(^|})\s*([^\{]*?[\[:][^{]+)/g,T=/([ +~>])|(:[a-z-]+(?:\(.*?\)+)?)|(\[.*?\])/g,U=/(:not\()?:(hover|enabled|disabled|focus|checked|target|active|visited|first-line|first-letter)\)?/g,ba=/[^\w-]/g,Y=/^(INPUT|SELECT|TEXTAREA|BUTTON)$/,X=/^(checkbox|radio)$/,F=s>6?/[\$\^*]=(['"])\1/:null,R=/([(\[+~])\s+/g,S=/\s+([)\]+~])/g,ca=/\s+/g,J=/^\s*((?:[\S\s]*\S)?)\s*$/,o="",w=" ",q="$1";n.write("<script id="+M+" defer src='//:'><\/script>");n.getElementById(M).onreadystatechange=function(){if(this.readyState=="complete"){a:{var a,b;for(b in L)if(A[b]&&(a=eval(L[b].replace("*",b)))){y=a;break a}y=p}if(y){ga();this.parentNode.removeChild(this)}}}}}})(this);

View File

@ -1,121 +0,0 @@
/*
* MBP - Mobile boilerplate helper functions
*/
window.MBP = window.MBP || {};
// Hide URL Bar for iOS
// http://remysharp.com/2010/08/05/doing-it-right-skipping-the-iphone-url-bar/
MBP.hideUrlBar = function () {
/mobile/i.test(navigator.userAgent) && !pageYOffset && !location.hash && setTimeout(function () {
window.scrollTo(0, 1);
}, 1000);
}
// Fast Buttons
// http://code.google.com/mobile/articles/fast_buttons.html
MBP.fastButton = function (element, handler) {
this.element = element;
this.handler = handler;
element.addEventListener('touchstart', this, false);
element.addEventListener('click', this, false);
};
MBP.fastButton.prototype.handleEvent = function(event) {
switch (event.type) {
case 'touchstart': this.onTouchStart(event); break;
case 'touchmove': this.onTouchMove(event); break;
case 'touchend': this.onClick(event); break;
case 'click': this.onClick(event); break;
}
};
MBP.fastButton.prototype.onTouchStart = function(event) {
event.stopPropagation();
this.element.addEventListener('touchend', this, false);
document.body.addEventListener('touchmove', this, false);
this.startX = event.touches[0].clientX;
this.startY = event.touches[0].clientY;
this.element.style.backgroundColor = "rgba(0,0,0,.7)";
};
MBP.fastButton.prototype.onTouchMove = function(event) {
if(Math.abs(event.touches[0].clientX - this.startX) > 10 || Math.abs(event.touches[0].clientY - this.startY) > 10) {
this.reset();
}
};
MBP.fastButton.prototype.onClick = function(event) {
event.stopPropagation();
this.reset();
this.handler(event);
if(event.type == 'touchend') {
MBP.preventGhostClick(this.startX, this.startY);
}
this.element.style.backgroundColor = "";
};
MBP.fastButton.prototype.reset = function() {
this.element.removeEventListener('touchend', this, false);
document.body.removeEventListener('touchmove', this, false);
this.element.style.backgroundColor = "";
};
MBP.preventGhostClick = function (x, y) {
MBP.coords.push(x, y);
window.setTimeout(function (){
MBP.coords.splice(0, 2);
}, 2500);
};
;
MBP.ghostClickHandler = function (event) {
for(var i = 0, len = MBP.coords.length; i < len; i += 2) {
var x = MBP.coords[i];
var y = MBP.coords[i + 1];
if(Math.abs(event.clientX - x) < 25 && Math.abs(event.clientY - y) < 25) {
event.stopPropagation();
event.preventDefault();
}
}
};
document.addEventListener('click', MBP.ghostClickHandler, true);
MBP.coords = [];
// iOS Startup Image
// https://github.com/shichuan/mobile-html5-boilerplate/issues#issue/2
MBP.splash = function () {
var filename = navigator.platform === 'iPad' ? 'h/' : 'l/';
document.write('<link rel="apple-touch-startup-image" href="/img/' + filename + 'splash.png" />' );
}
// Autogrow
// http://googlecode.blogspot.com/2009/07/gmail-for-mobile-html5-series.html
MBP.autogrow = function (element, lh) {
function handler(e){
var newHeight = this.scrollHeight,
currentHeight = this.clientHeight;
if (newHeight > currentHeight) {
this.style.height = newHeight + 3 * textLineHeight + "px";
}
}
var setLineHeight = (lh) ? lh : 12,
textLineHeight = element.currentStyle ? element.currentStyle.lineHeight :
getComputedStyle(element, null).lineHeight;
textLineHeight = (textLineHeight.indexOf("px") == -1) ? setLineHeight :
parseInt(textLineHeight, 10);
element.style.overflow = "hidden";
element.addEventListener ? element.addEventListener('keyup', handler, false) :
element.attachEvent('onkeyup', handler);
}

View File

@ -1,151 +0,0 @@
// Plugins
// usage: log('inside coolFunc', this, arguments);
// paulirish.com/2009/log-a-lightweight-wrapper-for-consolelog/
window.log = function(){
log.history = log.history || []; // store logs to an array for reference
log.history.push(arguments);
arguments.callee = arguments.callee.caller;
if(this.console) console.log( Array.prototype.slice.call(arguments) );
};
// make it safe to use console.log always
(function(b){function c(){}for(var d="assert,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info, log,markTimeline,profile,profileEnd,time,timeEnd,trace,warn".split(","),a;a=d.pop();)b[a]=b[a]||c})(window.console=window.console||{});
// jQuery/helper plugins
/*!
* HTML5 Placeholder jQuery Plugin v1.8.2
* @link http://github.com/mathiasbynens/Placeholder-jQuery-Plugin
* @author Mathias Bynens <http://mathiasbynens.be/>
*/
;(function($) {
var isInputSupported = 'placeholder' in document.createElement('input'),
isTextareaSupported = 'placeholder' in document.createElement('textarea');
if (isInputSupported && isTextareaSupported) {
$.fn.placeholder = function() {
return this;
};
$.fn.placeholder.input = $.fn.placeholder.textarea = true;
} else {
$.fn.placeholder = function() {
return this.filter((isInputSupported ? 'textarea' : ':input') + '[placeholder]')
.bind('focus.placeholder', clearPlaceholder)
.bind('blur.placeholder', setPlaceholder)
.trigger('blur.placeholder').end();
};
$.fn.placeholder.input = isInputSupported;
$.fn.placeholder.textarea = isTextareaSupported;
}
function args(elem) {
// Return an object of element attributes
var newAttrs = {},
rinlinejQuery = /^jQuery\d+$/;
$.each(elem.attributes, function(i, attr) {
if (attr.specified && !rinlinejQuery.test(attr.name)) {
newAttrs[attr.name] = attr.value;
}
});
return newAttrs;
}
function clearPlaceholder() {
var $input = $(this);
if ($input.val() === $input.attr('placeholder') && $input.hasClass('placeholder')) {
if ($input.data('placeholder-password')) {
$input.hide().next().attr('id', $input.removeAttr('id').data('placeholder-id')).show().focus();
} else {
$input.val('').removeClass('placeholder');
}
}
}
function setPlaceholder(elem) {
var $replacement,
$input = $(this),
$origInput = $input,
id = this.id;
if ($input.val() === '') {
if ($input.is(':password')) {
if (!$input.data('placeholder-textinput')) {
try {
$replacement = $input.clone().attr({ type: 'text' });
} catch(e) {
$replacement = $('<input>').attr($.extend(args(this), { type: 'text' }));
}
$replacement
.removeAttr('name')
// We could just use the `.data(obj)` syntax here, but that wouldnt work in pre-1.4.3 jQueries
.data('placeholder-password', true)
.data('placeholder-id', id)
.bind('focus.placeholder', clearPlaceholder);
$input
.data('placeholder-textinput', $replacement)
.data('placeholder-id', id)
.before($replacement);
}
$input = $input.removeAttr('id').hide().prev().attr('id', id).show();
}
$input.addClass('placeholder').val($input.attr('placeholder'));
} else {
$input.removeClass('placeholder');
}
}
$(function() {
// Look for forms
$('form').bind('submit.placeholder', function() {
// Clear the placeholder values so they dont get submitted
var $inputs = $('.placeholder', this).each(clearPlaceholder);
setTimeout(function() {
$inputs.each(setPlaceholder);
}, 10);
});
});
// Clear placeholder values upon page reload
$(window).bind('unload.placeholder', function() {
$('.placeholder').val('');
});
}(jQuery));
/*global jQuery */
/*!
* FitText.js 1.0
*
* Copyright 2011, Dave Rupert http://daverupert.com
* Released under the WTFPL license
* http://sam.zoy.org/wtfpl/
*
* Date: Thu May 05 14:23:00 2011 -0600
*/
(function( $ ){
$.fn.fitText = function( kompressor ) {
return this.each(function(){
var $this = $(this); // store the object
var origFontSize = parseFloat($this.css('font-size')); // init the font sizes
var compressor = kompressor || 1; // set the compressor
// Resizer() resizes items based on the object width divided by the compressor * 10
var resizer = function () {
$this.css('font-size', Math.min($this.width() / (compressor*10), origFontSize));
};
// Call once to set.
resizer();
// Call on resize. Opera debounces their resize by default.
$(window).resize(resizer);
});
};
})( jQuery );

View File

@ -1,31 +0,0 @@
(function() {
var viewportmeta;
if (navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPad/i)) {
viewportmeta = document.querySelectorAll("meta[name=\"viewport\"]")[0];
if (viewportmeta) {
viewportmeta.content = "width=device-width, minimum-scale=1.0, maximum-scale=1.0";
document.body.addEventListener("gesturestart", (function() {
return viewportmeta.content = "width=device-width, minimum-scale=0.25, maximum-scale=1.6";
}), false);
}
}
$(function() {
var canvas, colour, colours, context, offset, _i, _len, _results;
canvas = document.getElementById("colours");
context = canvas.getContext("2d");
colours = ['#FF6205', '#8ED600', '#00BAEB'];
offset = 0;
_results = [];
for (_i = 0, _len = colours.length; _i < _len; _i++) {
colour = colours[_i];
context.fillStyle = colour;
context.fillRect(offset, 0, 72, 12);
_results.push(offset += 72);
}
return _results;
});
}).call(this);

View File

@ -1,89 +0,0 @@
<!DOCTYPE html>
<!--
Dan Barber's CV
Author: Dan Barber
URL: http://pixelhum.com/cv
-->
<html class='no-js' lang='en' manifest='default.appcache?v=1'>
<head>
<meta charset='utf-8'>
<title>Dan Barber - Web Developer &amp; Designer</title>
<meta content='' name='description'>
<meta content='' name='author'>
<!-- http://t.co/dKP3o1e -->
<meta content='True' name='HandheldFriendly'>
<meta content='320' name='MobileOptimized'>
<meta content='target-densitydpi=160dpi, initial-scale=1' name='viewport'>
<!--
For less capable mobile browsers
<link rel="stylesheet" media="handheld" href="css/handheld.css?v=1">
-->
<!-- For all browsers -->
<link href='css/style.css?v=1' rel='stylesheet'>
<!-- JavaScript at bottom except for Modernizr and Typekit -->
<script src='js/libs/modernizr-1.7.min.js'></script>
<!-- Typekit -->
<script src='http://use.typekit.com/ewi2mjz.js' type='text/javascript'></script>
<script>
try{Typekit.load();}catch(e){}
</script>
<link href='favicon.png' rel='shortcut icon'>
<!-- Microsoft. Delete if not required -->
<meta content='on' http-equiv='cleartype'>
<meta content='IE=edge,chrome=1' http-equiv='X-UA-Compatible'>
<!-- http://t.co/y1jPVnT -->
<link href='/' rel='canonical'>
</head>
<body class='clearfix'>
<div id='stripe'>
<div class='container'>
<canvas height='12' id='colours' width='890'></canvas>
</div>
</div>
<header class='clearfix' role='banner'>
<div class='container'>
<h1 class='icon-logo' id='main_heading'>Dan Barber</h1>
<h2>Web Designer &amp;&nbsp;Developer</h2>
</div>
</header>
<h3>Contact</h3>
<p class='fn n'>
<span class='given-name'>Dan</span>
<span class='family-name'>Barber</span>
</p>
<p>
<a class='email' href='mailto:hello@danbarber.me'>hello@danbarber.me</a>
</p>
<p class='tel'>+44 (0) 1752 546981</p>
<p>
<a class='url' href='http://pixelhum.com'>http://danbarber.me</a>
</p>
<p class='icon-github'>
<a class='url' href='http://github.com/danbee'>github.com/danbee</a>
</p>
<p class='icon-twitter'>
<a class='url' href='http://twitter.com/danbee'>@danbee</a>
</p>
<footer class='clearfix' role='contentinfo'></footer>
<!-- mathiasbynens.be/notes/async-analytics-snippet Change UA-XXXXX-X to be your site's ID -->
<script src='//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.js'></script>
<script>
window.jQuery || document.write('<script src="js/libs/jquery-1.5.1.min.js">\x3C/script>') / Scripts
</script>
<script src='js/plugins.js'></script>
<script src='js/script.js'></script>
<!--[if (lt IE 9) & (!IEMobile)]>
<script src="js/libs/DOMAssistantCompressed-2.8.js"></script>
<script src="js/libs/selectivizr-1.0.1.js"></script>
<script src="js/libs/respond.min.js"></script>
<![endif]-->
<!-- http://t.co/HZe9oJ4 -->
<script>
var _gaq=[['_setAccount','UA-603600-3'],['_trackPageview']]; // Change UA-XXXXX-X to be your site's ID
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.async=1;
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
s.parentNode.insertBefore(g,s)}(document,'script'));
</script>
<noscript>Your browser does not support JavaScript!</noscript>
</body>
</html>

View File

@ -1,118 +0,0 @@
<!DOCTYPE html>
<!--
Dan Barber's CV
Author: Dan Barber
URL: http://pixelhum.com/cv
-->
<html class='no-js' lang='en' manifest='default.appcache?v=1'>
<head>
<meta charset='utf-8'>
<title>Dan Barber - Web Developer &amp; Designer</title>
<meta content='' name='description'>
<meta content='' name='author'>
<!-- http://t.co/dKP3o1e -->
<meta content='True' name='HandheldFriendly'>
<meta content='320' name='MobileOptimized'>
<meta content='target-densitydpi=160dpi, initial-scale=1' name='viewport'>
<!--
For less capable mobile browsers
<link rel="stylesheet" media="handheld" href="css/handheld.css?v=1">
-->
<!-- For all browsers -->
<link href='css/style.css?v=1' rel='stylesheet'>
<!-- JavaScript at bottom except for Modernizr and Typekit -->
<script src='js/libs/modernizr-1.7.min.js'></script>
<!-- Typekit -->
<script src='http://use.typekit.com/ewi2mjz.js' type='text/javascript'></script>
<script>
try{Typekit.load();}catch(e){}
</script>
<link href='favicon.png' rel='shortcut icon'>
<!-- Microsoft. Delete if not required -->
<meta content='on' http-equiv='cleartype'>
<meta content='IE=edge,chrome=1' http-equiv='X-UA-Compatible'>
<!-- http://t.co/y1jPVnT -->
<link href='/' rel='canonical'>
</head>
<body class='clearfix'>
<div id='stripe'>
<div class='container'>
<canvas height='12' id='colours' width='890'></canvas>
</div>
</div>
<header class='clearfix' role='banner'>
<div class='container'>
<h1 class='icon-logo' id='main_heading'>Dan Barber</h1>
<h2>Web Designer &amp;&nbsp;Developer</h2>
</div>
</header>
<h3>Experience</h3>
<h4><a href="http://new-bamboo.co.uk">New Bamboo</a></h4>
<p>Nov 2012 &mdash; Present</p>
<h4><a href="http://pixelhum.com">Pixelhum</a></h4>
<p>Aug 2010 &mdash; Present</p>
<p>Pixelhum is my own freelance/contract business. I design and build web applications for clients using Ruby on Rails.</p>
<h4><a href="http://www.webbased.co.uk/webbased">WebBased Ltd</a></h4>
<p>Dec 2011 &mdash; Nov 2012</p>
<p>Continued development of a CRM product built using Rails 2.3. I moved version control from SVN to git and brought the Rspec test suite up to date.</p>
<h4><a href="http://www.abiquo.com">Abiquo</a></h4>
<p>June 2010 &mdash; Oct 2011</p>
<p>Updated and maintained Abiquos websites, written in both PHP and Ruby on Rails. This includes the virtual image exchange site Thunderflash (thunderflash.com) which I rebuilt on Rails 3.</p>
<h4><a href="http://dbsmusic.co.uk">Deep Blue Sound</a></h4>
<p>Aug 2008 &mdash; June 2010</p>
<p>Administered and augmented the existing web systems including Moodle, SugarCRM and others. Deputised for the System Administrator.</p>
<h4><a href="http://footworksolutions.co.uk">Footwork Solutions</a></h4>
<p>Nov 2002 &mdash; Aug 2008</p>
<p>I was a lead developer and designer on the Halo care co-ordination system, including training and documentation and support. I was also the System Administrator for both the local network and remote server farm.</p>
<h4>Granite Internet</h4>
<p>2000 &mdash; 2002</p>
<p>Designed and developed and maintained several property company websites based on a single code base. Setup Windows, Linux and FreeBSD servers.</p>
<h4>North Devon Journal</h4>
<p>1998 &mdash; 2000</p>
<p>Set advertisements using QuarkXpress and was responsible for laying out the classified pages. Developed a love for typography.</p>
<footer class='clearfix' role='contentinfo'></footer>
<!-- mathiasbynens.be/notes/async-analytics-snippet Change UA-XXXXX-X to be your site's ID -->
<script src='//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.js'></script>
<script>
window.jQuery || document.write('<script src="js/libs/jquery-1.5.1.min.js">\x3C/script>') / Scripts
</script>
<script src='js/plugins.js'></script>
<script src='js/script.js'></script>
<!--[if (lt IE 9) & (!IEMobile)]>
<script src="js/libs/DOMAssistantCompressed-2.8.js"></script>
<script src="js/libs/selectivizr-1.0.1.js"></script>
<script src="js/libs/respond.min.js"></script>
<![endif]-->
<!-- http://t.co/HZe9oJ4 -->
<script>
var _gaq=[['_setAccount','UA-603600-3'],['_trackPageview']]; // Change UA-XXXXX-X to be your site's ID
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.async=1;
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
s.parentNode.insertBefore(g,s)}(document,'script'));
</script>
<noscript>Your browser does not support JavaScript!</noscript>
</body>
</html>

View File

@ -1,80 +0,0 @@
<!DOCTYPE html>
<!--
Dan Barber's CV
Author: Dan Barber
URL: http://pixelhum.com/cv
-->
<html class='no-js' lang='en' manifest='default.appcache?v=1'>
<head>
<meta charset='utf-8'>
<title>Dan Barber - Web Developer &amp; Designer</title>
<meta content='' name='description'>
<meta content='' name='author'>
<!-- http://t.co/dKP3o1e -->
<meta content='True' name='HandheldFriendly'>
<meta content='320' name='MobileOptimized'>
<meta content='target-densitydpi=160dpi, initial-scale=1' name='viewport'>
<!--
For less capable mobile browsers
<link rel="stylesheet" media="handheld" href="css/handheld.css?v=1">
-->
<!-- For all browsers -->
<link href='css/style.css?v=1' rel='stylesheet'>
<!-- JavaScript at bottom except for Modernizr and Typekit -->
<script src='js/libs/modernizr-1.7.min.js'></script>
<!-- Typekit -->
<script src='http://use.typekit.com/ewi2mjz.js' type='text/javascript'></script>
<script>
try{Typekit.load();}catch(e){}
</script>
<link href='favicon.png' rel='shortcut icon'>
<!-- Microsoft. Delete if not required -->
<meta content='on' http-equiv='cleartype'>
<meta content='IE=edge,chrome=1' http-equiv='X-UA-Compatible'>
<!-- http://t.co/y1jPVnT -->
<link href='/' rel='canonical'>
</head>
<body class='clearfix'>
<div id='stripe'>
<div class='container'>
<canvas height='12' id='colours' width='890'></canvas>
</div>
</div>
<header class='clearfix' role='banner'>
<div class='container'>
<h1 class='icon-logo' id='main_heading'>Dan Barber</h1>
<h2>Web Designer &amp;&nbsp;Developer</h2>
</div>
</header>
<h3>Interests</h3>
<ul>
<li>Drumming</li>
<li>Music</li>
<li>Sound Engineering &amp; Recording</li>
<li>Photography</li>
<li>Cycling</li>
</ul>
<footer class='clearfix' role='contentinfo'></footer>
<!-- mathiasbynens.be/notes/async-analytics-snippet Change UA-XXXXX-X to be your site's ID -->
<script src='//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.js'></script>
<script>
window.jQuery || document.write('<script src="js/libs/jquery-1.5.1.min.js">\x3C/script>') / Scripts
</script>
<script src='js/plugins.js'></script>
<script src='js/script.js'></script>
<!--[if (lt IE 9) & (!IEMobile)]>
<script src="js/libs/DOMAssistantCompressed-2.8.js"></script>
<script src="js/libs/selectivizr-1.0.1.js"></script>
<script src="js/libs/respond.min.js"></script>
<![endif]-->
<!-- http://t.co/HZe9oJ4 -->
<script>
var _gaq=[['_setAccount','UA-603600-3'],['_trackPageview']]; // Change UA-XXXXX-X to be your site's ID
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.async=1;
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
s.parentNode.insertBefore(g,s)}(document,'script'));
</script>
<noscript>Your browser does not support JavaScript!</noscript>
</body>
</html>

View File

@ -1,96 +0,0 @@
<!DOCTYPE html>
<!--
Dan Barber's CV
Author: Dan Barber
URL: http://pixelhum.com/cv
-->
<html class='no-js' lang='en' manifest='default.appcache?v=1'>
<head>
<meta charset='utf-8'>
<title>Dan Barber - Web Developer &amp; Designer</title>
<meta content='' name='description'>
<meta content='' name='author'>
<!-- http://t.co/dKP3o1e -->
<meta content='True' name='HandheldFriendly'>
<meta content='320' name='MobileOptimized'>
<meta content='target-densitydpi=160dpi, initial-scale=1' name='viewport'>
<!--
For less capable mobile browsers
<link rel="stylesheet" media="handheld" href="css/handheld.css?v=1">
-->
<!-- For all browsers -->
<link href='css/style.css?v=1' rel='stylesheet'>
<!-- JavaScript at bottom except for Modernizr and Typekit -->
<script src='js/libs/modernizr-1.7.min.js'></script>
<!-- Typekit -->
<script src='http://use.typekit.com/ewi2mjz.js' type='text/javascript'></script>
<script>
try{Typekit.load();}catch(e){}
</script>
<link href='favicon.png' rel='shortcut icon'>
<!-- Microsoft. Delete if not required -->
<meta content='on' http-equiv='cleartype'>
<meta content='IE=edge,chrome=1' http-equiv='X-UA-Compatible'>
<!-- http://t.co/y1jPVnT -->
<link href='/' rel='canonical'>
</head>
<body class='clearfix'>
<div id='stripe'>
<div class='container'>
<canvas height='12' id='colours' width='890'></canvas>
</div>
</div>
<header class='clearfix' role='banner'>
<div class='container'>
<h1 class='icon-logo' id='main_heading'>Dan Barber</h1>
<h2>Web Designer &amp;&nbsp;Developer</h2>
</div>
</header>
<h3>Portfolio</h3>
<h4><a href="http://www.soundunlimited.co.uk">Soundunlimited</a></h4>
<p>I built a complete online shop system for a local music shop using Ruby on Rails. Rspec was used for testing.</p>
<h4><a href="http://pixelhum.com/neompc">NeoMPC</a></h4>
<p>Web based MPD client. Design and execution. Built using PHP and jQuery and uses mpd.class.php to connect to the MPD server.</p>
<h4><a href="http://pixelhum.com/portfolio/footwork/">Footwork Solutions</a></h4>
<p>Company logo and site design. I built the HTML for the Drupal template.</p>
<h4><a href="http://www.footworksolutions.co.uk">Halo</a></h4>
<p>Hosted care co-ordination system for drug treatment agencies. Design, initial implementation and ongoing development of key modules.</p>
<h4><a href="http://danbarberphoto.com">Dan Barber Photo</a></h4>
<p>My own photography portfolio site. I designed and implemented the site using Ruby on Rails and jQuery, including backend admin pages.</p>
<h4>My CV</h4>
<p>My CV is a responsive design built using Stasis, HAML, SASS and Markdown that makes extensive use of HTML5, CSS3, typography and web fonts. The source code is available on <a href="https://github.com/danbee/cv">Github</a>.</p>
<footer class='clearfix' role='contentinfo'></footer>
<!-- mathiasbynens.be/notes/async-analytics-snippet Change UA-XXXXX-X to be your site's ID -->
<script src='//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.js'></script>
<script>
window.jQuery || document.write('<script src="js/libs/jquery-1.5.1.min.js">\x3C/script>') / Scripts
</script>
<script src='js/plugins.js'></script>
<script src='js/script.js'></script>
<!--[if (lt IE 9) & (!IEMobile)]>
<script src="js/libs/DOMAssistantCompressed-2.8.js"></script>
<script src="js/libs/selectivizr-1.0.1.js"></script>
<script src="js/libs/respond.min.js"></script>
<![endif]-->
<!-- http://t.co/HZe9oJ4 -->
<script>
var _gaq=[['_setAccount','UA-603600-3'],['_trackPageview']]; // Change UA-XXXXX-X to be your site's ID
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.async=1;
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
s.parentNode.insertBefore(g,s)}(document,'script'));
</script>
<noscript>Your browser does not support JavaScript!</noscript>
</body>
</html>

View File

@ -1,76 +0,0 @@
<!DOCTYPE html>
<!--
Dan Barber's CV
Author: Dan Barber
URL: http://pixelhum.com/cv
-->
<html class='no-js' lang='en' manifest='default.appcache?v=1'>
<head>
<meta charset='utf-8'>
<title>Dan Barber - Web Developer &amp; Designer</title>
<meta content='' name='description'>
<meta content='' name='author'>
<!-- http://t.co/dKP3o1e -->
<meta content='True' name='HandheldFriendly'>
<meta content='320' name='MobileOptimized'>
<meta content='target-densitydpi=160dpi, initial-scale=1' name='viewport'>
<!--
For less capable mobile browsers
<link rel="stylesheet" media="handheld" href="css/handheld.css?v=1">
-->
<!-- For all browsers -->
<link href='css/style.css?v=1' rel='stylesheet'>
<!-- JavaScript at bottom except for Modernizr and Typekit -->
<script src='js/libs/modernizr-1.7.min.js'></script>
<!-- Typekit -->
<script src='http://use.typekit.com/ewi2mjz.js' type='text/javascript'></script>
<script>
try{Typekit.load();}catch(e){}
</script>
<link href='favicon.png' rel='shortcut icon'>
<!-- Microsoft. Delete if not required -->
<meta content='on' http-equiv='cleartype'>
<meta content='IE=edge,chrome=1' http-equiv='X-UA-Compatible'>
<!-- http://t.co/y1jPVnT -->
<link href='/' rel='canonical'>
</head>
<body class='clearfix'>
<div id='stripe'>
<div class='container'>
<canvas height='12' id='colours' width='890'></canvas>
</div>
</div>
<header class='clearfix' role='banner'>
<div class='container'>
<h1 class='icon-logo' id='main_heading'>Dan Barber</h1>
<h2>Web Designer &amp;&nbsp;Developer</h2>
</div>
</header>
<h3>Profile</h3>
<p>I have 14 years of experience building web sites and web applications, from small simple websites and services to large enterprise level systems. I focus on simple, usable interfaces and prefer to work by prototyping ideas.</p>
<p>I am detail orientated and I love working alongside others on interesting projects and ideas. I love learning new techniques and technologies and I love simple, elegant, maintainable code.</p>
<footer class='clearfix' role='contentinfo'></footer>
<!-- mathiasbynens.be/notes/async-analytics-snippet Change UA-XXXXX-X to be your site's ID -->
<script src='//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.js'></script>
<script>
window.jQuery || document.write('<script src="js/libs/jquery-1.5.1.min.js">\x3C/script>') / Scripts
</script>
<script src='js/plugins.js'></script>
<script src='js/script.js'></script>
<!--[if (lt IE 9) & (!IEMobile)]>
<script src="js/libs/DOMAssistantCompressed-2.8.js"></script>
<script src="js/libs/selectivizr-1.0.1.js"></script>
<script src="js/libs/respond.min.js"></script>
<![endif]-->
<!-- http://t.co/HZe9oJ4 -->
<script>
var _gaq=[['_setAccount','UA-603600-3'],['_trackPageview']]; // Change UA-XXXXX-X to be your site's ID
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.async=1;
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
s.parentNode.insertBefore(g,s)}(document,'script'));
</script>
<noscript>Your browser does not support JavaScript!</noscript>
</body>
</html>

View File

@ -1,113 +0,0 @@
<!DOCTYPE html>
<!--
Dan Barber's CV
Author: Dan Barber
URL: http://pixelhum.com/cv
-->
<html class='no-js' lang='en' manifest='default.appcache?v=1'>
<head>
<meta charset='utf-8'>
<title>Dan Barber - Web Developer &amp; Designer</title>
<meta content='' name='description'>
<meta content='' name='author'>
<!-- http://t.co/dKP3o1e -->
<meta content='True' name='HandheldFriendly'>
<meta content='320' name='MobileOptimized'>
<meta content='target-densitydpi=160dpi, initial-scale=1' name='viewport'>
<!--
For less capable mobile browsers
<link rel="stylesheet" media="handheld" href="css/handheld.css?v=1">
-->
<!-- For all browsers -->
<link href='css/style.css?v=1' rel='stylesheet'>
<!-- JavaScript at bottom except for Modernizr and Typekit -->
<script src='js/libs/modernizr-1.7.min.js'></script>
<!-- Typekit -->
<script src='http://use.typekit.com/ewi2mjz.js' type='text/javascript'></script>
<script>
try{Typekit.load();}catch(e){}
</script>
<link href='favicon.png' rel='shortcut icon'>
<!-- Microsoft. Delete if not required -->
<meta content='on' http-equiv='cleartype'>
<meta content='IE=edge,chrome=1' http-equiv='X-UA-Compatible'>
<!-- http://t.co/y1jPVnT -->
<link href='/' rel='canonical'>
</head>
<body class='clearfix'>
<div id='stripe'>
<div class='container'>
<canvas height='12' id='colours' width='890'></canvas>
</div>
</div>
<header class='clearfix' role='banner'>
<div class='container'>
<h1 class='icon-logo' id='main_heading'>Dan Barber</h1>
<h2>Web Designer &amp;&nbsp;Developer</h2>
</div>
</header>
<h3>Skills</h3>
<h4>Web Technologies</h4>
<ul>
<li>HTML5/CSS3</li>
<li>Javascript/jQuery</li>
<li>Ruby on Rails</li>
<li>PHP</li>
</ul>
<h4>Databases</h4>
<ul>
<li>SQL</li>
<li>PostgreSQL</li>
<li>MySQL</li>
<li>SQLite3</li>
</ul>
<h4>Design</h4>
<ul>
<li>Photoshop/GIMP</li>
<li>Illustrator</li>
<li>InDesign</li>
<li>Typography</li>
</ul>
<h4>Linux Servers</h4>
<ul>
<li>Web (Apache)</li>
<li>MySQL</li>
<li>PostgreSQL</li>
<li>DNS</li>
<li>Samba</li>
</ul>
<h4>Networking</h4>
<p>Good knowledge of cabling, routing and protocols.</p>
<footer class='clearfix' role='contentinfo'></footer>
<!-- mathiasbynens.be/notes/async-analytics-snippet Change UA-XXXXX-X to be your site's ID -->
<script src='//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.js'></script>
<script>
window.jQuery || document.write('<script src="js/libs/jquery-1.5.1.min.js">\x3C/script>') / Scripts
</script>
<script src='js/plugins.js'></script>
<script src='js/script.js'></script>
<!--[if (lt IE 9) & (!IEMobile)]>
<script src="js/libs/DOMAssistantCompressed-2.8.js"></script>
<script src="js/libs/selectivizr-1.0.1.js"></script>
<script src="js/libs/respond.min.js"></script>
<![endif]-->
<!-- http://t.co/HZe9oJ4 -->
<script>
var _gaq=[['_setAccount','UA-603600-3'],['_trackPageview']]; // Change UA-XXXXX-X to be your site's ID
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.async=1;
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
s.parentNode.insertBefore(g,s)}(document,'script'));
</script>
<noscript>Your browser does not support JavaScript!</noscript>
</body>
</html>

View File

@ -1,31 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>QUnit Tests</title>
<link rel="stylesheet" href="qunit/qunit.css" media="screen">
<!-- reference your own javascript files here -->
<script src="../js/libs/modernizr-1.7.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script src="../js/plugins.js"></script>
<script src="../js/script.js"></script>
<!-- test runner files -->
<script src="qunit/qunit.js"></script>
<script src="tests.js"></script>
</head>
<body class="flora">
<h1 id="qunit-header">QUnit Test Suite</h1>
<h2 id="qunit-banner"></h2>
<div id="qunit-testrunner-toolbar"></div>
<h2 id="qunit-userAgent"></h2>
<ol id="qunit-tests"></ol>
<div id="qunit-fixture">test markup</div>
</body>
</html>

View File

@ -1,148 +0,0 @@
/** Font Family and Sizes */
#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
}
#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
#qunit-tests { font-size: smaller; }
/** Resets */
#qunit-tests, #qunit-tests li ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult {
margin: 0;
padding: 0;
}
/** Header */
#qunit-header {
padding: 0.5em 0 0.5em 1em;
color: #fff;
text-shadow: rgba(0, 0, 0, 0.5) 4px 4px 1px;
background-color: #0d3349;
border-radius: 15px 15px 0 0;
-moz-border-radius: 15px 15px 0 0;
-webkit-border-top-right-radius: 15px;
-webkit-border-top-left-radius: 15px;
}
#qunit-banner {
height: 5px;
}
#qunit-testrunner-toolbar {
padding: 0em 0 0.5em 2em;
}
#qunit-userAgent {
padding: 0.5em 0 0.5em 2.5em;
background-color: #2b81af;
color: #fff;
text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
}
/** Tests: Pass/Fail */
#qunit-tests {
list-style-position: inside;
}
#qunit-tests li {
padding: 0.4em 0.5em 0.4em 2.5em;
border-bottom: 1px solid #fff;
list-style-position: inside;
}
#qunit-tests li strong {
cursor: pointer;
}
#qunit-tests li ol {
margin-top: 0.5em;
padding: 0.5em;
background-color: #fff;
border-radius: 15px;
-moz-border-radius: 15px;
-webkit-border-radius: 15px;
box-shadow: inset 0px 2px 13px #999;
-moz-box-shadow: inset 0px 2px 13px #999;
-webkit-box-shadow: inset 0px 2px 13px #999;
}
#qunit-tests li li {
margin: 0.5em;
padding: 0.4em 0.5em 0.4em 0.5em;
background-color: #fff;
border-bottom: none;
list-style-position: inside;
}
/*** Passing Styles */
#qunit-tests li li.pass {
color: #5E740B;
background-color: #fff;
border-left: 26px solid #C6E746;
}
#qunit-tests li.pass { color: #528CE0; background-color: #D2E0E6; }
#qunit-tests li.pass span.test-name { color: #366097; }
#qunit-tests li li.pass span.test-actual,
#qunit-tests li li.pass span.test-expected { color: #999999; }
strong b.pass { color: #5E740B; }
#qunit-banner.qunit-pass { background-color: #C6E746; }
/*** Failing Styles */
#qunit-tests li li.fail {
color: #710909;
background-color: #fff;
border-left: 26px solid #EE5757;
}
#qunit-tests li.fail { color: #000000; background-color: #EE5757; }
#qunit-tests li.fail span.test-name,
#qunit-tests li.fail span.module-name { color: #000000; }
#qunit-tests li li.fail span.test-actual { color: #EE5757; }
#qunit-tests li li.fail span.test-expected { color: green; }
strong b.fail { color: #710909; }
#qunit-banner.qunit-fail,
#qunit-testrunner-toolbar { background-color: #EE5757; }
/** Footer */
#qunit-testresult {
padding: 0.5em 0.5em 0.5em 2.5em;
color: #2b81af;
background-color: #D2E0E6;
border-radius: 0 0 15px 15px;
-moz-border-radius: 0 0 15px 15px;
-webkit-border-bottom-right-radius: 15px;
-webkit-border-bottom-left-radius: 15px;
}
/** Fixture */
#qunit-fixture {
position: absolute;
top: -10000px;
left: -10000px;
}

File diff suppressed because it is too large Load Diff

View File

@ -1,27 +0,0 @@
// documentation on writing tests here: http://docs.jquery.com/QUnit
// example tests: https://github.com/jquery/qunit/blob/master/test/same.js
// below are some general tests but feel free to delete them.
module("example tests");
test("HTML5 Boilerplate is sweet",function(){
expect(1);
equals("boilerplate".replace("boilerplate","sweet"),"sweet","Yes. HTML5 Boilerplate is, in fact, sweet");
})
// these test things from plugins.js
test("Environment is good",function(){
expect(3);
ok( !!window.log, "log function present");
var history = log.history && log.history.length || 0;
log("logging from the test suite.")
equals( log.history.length - history, 1, "log history keeps track" )
ok( !!window.Modernizr, "Modernizr global is present")
})

View File

@ -1,5 +0,0 @@
# www.robotstxt.org/
# www.google.com/support/webmasters/bin/answer.py?hl=en&answer=156449
User-agent: *

View File

@ -1,13 +0,0 @@
%h3 Contact
%p.fn.n
%span.given-name Dan
%span.family-name Barber
%p
%a.email{:href => "mailto:hello@danbarber.me"} hello@danbarber.me
%p.tel +44 (0) 1752 546981
%p
%a.url{:href => "http://danbarber.me"} http://danbarber.me
%p.icon-github
%a.url{:href => "http://github.com/danbee"} github.com/danbee
%p.icon-twitter
%a.url{:href => "http://twitter.com/danbee"} @danbee

View File

@ -31,6 +31,9 @@
@import "iconfont"
*, *:before, *:after
box-sizing: border-box
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

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 9.9 KiB

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
source/images/middleman.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

Before

Width:  |  Height:  |  Size: 599 B

After

Width:  |  Height:  |  Size: 599 B

View File

Before

Width:  |  Height:  |  Size: 599 B

After

Width:  |  Height:  |  Size: 599 B

View File

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 614 B

After

Width:  |  Height:  |  Size: 614 B

View File

Before

Width:  |  Height:  |  Size: 804 B

After

Width:  |  Height:  |  Size: 804 B

27
source/index.html.erb Normal file
View File

@ -0,0 +1,27 @@
<div class="content clearfix">
<div role="main">
<div class="container clearfix">
<section id="profile">
<%= partial "sections/_profile.markdown" %>
</section>
<section id="skills">
<%= partial "sections/_skills.markdown" %>
</section>
<section id="experience">
<%= partial "sections/_experience.markdown" %>
</section>
</div>
<div class="container clearfix">
<section id="portfolio">
<%= partial "sections/_portfolio.markdown" %>
</section>
<section id="interests">
<%= partial "sections/_interests.markdown" %>
</section>
<section class="vcard" id="contact">
<%= partial "sections/_contact.html.erb" %>
</section>
</div>
</div>
<div role="complementary"></div>
</div>

View File

@ -0,0 +1 @@
//= require_tree .

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