Fork me on GitHub

Nicholas D. Horne Source Code Showcase & Portfolio


Welcome to my humble GitHub Pages site, below you can learn a bit about me and my various programming pursuits.

Portfolio:

Games:

Congo Skulls

A remake of Toggle Booleans' 1993 Windows 3.x freeware classic Amazon Skulls in JavaScript with some new features/amenities including local multiplayer, custom grid size, keyboard controls, next move indicators, and undo (ctrl+z). Each piece played (with the exception of the first piece) must border the last piece played and border that piece only. The first player to play a piece bordering more than one piece (the last piece) loses the game. Make the last valid move to win! Play the original Amazon Skulls at archive.org.

Random Acts of ASCII

Unscramble common but obfuscated colloquial phrases, sayings, expressions, and idioms of the English language. The scope of randomization does not extend beyond the limits defined by the various commonly accepted linguistic word boundaries (spaces, hyphens, etc.) of the phrases provided. Hints and revelations are available to be revealed at the player's own discretion; reserve them for particularly cryptic challenges or "reserve" them for any challenges.

Access Granted JS

Can you actually crack a four-digit PIN on your first attempt as seen in the movies on a telltale worn keypad? The "worn" keys contained in the PIN have been highlighted on the keypad. PINs are four digits in length. Digits may be repeated resulting in PINs with less than four keys being highlighted. PINs may begin with zero. Input is accepted by way of both mouse primary button and keyboard number keys. Now featuring three different game modes, varying levels of difficulty, an incremental hint system, and auto-solve.

Access Granted Scratch Edition

A reimplementation of Access Granted in Scratch 3.0, an event-driven block-based visual programming language from MIT Media Lab's Lifelong Kindergarten Group.

Utilities:

Body Mass Index (BMI) Calculator

Calculate your body mass index (BMI) easily using this simple body mass index calculator for adults featuring support for both imperial and metric units, use it in good health.

Random Password Generator

Leverage crypto.getRandomValues() to create random passwords comprising your choice of lowercase letters, uppercase letters, numbers, and special characters. Options to set password length, number of passwords to generate, excluded characters, and algorithm allow for further customization.

Miscellaneous:

Radix Discord Bot

A general-purpose Discord bot powered by JavaScript, Node.js, and the Eris Node.js Discord library featuring chat-roomified renditions of familiar games such as Connect 4, Hangman, Tic Tac Toe, (Definitely Not) Wordle, and Nim (the matchstick game), alongside some likely unfamiliar originals such as Random Acts of ASCII; Multi-User Dungeons (aka MUDs) such as MUD Maze, a MUD where you traverse a maze in real time with other players; browsable galleries featuring the catalogs of The Metropolitan Museum of Art and long-running well-known web comics such as Bob the Angry Flower, Pokey the Penguin, and xkcd; and of course many of the standard amenities that discerning chat bot connoisseurs have come to expect a chat bot to provide such as dungeons and dragons dice, horoscopes, fortunes, magic 8 ball, currency converter, and many more. $rdx help to get started

Conway's Game of Life

Per Conway's Game of Life any live cell with fewer than two or more than three live neighbors dies, any live cell with two or three live neighbors lives on to the next generation, and any dead cell with exactly three live neighbors becomes a live cell. A neighbor is defined as any adjacent cell, including diagonally adjacent ones. The state of any cell can be toggled at any time with the mouse primary button. Step through each generation with next and back or choose start and watch life find a way.

Ephemeral Random Quotes Script

This script asynchronously fetches and parses a JSON-serialized array of quote objects from which a random element is then chosen for its properties to be subsequently parsed, formatted, and displayed. A timeout with a recursive function is then set to select, parse, format, and display a new, previously programmatically unselected, random element every 15 seconds. In the case of quote exhaustion previously selected indexes will be discarded and random element selection will begin anew. Quotes may be scrolled through bidirectionally in their array index order of appearance with the mouse wheel.

Bouncing Ball HTML5 Canvas/JavaScript Animation

An interactive HTML5 Canvas/JavaScript animation of a ball bouncing between the borders of an HTML5 canvas element. Users can pause/resume the animation, randomize ball properties in whole, or individually set desired ball speed, size, and color through the accompanying input element controls. A click event positioned within the current trigonometrically-calculated ball boundaries on the canvas element itself also fires a complete ball randomization.

Access Granted JS "Classified"

This new but not necessarily improved implementation of Access Granted JS leverages ECMAScript 6 classes to encapsulate associated data and behaviors together inside a single self-contained unit more often referred to as an instance in a bid to manage complexity through the constructs afforded by object oriented programming.

Access Granted JS Prototypal

This new but not necessarily improved implementation of Access Granted JS leverages prototypal inheritance to encapsulate related data and behaviors together inside of a single self-contained unit more commonly known as an instance in a bid to manage complexity through the constructs afforded by object oriented programming.

Controls
Custom