Archive for the 'creation' Category

Art of Programming

August 21st, 2008 | Category: creation,design,design patterns,programming

I just recently finished reading a book, no, rather, a comic, by Scott McCloud, called Understanding Comics: The Invisible Art. It was a fantastic read, very illuminating in many aspects. A lot of things I didn’t understand about art in general are finally beginning to be less murky.

One of the most striking concepts was the six stages of art. And it resonated. I realized that those six stages correspond as well to the development and progress of a programmer.

In his comic, the six stages are as follows: Idea/Purpose, Form, Idiom, Structure, Craft, Surface.

The Six Steps of Art

The Six Steps of Art

Let’s start at the top: Surface.

Surface applies to the most basic of programming. Simple statements, flow control, basic functions. Every programmer begins their growth at this stage. They learn how basic math works, properties, etc. They learn how to order statements, if conditionals, and loop guards.

Next is Craft.

Craft is where they take the basics, the Surface, and begin constructing bigger things. Functions, classes, basic data structures. Here, they learn how to construct a complex piece of smaller simpler pieces, but they are only just barely beginning to learn why and how it works that way. Any data structures they build are based off of basic data structures, and they don’t yet understand deeply the fundamental ideas of efficiency, logic, and computability. The good programmer also begins to learn about source control, using their tools, building, and deploying their work.

Structure is next in their growth path.

Here, they begin to learn how to organize their complex pieces into a working piece. How to access and parse text files, basic database interactions. They’ll do things the slow, wrong way, but its necessary to reach the stage of development. Here, they begin to worry about efficiency, the right way of doing things. Object Oriented programming starts to make sense as a conceptual model(which is all it really is). The now competent programmer is capable of learning other basic conceptual models.

Idiom is the biggest part of the growth.

Here, they begin to learn about Design Patterns, and begin to apply them. They apply them at every stage, from the basic Surface, to the overall Structure of the program. They also begin to learn about the ideas and concepts behind data protocols, to use them where needed. This is when programmers become cynical about Silver Bullets. This is when they finally realize there is no substitute for skill, experience, and effort. Many programmers do extremely well staying at this stage. However, to become a top-notch programmer, one needs to see and explore the limits of programming.

That is where Form comes in. Programmers at this stage explore the efficacy of Design Patterns, breaking them where and when needed, even developing their own versions. They begin to develop solid ideas about how API’s should work, about what is computable, about efficiency, and about Logic. These are the programmers that take already established tools and concepts, and bring us exciting new ones. Notable examples are: Bittorrent, Linux, and the Mouse. They looked at what was being done, and brought something new, and world-changing to the world of computing.

The final, highest level of development is Ideas/Purpose. This is where programming Gods like Knuth and Stallman rest. This is where Computer Scientists do their heady, ivory tower research that is oh-so-important to the world at large. This is where concepts of algorithms, data structures, efficiency, and logic are explored in their abstract. This is where Computer Science is rooted, and where the birth of the computer industry started. This is where Boole developed his ideas of Boolean logic, where Cray designed his supercomputers, and the very basis of all digital electronics.

Now, this is the normal path most programmers take in their growth. Even though, in College and University, we’re taught the ideas and purpose of programming from almost the start… when we don’t have the basic building blocks of understanding of logic and program construction.

As my friend Khumba just said: “You can’t play Protoss until you’ve played a few games with Terran.” You need to understand the basic building blocks of logic, statements and flow-control and the experience with those to understand the higher level concepts of functions, routines, threads, classes, modules, executables, algorithms.

The thing is though, we can start at any stage we like, from Ideas/Purpose, to the Idioms of programming. But the greatest, best programmers amongst us will explore all of these stages in depth, learning what they need from it to improve themselves and their art. Because thats what Programming is. It is an art, and we are the artists, working with the pure stuffs of thought. We translate the abstract to binary logic, to 1′s and 0′s, and for that… we are artists.

If you disagree, or agree, let me know. Theres a handy comment box right down there.

2 comments

Technology for the masses

June 03rd, 2008 | Category: copyright,creation,mental health,netneutrality

Anyone that is aware of the net neutrality debate has an inkling of what this post’s title means. But its the most important concept of this decade, if not this century.

Prologue to progress

Printing press

Technology, not for the first time in human history, has enabled communication on a formerly impossible scale. One of Lawrence Lessig’s talks, at TED, talked about how each advance of technology, from the printing press to the radio, at first, enabled wider communications for all. But then, they became commercialized, and what was once a two-way line of communication became one way; companies creating content, and consumers consuming content.

This is the way companies like it. To them, technology for the masses, means more money, more consumers for their content. Radio, reached millions of people without needing wires, yet, to reach them all, it required a large radio tower- a hefty investment. For this reason, radio quickly became, in the mainstream at least, less about conversations and sharing between two or more people, but about popular consumption.

We are facing the same problem, yet again, where a gigantic advance in communication has spurred a rash, no, a plague of creation like none before. Technology enables, always. It enables advance, progress, profit, and enlightenment.

Changes to communication

1970\'s radio

This current advance, the internet, has even spurred changes in what were formerly one-way communications technologies. Unable to afford to publish newspapers, we published blogs and podcasts. Unable to use radio to communicate, we began to use bbs(later known as forums), chat rooms, and instant messaging.

You can tell when a new technology or derivative thereof is reaching the mainstream when a store like Radioshack(aka The Source by Circuit City in Canada), sells home products meant for such technology/services. Radioshack/The Source sells a home stereo system, that can tune into most of your favourite internet radio stations!

Thats pretty mainstream, if you ask me. But that example is only one-way, broadcast communication, which is not the internet. Merely an old form, redone with the internet. Radio has become cheaper to do, thanks to the internet.

Enabling encouragement

That however, is not my point. Technology enables people. So long as it is two-way, so long as people can participate, it can inspire and further society and art. So long as there is open and neutral access for all, can technology enable societal advance.

We’ve seen, time after time, how groups can either self-destruct, or achieve great things. And thats the best part, the potential for that to happen. So long as there is the potential to do great things, be they code(Linux), music(OCRemix), etc, then it will be achieved. By someone, by a group somewhere.

This, though, galls the corporate overlords. They have no control over these productions. Why, god damn it, they’re not even making any money off of this! Thats just not right. To them at least. They want us to consume, to suckle at the teat of consumption. Then they can make money. Then they can control things. Creativity that is not shackled to corporate goals scares them. It genuinely scares them.

Let them be scared. Write, compose, direct, create. Make them scared. Challenge them on net neutrality, and take hold of your progress. Don’t be spoon-fed content, never be content with that. Always do, and create, instead of consume.

Moxie Motto’s!

If you do create, and realize that people want what you can create, never fall into the trap of the corporate overlords. The value of what you create, is the potential. Encourage participation, work, insight and criticism. Become better, enrich others. Participate.

That is the motto of this new generation, of this generation of poets and writers and programmers and artists.

Our motto:

I create, therefore I am human.

3 comments