diff --git a/css/bundle.css b/css/bundle.css new file mode 100644 index 0000000..f156d9a --- /dev/null +++ b/css/bundle.css @@ -0,0 +1 @@ +body{padding-bottom:20px;padding-top:0;font-family:Lato,arial,sans-serif;color:#434343;background:#dae3e7;font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.body-content{padding-left:15px;padding-right:15px}.dl-horizontal dt{white-space:normal}input,select,textarea{max-width:280px}.profile-outer img{-moz-animation:profile-image 1s ease-in;-o-animation:profile-image 1s ease-in;-webkit-animation:profile-image 1s ease-in;animation:profile-image 1s ease-in}.profile-image{border-radius:50%}@-moz-keyframes profile-image{from{border-radius:0}to{border-radius:50%}}@-webkit-keyframes profile-image{from{border-radius:0}to{border-radius:50%}}@keyframes profile-image{from{border-radius:0}to{border-radius:50%}}@media (min-width:992px){.pull-right-md{float:right}}h1,h2,h3,h4,h5,h6{font-family:Montserrat,sans-serif;font-weight:700;color:#778492}a{color:#3aaa64;-webkit-transition:all .4s ease-in-out;-moz-transition:all .4s ease-in-out;-ms-transition:all .4s ease-in-out;-o-transition:all .4s ease-in-out;transition:all .4s ease-in-out}a:hover{text-decoration:underline;color:#2d844e}.btn,a.btn{-webkit-transition:all .4s ease-in-out;-moz-transition:all .4s ease-in-out;-ms-transition:all .4s ease-in-out;-o-transition:all .4s ease-in-out;transition:all .4s ease-in-out;font-family:Montserrat,arial,sans-serif;padding:8px 16px;font-weight:700}.btn .fa,a.btn .fa{margin-right:5px}.btn:focus,a.btn:focus{color:#fff}.btn-cta-primary,a.btn-cta-primary{background:#54ba4e;border:1px solid #54ba4e;color:#fff;font-weight:600;text-transform:uppercase}.btn-cta-primary:hover,a.btn-cta-primary:hover{background:#49ac43;border:1px solid #49ac43;color:#fff}.btn-cta-secondary,a.btn-cta-secondary{background:#479fc8;border:1px solid #479fc8;color:#fff;font-weight:600;text-transform:uppercase}.btn-cta-secondary:hover,a.btn-cta-secondary:hover{background:#3893bd;border:1px solid #3893bd;color:#fff}.text-highlight{color:#32383e}.label-theme{background:#3aaa64;font-size:12px}a.dotted-link{border-bottom:1px dotted #778492;color:#778492}a.dotted-link:hover{text-decoration:none;color:#49515a}.header{padding:30px 0;background:#f5f5f5;border-top:10px solid #778492}.header .btn{margin-top:60px;font-weight:700}.header .profile-image{margin-right:30px}.header .profile-content .name{color:#49515a;font-size:38px;margin-bottom:5px;margin-top:30px}.header .profile-content .desc{color:#778492;font-family:Lato,arial,sans-serif;font-weight:400;font-size:24px;margin-top:0;margin-bottom:15px}.latest .item,.section,.section .heading{margin-bottom:30px}.header .profile-content .social a{background:#b0b7bf;width:36px;height:36px;display:inline-block;-webkit-border-radius:50%;-moz-border-radius:50%;-ms-border-radius:50%;-o-border-radius:50%;border-radius:50%;-moz-background-clip:padding;-webkit-background-clip:padding-box;background-clip:padding-box;color:#fff;text-align:center}.header .profile-content .social a:hover{background:#778492}.header .profile-content .social a .fa{font-size:20px;padding-top:8px}.sections-wrapper{padding-top:60px;padding-bottom:60px}.section .section-inner{background:#fff;padding:30px}.section .heading{margin-top:0;color:#545e69;font-size:24px}.section .content .more-link .fa{margin-right:5px;font-size:14px}.latest .item .title{font-size:18px;margin-top:0}.latest .item .title .label{margin-left:5px;font-size:12px}.latest .item .title a{color:#778492}.latest .item .title a:hover{color:#5f6b77}.latest .item .project-image:hover{-webkit-opacity:.8;-moz-opacity:.8;opacity:.8}.latest .divider,.latest .featured{margin-bottom:60px}.latest .featured .title{margin-bottom:5px;font-size:20px}.latest .featured .desc,.latest .featured img,.projects .item{margin-bottom:30px}.latest .featured .summary{margin-bottom:30px;color:#778492}.latest .featured-image{position:relative}.latest .featured-image .text{background:#3aaa64;color:#fff}.latest .featured-image .ribbon{position:absolute;top:-4px;right:-4px;width:110px;height:110px;overflow:hidden}.latest .featured-image .ribbon .text{font-family:Montserrat,sans-serif;position:relative;left:-8px;top:18px;width:158px;padding:10px;font-size:15px;font-weight:700;text-align:center;text-transform:uppercase;color:#fff;background-color:#479fc8;-webkit-transform:rotate(45deg) translate3d(0,0,0);-moz-transform:rotate(45deg) translate3d(0,0,0);-ms-transform:rotate(45deg) translate3d(0,0,0);-o-transform:rotate(45deg) translate3d(0,0,0);transform:rotate(45deg) translate3d(0,0,0)}.latest .featured-image .ribbon .text:after,.latest .featured-image .ribbon .text:before{content:'';position:absolute;bottom:-5px;border-top:5px solid #276582;border-left:5px solid transparent;border-right:5px solid transparent}.latest .featured-image .ribbon .text:before{left:0}.latest .featured-image .ribbon .text:after{right:0}.projects .item .title{font-size:16px;margin-top:0;margin-bottom:5px;line-height:1.5}.projects .item .title a{color:#778492}.projects .item .title a:hover{color:#5f6b77}.experience .item{margin-bottom:30px}.experience .item .title{font-size:16px;margin-top:0;margin-bottom:5px;line-height:1.5}.experience .item .title .place{color:#999;font-weight:400}.experience .item .title .place a{color:#999}.experience .item .title .place a:hover{color:#666}.experience .item .title .year{color:#999;font-weight:400}.ghfeed{height:600px}.ghfeed,.ghfeed *,.ghfeed :after,.ghfeed :before{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.info .fa{margin-right:15px;color:#ccd1d6}.info .fa.fa-envelope-o{font-size:14px}.info ul{margin-bottom:0}.info li{margin-bottom:15px}.info li:last-child{margin-bottom:0}.skills .intro,.skills .skillset .item{margin-bottom:30px}.skills .skillset .level-title{font-size:16px;position:relative;margin-top:0;margin-bottom:10px}.skills .skillset .level-title .level-label{color:#ccd1d6;font-size:14px;font-weight:400;font-family:Lato,arial,sans-serif;position:absolute;right:0;top:0}.skills .skillset .level-bar{height:15px;background:#e8e8e8}.skills .skillset .level-bar-inner{height:15px;background:#66cb8c}.testimonials .item{margin-bottom:30px}.testimonials .item:last-child{margin-bottom:0}.testimonials .item .quote{color:#666;font-size:16px;border-left-color:#9fdeb7;margin-bottom:15px}.testimonials .item .quote .fa{color:#79d19a;margin-right:15px}.credits ul li .fa,.list ul li .fa{margin-right:5px}.testimonials .item .source{font-size:14px;padding-left:30px;font-weight:500}.testimonials .item .source .name{color:#939ea9;font-weight:600}.testimonials .item .source .title{color:#999}.education .item{margin-bottom:30px}.education .item:last-child{margin-bottom:0}.education .item .title{font-size:16px;margin-top:0}.education .item .university{font-family:Lato,arial,sans-serif;font-size:13px;color:#999;font-weight:600;padding-left:25px}.education .item .university .year{color:#b0b7bf;font-weight:500}.languages .item{margin-bottom:15px}.languages .item .title{color:#778492}.languages .item .level{color:#999}.languages .item:last-child{margin-bottom:0}.languages .item .fa{color:#79d19a}.blog .item{margin-bottom:30px}.blog .item .title{font-size:18px;line-height:1.3}.blog .item .title a{color:#778492}.blog .item .title a:hover{color:#5f6b77}.blog .item:last-child{margin-bottom:0}.credits ul li,.list ul li{margin-bottom:10px}.list ul li a{color:#778492}.list ul li a:hover{color:#49515a}.credits ul li a{color:#778492}.credits ul li a:hover{color:#49515a}.credits .btn{margin-bottom:15px}.footer{background:#32383e;color:#fff;padding:10px 0}.footer .copyright{line-height:1.6;color:#a1aab4;font-size:14px}.footer a{color:#fff}.footer .fa-heart{color:#fb866a}@media (max-width:767px){.header{text-align:center}.header .profile-image{float:none!important;margin:0 auto}.header .profile-content{float:none!important;text-align:center}.header .btn{margin-top:30px;float:none!important}.project-image{margin-bottom:15px}}@media (min-width:1400px){.container{width:1360px}} \ No newline at end of file diff --git a/index.html b/index.html index 174c6c2..6e30eea 100644 --- a/index.html +++ b/index.html @@ -1,295 +1,2 @@ - - - - Tommy James Parnell - - - - - - - - - - - - - - - - - - - - -
-
- Tommy Parnell -
-

Tommy Parnell

-

Web Applications Developer

- -
- -
-
- -
-
-
-
-
-

About Me

-
-

Ops turned Dev. I love solving huge web problems, and creating tools for other developers . I often code in C#, or JavaScript but I am open to using any language/technology. I really enjoy working with cloud technologies, and utilizing the latest Continuous Integration techniques. Lately I have been really interested in Elixir, Node.js, and the new streams API for Java

- -

On my free time I like to play guitar, and tinker with open source projects

-
-
-
-
-
-

Work Experience

-
-
-

Software Engineer II Vistaprint.com (2015 - Present)

-

- Software engineer for vistaprint's gallery, and keyword search platform
- Javascript, C#, Ruby, Bower, Grunt, Rake, MVC 6, SQLServer, Backbone.js, React.js, Jenkins, AWS, ElasticBeanstalk
-

-

See Gallery Live

- -
-
-

Lead Systems Administrator Vistaprint.com (2011 - 2015)

-

Devops Engineer, Technical lead for our Monitoring team

-

- Monitoring the health of and providing support for Vistaprint's globally-distributed production infrastructure.
- Creating, implementing, and maintaining tools, automation, and applications to support infrastructure and other internal teams.
- C#, SQL, IIS, SCOM, Nagios, PowerShell, Windows. -

-
-
-
-
-
-
-

Latest Projects

-
- - - -
-
-
- - - -
-
- - - - - - - - - -
-
-
- - - - - - - - - - - +Tommy James Parnell
Tommy Parnell

Tommy Parnell

Web Applications Developer

About Me

Ops turned Dev. I love solving huge web problems, and creating tools for other developers . I often code in C#, or JavaScript but I am open to using any language/technology. I really enjoy working with cloud technologies, and utilizing the latest Continuous Integration techniques. Lately I have been really interested in Elixir, Node.js, and the new streams API for Java

On my free time I like to play guitar, and tinker with open source projects

Work Experience

Software Engineer II Vistaprint.com (2015 - Present)

Software engineer for vistaprint's gallery, and keyword search platform
Javascript, C#, Ruby, Bower, Grunt, Rake, MVC 6, SQLServer, Backbone.js, React.js, Jenkins, AWS, ElasticBeanstalk

See Gallery Live

Lead Systems Administrator Vistaprint.com (2011 - 2015)

Devops Engineer, Technical lead for our Monitoring team

Monitoring the health of and providing support for Vistaprint's globally-distributed production infrastructure.
Creating, implementing, and maintaining tools, automation, and applications to support infrastructure and other internal teams.
C#, SQL, IIS, SCOM, Nagios, PowerShell, Windows.

Latest Projects

\ No newline at end of file diff --git a/js/bowr.js b/js/bowr.js new file mode 100644 index 0000000..84ec401 --- /dev/null +++ b/js/bowr.js @@ -0,0 +1,7 @@ +!function(root,ns,factory){"use strict";"undefined"!=typeof module&&module.exports?module.exports=factory(ns,root):"function"==typeof define&&define.amd?define(function(){return factory(ns,root)}):root[ns]=factory(ns,root)}(window,"detectZoom",function(){var devicePixelRatio=function(){return window.devicePixelRatio||1},fallback=function(){return{zoom:1,devicePxPerCssPx:1}},ie8=function(){var zoom=Math.round(100*(screen.deviceXDPI/screen.logicalXDPI))/100;return{zoom:zoom,devicePxPerCssPx:zoom*devicePixelRatio()}},ie10=function(){var zoom=Math.round(100*(document.documentElement.offsetHeight/window.innerHeight))/100;return{zoom:zoom,devicePxPerCssPx:zoom*devicePixelRatio()}},webkitMobile=function(){var deviceWidth=90==Math.abs(window.orientation)?screen.height:screen.width,zoom=deviceWidth/window.innerWidth;return{zoom:zoom,devicePxPerCssPx:zoom*devicePixelRatio()}},webkit=function(){var important=function(str){return str.replace(/;/g," !important;")},div=document.createElement("div");div.innerHTML="1
2
3
4
5
6
7
8
9
0",div.setAttribute("style",important("font: 100px/1em sans-serif; -webkit-text-size-adjust: none; text-size-adjust: none; height: auto; width: 1em; padding: 0; overflow: visible;"));var container=document.createElement("div");container.setAttribute("style",important("width:0; height:0; overflow:hidden; visibility:hidden; position: absolute;")),container.appendChild(div),document.body.appendChild(container);var zoom=1e3/div.clientHeight;return zoom=Math.round(100*zoom)/100,document.body.removeChild(container),{zoom:zoom,devicePxPerCssPx:zoom*devicePixelRatio()}},firefox4=function(){var zoom=mediaQueryBinarySearch("min--moz-device-pixel-ratio","",0,10,20,1e-4);return zoom=Math.round(100*zoom)/100,{zoom:zoom,devicePxPerCssPx:zoom}},firefox18=function(){return{zoom:firefox4().zoom,devicePxPerCssPx:devicePixelRatio()}},opera11=function(){var zoom=window.top.outerWidth/window.top.innerWidth;return zoom=Math.round(100*zoom)/100,{zoom:zoom,devicePxPerCssPx:zoom*devicePixelRatio()}},mediaQueryBinarySearch=function(property,unit,a,b,maxIter,epsilon){function binarySearch(a,b,maxIter){var mid=(a+b)/2;if(0>=maxIter||epsilon>b-a)return mid;var query="("+property+":"+mid+unit+")";return matchMedia(query).matches?binarySearch(mid,b,maxIter-1):binarySearch(a,mid,maxIter-1)}var matchMedia,head,style,div;window.matchMedia?matchMedia=window.matchMedia:(head=document.getElementsByTagName("head")[0],style=document.createElement("style"),head.appendChild(style),div=document.createElement("div"),div.className="mediaQueryBinarySearch",div.style.display="none",document.body.appendChild(div),matchMedia=function(query){style.sheet.insertRule("@media "+query+"{.mediaQueryBinarySearch {text-decoration: underline} }",0);var matched="underline"==getComputedStyle(div,null).textDecoration;return style.sheet.deleteRule(0),{matches:matched}});var ratio=binarySearch(a,b,maxIter);return div&&(head.removeChild(style),document.body.removeChild(div)),ratio},detectFunction=function(){var func=fallback;return isNaN(screen.logicalXDPI)||isNaN(screen.systemXDPI)?window.navigator.msMaxTouchPoints?func=ie10:"orientation"in window&&"string"==typeof document.body.style.webkitMarquee?func=webkitMobile:"string"==typeof document.body.style.webkitMarquee?func=webkit:navigator.userAgent.indexOf("Opera")>=0?func=opera11:window.devicePixelRatio?func=firefox18:firefox4().zoom>.001&&(func=firefox4):func=ie8,func}();return{zoom:function(){return detectFunction().zoom},device:function(){return detectFunction().devicePxPerCssPx}}}); +!function(d){var e=function(a,b,c,f){this.target=a,this.url=b,this.html=[],this.effectQueue=[],this.options=d.extend({ssl:!1,limit:null,key:null,layoutTemplate:"",entryTemplate:'
  • [{author}@{date}] {title}
    {shortBodyPlain}
  • ',tokens:{},outputMode:"json",dateFormat:"dddd MMM Do",effect:"show",offsetStart:!1,offsetEnd:!1,error:function(){console.log("jQuery RSS: url doesn't link to RSS-Feed")},onData:function(){},success:function(){}},c||{}),this.callback=f||this.options.success};e.htmlTags="doctype,html,head,title,base,link,meta,style,script,noscript,body,article,nav,aside,section,header,footer,h1-h6,hgroup,address,p,hr,pre,blockquote,ol,ul,li,dl,dt,dd,figure,figcaption,div,table,caption,thead,tbody,tfoot,tr,th,td,col,colgroup,form,fieldset,legend,label,input,button,select,datalist,optgroup,option,textarea,keygen,output,progress,meter,details,summary,command,menu,del,ins,img,iframe,embed,object,param,video,audio,source,canvas,track,map,area,a,em,strong,i,b,u,s,small,abbr,q,cite,dfn,sub,sup,time,code,kbd,samp,var,mark,bdi,bdo,ruby,rt,rp,span,br,wbr".split(","),e.prototype.load=function(a){var b="http"+(this.options.ssl?"s":"")+"://ajax.googleapis.com/ajax/services/feed/load?v=1.0&output="+this.options.outputMode+"&callback=?&q="+encodeURIComponent(this.url);this.options.offsetStart&&this.options.offsetEnd&&(this.options.limit=this.options.offsetEnd),null!=this.options.limit&&(b+="&num="+this.options.limit),null!=this.options.key&&(b+="&key="+this.options.key),d.getJSON(b,a)},e.prototype.render=function(){var a=this;this.load(function(b){try{a.feed=b.responseData.feed,a.entries=b.responseData.feed.entries}catch(c){return a.entries=[],a.feed=null,a.options.error.call(a)}b=a.generateHTMLForEntries(),a.target.append(b.layout),0!==b.entries.length&&(d.isFunction(a.options.onData)&&a.options.onData.call(a),a.appendEntriesAndApplyEffects(d("entries",b.layout),b.entries)),0=c&&index<=f&&a.isRelevant(this,b.entries)&&(c=a.evaluateStringForEntry(a.options.entryTemplate,this),b.entries.push(c)):a.isRelevant(this,b.entries)&&(c=a.evaluateStringForEntry(a.options.entryTemplate,this),b.entries.push(c))}),b.layout=this.options.entryTemplate?this.wrapContent(this.options.layoutTemplate.replace("{entries}","")):this.wrapContent("
    "),b},e.prototype.wrapContent=function(a){return d(0!==d.trim(a).indexOf("<")?"
    "+a+"
    ":a)},e.prototype.applyEffect=function(a,b,c){switch(b){case"slide":a.slideDown("slow",c);break;case"slideFast":a.slideDown(c);break;case"slideSynced":this.effectQueue.push({element:a,effect:"slide"});break;case"slideFastSynced":this.effectQueue.push({element:a,effect:"slideFast"})}},e.prototype.executeEffectQueue=function(a){var b=this;this.effectQueue.reverse();var c=function(){var f=b.effectQueue.pop();f?b.applyEffect(f.element,f.effect,c):a&&a()};c()},e.prototype.evaluateStringForEntry=function(a,b){var c=a,f=this;return d(a.match(/(\{.*?\})/g)).each(function(){var a=this.toString();c=c.replace(a,f.getValueForToken(a,b))}),c},e.prototype.isRelevant=function(a,b){var c=this.getTokenMap(a);return this.options.filter?this.options.filterLimit&&this.options.filterLimit==b.length?!1:this.options.filter(a,c):!0},e.prototype.getTokenMap=function(a){if(!this.feedTokens){var b=JSON.parse(JSON.stringify(this.feed));delete b.entries,this.feedTokens=b}return d.extend({feed:this.feedTokens,url:a.link,author:a.author,date:moment(a.publishedDate).format(this.options.dateFormat),title:a.title,body:a.content,shortBody:a.contentSnippet,bodyPlain:function(a){for(var a=a.content.replace(//gim,"").replace(/<\/?[^>]+>/gi,""),b=0;b]+>/gi,""),index:d.inArray(a,this.entries),totalEntries:this.entries.length,teaserImage:function(a){try{return a.content.match(/()/gi)[0]}catch(b){return""}}(a),teaserImageUrl:function(a){try{return a.content.match(/()/gi)[0].match(/src="(.*?)"/)[1]}catch(b){return""}}(a)},this.options.tokens)},e.prototype.getValueForToken=function(a,b){var c=this.getTokenMap(b),d=a.replace(/[\{\}]/g,""),d=c[d];if("undefined"!=typeof d)return"function"==typeof d?d(b,c):d;throw Error("Unknown token: "+a)},d.fn.rss=function(a,b,c){return new e(this,a,b,c).render(),this}}(jQuery); +jQuery.easing.jswing=jQuery.easing.swing,jQuery.extend(jQuery.easing,{def:"easeOutQuad",swing:function(x,t,b,c,d){return jQuery.easing[jQuery.easing.def](x,t,b,c,d)},easeInQuad:function(x,t,b,c,d){return c*(t/=d)*t+b},easeOutQuad:function(x,t,b,c,d){return-c*(t/=d)*(t-2)+b},easeInOutQuad:function(x,t,b,c,d){return(t/=d/2)<1?c/2*t*t+b:-c/2*(--t*(t-2)-1)+b},easeInCubic:function(x,t,b,c,d){return c*(t/=d)*t*t+b},easeOutCubic:function(x,t,b,c,d){return c*((t=t/d-1)*t*t+1)+b},easeInOutCubic:function(x,t,b,c,d){return(t/=d/2)<1?c/2*t*t*t+b:c/2*((t-=2)*t*t+2)+b},easeInQuart:function(x,t,b,c,d){return c*(t/=d)*t*t*t+b},easeOutQuart:function(x,t,b,c,d){return-c*((t=t/d-1)*t*t*t-1)+b},easeInOutQuart:function(x,t,b,c,d){return(t/=d/2)<1?c/2*t*t*t*t+b:-c/2*((t-=2)*t*t*t-2)+b},easeInQuint:function(x,t,b,c,d){return c*(t/=d)*t*t*t*t+b},easeOutQuint:function(x,t,b,c,d){return c*((t=t/d-1)*t*t*t*t+1)+b},easeInOutQuint:function(x,t,b,c,d){return(t/=d/2)<1?c/2*t*t*t*t*t+b:c/2*((t-=2)*t*t*t*t+2)+b},easeInSine:function(x,t,b,c,d){return-c*Math.cos(t/d*(Math.PI/2))+c+b},easeOutSine:function(x,t,b,c,d){return c*Math.sin(t/d*(Math.PI/2))+b},easeInOutSine:function(x,t,b,c,d){return-c/2*(Math.cos(Math.PI*t/d)-1)+b},easeInExpo:function(x,t,b,c,d){return 0==t?b:c*Math.pow(2,10*(t/d-1))+b},easeOutExpo:function(x,t,b,c,d){return t==d?b+c:c*(-Math.pow(2,-10*t/d)+1)+b},easeInOutExpo:function(x,t,b,c,d){return 0==t?b:t==d?b+c:(t/=d/2)<1?c/2*Math.pow(2,10*(t-1))+b:c/2*(-Math.pow(2,-10*--t)+2)+b},easeInCirc:function(x,t,b,c,d){return-c*(Math.sqrt(1-(t/=d)*t)-1)+b},easeOutCirc:function(x,t,b,c,d){return c*Math.sqrt(1-(t=t/d-1)*t)+b},easeInOutCirc:function(x,t,b,c,d){return(t/=d/2)<1?-c/2*(Math.sqrt(1-t*t)-1)+b:c/2*(Math.sqrt(1-(t-=2)*t)+1)+b},easeInElastic:function(x,t,b,c,d){var s=1.70158,p=0,a=c;if(0==t)return b;if(1==(t/=d))return b+c;if(p||(p=.3*d),at?-.5*a*Math.pow(2,10*(t-=1))*Math.sin(2*(t*d-s)*Math.PI/p)+b:a*Math.pow(2,-10*(t-=1))*Math.sin(2*(t*d-s)*Math.PI/p)*.5+c+b},easeInBack:function(x,t,b,c,d,s){return void 0==s&&(s=1.70158),c*(t/=d)*t*((s+1)*t-s)+b},easeOutBack:function(x,t,b,c,d,s){return void 0==s&&(s=1.70158),c*((t=t/d-1)*t*((s+1)*t+s)+1)+b},easeInOutBack:function(x,t,b,c,d,s){return void 0==s&&(s=1.70158),(t/=d/2)<1?c/2*t*t*(((s*=1.525)+1)*t-s)+b:c/2*((t-=2)*t*(((s*=1.525)+1)*t+s)+2)+b},easeInBounce:function(x,t,b,c,d){return c-jQuery.easing.easeOutBounce(x,d-t,0,c,d)+b},easeOutBounce:function(x,t,b,c,d){return(t/=d)<1/2.75?7.5625*c*t*t+b:2/2.75>t?c*(7.5625*(t-=1.5/2.75)*t+.75)+b:2.5/2.75>t?c*(7.5625*(t-=2.25/2.75)*t+.9375)+b:c*(7.5625*(t-=2.625/2.75)*t+.984375)+b},easeInOutBounce:function(x,t,b,c,d){return d/2>t?.5*jQuery.easing.easeInBounce(x,2*t,0,c,d)+b:.5*jQuery.easing.easeOutBounce(x,2*t-d,0,c,d)+.5*c+b}}); +$(document).ready(function($){$(".level-bar-inner").css("width","0"),$(window).on("load",function(){$(".level-bar-inner").each(function(){var itemWidth=$(this).data("level");$(this).animate({width:itemWidth},800)})}),$("#rss-feeds").rss("https://blog.tommyparnell.com/rss",{limit:3,effect:"slideFastSynced",layoutTemplate:"
    {entries}
    ",ssl:!0,success:function(){$("#blog").show()},entryTemplate:'

    {title}

    {shortBodyPlain}

    Read more
    '})}); +!function(w){"use strict";w.matchMedia=w.matchMedia||function(doc,undefined){var bool,docElem=doc.documentElement,refNode=docElem.firstElementChild||docElem.firstChild,fakeBody=doc.createElement("body"),div=doc.createElement("div");return div.id="mq-test-1",div.style.cssText="position:absolute;top:-100em",fakeBody.style.background="none",fakeBody.appendChild(div),function(q){return div.innerHTML='­',docElem.insertBefore(fakeBody,refNode),bool=42===div.offsetWidth,docElem.removeChild(fakeBody),{matches:bool,media:q}}}(w.document)}(this),function(w){"use strict";function callMedia(){applyMedia(!0)}var respond={};w.respond=respond,respond.update=function(){};var requestQueue=[],xmlHttp=function(){var xmlhttpmethod=!1;try{xmlhttpmethod=new w.XMLHttpRequest}catch(e){xmlhttpmethod=new w.ActiveXObject("Microsoft.XMLHTTP")}return function(){return xmlhttpmethod}}(),ajax=function(url,callback){var req=xmlHttp();req&&(req.open("GET",url,!0),req.onreadystatechange=function(){4!==req.readyState||200!==req.status&&304!==req.status||callback(req.responseText)},4!==req.readyState&&req.send(null))};if(respond.ajax=ajax,respond.queue=requestQueue,respond.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},respond.mediaQueriesSupported=w.matchMedia&&null!==w.matchMedia("only all")&&w.matchMedia("only all").matches,!respond.mediaQueriesSupported){var lastCall,resizeDefer,eminpx,doc=w.document,docElem=doc.documentElement,mediastyles=[],rules=[],appendedEls=[],parsedSheets={},resizeThrottle=30,head=doc.getElementsByTagName("head")[0]||docElem,base=doc.getElementsByTagName("base")[0],links=head.getElementsByTagName("link"),getEmValue=function(){var ret,div=doc.createElement("div"),body=doc.body,originalHTMLFontSize=docElem.style.fontSize,originalBodyFontSize=body&&body.style.fontSize,fakeUsed=!1;return div.style.cssText="position:absolute;font-size:1em;width:1em",body||(body=fakeUsed=doc.createElement("body"),body.style.background="none"),docElem.style.fontSize="100%",body.style.fontSize="100%",body.appendChild(div),fakeUsed&&docElem.insertBefore(body,docElem.firstChild),ret=div.offsetWidth,fakeUsed?docElem.removeChild(body):body.removeChild(div),docElem.style.fontSize=originalHTMLFontSize,originalBodyFontSize&&(body.style.fontSize=originalBodyFontSize),ret=eminpx=parseFloat(ret)},applyMedia=function(fromResize){var name="clientWidth",docElemProp=docElem[name],currWidth="CSS1Compat"===doc.compatMode&&docElemProp||doc.body[name]||docElemProp,styleBlocks={},lastLink=links[links.length-1],now=(new Date).getTime();if(fromResize&&lastCall&&resizeThrottle>now-lastCall)return w.clearTimeout(resizeDefer),void(resizeDefer=w.setTimeout(applyMedia,resizeThrottle));lastCall=now;for(var i in mediastyles)if(mediastyles.hasOwnProperty(i)){var thisstyle=mediastyles[i],min=thisstyle.minw,max=thisstyle.maxw,minnull=null===min,maxnull=null===max,em="em";min&&(min=parseFloat(min)*(min.indexOf(em)>-1?eminpx||getEmValue():1)),max&&(max=parseFloat(max)*(max.indexOf(em)>-1?eminpx||getEmValue():1)),thisstyle.hasquery&&(minnull&&maxnull||!(minnull||currWidth>=min)||!(maxnull||max>=currWidth))||(styleBlocks[thisstyle.media]||(styleBlocks[thisstyle.media]=[]),styleBlocks[thisstyle.media].push(rules[thisstyle.rules]))}for(var j in appendedEls)appendedEls.hasOwnProperty(j)&&appendedEls[j]&&appendedEls[j].parentNode===head&&head.removeChild(appendedEls[j]);appendedEls.length=0;for(var k in styleBlocks)if(styleBlocks.hasOwnProperty(k)){var ss=doc.createElement("style"),css=styleBlocks[k].join("\n");ss.type="text/css",ss.media=k,head.insertBefore(ss,lastLink.nextSibling),ss.styleSheet?ss.styleSheet.cssText=css:ss.appendChild(doc.createTextNode(css)),appendedEls.push(ss)}},translate=function(styles,href,media){var qs=styles.replace(respond.regex.keyframes,"").match(respond.regex.media),ql=qs&&qs.length||0;href=href.substring(0,href.lastIndexOf("/"));var repUrls=function(css){return css.replace(respond.regex.urls,"$1"+href+"$2$3")},useMedia=!ql&&media;href.length&&(href+="/"),useMedia&&(ql=1);for(var i=0;ql>i;i++){var fullq,thisq,eachq,eql;useMedia?(fullq=media,rules.push(repUrls(styles))):(fullq=qs[i].match(respond.regex.findStyles)&&RegExp.$1,rules.push(RegExp.$2&&repUrls(RegExp.$2))),eachq=fullq.split(","),eql=eachq.length;for(var j=0;eql>j;j++)thisq=eachq[j],mediastyles.push({media:thisq.split("(")[0].match(respond.regex.only)&&RegExp.$2||"all",rules:rules.length-1,hasquery:thisq.indexOf("(")>-1,minw:thisq.match(respond.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:thisq.match(respond.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}applyMedia()},makeRequests=function(){if(requestQueue.length){var thisRequest=requestQueue.shift();ajax(thisRequest.href,function(styles){translate(styles,thisRequest.href,thisRequest.media),parsedSheets[thisRequest.href]=!0,w.setTimeout(function(){makeRequests()},0)})}},ripCSS=function(){for(var i=0;i #mq-test-1 { width: 42px; }',docElem.insertBefore(fakeBody,refNode),bool=42===div.offsetWidth,docElem.removeChild(fakeBody),{matches:bool,media:q}}}(w.document)}(this),function(w){"use strict";if(w.matchMedia&&w.matchMedia("all").addListener)return!1;var localMatchMedia=w.matchMedia,hasMediaQueries=localMatchMedia("only all").matches,isListening=!1,timeoutID=0,queries=[],handleChange=function(evt){w.clearTimeout(timeoutID),timeoutID=w.setTimeout(function(){for(var i=0,il=queries.length;il>i;i++){var mql=queries[i].mql,listeners=queries[i].listeners||[],matches=localMatchMedia(mql.media).matches;if(matches!==mql.matches){mql.matches=matches;for(var j=0,jl=listeners.length;jl>j;j++)listeners[j].call(w,mql)}}},30)};w.matchMedia=function(media){var mql=localMatchMedia(media),listeners=[],index=0;return mql.addListener=function(listener){hasMediaQueries&&(isListening||(isListening=!0,w.addEventListener("resize",handleChange,!0)),0===index&&(index=queries.push({mql:mql,listeners:listeners})),listeners.push(listener))},mql.removeListener=function(listener){for(var i=0,il=listeners.length;il>i;i++)listeners[i]===listener&&listeners.splice(i,1)},mql}}(this),function(w){"use strict";function callMedia(){applyMedia(!0)}var respond={};w.respond=respond,respond.update=function(){};var requestQueue=[],xmlHttp=function(){var xmlhttpmethod=!1;try{xmlhttpmethod=new w.XMLHttpRequest}catch(e){xmlhttpmethod=new w.ActiveXObject("Microsoft.XMLHTTP")}return function(){return xmlhttpmethod}}(),ajax=function(url,callback){var req=xmlHttp();req&&(req.open("GET",url,!0),req.onreadystatechange=function(){4!==req.readyState||200!==req.status&&304!==req.status||callback(req.responseText)},4!==req.readyState&&req.send(null))};if(respond.ajax=ajax,respond.queue=requestQueue,respond.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},respond.mediaQueriesSupported=w.matchMedia&&null!==w.matchMedia("only all")&&w.matchMedia("only all").matches,!respond.mediaQueriesSupported){var lastCall,resizeDefer,eminpx,doc=w.document,docElem=doc.documentElement,mediastyles=[],rules=[],appendedEls=[],parsedSheets={},resizeThrottle=30,head=doc.getElementsByTagName("head")[0]||docElem,base=doc.getElementsByTagName("base")[0],links=head.getElementsByTagName("link"),getEmValue=function(){var ret,div=doc.createElement("div"),body=doc.body,originalHTMLFontSize=docElem.style.fontSize,originalBodyFontSize=body&&body.style.fontSize,fakeUsed=!1;return div.style.cssText="position:absolute;font-size:1em;width:1em",body||(body=fakeUsed=doc.createElement("body"),body.style.background="none"),docElem.style.fontSize="100%",body.style.fontSize="100%",body.appendChild(div),fakeUsed&&docElem.insertBefore(body,docElem.firstChild),ret=div.offsetWidth,fakeUsed?docElem.removeChild(body):body.removeChild(div),docElem.style.fontSize=originalHTMLFontSize,originalBodyFontSize&&(body.style.fontSize=originalBodyFontSize),ret=eminpx=parseFloat(ret)},applyMedia=function(fromResize){var name="clientWidth",docElemProp=docElem[name],currWidth="CSS1Compat"===doc.compatMode&&docElemProp||doc.body[name]||docElemProp,styleBlocks={},lastLink=links[links.length-1],now=(new Date).getTime();if(fromResize&&lastCall&&resizeThrottle>now-lastCall)return w.clearTimeout(resizeDefer),void(resizeDefer=w.setTimeout(applyMedia,resizeThrottle));lastCall=now;for(var i in mediastyles)if(mediastyles.hasOwnProperty(i)){var thisstyle=mediastyles[i],min=thisstyle.minw,max=thisstyle.maxw,minnull=null===min,maxnull=null===max,em="em";min&&(min=parseFloat(min)*(min.indexOf(em)>-1?eminpx||getEmValue():1)),max&&(max=parseFloat(max)*(max.indexOf(em)>-1?eminpx||getEmValue():1)),thisstyle.hasquery&&(minnull&&maxnull||!(minnull||currWidth>=min)||!(maxnull||max>=currWidth))||(styleBlocks[thisstyle.media]||(styleBlocks[thisstyle.media]=[]),styleBlocks[thisstyle.media].push(rules[thisstyle.rules]))}for(var j in appendedEls)appendedEls.hasOwnProperty(j)&&appendedEls[j]&&appendedEls[j].parentNode===head&&head.removeChild(appendedEls[j]);appendedEls.length=0;for(var k in styleBlocks)if(styleBlocks.hasOwnProperty(k)){var ss=doc.createElement("style"),css=styleBlocks[k].join("\n");ss.type="text/css",ss.media=k,head.insertBefore(ss,lastLink.nextSibling),ss.styleSheet?ss.styleSheet.cssText=css:ss.appendChild(doc.createTextNode(css)),appendedEls.push(ss)}},translate=function(styles,href,media){var qs=styles.replace(respond.regex.keyframes,"").match(respond.regex.media),ql=qs&&qs.length||0;href=href.substring(0,href.lastIndexOf("/"));var repUrls=function(css){return css.replace(respond.regex.urls,"$1"+href+"$2$3")},useMedia=!ql&&media;href.length&&(href+="/"),useMedia&&(ql=1);for(var i=0;ql>i;i++){var fullq,thisq,eachq,eql;useMedia?(fullq=media,rules.push(repUrls(styles))):(fullq=qs[i].match(respond.regex.findStyles)&&RegExp.$1,rules.push(RegExp.$2&&repUrls(RegExp.$2))),eachq=fullq.split(","),eql=eachq.length;for(var j=0;eql>j;j++)thisq=eachq[j],mediastyles.push({media:thisq.split("(")[0].match(respond.regex.only)&&RegExp.$2||"all",rules:rules.length-1,hasquery:thisq.indexOf("(")>-1,minw:thisq.match(respond.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:thisq.match(respond.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}applyMedia()},makeRequests=function(){if(requestQueue.length){var thisRequest=requestQueue.shift();ajax(thisRequest.href,function(styles){translate(styles,thisRequest.href,thisRequest.media),parsedSheets[thisRequest.href]=!0,w.setTimeout(function(){makeRequests()},0)})}},ripCSS=function(){for(var i=0;i #mq-test-1 { width: 42px; }',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";if(a.matchMedia&&a.matchMedia("all").addListener)return!1;var b=a.matchMedia,c=b("only all").matches,d=!1,e=0,f=[],g=function(){a.clearTimeout(e),e=a.setTimeout(function(){for(var c=0,d=f.length;d>c;c++){var e=f[c].mql,g=f[c].listeners||[],h=b(e.media).matches;if(h!==e.matches){e.matches=h;for(var i=0,j=g.length;j>i;i++)g[i].call(a,e)}}},30)};a.matchMedia=function(e){var h=b(e),i=[],j=0;return h.addListener=function(b){c&&(d||(d=!0,a.addEventListener("resize",g,!0)),0===j&&(j=f.push({mql:h,listeners:i})),i.push(b))},h.removeListener=function(a){for(var b=0,c=i.length;c>b;b++)i[b]===a&&i.splice(b,1)},h}}(this),function(a){"use strict";function b(){u(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))};if(c.ajax=f,c.queue=d,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var g,h,i,j=a.document,k=j.documentElement,l=[],m=[],n=[],o={},p=30,q=j.getElementsByTagName("head")[0]||k,r=j.getElementsByTagName("base")[0],s=q.getElementsByTagName("link"),t=function(){var a,b=j.createElement("div"),c=j.body,d=k.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=j.createElement("body"),c.style.background="none"),k.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&k.insertBefore(c,k.firstChild),a=b.offsetWidth,f?k.removeChild(c):c.removeChild(b),k.style.fontSize=d,e&&(c.style.fontSize=e),a=i=parseFloat(a)},u=function(b){var c="clientWidth",d=k[c],e="CSS1Compat"===j.compatMode&&d||j.body[c]||d,f={},o=s[s.length-1],r=(new Date).getTime();if(b&&g&&p>r-g)return a.clearTimeout(h),void(h=a.setTimeout(u,p));g=r;for(var v in l)if(l.hasOwnProperty(v)){var w=l[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?i||t():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?i||t():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(m[w.rules]))}for(var C in n)n.hasOwnProperty(C)&&n[C]&&n[C].parentNode===q&&q.removeChild(n[C]);n.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=j.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,q.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(j.createTextNode(F)),n.push(E)}},v=function(a,b,d){var e=a.replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var g=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},h=!f&&d;b.length&&(b+="/"),h&&(f=1);for(var i=0;f>i;i++){var j,k,n,o;h?(j=d,m.push(g(a))):(j=e[i].match(c.regex.findStyles)&&RegExp.$1,m.push(RegExp.$2&&g(RegExp.$2))),n=j.split(","),o=n.length;for(var p=0;o>p;p++)k=n[p],l.push({media:k.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:m.length-1,hasquery:k.indexOf("(")>-1,minw:k.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:k.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},w=function(){if(d.length){var b=d.shift();f(b.href,function(c){v(c,b.href,b.media),o[b.href]=!0,a.setTimeout(function(){w()},0)})}},x=function(){for(var b=0;b