AI-Coder: High Level Design


As an artist, I’ve often started a new drawing or painting right in the medium, dipping a paintbrush into my palette and splashing something preliminary onto the canvas. Some of my favorite drawings have started with pen on paper, having no idea what the hell I was working toward, but just enjoying the process.

In many cases, those first few haphazard strokes set a tone and texture that guides the rest of the creative process.

While the paint is still wet, and the figure is still mostly unformed, I’ll step back from the canvas and look at what I’ve done so far, asking myself “What is this? I like what I’ve got so far, but how can I turn it into something worthwhile?”

The decisions made during that post-improvisational stage often determine whether the painting gets hung on my wall or tossed into the dumpster.

I feel the same way right now, at the beginning of the AI-Coder project.

Although I’ve spent the last year or so experimenting with AI techniques and building my own game-playing software, those tasks really just give me a preliminary sketch for the overall design of the AI-Coder platform. Since I’m developing this software for widespread consumption, the design constraints and priorities are entirely different than if I was building something just for myself. And of course, as is always the case, some of the design criteria conflict with one another.

At this point, I’ve identified four overarching principles that should guide the whole development process. In no particular order, it’s essential that the software is:

  • Fun
  • Secure
  • Fast
  • Legal

All four of those constraints will make a big difference on the software design, and all four of them are critical to the monetary success of the project. If I fail to meet any of those criteria, I can expect big problems.

Ahem…What?

My parents are avid readers of this blog, and when they read that I’d chosen the AI-Coder project, they were completely perplexed. Not necessarily because I had chosen this project above all the others. Rather, they were perplexed about what this project even is.

I can hardly blame them. So far, I haven’t figured out how to explain the gist of the AI-Coder project without going into a twenty minute explanation.

So before I dive into my four design criteria, I’m going to step back for a second and try to write a 30-second elevator pitch for AI-Coder:

AI-Coder is an ongoing contest, where smart programmers can win cash prizes by writing better AI code than their opponents, in strategy games like chess, othello, and poker.

I’m sure that the definition of the AI-Coder project will fluctuate as the software (and the business develops), but that’s the core idea. And hopefully, a description like that clearly expresses what I’m trying to accomplish without needing any further explanation.

Now that I’ve gotten the elevator pitch pretty solidified, I can focus on my four central design criteria.

Over the next week, I’ll post four follow-up articles, discussing how the elements of fun, security, speed, and legality will affect the design decisions of the AI-Coder platform.

And, by the end of that process, I hope to develop a clear concept (from both a business and a technical perspective) of how my preliminary sketches will develop into a fully-formed picture, one that I’ll be proud to put on public display.

2 Responses to “AI-Coder: High Level Design”

  1. DLarsen Says:

    I’m looking forward to your article on “speed.” Best of luck, Benji.

  2. Elisha Klein Says:

    I got an email today about amazon EC2 a web service that gives you scalable processing power. That might be something to consider for you since you might need more processing power than an affordable hosting will provide.

Leave a Reply

You must be logged in to post a comment.