From cc263dad8bd0ca8ad312abd2549bb509b8116a92 Mon Sep 17 00:00:00 2001 From: Dan Barber Date: Sun, 29 Jul 2012 16:36:05 +0100 Subject: [PATCH] Reworked CV site using Stasis. Added current info. --- .gitignore | 1 + Gemfile | 9 + Gemfile.lock | 36 ++ controller.rb | 6 + css/style.css | 622 ----------------------------- css/{style.sass => style.css.sass} | 15 +- humans.txt | 39 +- img/h/danbarberlogo.png | Bin 8545 -> 12464 bytes img/l/danbarberlogo.png | Bin 4654 -> 6213 bytes index.html | 21 +- index.html.haml | 17 + js/script.js | 12 - js/script.js.coffee | 17 + layouts/main.html.haml | 18 + partials/._header.html.haml.swp | Bin 0 -> 12288 bytes partials/_footer.html.haml | 18 + partials/_head.html.haml | 25 ++ partials/_header.html.haml | 8 + sections/contact.html.haml | 17 + sections/experience.markdown | 43 ++ sections/interests.markdown | 7 + sections/portfolio.markdown | 43 ++ sections/profile.markdown | 3 + sections/skills.markdown | 34 ++ 24 files changed, 335 insertions(+), 676 deletions(-) create mode 100644 Gemfile create mode 100644 Gemfile.lock create mode 100644 controller.rb delete mode 100644 css/style.css rename css/{style.sass => style.css.sass} (98%) create mode 100644 index.html.haml delete mode 100644 js/script.js create mode 100644 js/script.js.coffee create mode 100644 layouts/main.html.haml create mode 100644 partials/._header.html.haml.swp create mode 100644 partials/_footer.html.haml create mode 100644 partials/_head.html.haml create mode 100644 partials/_header.html.haml create mode 100644 sections/contact.html.haml create mode 100644 sections/experience.markdown create mode 100644 sections/interests.markdown create mode 100644 sections/portfolio.markdown create mode 100644 sections/profile.markdown create mode 100644 sections/skills.markdown diff --git a/.gitignore b/.gitignore index b405514..8aba46b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .DS_* .sass-cache *.esproj +public/ diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..78f63ec --- /dev/null +++ b/Gemfile @@ -0,0 +1,9 @@ +source "http://rubygems.org" + +# gem "rails" +gem "stasis" +gem "hpricot" +gem "haml" +gem "sass" +gem "redcarpet" +gem "coffee-script" diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..93508f6 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,36 @@ +GEM + remote: http://rubygems.org/ + specs: + coffee-script (2.2.0) + coffee-script-source + execjs + coffee-script-source (1.3.3) + directory_watcher (1.4.1) + execjs (1.4.0) + multi_json (~> 1.0) + haml (3.1.6) + hpricot (0.8.6) + multi_json (1.3.6) + redcarpet (2.1.1) + redis (2.2.2) + sass (3.1.20) + slop (2.1.0) + stasis (0.1.23) + directory_watcher (~> 1.4.1) + redis (~> 2.2.2) + slop (~> 2.1.0) + tilt (~> 1.3.3) + yajl-ruby (~> 1.0.0) + tilt (1.3.3) + yajl-ruby (1.0.0) + +PLATFORMS + ruby + +DEPENDENCIES + coffee-script + haml + hpricot + redcarpet + sass + stasis diff --git a/controller.rb b/controller.rb new file mode 100644 index 0000000..009c40e --- /dev/null +++ b/controller.rb @@ -0,0 +1,6 @@ +ignore /\/_.*/ +ignore /\/stylesheets\/_.*/ +ignore /Gemfile.*/ +ignore /\/\..+/ + +layout "layouts/main.html.haml" diff --git a/css/style.css b/css/style.css deleted file mode 100644 index 437d566..0000000 --- a/css/style.css +++ /dev/null @@ -1,622 +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 */ -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: #f9f5eb; } - -body { - margin: 0 auto; - padding: 0 0; - font: 100%/1.4 "museo-sans-1", "museo-sans-2", sans-serif; - font-weight: 100; - color: #1e2832; - background-color: transparent; } - -.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 { - content: ""; - display: block; - height: 130px; - font-size: 3em; - margin-top: 0; - text-align: center; - background: url(../img/l/danbarberlogo.png) center center no-repeat; - background-size: 95px; } - -/* 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 */ -.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 */ -/*480px __________________________________________________________________________________________________________ */ -@media only screen and (min-width: 480px) { - /* 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: 2em; - width: 78px; - background-size: 78px; - background-position: top center; - position: relative; - top: 0em; - text-align: right; - 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 { - 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 */ - h1:before { - background-image: url(../img/h/danbarberlogo.png); } - - /* 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 */ diff --git a/css/style.sass b/css/style.css.sass similarity index 98% rename from css/style.sass rename to css/style.css.sass index f83c538..6ca827b 100644 --- a/css/style.sass +++ b/css/style.css.sass @@ -48,16 +48,24 @@ abbr[title] html overflow-y: scroll - background: #F9F5EB + 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: rgb(30, 40, 50) + color: #262626 background-color: transparent +#stripe + background: #262626 + height: 12px + box-shadow: 0 4px 5px rgba(0, 0, 0, 0.1) + canvas + height: 12px + width: 100% + .container margin: 0 auto padding: 0 0 @@ -129,6 +137,9 @@ h6 /* 3.TYPOGRAPHY +.link + float: right + .period font-style: italic diff --git a/humans.txt b/humans.txt index 21a5b67..8452639 100644 --- a/humans.txt +++ b/humans.txt @@ -3,41 +3,12 @@ /* TEAM */ - : - Site: - Twitter: - Location: - -/* THANKS */ - Names (& URL): + Designer & Coder: Dan Barber + Site: http://danbarber.me + Twitter: @danbee + Location: UK /* SITE */ Standards: HTML5, CSS3 Components: Modernizr, jQuery - Software: - - - - -o/- - +oo//- - :ooo+//: - -ooooo///- - /oooooo//: - :ooooooo+//- - -+oooooooo///- - -://////////////+oooooooooo++////////////:: - :+ooooooooooooooooooooooooooooooooooooo+:::- - -/+ooooooooooooooooooooooooooooooo+/::////:- - -:+oooooooooooooooooooooooooooo/::///////:- - --/+ooooooooooooooooooooo+::://////:- - -:+ooooooooooooooooo+:://////:-- - /ooooooooooooooooo+//////:- - -ooooooooooooooooooo////- - /ooooooooo+oooooooooo//: - :ooooooo+/::/+oooooooo+//- - -oooooo/::///////+oooooo///- - /ooo+::://////:---:/+oooo//: - -o+/::///////:- -:/+o+//- - :-:///////:- -:/:// - -////:- --//: - -- -: + Software: Stasis, HAML, SASS, Vim diff --git a/img/h/danbarberlogo.png b/img/h/danbarberlogo.png index fd34e32dd4121a3e3040717719aef37280afd51c..a9017f0f17d945ac19574f41d89cb219d93d95ab 100644 GIT binary patch literal 12464 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 literal 8545 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 Q|NiuVP}WweQnZfvFPieZjsO4v diff --git a/img/l/danbarberlogo.png b/img/l/danbarberlogo.png index d5a5502a5af817d1eae60df687ada6c0852270ff..37966f3433c99f5ecdf4b6cb657e364dd1aefea7 100644 GIT binary patch literal 6213 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 C;6`)+ literal 4654 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 YExb(RzRg0%#vdG8>-~hQIPduX04kjlsQ>@~ diff --git a/index.html b/index.html index 83b13be..1af0d8f 100644 --- a/index.html +++ b/index.html @@ -121,24 +121,28 @@ URL: http://pixelhum.com/cv

  • Pixelhum

    -

    -

    pixelhum.com
    Pixelhum is my own freelance/contract business. I build custom web applications for clients using PHP and Ruby on Rails.

    + +

    +

    Pixelhum is my own freelance/contract business. I build custom web applications for clients using PHP and Ruby on Rails.

  • Abiquo

    -

    + +

    Updating and maintaining Abiquo’s 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.

  • Deep Blue Sound

    -

    + +

    Administering and augmenting the existing web systems including Moodle, SugarCRM and others. Deputising for the System Administrator.

  • Footwork Solutions

    -

    -

    footworksolutions.co.uk
    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.

    + +

    –​

    +

    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.

  • Granite Internet

    @@ -184,6 +188,11 @@ URL: http://pixelhum.com/cv

    wedding.coweyes.co.uk

    My own wedding photo site. Design and implementation of theme for ZenPhoto.

  • +
  • +

    My CV

    +

    http://pixelhum.com/cv

    +

    My CV is a responsive design that makes extensive use of HTML5, CSS3, typography and web fonts.

    +
  • diff --git a/index.html.haml b/index.html.haml new file mode 100644 index 0000000..89ff694 --- /dev/null +++ b/index.html.haml @@ -0,0 +1,17 @@ +.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"} diff --git a/js/script.js b/js/script.js deleted file mode 100644 index 068d663..0000000 --- a/js/script.js +++ /dev/null @@ -1,12 +0,0 @@ -if (navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPad/i)) { -var 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() { -viewportmeta.content = 'width=device-width, minimum-scale=0.25, maximum-scale=1.6'; -}, false); -} -} - -$(function() { -}); \ No newline at end of file diff --git a/js/script.js.coffee b/js/script.js.coffee new file mode 100644 index 0000000..1195357 --- /dev/null +++ b/js/script.js.coffee @@ -0,0 +1,17 @@ +if navigator.userAgent.match(/iPhone/i) or 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", (-> + viewportmeta.content = "width=device-width, minimum-scale=0.25, maximum-scale=1.6" + ), false + +$ -> + canvas = document.getElementById("colours") + context = canvas.getContext("2d") + colours = ['#FF5579', '#8ED600', '#00BAEB'] + offset = 0 + for colour in colours + context.fillStyle = colour + context.fillRect(offset, 0, 48, 12) + offset += 48 diff --git a/layouts/main.html.haml b/layouts/main.html.haml new file mode 100644 index 0000000..7de1fea --- /dev/null +++ b/layouts/main.html.haml @@ -0,0 +1,18 @@ +!!! +/ + Dan Barber's CV + Author: Dan Barber + URL: http://pixelhum.com/cv +/[if IEMobile 7 ] +/[if lt IE 7 ] +/[if IE 7 ] +/[if IE 8 ] +/ [if (gte IE 9)|(gt IEMobile 7)|!(IEMobile)|!(IE)]> "en", :manifest => "default.appcache?v=1"} + / ec9>~8nEtD@a% zHfq&vxw&!iyY=XX00bZa0SG_<0uX=z1pd5$%PQiNPqD;V;Z)|~3km`dfB*y_009U< z00Izz00bZafqx>PA|aO7gy?X}@BigHfDgWZ=e%)VIWL@Nj^a%F{>j;K30P5ss;s5{u literal 0 HcmV?d00001 diff --git a/partials/_footer.html.haml b/partials/_footer.html.haml new file mode 100644 index 0000000..a018aec --- /dev/null +++ b/partials/_footer.html.haml @@ -0,0 +1,18 @@ +%footer.clearfix{:role => "contentinfo"} +/ 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"} +:javascript + window.jQuery || document.write(' + + +/ http://t.co/HZe9oJ4 +:javascript + 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')); +%noscript Your browser does not support JavaScript! diff --git a/partials/_head.html.haml b/partials/_head.html.haml new file mode 100644 index 0000000..415a607 --- /dev/null +++ b/partials/_head.html.haml @@ -0,0 +1,25 @@ +%meta{:charset => "utf-8"}/ +%title Dan Barber - Web Developer & 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 => "width=device-width, target-densitydpi=160dpi, initial-scale=1", :name => "viewport"}/ +/ + For less capable mobile browsers + +/ 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"}/ diff --git a/partials/_header.html.haml b/partials/_header.html.haml new file mode 100644 index 0000000..0c974c5 --- /dev/null +++ b/partials/_header.html.haml @@ -0,0 +1,8 @@ +%div#stripe + .container + %canvas#colours{ :width => 890, :height => 12 } + +%header.clearfix{:role => "banner"} + .container + %h1#main_heading Dan Barber + %h2 Web Designer & Developer diff --git a/sections/contact.html.haml b/sections/contact.html.haml new file mode 100644 index 0000000..e477527 --- /dev/null +++ b/sections/contact.html.haml @@ -0,0 +1,17 @@ +%h3 Contact +%p.fn.n + %span.given-name Dan + %span.family-name Barber +%p.adr + %span.street-address 41D Longacre + %br/ + %span.locality Plymouth + %br/ + %span.postal-code PL7 4RQ + %br/ + %span.country-name United Kingdom +%p + %a.email{:href => "mailto:dan.barber@pixelhum.com"} dan.barber@pixelhum.com +%p.tel +44 (0) 1752 546981 +%p + %a.url{:href => "http://pixelhum.com"} http://pixelhum.com diff --git a/sections/experience.markdown b/sections/experience.markdown new file mode 100644 index 0000000..5f0ce7c --- /dev/null +++ b/sections/experience.markdown @@ -0,0 +1,43 @@ +### Experience + +#### [Pixelhum](http://pixelhum.com) + +Aug 2010 – Present + +Pixelhum is my own freelance/contract business. I build custom web applications for clients using PHP and Ruby on Rails. + +#### [WebBased Ltd](http://www.webbased.co.uk/webbased) + +Dec 2011 – Present + +Continued development of a CRM product built using Rails 2.3. Moved version control from SVN to git and brought the Rspec test suite up to date. + +#### [Abiquo](http://www.abiquo.com) + +June 2010 – Oct 2011 + +Updating and maintaining Abiquo’s 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. + +#### [Deep Blue Sound](http://dbsmusic.co.uk) + +Aug 2008 – June 2010 + +Administering and augmenting the existing web systems including Moodle, SugarCRM and others. Deputising for the System Administrator. + +#### [Footwork Solutions](http://footworksolutions.co.uk) + +Nov 2002 – Aug 2008 + +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. + +#### Granite Internet + +2000 – 2002 + +Designed and developed and maintained several property company websites based on a single code base. Setup Windows, Linux and FreeBSD servers. + +#### North Devon Journal + +1998 – 2000 + +Set advertisements using QuarkXpress and was responsible for laying out the classified pages. Developed a love for typography. diff --git a/sections/interests.markdown b/sections/interests.markdown new file mode 100644 index 0000000..41a818d --- /dev/null +++ b/sections/interests.markdown @@ -0,0 +1,7 @@ +#### Interests + +* Drumming +* Music +* Sound Engineering & Recording +* Photography +* Cycling diff --git a/sections/portfolio.markdown b/sections/portfolio.markdown new file mode 100644 index 0000000..f5d3d47 --- /dev/null +++ b/sections/portfolio.markdown @@ -0,0 +1,43 @@ +### Portfolio + +#### Soundunlimited + +[soundunlimited.co.uk](http://www.soundunlimited.co.uk) + +Complete online shop system implemented using Ruby on Rails. Rspec was used for testing. + +#### NeoMPC + +[pixelhum.com/neompc](http://pixelhum.com/neompc) + +Web based MPD client. Design and execution. Built on PHP and jQuery and uses mpd.class.php. + +#### Footwork Solutions + +[footworksolutions.co.uk](http://footworksolutions.co.uk) + +Company logo and site design. I built the HTML for the Drupal template. + +#### Halo + +haloteam.com + +Hosted care co-ordination system for drug treatment agencies. Design, initial implementation and ongoing development of key modules. + +#### Dan Barber Photo + +[danbarberphoto.com](http://danbarberphoto.com) + +My own photography portfolio site. Designed and implemented the whole site using Ruby on Rails and jQuery, including backend admin pages. + +#### Dan & Katie + +[wedding.coweyes.co.uk](http://wedding.coweyes.co.uk) + +My own wedding photo site. Design and implementation of theme for ZenPhoto. + +#### My CV + +[danbarber.me/cv](http://danbarber.me/cv) + +My CV is a responsive design built using Stasis, HAML, SASS and Markdown that makes extensive use of HTML5, CSS3, typography and web fonts. diff --git a/sections/profile.markdown b/sections/profile.markdown new file mode 100644 index 0000000..c4de414 --- /dev/null +++ b/sections/profile.markdown @@ -0,0 +1,3 @@ +### Profile + +I have 12 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. diff --git a/sections/skills.markdown b/sections/skills.markdown new file mode 100644 index 0000000..5e49462 --- /dev/null +++ b/sections/skills.markdown @@ -0,0 +1,34 @@ +### Skills + +#### Web Technologies + +* HTML5/CSS3 +* Javascript/jQuery +* Ruby on Rails +* PHP + +#### Databases + +* SQL +* PostgreSQL +* MySQL +* SQLite3 + +#### Design + +* Photoshop/GIMP +* Illustrator +* InDesign +* Typography + +#### Linux Servers + +* Web (Apache) +* MySQL +* PostgreSQL +* DNS +* Samba + +#### Networking + +Good knowledge of cabling, routing and protocols.