<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Mark Baird Resume</title>
<link rel="stylesheet" href="style.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://use.fontawesome.com/e5c30224af.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular-sanitize.js"></script>
<script src="http://maps.googleapis.com/maps/api/js?key=AIzaSyAuKk4hds6EWaB59HjDsB-m_Rp5Fnh6-yc"></script>
<script src="script.js"></script>
</head>
<body class="defaults" ng-app="myResume">
<!-- Semantic elements. Yes, we could use the DIV element but this shows
how to use semantic elements and style as a block.-->
<contact ng-controller="contactCtrl">
<name >{{contact.name }}</name>
<address style="margin:0">
<street>
<a target="_blank" href='https://www.google.com/maps/place/@44.9580867,-92.9809601,17z/data=!3m1!4b1!4m5!3m4!1s0x87f7d62b3de4d30b:0x932a02eda69b3fa6!8m2!3d44.958077!4d-92.978833'>
<i class="fa fa-location-arrow"></i></a>{{ contact.street }}
</street>
<city>{{ contact.city }}</city>
<state>{{ contact.state }}</state>
<zip>{{ contact.zip }}</zip>
<!-- Font Awesome icon applied using ng-class and a flag -->
<phone>
<i ng-class="contact.isMobile ? 'fa fa-mobile fa-lg' : 'fa fa-phone fa-lg'" aria-hidden="true"></i>{{ contact.phone }}
</phone>
<email>
<a href="mailto:{{ contact.email }}"><i class="fa fa-envelope" aria-hidden="true"></i>{{ contact.email }}</a>
</email>
</address>
</contact>
<!-- Bootstrap grid -->
<div ng-controller="contentCtrl">
<div class="col-sm-3">
<div class="Section">
<div ng-click="buttonClick(x)" ng-repeat="x in summary">
<button type="button" class="btn btn-link btn-xs" ng-bind="x.title"></button>
</div>
</div>
</div>
<div class="col-sm-9" >
<div class="Section">
<p class="contentTitle" ng-bind="title"></p>
<div ng-bind-html="sectionContent"></div>
</div>
</div>
</div>
</body>
</html>
(function(){
"use strict";
var resume = angular.module("myResume", ['ngSanitize']);
resume.controller('contactCtrl', function($scope) {
// Now of course all of this data would be pulled from a database, either SQL or a DocumentDB.
$scope.contact = {
name: "Tom Thumb",
street: "628 Goodview Ave N",
city: "Bridgeport",
state: "CT",
zip: 55128,
phone: "(657)440-0000",
isMobile: true,
email: "localpart@domain.org",
};
});
resume.controller('contentCtrl', function($scope, getSectionContent){
// Need to build out sevice to get summary of the resume. For now we will stub it in.
// The server will return not only the titles but the ReSTful URL's to get the content.
// This is an example of ReST introducing discoverability.
// You could use ATOM (RFC 4287), a <link> element with a uri attribute for the target URI
// and a rel attribute to describe the kind of relationship. (https://tools.ietf.org/html/rfc4287)
$scope.summary = [{
title: "Professional Summary",
contentURL: "https://www.resume.com/summary",
},{
title: "Technical Skills",
contentURL: "https://www.resume.com/technicalskills",
},{
title: "My Second Job",
contentURL: "https://www.resume.com/jobhistory/1",
}, {
title: "My First Job",
contentURL: "https://www.resume.com/jobhistory/2",
}, {
title: "Education",
contentURL: "https://www.resume.com/education",
}, {
title: "Other Stuff",
contentURL: "https://www.resume.com/sections/5",
}];
$scope.title = $scope.summary[0].title;
$scope.sectionContent = getSectionContent.sectionContent($scope.summary[0].contentURL);
$scope.buttonClick = function(summary){
$scope.title = summary.title;
$scope.sectionContent = getSectionContent.sectionContent(summary.contentURL);
};
});
// Build service to retrieve content from a database but for now we are going to stub this out.
// NOTE: Given the context of this application bringing all of the data over at once in JSON might be better solution.
resume.service("getSectionContent", function(){
var sections = [
{route: "https://www.resume.com/summary", content: "<ul><li>An experienced Senior Software Engineer with extensive experience in Object Oriented Analysis and Design and design patterns.</li><li>An experienced full stack Software Engineer passionate about agile software development with expertise in design, development and construction of software applications built on Microsoft .NET platform.</li><li>Strong oral and written communications skills, including development of formal software engineering principles, practices and processes.</li><li>Self-directed with proven analytical skills called upon to resolve complex problems and implement solutions.</li><li>Selected to advanced team within My Second Job Corporation to evaluate new business potential.</li><li>Technical specialist and evangelist in agile software development, test driven development, continuous integration and object oriented designs. </li><li>Introduced and evangelized industry standard software engineering principles, practices and processes.</li><li>Balanced the trade-offs between technical, analytical, and product needs that resulted in effective solutions.</li><li>Subject matter expert in the business domain of document management and composition, regulatory compliance, financial reporting and XBRL.</li><li>Initiated and contributed to the Software Engineering Community of Practice.</ul>"},
{route: "https://www.resume.com/technicalskills", content: "Knockout, Bootstrap, ReST, AngularJS, JQuery, MVC, WPF, C#, HTML, Xlink, XML, XBRL, XSLT, SQL, VSTO, GIT CSS2/CSS3, AbcPDF, Postscript"},
{route: "https://www.resume.com/jobhistory/1", content: "<p><i>Software Engineer II (November 2016 to August 2017)</i></p><ul><li><b>Partnered with team to build a prototype Skype bot.</b> Using the Skype SDK and Microsoft’s <a href='https://www.luis.ai/home' target='_blank'> Language Understanding Intelligent Service</a> (LUIS) sales was able to use Skype to ask questions about the status of their customers’ orders.</li><li><b>Mentored and lead team with the performance tuning of a WPF application running on Citrix servers.</b> Setup each team members with the proper performance profiling tool sets in addition to the needed resources to assist the team with .NET GC and memory management. Established and setup test data and a test plan on all environments so that progress could be consistently measured with known inputs. Introduced the team to “feature branching” to isolate performance changes and testing.</li></ul> "},
{route: "https://www.resume.com/jobhistory/2", content: "<p><i>Senior Software Engineer (2005 to August 2016)</i></p><ul><li><b>Reduced maintenance costs and response times to Security and Exchange Commission’s (SEC) evolving compliance requirements.</b> Partnered with Senior Engineer to design, prototype and build a SaaS “wizard framework” using C#, MVC, Bootstrap, Knockout achieving 95% unit test coverage. This framework provided the business with the ability to provide customers an easy way to navigate the complex workflow of SEC form submission and to quickly respond to SEC compliance changes without additional development.</li><li><b>Selected to be a member of an advanced team, on-site in Denver, to evaluate, document SaaS solution and establish a working relationship with business partner.</b> Used UML sequence, state and class diagrams to understand and document the system. This allowed us to determine the level of effort needed for new functional enhancements. This also allowed new team members to quickly identify and the learn the functional areas that needed to be enhanced.</li><li><b>Technical Lead responsible for the maintenance of My Second Job’s SaaS application.</b> I was the domain and application expert tasked with leading a team across time zones to enhance and maintain My Second Job’s financial transaction and regulatory disclosure platform.</li><li><b>Partnered with Senior Software Engineer to develop and publish software engineering principles, practices and processes.</b> These engineering principles, practices and processes were technology agnostic and provided each team within My Second Job the flexibility to use the appropriate technologies needed for their domain to build loosely coupled, highly cohesive, testable applications.</li><li><b>Successfully led a team of five increasing the performance of an XBRL reporting engine by 50%.</b> Provided support to the team to help them understand the domain and determine the best design patterns to use. This provided the opportunity for the business to increase their market share of large cap companies with large data sets and complex data relationships.</li><li><b>Increased team’s sprint velocity by mentoring junior developers</b> in Agile methodologies and practices in Test Driven Development, code refactoring, design, estimation, and planning. </li><li><b>Successfully removed performance bottleneck of desktop application.</b> Redesigned reporting engine to generate three reports asynchronously using multiple threads and CPU cores.</li></ul><p><i>Lead Developer (2001 – 2005)</i></p><ul><li><b>Designed and built solution that reduced labor cost associated with scaling during quarterly SEC filing peaks.</b> Successfully designed and built C2 platform on Microsoft Word to facilitate the conversion of financial compliance documents into HTML. This allowed My Second Job to eliminate the training involved for the creation of HTML documents, allowing My Second Job to scale each quarter with temporary workers that were skilled in using Word.</li></ul>"},
{route: "https://www.resume.com/education", content: "<ul><li>Bachelor of Science in Marketing</li><li>Object Oriented Analysis and Design</li><li>Test Driven Development</li></ul>"},
];
this.sectionContent = function(contentURL){
var section = sections.find( function (section) {
return section.route === contentURL;
});
return (section === undefined ? "404: Not found." : section.content);
};
});
})();
/* Style for semantic elements */
contact{
display: block;
text-align: center;
margin: 4px 20px;
padding: 8px;
border-style:solid;
border-width: 1px;
border-radius: 10px;
border-color:lightgrey;
}
name, street, phone, email{
display: block;
margin: 0;
padding:0
}
name{
font-size: 200%;
font-weight: bold;
color:seagreen;
}
address{
color:grey;
}
city::after{
content: ",";
}
/* Custom styles */
.defaults{
font-size:100%;
font-family:Tahoma, Geneva, sans-serif;
}
.summary{
font-weight:bold;
color:seagreen;
margin-bottom:5px;
}
.contentTitle{
font-size:250%;
font-weight: bold;
color:seagreen;
}
.Section{
margin:4px;
padding: 8px;
border-style:solid;
border-width: 1px;
border-radius: 12px;
border-color:lightgrey;
}
/* Fontawesome overrides */
.fa{
padding-right:2px;
color:black;
}