diff --git a/src/static/css/portfolio.css b/src/static/css/portfolio.css index a1144f8..61c82e2 100644 --- a/src/static/css/portfolio.css +++ b/src/static/css/portfolio.css @@ -1,30 +1,73 @@ -.section { - margin: 0; - padding: 2em 0 0; - clear: both; -} - -#me { - position: relative; - width: 240px; - float: left; -} +.center-wrapper { + display: block; + text-align: center; } + .center-wrapper .center-wrapped { + display: inline-block; + vertical-align: top; } .about-section { - margin: 0; - padding: 0; - width: 600px; - float: right; -} + display: inline-block; + margin: 0 24px 0; + width: 312px; + text-align: left; + vertical-align: top; } -.about-section ul { - margin: 0; - padding: 0 0 2em 2em; - font-size: 1em; -} +#me { + width: 280px; } -.about-section p { - margin: 0 0 1em; - text-indent: 2.5em; - font-size: 1em; -} +.technology-list { + justify-content: space-around; } + +.technology { + max-height: 48px; + margin: 2px; } + +#resume { + text-align: center; } + +#portfolio-items { + max-width: 1320px; + margin: 0 auto; } + +.portfolio-item { + margin: 16px; + padding: 16px; + border-radius: 4px; + width: 296px; + text-align: center; + background-color: #e8e8e8; + color: #000; + box-shadow: 4px 4px 6px #000; + flex: 1 0 auto; } + .portfolio-item p { + margin: 0; + font-size: .8em; } + +/* iPhone */ +@media only screen and (min-device-width: 320px) and (max-device-width: 568px) { + .portfolio-item { + width: 256px; } + + #calendar { + display: none; } } +.screenshot { + margin: 0; + width: 100%; + border: 1px #ddd solid; } + +#calendar { + width: 100%; + max-width: 1320px; + height: 480px; } + +/* Force image on its own line for two-column layout */ +@media only screen and (min-width: 691px) and (max-width: 1054px) { + #me { + display: block; + margin: 0 auto; } } +/* Fix spacing for one- and two- column layout */ +@media only screen and (max-width: 1054px) { + .about-section { + margin-top: 16px; } } +.cheeky-aside { + font-size: .5em; } diff --git a/src/static/css/portfolio.scss b/src/static/css/portfolio.scss new file mode 100644 index 0000000..c0f85de --- /dev/null +++ b/src/static/css/portfolio.scss @@ -0,0 +1,103 @@ +.center-wrapper { + display: block; + text-align: center; + + .center-wrapped { + display: inline-block; + vertical-align: top; + } +} + +.about-section { + display: inline-block; + margin: 0 24px 0; + width: 312px; + text-align: left; + vertical-align: top; +} + +#me { + width: 280px; +} + +.technology-list { + justify-content: space-around; +} + +.technology { + max-height: 48px; + margin: 2px; +} + +#resume { + text-align: center; +} + +#portfolio-items { + max-width: 1320px; + margin: 0 auto; +} + +.portfolio-item { + margin: 16px; + padding: 16px; + border-radius: 4px; + width: 296px; + text-align: center; + background-color: #e8e8e8; + color: #000; + box-shadow: 4px 4px 6px #000; + flex: 1 0 auto; + + p { + margin: 0; + font-size: .8em; + } +} + +/* iPhone */ +@media only screen +and (min-device-width : 320px) +and (max-device-width : 568px) { + .portfolio-item { + width: 256px; + } + + #calendar { + display: none; + } +} + +.screenshot { + margin: 0; + width: 100%; + border: 1px #ddd solid; +} + +#calendar { + width: 100%; + max-width: 1320px; + height: 480px; +} + +/* Force image on its own line for two-column layout */ +@media only screen +and (min-width : 691px) +and (max-width : 1054px) { + #me { + display: block; + margin: 0 auto; + } +} + +/* Fix spacing for one- and two- column layout */ +@media only screen +and (max-width : 1054px) { + .about-section { + margin-top: 16px; + } +} + +.cheeky-aside { + font-size: .5em; +} \ No newline at end of file diff --git a/src/static/css/style.css b/src/static/css/style.css index a47228b..2adaf06 100644 --- a/src/static/css/style.css +++ b/src/static/css/style.css @@ -2,76 +2,46 @@ html, body { height: 100%; margin: 0 auto; - background: #111; - color: #0c0; } -body { - font-family: "Ubuntu", sans-serif; -} +body { font-family: Arial, sans-serif; } +a { text-decoration: none; } +a:hover { text-decoration: underline; } -a { - color: #b9f73e; - text-decoration: none; -} - -a:hover { - color: #b9f73e; - text-decoration: underline; -} - -a:visited { - color: #b9f73e; +h1, h2, h3, h4 { + margin: 0; + clear: both; } /* Header */ #header { margin: 0; padding: 16px; - text-align: left; - font-size: 2em; - background: #000; + text-align: center; + background: #222; color: #0f0; - font-family: "Ubuntu Mono", monospace; + font-family: Arial, sans-serif; } -#logo { - margin: 0; - padding: 0; - float: left; - width: 196px; - height: auto; - border: none; -} - -#header h1 { - margin: 0; +#name { + margin: 0; + color: #fff; font-size: 2.5em; } #tagline { margin: 0; - font-size: .75em; - font-weight: normal; + font-size: .9em; + color: #39e639; } -#name { - display: inline-block; - font-family: "Ubuntu", sans-serif; -} - -#name a { - color: #fff; -} /* Navigation */ #nav { width: 100%; - margin: 0; + margin: 16px 0 0; padding: 0; text-align: center; - clear: both; - background: #000; } #nav ul { @@ -87,69 +57,37 @@ a:visited { padding: 0 1em 0; } -#nav li.selected a { - color: #099; -} - -#nav li.selected a:hover { - text-decoration: none; +#nav a { + color: #b9f73e; } /* Main body */ -#main { - margin: 0; - padding: 48px; - position: relative; - background: #000 url('/static/img/dark_stripes.png'); - - text-align: left; +.section { + padding: 16px; } -#main:after { /* Clear floats */ - visibility: hidden; - width: 0; - height: 0; - margin: 0; - padding: 0; - display: block; - clear: both; - font-size: 0; - content: ""; +.section:nth-child(even) { + background-color: #222; + color: #fff; } -#main p { - margin: 0 0 1em 0; - padding: 0; - font-size: 1em; - text-shadow: 2px 2px 4px #000; -} - -#main h2 { +.button { + display: inline-block; margin: 0; - clear: both; + padding: 8px; + + background-color: #428bca; + border-color: #285e8e; + border-radius: 2px; color: #fff; - font-family: "Ubuntu Mono", monospace; - font-size: 3em; - text-align: left; - text-shadow: 2px 2px 16px #000; + text-decoration: none; } -#main h3 { - margin: 0; - clear: both; - - color: #39e639; - font-family: "Ubuntu Mono", monospace; - font-size: 1.75em; -} - -#main h4 { - margin: 0; - - color: #0f0; - font-family: "Ubuntu Mono", monospace; - font-size: 1.5em; +.button:hover { + background-color: #3276b1; + border-color: #284e8e; + text-decoration: none; } /* Footer */ @@ -157,63 +95,6 @@ a:visited { margin: 0; padding: .5em; clear: both; - background: #000; + background: #fff; font-size: 1em; } - -.errorlist { - margin: 0; - padding: .5em; - color: #f00; -} - -.errorlist li { - list-style: none; -} - -body { - max-width: 960px; -} - -/* Handle screen sizes */ -@media (max-width: 980px) { - #header { - font-size: 1.75em; - } -} - -@media (max-width: 900px) { - #header { - font-size: 1.75em; - } -} - -@media (max-width: 800px) { - #header { - font-size: 1.5em; - } - - #logo { - display: block; - width: 128px; - margin: 0 auto; - } -} - -@media (max-width: 700px) { - #header { - font-size: 1.25em; - } -} - -@media (max-width: 650px) { - body { - min-width: 480px; - } - - #logo { - display: block; - width: 64px; - margin: 0 auto; - } -} diff --git a/src/static/css/test.scss b/src/static/css/test.scss new file mode 100644 index 0000000..662c5da --- /dev/null +++ b/src/static/css/test.scss @@ -0,0 +1,34 @@ +@supports not (flex-wrap: wrap) { + .Grid--ffMultilineSupport { + display: block; + & > .Grid-cell { + display: inline-block; + vertical-align: top; + } + } + @mixin grid-sizing($name: "") { + $sep: "-"; + @if $name == "" { + $sep: ""; + } + .#{$name}#{$sep}Grid--full { + display: block; + & > .Grid-cell { + display: block; + } + } + .#{$name}#{$sep}Grid--fit, + .#{$name}#{$sep}Grid--1of2, + .#{$name}#{$sep}Grid--1of3, + .#{$name}#{$sep}Grid--1of4 { + display: flex; + } + } + @include grid-sizing(); + @each $breakpoint in $breakpoints { + $name: nth($breakpoint, 2); + @include breakpoint($name) { + @include grid-sizing($name); + } + } +} \ No newline at end of file diff --git a/src/static/img/acm.png b/src/static/img/acm.png new file mode 100644 index 0000000..f2cd338 Binary files /dev/null and b/src/static/img/acm.png differ diff --git a/src/static/img/mathhammer.png b/src/static/img/mathhammer.png index 5370efa..47d8ee0 100644 Binary files a/src/static/img/mathhammer.png and b/src/static/img/mathhammer.png differ diff --git a/src/static/img/mirrors.png b/src/static/img/mirrors.png new file mode 100644 index 0000000..61b9451 Binary files /dev/null and b/src/static/img/mirrors.png differ diff --git a/src/static/img/potatoipsum.png b/src/static/img/potatoipsum.png new file mode 100644 index 0000000..8958842 Binary files /dev/null and b/src/static/img/potatoipsum.png differ diff --git a/src/static/img/sms-fixer.png b/src/static/img/sms-fixer.png new file mode 100644 index 0000000..d16efbb Binary files /dev/null and b/src/static/img/sms-fixer.png differ diff --git a/src/static/img/smspammer.png b/src/static/img/smspammer.png index da22b57..e905fcd 100644 Binary files a/src/static/img/smspammer.png and b/src/static/img/smspammer.png differ diff --git a/src/static/img/technologies.png b/src/static/img/technologies.png new file mode 100644 index 0000000..717441e Binary files /dev/null and b/src/static/img/technologies.png differ diff --git a/src/static/lib/html5shiv.js b/src/static/lib/html5shiv.js deleted file mode 100644 index 54fe207..0000000 --- a/src/static/lib/html5shiv.js +++ /dev/null @@ -1,4 +0,0 @@ -(function(g,b){function k(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function l(a){var c={},f=a.createElement,b=a.createDocumentFragment,d=b();a.createElement=function(a){if(!e.shivMethods)return f(a);var b;b=c[a]?c[a].cloneNode():m.test(a)?(c[a]=f(a)).cloneNode():f(a);return b.canHaveChildren&&!n.test(a)?d.appendChild(b):b};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+k().join().replace(/\w+/g,function(a){f(a); -d.createElement(a);return'c("'+a+'")'})+");return n}")(e,d)}function h(a){var c;if(a.documentShived)return a;if(e.shivCSS&&!i){c=a.createElement("p");var b=a.getElementsByTagName("head")[0]||a.documentElement;c.innerHTML="x";c=!!b.insertBefore(c.lastChild,b.firstChild)}j||(c=!l(a));if(c)a.documentShived=c;return a}var d=g.html5||{},n=/^<|^(?:button|form|map|select|textarea|object|iframe|option|optgroup)$/i, -m=/^<|^(?:a|b|button|code|div|fieldset|form|h1|h2|h3|h4|h5|h6|i|iframe|img|input|label|li|link|ol|option|p|param|q|script|select|span|strong|style|table|tbody|td|textarea|tfoot|th|thead|tr|ul)$/i,i,j;(function(){var a=b.createElement("a");a.innerHTML="";i="hidden"in a;if(!(a=1==a.childNodes.length))a:{try{b.createElement("a")}catch(c){a=!0;break a}a=b.createDocumentFragment();a="undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}j= -a})();var e={elements:d.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:!1!==d.shivCSS,shivMethods:!1!==d.shivMethods,type:"default",shivDocument:h};g.html5=e;h(b)})(this,document); diff --git a/src/static/lib/modernizr.js b/src/static/lib/modernizr.js index 9511a05..18ee13c 100644 --- a/src/static/lib/modernizr.js +++ b/src/static/lib/modernizr.js @@ -1,4 +1,4 @@ -/* Modernizr 2.5.3 (Custom Build) | MIT & BSD - * Build: http://www.modernizr.com/download/#-fontface-borderradius-canvas-canvastext-svg-shiv-cssclasses-teststyles-testprop-testallprops-hasevent-domprefixes-load +/* Modernizr 2.7.1 (Custom Build) | MIT & BSD + * Build: http://modernizr.com/download/#-borderradius-boxshadow-flexbox-shiv-cssclasses-testprop-testallprops-domprefixes-load */ -;window.Modernizr=function(a,b,c){function A(a){j.cssText=a}function B(a,b){return A(prefixes.join(a+";")+(b||""))}function C(a,b){return typeof a===b}function D(a,b){return!!~(""+a).indexOf(b)}function E(a,b){for(var d in a)if(j[a[d]]!==c)return b=="pfx"?a[d]:!0;return!1}function F(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:C(f,"function")?f.bind(d||b):f}return!1}function G(a,b,c){var d=a.charAt(0).toUpperCase()+a.substr(1),e=(a+" "+n.join(d+" ")+d).split(" ");return C(b,"string")||C(b,"undefined")?E(e,b):(e=(a+" "+o.join(d+" ")+d).split(" "),F(e,b,c))}var d="2.5.3",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k,l={}.toString,m="Webkit Moz O ms",n=m.split(" "),o=m.toLowerCase().split(" "),p={svg:"http://www.w3.org/2000/svg"},q={},r={},s={},t=[],u=t.slice,v,w=function(a,c,d,e){var f,i,j,k=b.createElement("div"),l=b.body,m=l?l:b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),k.appendChild(j);return f=["­",""].join(""),k.id=h,(l?k:m).innerHTML+=f,m.appendChild(k),l||(m.style.background="",g.appendChild(m)),i=c(k,a),l?k.parentNode.removeChild(k):m.parentNode.removeChild(m),!!i},x=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=C(e[d],"function"),C(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),y={}.hasOwnProperty,z;!C(y,"undefined")&&!C(y.call,"undefined")?z=function(a,b){return y.call(a,b)}:z=function(a,b){return b in a&&C(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=u.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(u.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(u.call(arguments)))};return e});var H=function(a,c){var d=a.join(""),f=c.length;w(d,function(a,c){var d=b.styleSheets[b.styleSheets.length-1],g=d?d.cssRules&&d.cssRules[0]?d.cssRules[0].cssText:d.cssText||"":"",h=a.childNodes,i={};while(f--)i[h[f].id]=h[f];e.fontface=/src/i.test(g)&&g.indexOf(c.split(" ")[0])===0},f,c)}(['@font-face {font-family:"font";src:url("https://")}'],["fontface"]);q.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},q.canvastext=function(){return!!e.canvas&&!!C(b.createElement("canvas").getContext("2d").fillText,"function")},q.borderradius=function(){return G("borderRadius")},q.fontface=function(){return e.fontface},q.svg=function(){return!!b.createElementNS&&!!b.createElementNS(p.svg,"svg").createSVGRect};for(var I in q)z(q,I)&&(v=I.toLowerCase(),e[v]=q[I](),t.push((e[v]?"":"no-")+v));return A(""),i=k=null,function(a,b){function g(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function h(){var a=k.elements;return typeof a=="string"?a.split(" "):a}function i(a){var b={},c=a.createElement,e=a.createDocumentFragment,f=e();a.createElement=function(a){var e=(b[a]||(b[a]=c(a))).cloneNode();return k.shivMethods&&e.canHaveChildren&&!d.test(a)?f.appendChild(e):e},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+h().join().replace(/\w+/g,function(a){return b[a]=c(a),f.createElement(a),'c("'+a+'")'})+");return n}")(k,f)}function j(a){var b;return a.documentShived?a:(k.shivCSS&&!e&&(b=!!g(a,"article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio{display:none}canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden]{display:none}audio[controls]{display:inline-block;*display:inline;*zoom:1}mark{background:#FF0;color:#000}")),f||(b=!i(a)),b&&(a.documentShived=b),a)}var c=a.html5||{},d=/^<|^(?:button|form|map|select|textarea)$/i,e,f;(function(){var a=b.createElement("a");a.innerHTML="",e="hidden"in a,f=a.childNodes.length==1||function(){try{b.createElement("a")}catch(a){return!0}var c=b.createDocumentFragment();return typeof c.cloneNode=="undefined"||typeof c.createDocumentFragment=="undefined"||typeof c.createElement=="undefined"}()})();var k={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:j};a.html5=k,j(b)}(this,b),e._version=d,e._domPrefixes=o,e._cssomPrefixes=n,e.hasEvent=x,e.testProp=function(a){return E([a])},e.testAllProps=G,e.testStyles=w,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+t.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return o.call(a)=="[object Function]"}function e(a){return typeof a=="string"}function f(){}function g(a){return!a||a=="loaded"||a=="complete"||a=="uninitialized"}function h(){var a=p.shift();q=1,a?a.t?m(function(){(a.t=="c"?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){a!="img"&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l={},o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};y[c]===1&&(r=1,y[c]=[],l=b.createElement(a)),a=="object"?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),a!="img"&&(r||y[c]===2?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i(b=="c"?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),p.length==1&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&o.call(a.opera)=="[object Opera]",l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return o.call(a)=="[object Array]"},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f",d.insertBefore(c.lastChild,d.firstChild)}function m(){var a=s.elements;return typeof a=="string"?a.split(" "):a}function n(a){var b=j[a[h]];return b||(b={},i++,a[h]=i,j[i]=b),b}function o(a,c,d){c||(c=b);if(k)return c.createElement(a);d||(d=n(c));var g;return d.cache[a]?g=d.cache[a].cloneNode():f.test(a)?g=(d.cache[a]=d.createElem(a)).cloneNode():g=d.createElem(a),g.canHaveChildren&&!e.test(a)&&!g.tagUrn?d.frag.appendChild(g):g}function p(a,c){a||(a=b);if(k)return a.createDocumentFragment();c=c||n(a);var d=c.frag.cloneNode(),e=0,f=m(),g=f.length;for(;e",g="hidden"in a,k=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){g=!0,k=!0}})();var s={elements:d.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:c,shivCSS:d.shivCSS!==!1,supportsUnknownElements:k,shivMethods:d.shivMethods!==!1,type:"default",shivDocument:r,createElement:o,createDocumentFragment:p};a.html5=s,r(b)}(this,b),e._version=d,e._domPrefixes=o,e._cssomPrefixes=n,e.testProp=function(a){return B([a])},e.testAllProps=D,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+s.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f - - - + {% block extrastyle %}{% endblock extrastyle %} + +
diff --git a/src/templates/index.html b/src/templates/index.html index 57bf1f1..d49f6d8 100644 --- a/src/templates/index.html +++ b/src/templates/index.html @@ -3,41 +3,86 @@ {% block extrastyle %}{% endblock %} {% block main %} - -
-

Portfolio

-

View Resume

-
- -
-

About

- Picture of Ian Naval +
+ Picture of Ian Naval -
+

Skills

  • Learns fast.
  • Meets deadlines.
  • Works well with teammates.
  • -
  • Clean, well-documented and efficient code.
  • -
  • Years of experience with Linux and UNIX-based Web servers.
  • -
  • Proficient in Python, JavaScript, HTML, CSS, SQL, Java, Ruby, PHP, and C++.
  • -
  • Experience with Flask, Django, node.js, and AngularJS.
  • +
  • Years of experience with Linux.
  • +
  • Well-documented and efficient code.
-
-

Facts

    -
  • Likes potatoes, music and language.
  • -
  • Received that bag of potatoes for Christmas.
  • +
  • Allergic to fish.
  • +
  • Big fan of potatoes.
  • +
  • Not allergic to shelfish.
  • Does not own those glasses.
  • +
  • Received potatoes for Christmas.
+ +
+

Technologies

+
+ Logos for HTML, CSS, JavaScript, PostgreSQL, MySQL, Python, Ruby, Java, C++, PHP, Flask, Django, Rails, Angular, Node.js, and Git +
+
-
+
+

Portfolio

+ + +
+ +
+ WPI ACM Mirrors screenshot +

WPI ACM Mirrors

+

GNU/Linux mirrors for WPI folk.

+
+ +
+ WPI ACM Website screenshot +

WPI ACM Website

+

Homepage for the WPI ACM chapter.

+
+ +
+ SMS Fixer screenshot +

SMS Fixer

+

Helps restore Android texts from Google Voice.

+
+ +
+ MathHammer screenshot +

MathHammer 40k

+

Damage stats calculator app for WarHammer 40k.

+
+ +
+ SMSpammer screenshot +

SMSpammer

+

App for spamming text messages. (With permission.)

+
+ +
+ Potato Ipsum screenshot +

Potato Ipsum

+

Lorem ipsum generator. With potatoes.

+
+ +
+
+ +

Contact

Information is on my résumé.

+

Weekly Calendar

+
{% endblock main %} diff --git a/src/templates/labs.html b/src/templates/labs.html index 071fbf9..917b25b 100644 --- a/src/templates/labs.html +++ b/src/templates/labs.html @@ -3,10 +3,9 @@ {% block title %} | Labs{% endblock %} {% block main %} -

Labs

+
+

Labs

Welcome to my lab! This where I run all my experimental stuff.

-

Click here to see what I'm - working on this very moment (if anything).

-

Active Projects

- +

Click here to see what I'm working on this very moment (if anything).

+
{% endblock main %}