I’m a passionate, creative, certified and dedicated AWS (Amazon Web Services) Specialist based in Bend, Oregon. My last full-time role was as a Software Engineer for a leading provider of real estate marketing optimization for large holding companies throughout the United States. I’m now pursuing a contract, remote or on-premise role as a full-time cloud engineer helping business migrate to and/or optimize and secure their applications in the cloud. I am an AWS Certified Solutions Architect – Associate and AWS Certified Developer – Associate and am preparing for the AWS SysOps certification.
Github:
- a web-based version-control and collaboration platform for software developers.
Github Anguish:
- the feeling and despair experienced when you lose your 5,000+ commit history across multiple repositories upon leaving your employer of many years.
git add where-did-my-extensive-commit-history-go.waaaaa
git commit -m "yes it can probably be retrieved with permission to github from your previous employer"
git push origin master
A little bit about me…

I like hoodies but don’t love them. That probably speaks volumes about a presumed tech nerd.
Things I DO love are creative photography, camera/video/drone gear, RUSH (and all the great prog and djent bands they inspired), Honest Trailers, snarky animated shows, beaches with beautiful warm water, Bourbon and a plethora of other fine spirits, racking up the high score on any Robotron console, ice cold martinis (no vermouth!).
Coding & Engineering
While I’m increasingly dedicated to cloud engineering services I must reflect on the fact I’m also an experienced developer with over fifteen years of hands-on experience.
The tools in my belt have grown over the years and I find it impressive that so many parts and pieces have gone into so many projects. Some of the things I’ve worked with are listed here. And so much coding! As a small example, I’m fond of the code snippet below as it illustrates one of the many times I’ve been called on to take apart, customize and hijack Google Maps.
class NeighborhoodMapWidget {
constructor(configs) {
this.configs = configs;
this.widget = $("#" + this.configs.widgetId);
this.canvas = this.widget.find('.canvas');
this.categories = this.widget.find('.neighborhood-map-filter');
Object.assign(this, {SMALL: 500, MEDIUM: 750, LARGE: 1100, configs});
Object.assign(this, this.configs);
G5.googleMapsApi.registerWidget(this, 'getMapCoords');
G5.fortAwesomeApi.registerWidget(this, 'fortAwesomeLoaded');
this.setupResize();
this.neighborhoodMarkers = [];
this.infoWindows = [];
this.neighborhoodData = this.getNeighborhoodData();
this.generateCategoryButtons();
this.filterButtons();
}
getMapCoords() {
$.getJSON(G5.googleMapsApi.geocodeUrl(), {
address: this.address,
sensor: "false"
}).done((data)=>{
if (data.status === "OK"){
let coordinates = data.results[0].geometry.location;
return this.setMap(coordinates);
} else {
console.log("Failed to load address at "+this.address);
}
}).fail(()=>{
console.error("Failed to load Google Maps Geocode API");
});
}
setMap(coordinates) {
if (this.homeLocation){
var latLng = { lat: parseFloat(this.latitude), lng: parseFloat(this.longitude) };
} else {
var latLng = this.getLatLng(coordinates);
}
let mapOptions = this.getMapOptions(latLng);
let image = this.getLocationImage();
let markerOptions = {
position: latLng,
icon: image,
animation: google.maps.Animation.DROP
};
this.marker = new google.maps.Marker(markerOptions);
this.map = new google.maps.Map(this.canvas[0], mapOptions);
this.map.fitBounds(this.addMarkers());
return this.marker.setMap(this.map);
}
addMarkers(){
let bounds = new google.maps.LatLngBounds();
let catDefault = this.categoryDefault;
for (let i = 0; i < this.neighborhoodData.length; i++) {
this.addMarker(this.neighborhoodData[i]);
let poiMarker = this.neighborhoodMarkers[i];
if (poiMarker.category.includes(catDefault)) {
bounds.extend(poiMarker.getPosition());
poiMarker.setVisible(true);
} else {
poiMarker.setVisible(false);
}
}
return bounds;
}
generateCategoryButtons(category){
let allPois = this.neighborhoodData;
var categoryButtons = this.categories;
var viewAll = '<button class="all" value=""><class="fa fa-check"="" aria-hidden="true">View All</class="fa></button>';
var buttonLabels = [viewAll];
let uniqueArr = [...new Set(allPois.map(poi => poi.location_type))];
for (let i = 0; i < uniqueArr.length; i++) {
let category = uniqueArr[i];
let catClass = category.replace('_','-');
let catDefault = this.categoryDefault.replace('_','-');
var label = this.setCategoryLabel(category);
let buttonMarkup = `<button class="${catClass} ${(catDefault === catClass || !catDefault.length) ? " value="${category}">${label}</button>`;
buttonLabels.push(buttonMarkup);
}
return categoryButtons.append(buttonLabels.join(""));
}
setCategoryLabel(category){
switch(category){
case 'food_drink': { return this.labels.food_drink; }
case 'entertainment': { return this.labels.entertainment; }
case 'shopping': { return this.labels.shopping; }
case 'activities': { return this.labels.activities; }
case 'schools_community': { return this.labels.community; }
default: { return ''; }
}
}
addMarker(marker) {
let { name, address, city, state, postal_code: zip, phone_number: phone, google_map_url: map, website, location_type: category } = marker;
let content = '...'
# and so on...
AWS Services
HTML
CSS
Sass/Less
gulp.js
Ruby on Rails
Ember.js
JavaScript
ES6
jQuery
MySQL
Git
Heroku CLI
Linux
Python
Bash
API(s)
GCP
YML
JSON
GeoJSON
CAD
NPM
Homebrew
Sinatra
Bootstrap
PHP
WordPress
AWS Services Used Here
- lancehardy.com domain transferred from godaddy to Route 53
- bitnami wordpress AMI t2.micro spun up in my us-west-2 region
- elastic IP assigned to ec2 instance and referenced in Route 53 hosted zone
- domain verified in SES for email setup
- topic created in SNS to alert when email is received from lance@lancehardy.com
- organization created in WorkMail to send and receive email for lancehardy.com domain
- app created in Google developer tools to control SMTP
- app endpoints applied to simple contact form for reliable email


Hit me up!
You’re curious. I get it.
Maybe you’re thinking your team could use a shot in the arm with some new blood. Tried, experienced, ready to jump on new experiences and opportunities with a completely open mind and enthusiasm.
Hit me up!
(btw, as a total aside you can be assured this contact form actually works. I know, it’s WP which means contact forms are a total crapshoot. No worries, I have an independent google app working SMTP duty to make sure your “submit” actually goes where it should!)
Of Course I Support Indies
On occasion, I enjoy helping great friends, causes and businesses build and maintain their websites.
WordPress: unless you’re dealing with serious integrations or e-commerce I would be hard pressed to recommend anything else. It can provide a website that’s cost-effective and relatively simple to maintain with basic training.
These are my good friends at Oregon Spirit Distillers. I host their website using AWS services (naturally).