Saturday, June 28, 2014

Idea

This blog has been sitting here on the internet for years, so I assumed that somewhere down the line, I must have explained what Idea was all about.  However, today I looked back and the first post has a link to an explanation, but the link is broken.  I have no idea where it linked to.  Fortunately, Idea has evolved since then, so it would have been outdated anyway.  I figured now would be a good time to tell what Idea is and means in its current form.

Idea is an idea organization tool.  I know that's vague, but there's no other way to say it.  I think a good way to explain it would be to tell how I came up with the idea.

Years ago, I was interested in creative writing.  I bought a few books by big authors about their writing process and I swallowed them whole.  Steven King says he usually plans out a good beginning situation and then starts writing, never knowing what's going to happen until he writes it.  Terry Brooks, on the other hand, outlines everything before he puts a word on the paper.  I figured I'd probably lean towards Brooks' method, since I'm not that good at improv.

Terry Brooks explained his method of outlining.  Most of us picture an outline as a numbered list, like we all learned in school.  However, his outlines consist of post-it notes, note cards, etc. scattered on his wall or desk.  He puts one idea on each note card or post-it note so that he can order them, group them, and rearrange them as he pleases as he plans out his story.  My mom likes post-it notes, but they would put my mind for a spin.  I'd be in a constant jumble with notes surrounding me.  I'd lose notes, I'd forget where I put them, I'd, I'd, I'd...  Long story short, I'd go crazy.

I began to wonder how writers managed to write an entire novel and keep track of everything.  Being a computer-person, I began to wish there was some sort of software that could keep track of it for me.  Soon, I had a fairly solid idea how that software could work.  All of a sudden, I realized that as a programmer, I would be able to develop that software myself.

Unfortunately, I was a very new programmer at the time.  I didn't have much experience.  However, the experience I gained while working through each iteration of Idea got me my current job, and my current job gave me the skills I needed to complete Idea.  It also helped me to solidify the design of Idea.

While I don't yet know what all bells and whistles I'll add to the software, I know its under-workings, which is honestly the most uniquely important part of the software.  If you're a programmer, you'll probably recognize some of the principles as I explain the philosophy behind it.

The bare bones of it is that I wanted to imitate the post-it note method on a computer.  What's different between a post-it note and a written document or even a specialized note program like OneNote is that a post-it note is an individual entity, separate from all other ideas.  In a document, each idea is merely a block of text mixed with all of the other ideas on the same page.

Say for example, you have a post-it note for each character.  You can put the characters relevant to a certain scene next to you on the desk as you plan it out.  And if you want to add a character, grab the other character's post-it note and put it next to the others.  Also, you might have a post-it note for each setting/location.  You can just grab the right one and put it in the group.  Each note is a building block.  Whereas in a document, you have to write it all out, meanwhile flipping back to the characters page (if you remember where it is) to make sure you're staying consistent.

Idea allows you to create standalone ideas and mix and match them as you please.  It seeks to streamline the idea generation and development process.  However, it is not only for writing.  It is designed to be used for just about anything.

To see how it works, you must first understand what an idea consists of in this software.  An idea is a list of fields that contain data.  For example a "character" idea might have the fields "First Name", "Last Name", "Age", "Occupation", etc.  A "setting" idea might contain the fields "Name", "Country", "Description", etc.  Then you'd have a scene idea with the fields "Name", "Characters", "Setting", and "Plot Summary".  Now here's the cool part.  "Characters" and "Setting" are fields that contain other ideas, and "Characters" is actually a list.  This is where you match the ideas together.

You might even have an idea type called a "time line".  The "time line" idea would contain an ordered list of scenes.  Imagine seeing the list of scenes on the screen.  You can drag them around and rearrange them as you please.  You can also tell it to show you which characters are in each scene, mixing and matching as you go.  You can get a birds eye view of your story, only seeing the surface details, or you can dive into a scene, shutting everything else out and showing all the nitty gritty details.

You are the master of the idea types.  Until you're more comfortable, you can stick to prefab types.  However, when you're ready, you can edit the prefabs or create your own idea types, allowing you to use Idea for just about anything.

Now here comes a more complex concept.  What if you were writing a fantasy story and you'd like each class of character to have its own fields?  It would be a mess to just add all of the fields in and only fill the relevant ones, wouldn't it?

The answer is a programming concept called inheritance.  One idea can inherit the properties of another.  I know that sounds confusing, but hear me out.  Say you made a base idea type called "character" with the general fields "Name", "Gender", and "Short Description".  These fields would apply to any character.  Now, say we made another idea type called "wizard" with the fields "Powers", "Wizard Type",  and "Wand Wood Type".  Then we made another called "elf" with its own fields, and another called "human" with its own fields.  Then, we'd have all of them inherit "character".  That means they'd all share the fields contained in the "character" idea type, but keep their own unique fields.  A good way to look at it is this: wizards, elves, and humans are all kinds of characters.

Now, remember that the "scene" idea type asks for "character" ideas, not "wizard", "elf", or "human" ideas.  That means that as long as the idea is a "character" or inherits the "character" type, it can be added to the scene.

That completes the basics of how Idea works.  It's only a few principles, and I might add more later, but I think it can go really far.  I want to the interface to really make the process feel simple and intuitive.  There will probably be alot of prefab idea types to begin with if you'd like.  Creating the idea types themselves might be the unintuitive part, but people can figure it out and take the software alot farther as they learn.

So there you go.  An explanation of Idea.  I hope it wasn't too confusing.  Let me know if you find it interesting, you have questions, or anything else.

Thanks,
clevceo

No comments: