Skills
Projects
Published NPM Packages
I've created and published a few small open-source projects as npm packages.
- bassoon
- A tiny library for efficiently streaming JSON objects to your front-end.
- domloaded
- A micro-library for postponing code execution until the DOM is loaded.
- @merlin4/express-auth
- A collection of authentication and authorization middleware functions.
- @merlin4/mongodb-connect
- Utility functions to simplify connecting to a MongoDB database.
- express-packages
-
A suite of minimal-dependency micro-libraries to simplify development of Express-powered web applications.
-
express-async-catch
Simple wrapper for Express route handlers, which propagates errors to the centralized error handler.
-
valid-oid
Express middleware for validating a MongoDB ObjectId in the endpoint path.
-
valid-body-zod
Express middleware for validating the request body with Zod.
-
valid-request-zod
Express middleware for validating the request object with Zod.
-
zod-mongodb-oid
Custom Zod validator for MongoDB ObjectId.
-
valid-body-joi
Express middleware for validating the request body with Joi.
-
valid-request-joi
Express middleware for validating the request object with Joi.
-
joi-mongodb-oid
Custom Joi validator for MongoDB ObjectId.
-
express-async-catch
Example Projects
Some example projects that I have built:
My Little Recipe Book
Hobby project to build a recipe search engine. Just type in 2-3 ingredients you have on hand, and get suggestions for what to make.
Learn 2 Earn
The Learn to Earn (L2E) program provides a pathway of activities/engagements for secondary school students (6th-12th grades) which provides exposure to STEM careers and earns college scholarship credits.
Unity Asset Store
My published packages that you can use in your own game.
Courses that I have taught
Below are the courses that I taught in the Application and Web Development Program at Ranken Technical College.
AWD 1111: Database-Driven Web Development
Students successfully completing this course will be able to:
- Use CSS and Bootstrap to design responsive web sites.
- Use Node.js, Express.js, and modern Javascript syntax to build web applications.
- Develop web forms that post data to the server and retrieve results.
- Use a Database Management System to persist, manipulate, and query user data.
- Develop web APIs and use JavaScript AJAX calls to update web pages dynamically.
- Use React.js to create dynamic web pages.
AWD 1112: Mobile App Development
Students successfully completing this course will be able to:
- Develop Android Apps that respond to events in Android Studio.
- Use TextView, EditText, Button, ImageView, Spinner, and RecyclerView widgets to build Android Apps.
- Develop Android Apps that have multiple screens and pass data between those screens using Intents.
- Develop Android Apps that use themes, styles, dimens.xml, colors.xml, strings.xml to change the appearance of widgets and adjust to sizes to different screen dimensions.
- Develop Android Apps that include a database component and demonstrate OOP principles.
- Develop Android Apps that communicate with REST APIs.
AWD 1000: Web Development Technologies
Students successfully completing this course will be able to:
- Write standards compliant HTML5 and CSS3 to structure and style a web page.
- Use CSS3 to position elements on a web page using responsive web design techniques including Bootstrap.
- Create websites that include images, lists, tables, video, audio, icons, and animations.
- Develop web forms that use JavaScript to respond to events.
- Solve problems using fundamental programming concepts including variables, branching, and loops.
- Manipulate the DOM using JavaScript and jQuery.
Game Development
- The Firmacore Incursion
- Cooperative online multiplayer game. Uses Node.js and Socket.io for the server. And Unity for the client. (Global Game Jam 2021)
- Bouncy Runner
- Touch gesture-based endless runner for Android. Integrates with some Facebook APIs. (Solo Project)
- Costume Crash
- Local 2-4 player brawler game. Supports Xbox 360 controllers for input. (STL Scatterjam 2017)
- Gravity Wells
- 3D Starfox-esque shoot-em-up, where you drive a rover around the surface of a planet. Uses custom shaders to implement a low-res/dithered look. Supports Xbox 360 controller for input. (CGA Jam 2017)
- Pete's Discount Market
- Run a potion shop in a 3D, VR-esque environment. Simplified art style for a comical appeal. (Butterscotch ShenaniJam 2017)
- Final Transmission
- 2D space fighter shoot-em-up, where you must navigate through waves of asteroids, before making your final transmission seconds before your ships is destroyed. (Global Game Jam 2018)
- How do we kill it now?
- Fight waves of slime monsters of escalating difficulty using only your sword. Features a custom slime shader that I wrote for the game jam. (Global Game Jam 2015)
- Out of Season
- Cute isomorphic survival game. Avoid roaming enemies, which navigate via an occupancy-based heatmap approach. (STL Scatterjam 2016)
- Hairspray Hannah
- Dark atmospheric survival game. Heavy focus on shadows and lighting to build the environment. (Butterscotch ShenaniJam 2018)
- Ritual of the End
- Small 2D platformer with 2 boss fights. Lead a team of teenagers that had never made a game before or worked Unity. (Global Game Jam 2016)
- Shadowrun Combat Tracker & Dice Roller
- A small web app I built to help to me host a weekly Shadowrun 5ed game. Data is persisted locally with the localStorage APIs to facilitate easy offline usage. (Solo Project)
- Spring the Fence
- 2D runner game with a pogo-stick. Navigate increasing difficult obstacles to reach the end of the level. Eat cupcakes to unlock special powers. (STL Scatter Jam 2014)
- Sky Scraper
- Swing around the level with your dual grappling guns, and reach the door to the next level. (STL Scatter Jam 2015)
- Sky Walker
- Navigate a procedurally generated obstacle course using dual grappling guns, and reach the portal at the end of the level. (Solo Project)
- Rubberband
- Fling rubberbands at plastic army men. Knock over enough army men within the time limit to unlock the next level. (Group Project)
- The Title
- Augmented reality experiment inspired by Pokemon Go. (Global Game Jam 2017)
- Home Is Where The Friends Are
- Native Android game involving building sentences from a limited vocabulary. (Global Game Jam 2019)