About

Aaron - Head Goofball

Hello. Thanks for joining DragonScript Arena! If you're curious about me, I wish I could tell you that I'm a genius coder who invented something cool, or that a I'm a hot-shot professor at some fancy university... or something.

Sadly, I was just an average student. I was rejected by grad school. Then, after sneaking into University of Michigan through a "back door", I almost flunked out by failing the same "Intro to Artificial Intelligence" class TWICE. (I only barely passed the 3rd time with a C-). I later dropped out of the Computer Science PhD program.

But this semi-handsome failure somehow got it together to score a sweet life in sunny California with my wonderful wife, two kids and a demon mutt. And along the way, I've somehow collected 22+ patents and peer-reviewed publications on chip design and Machine Learning algorithms. (Screw you, stupid college A.I. course.) And somehow, code I've written has made it to faraway places like helping design chips in NASA's Mars Rovers... or powering Deep Neural Network processors in Amazon's cloud.

What I discovered was that 99% of what I use day-to-day as a professional Software Engineer did not come from what I learned in college. So this made me wonder: is there a better way to teach practical programming?

So, I wanted to try to make a software engineering program that is on par or better than most college-level programs. BUT one where students can learn faster and don't get buried in debt. Here's how I think it could be possible:
  1. Focus on building a hands-on foundation that teaches students how to learn
    (instead of cramming the whole hog in one sitting)
  2. Skip the fat that comes with a typical bloated/outdated college "experience". And...
  3. Deliver lessons in a fun and efficient way using the Internet.

I.e., a modern program designed for our modern world. A world where you can Google the answer to any question at your fingertips. Today, the challenge is not that there is not enough information to learn from. (Quite the opposite actually.) It's more about knowing what to search for. So that's my goal – to give you just enough hands-on coding practice so you know what to search for to solve your problem – then how to plug into the Internet to continue your learning. Similar to the traditional apprenticeship model, like how swordmakers or sushi chefs pass down their craft to the next generation.

I got the idea from my two kids. They make me think about education a lot. As a Software Engineer, I keep wondering how I can teach them what I know so they won't have to waste time and money learning it elsewhere :) That way, they could skip college if they wanted to. Or if they still go to college, at least they could spend that time learning something interesting that their old man can't teach them. Plus, I've been thinking a lot about getting old, especially after losing my dad in 2017 as well as a few other people close to me. It made me see how fragile life is and that my turn could come at any time too. So before I go, it'd be nice to make something that adds value to the world... and maybe even change a few people's lives. My dad liked to say, "Leave a place better than how you found it."

So those are my selfish reasons. Also, I hate it when people discourage others and say that programming is hard, or that it's only reserved for certain lucky people, or that you need to suffer debt and sacrifice years in college to enjoy a sweet life. That might have been true once upon a time, but with rising college tuitions and sloppy modern college programs – I don't think it's true anymore. Especially with how advanced the Internet has become as a learning platform.

So if you're ready to start coding, I'll do my best to teach you everything I know, in the best way I know how. I'll try my best to help you beyond your time at DragonScript Arena as well. For example, if you're interested in getting more serious about programming, either as a career or as a hobby... or if you want to chat about anything else in general... like about Life or even Mountain Biking. So c'mon in! I hope you'll join us in this adventure... and maybe even make a friend or two along the way.

(P.S. If you are a Software Engineer and love teaching, email me at aaron@dragonscriptarena.com to join our team of coaches! Please also say hi if you're a game developer or artist. It'll be nice to get to know you.)

Credits

Special thanks to: Melisa N, J+j , David K, Chris P, Harry M, Jim McG.

History

17 Apr 2017
While we were visiting family and vacationing in Puerto Rico, my kids inspired me to make a programming game. As soon as I got home, I whipped together a prototype to test an idea I had. It began as a 2-D board with squares for the units and ellipses for the bullets. (No dragons yet!) The main goal of the prototype was to test how well I could run custom A.I. code submitted by individual players. It worked better than I expected and this motivated me to develop the idea further. Thus, the A.T.H.E.N.A. (Aaron's Theanthropic Hacker's Engine for Netrunning A.I.) battle-system was born.


26 Apr 2017
Next, I added health bars. And with that, we had a game! I also experimented with different kinds of attacks because having just 1 attack is boring. I wanted to be able to have attacks with a long cast time as well as attacks that are channeled.


28 Apr 2017
I started to research which game engine to use. My quick-and-dirty HTML/Javascript prototype was hitting performance issues and it was clear that the approach was going to run out of steam fast. I wanted to like Unity because of its popularity, but unfortunately it wasn't a good fit because I needed to run custom Javascript code. So I settled on three.js. There was a bit more 3D programming elbow-grease needed, but it was not too bad. Best of all, this was a perfect fit with my A.T.H.E.N.A. engine that runs custom player Javascript code.


28 Apr 2017
My kids started to become curious about what I was making. So I started including them in the process. They were tough critics and they had many ideas. One of them was to add a "boss" monster. They drew it on paper and supervised me while I translated it to 3D. They want me to add their monster to the game one day.


9 May 2017
There was a beautiful dystopic simplicity with the 3D cubes. But they were sad and lacked personality. So on May 9th they transformed into dragons. Thus marked the fateful day the project's name changed from "codebots" to "DragonScript Arena".


31 May 2017
The game engine was starting to take shape. So it was time to build up the rest of the game so that it was playable. This meant being able to write code, save code and run code in a game. For the first time in the history of DragonScript Arena, the game could run custom code submitted by players.


12 Jun 2017
The UX was coming along. So I started to add more maps/levels. I also added new game mechanics like "capture the orb".


27 Jun 2017
After watching too many DragonScript Arena games, it was clear we needed a way to fast-forward or slow down the action. To make this work, I really had to clean up the A.T.H.E.N.A. engine so that everything in the universe unfolded in time in exactly the same way, no matter how fast or slow time moved. A happy side-effect of this effort was that games became repeatable -- you could replay a game as many times you want and every replay will be identical (as long as players don't introduce non-repeatable randomness in their code).


12 Jul 2017
3 hero classes were introduced: Bighorn, Longtail and Little Wing. My kids seemed to like those names. I started preparing the game for Alpha release -- fixing bugs and polishing things up enough so that I could recruit some Alpha testers to try the game and give feedback. My parents visited me over the summer so I worked on the game a little less.


4 Oct 2017
After a few rounds of testing, I got a lot of great feedback. But I sat on the feedback for a while. Because while they were great suggestions that I agreed with, my ego took a beating and I needed some time to heal. I also needed to rethink some things. There were many small problems with simple fixes, but there were also some problems that needed big fixes. E.g., One feedback from the testing motivated me to add a Lesson system to help the player along. And also to add Ranks to measure and reward progress.


29 Jun 2018
It had been 7 months since my last video update. My dad passed away unexpectedly in November. 7 months later and I still get random sad thoughts almost every day. They appear, I notice them and they fade away. Sometimes they linger but usually not for very long. I was afraid I'd lose the motivation to finish this project. But I decided to dedicate it to his memory. My dad was a King Scout (similar to Eagle Scout in USA) and one of the things he did was volunteer to lead a few generations of young scouts. So I thought this could be a good chance for me to do the same. I was never a Scout, so I can't do what he did, but I can do this. I originally planned for this project to be a paid coding course. But after some thought, I decided to make this free. If you're willing to work and learn, I don't mind teaching you everything I know.
I finally fixed all the problems from Alpha testing. I also built up the Player vs Player arena and added some new maps. The game finally entered Beta. Just a few more finishing touches and bugfixes before opening it up to everyone!