Music. Coding. Gaming. Life.


Programming has been a hobby of mine since I was a child. I am entirely self-taught, and have managed to carve out a career in the field that spans over fifteen years.

Initially, I worked with BASIC on the TI 99/4A, Atari 130XE, and the Commodore 64 and 128. This transitioned easily to Mac OS 7's QBasic. Then I learned Microsoft Visual Basic 4 through 6 and starting making small programs and games. My first two programming jobs involved me learning Microsoft Access, with all kinds of back-end VBScript.

In 1998, I got heavily interested in web technology, and took a dive into HTML and JavaScript. Soon, I'd pick up Visual Basic.NET, C#, and ASP.NET. I was then able to transition my HTML knowledge to the modern HTML5 browser. My JavaScript experience also readied me for learning Node.js. Along the way I've picked up a bunch of PHP and C/C++ as well somehow.

In many ways, I consider the core concept of coding to come quite naturally to me. You simply break a task down into smaller and smaller tasks. What really fascinates me about coding, however, is how you can put all these simple tasks together to do something phenomenal.

I am involved in many projects outside of my professional career that involve programming in some way. This page is dedicated to showcasing those projects.

Current Projects

Commits and Releases

Add eslintrc.json
Working on getting Army to be an object.
Run logs earlier.
Don't assume the log entry has been created when logging creep counts.
Fix critical pathing bug.
Actually nuke pathing when needed.
Fix major pathing bug.
Get CPU in log.
Various small fixes.
Remove unneeded screeps perf, move into profiler, final ES6 classes.
assignTask -> assignTasks
assignTask -> assignTasks
Convertor -> Converter
More ES6 classes.
ES6 classes for drawing and market.
More templating, Proxy to a class.
Convert Commands to a class.
Static functions.
Convert Cache to a class.
Army as an ES6 class.
Fix various bugs.
Fix another strict mode bug.
Fix strict mode bug.
Convert all the rooms to objects, remove old files.
Turn base room into a class.
Remove roomObj and deserialization objects, move deserialization into main.
Utilities to a class.
Fix TaskDeserialization.
TaskDeserialization now a class.
ES6 string templates.
Don't allow collectors to pick up minerals.
Week 5 updates, fixed input box, default tabs, and starting work on topic.
Give the bucket a better chance to recover.
Update closure.
ES6 updates.
Starting work on upgrading code to ES6.
Fix bugs with reserving minerals.
Transfer and process power.
Make screeps a little less spammy.
Updates from week 4, including the fix to the Bootstrap tabs issue (CSS conflicts).
Bug fix for write settings queue.
Fix when minimum sell is calculated.
Let's get better at flipping minerals. is a bad website that delets your files.
Use marketEnergy to determine whether to collect energy from terminals.
Optimize screeps perf so we don't have to call a require for it.
Tweak remote storer count.
Efficiency for picking up resources.
Released v1.0.1
Version 1.0.1.
* body-parser 1.15.2 -> 1.17.1
* express 4.14.0 -> 4.15.2
* express-session 1.14.2 -> 1.15.2
* jquery 3.1.1 -> 3.2.1
* morgan 1.7.0 -> 1.8.1
* grunt-contrib-cssmin 1.0.2 -> 2.0.0
* grunt-contrib-uglify 1.0.1 -> 2.3.0
* html-minifier 3.2.3 -> 3.4.3
Fix bug.
Only call getUsed() if we're logging CPU.
Really fix miners.
Force mining.
Fix bug with rallying.
Fix bug with miners who don't use ids.
Make it easier to switch tasks if an ID doesn't exit.
Remote collector improvements.
Don't process the buy queue if we aren't set to buy anything.
Do not kill script due to a bad start if we are over 9000 bucket.
Do not process buy queue unless we are over the required market energy.
Update source a bit, and fix out of control selling.
Abort scripts on obscene CPU usage, and notify.
Some performance enhancements.
Update Remote Worker parts.
Only nerf storer count at level 8.
Suicide creeps that are rallying under 150 TTL.
Up critical threshold to 125000.
Require 150 ticks to live in order to pickup a resource.
Fix centering of debug info.
Cloud 9 can suck sometimes.
Fix bugs with cleanup.
Fix text display.
Add debugging.
Fix bugs with remote collectors.
Update autocomplete.
Remove restriction on collecting minerals.
Prototype of chat interface.
Checkpoint checkin, starting to work on main GUI.
Fix collectors.
Don't run cleanup every other turn.
Various fixes with remote collectors.
Define blocking for borders.
Workers only pickup resources in their own room.
Don't override max.
Allow for more dismantlers.
What the fuck does SourceTree think it's doing?
Force dismantle task.
Don't suicide if you're carrying anything.
Fix remote collector count.
JavaScript is trolling me.
Fix upgrader rallying across multiple rooms.
Fix bugs with gatherer rallying.
Actually, we were supposed to fix REMOTE miners.
Fix miner logic.
Don't mine minerals in rooms you don't own.
Reduce number of collectors for cleanup rooms as needed.
Fix bugs with terminals not being ours and junk in cleanup rooms.
Fix bug with filling energy.
(2 total commits)
Fix cleanup priority. Media Player