I am a web developer based in Cleveland, Ohio who is open to moving and remote projects. Clean, reliable code, Agile project management, focused work ethic and and good eye for graphic design help me build solid and engaging web apps.
Highlights
- I created a complete and interactive JavaScript Cheat Sheet that is both a cheat sheet and full learning tool. Toggling between the Learn and Cheat Sheet modes shows or hides detail, making it a great tool for finding quick info and then expanding the detail as needed.
- My Interview Questions tool helps simulate a coding interview environment, with over 600 possible coding question randomly chosen and answers timed. It is filterable, so we can focus on larger algorithm and data-structure questions, advanced questions or even just take basic questions. Code work areas are provided for working through big answers.
- I designed and built this website from the ground up on the WordPress framework. This includes creating all of the visual elements and images (unless otherwise credited).
- I frequently build little coding projects to explore some new territory or just for fun. Check those out here.
- Towards the bottom of this page are a few samples of my own code work and writing on various code-related subjects.
Do you need a dedicated and skilled developer for long-term employment or project-based contracts? Hire me by reaching out here.
Primary Skills:
- JavaScript (core and REACT)
- PHP (core and WordPress)
- Agile Project Management
- Web Design & Graphics
- MongoDB
- Node & NPM
- Express
- Axios
- MySQL
- CSS3 (core and SASS)
- HTML
Secondary Skills:
- GraphQL
- FireStore
- Google Apps Scripts
- Vue.js
- Apache-based servers

Useful Odd Shapes in Pure CSS
This is what I do for fun on a Friday night. 🙂 Well... sometimes. This project is the result of a little free time and a laptop nearby.I wanted to see how far I could push CSS parameters to create unusual shapes that might make bland pages feel more interesting and unique. The intent isn't… MORE q

Dynamically Create a Calendar with JavaScript
This question came up in my Interview Questions Tool, and it seemed straightforward at first, but there are some important considerations to keep in mind.To create a graphical representation of the months, we need to position each first day of the month after the last day of the previous month. This requires careful planning and… MORE q

Tool to Find Every Method on Every JavaScript Object
Ever wonder exactly which methods are available on every JavaScript object? I did, plus, I wanted to write a post listing all of them with links to more detail for each. There are lists on MDN and other places of objects and methods, but I couldn't find a comprehensive list of every object and every… MORE q

Crazy Cool Loaders Part One
Loaders are generally seen as tedious, causing lengthy waits. Here I explore the idea of creating visually appealing loaders that engage users, making them enjoyable instead of a nuisance. The post introduces innovative designs that are more captivating than standard loaders, with a promise of more in a second part. MORE q

Every Method on globalThis in JS
In JavaScript, globalthis carries a long list of methods. This page is meant to serve as a companion to the JS Methods article. There we have every method in JavaScript sorted by the object the method is attached to. The only thing not included there is globalThis. Given the 1,500+ methods on globalThis, and the fact that they are all MORE q

All Errors in JavaScript
Error: Permission denied to access property "x"InternalError: too much recursionRangeError: argument is not a valid code pointRangeError: invalid array lengthRangeError: invalid dateRangeError: precision is out of rangeRangeError: radix must be an integerRangeError: repeat count must be less than infinityRangeError: repeat count must be non-negativeReferenceError: "x" is not definedReferenceError: assignment to undeclared variable "x"ReferenceError: can't access… MORE q

Spread & Rest in JavaScript
The spread operator allows for an Object's properties to be filled into a another object right in line with existing properties. Likewise, this can fill one array in another array keeping the values in line with existing values. Spread const aNewObject = {...oldObject} const aNewArray = [...oldArray] Rest The rest parameter an array made MORE q

Map Data Structure in JavaScript
The Map object holds key-value pairs like a standard object. There are a few significant differences between Map and a regular key-value pair object. These are: Objects: Keys must be obtained and used to iterate over. Map: This is iterable, meaning we can directly iterate. Objects: The key can only be an integer, string, or symbol. Map: Key field can be of any data-type including objects and functions. Objects: Retrieving size is a manual process. Map: The size property hold this info. Objects: Iterating will not always return keys in MORE q

Patterns in JavaScript
There are a variety of common situations and obstacles programmers deal with. Over time many design patterns emerged that nicely addressed these common issues. Of these, there are four patterns that MORE q