Tuesday, 21 October 2008

Multiple Project Planner

And there you can see my current projects, either the ones I have already started working on or those many pending for the future. Some people might say that having so many things to do instead of focusing in only one is what demotivates me and frustrates me. While it partially makes sense, say you are thinking of the various projects you want to start and then worrying about starting with one and leaving the rest you would also like to start, it's not the primary force that kills my will for creativity. I think that even with one project (and there were periods that I was focused in only one) I would still be the same lazy and thus frustrated. There is also an advantage of having multiple project, in that if you get bored of working on one project for a long time you can switch into something different and this can increase your motivation to be creative. In fact I have noticed some points to where I get bored or deny starting to work on anything but that's not with working on multiple projects. Maybe it has to do with daydreaming about multiple projects or it's simply laziness. Still, in the place is the hard decision of which project to start with. That's where this new project planning app and actual experiment seems to be an interesting way to overcome it and motivate me on working on anything. I just need to go on with it for a month to see the results..

Let's talk about this application. First of all I am playing strategically here. From my experience I know that every attempt to "robotize" myself, I mean to make a strict plan and say that at certain hours I will code this and that, simply failed. Even the lighter attempt which sets that I should work for few hours on some project but make my schedule elastic. Well, elasticity is still the way to go (and I use the concept in this app) but it wasn't enough because I would simply deny going to the schedule or forget the whole concept. Also, the idea of either using scheduling software or even coding one was out of the question because I would have to spend a lot of time to learn how to use or make the software while multiple demo projects were running. In fact I used the hard approach here but with a strategic thought. In the past I was thinking about of coding a big application with database, statistics, app uses per hour, etc which I never managed to start of course. But this time I had the rule to find the shortest way to make something, unfinished, very alpha but which can start me up. For example you can't use the app atm. The values are typed inside the C++ IDE and when I want to change those * and @ or set a different status (color) to a project I do it manually. Because it would take a long time to make an interface. The idea was, ok I will do a pointless schedule like app to start helping me with my projects, but what kind of thing can I do in 2-3 days of code? That if I want I will only evolve later, but atm it will do it's job manually from inside the code. Just a project struct, some font rendering and lines, loading static values from the code inside and voila.

And so MPP was born. I can also easilly set sub-MPPs for running project, e.g. if I have a critical project (like a demo I want to finish before a deadline) and I want to make another list of parts of the demo I want to finish and define some time and status for how they are going. I have already done this for our incoming CPC demo. Of course this sub-MPP app is a different DevC++ project with copied files and changed subplans.

Some explanations. The green are active, the red inactive, the grey are OFF atm (and there is some dark orange or brown color for OnHold). When projects are active, they have one @ per day. The yellow mean that work has been done, the dark blue means I was lazy that day. In some inactive projects I wanted to start soon, I have the white stars in the third row. Each day the project is inactive the stars decrease by one. Projects I initially decided to not start soon (e.g. the C64 or GP32 projects, because currently the CPC project is more important) I have put more initial starts. Also if an active project is idle for 3 days it becomes inactive and the stars start decreasing again. If the project is finished I put a white color text and the Working minus the Idle days multiplied by 2 are new stars I can share with other projects.

There is this specific problem, say for some reasons I was idle (it's not only laziness but real life too) and the stars and idle days of various projects are coming down. Or you may not be motivated to work for a project that has reached zero stars. There is an option to exchange stars, e.g. to steal some from an inactive project with many ones and give it to the project you want to avoid at the current time, thus postponing it for the next days. You can also finish a small project to get new stars to share with the rest. Yes, a bit pressing condition watching the counters decreasing like monsters and wondering how you can work with five projects the next day. And I am currently near this situation. It's interesting to see what will happen. What is the entropy? Will the stars decrease faster than I can sustain a balance? Can I cheat by starting inactive projects for a day, being idle with most for less than 3 days and work the other day again? (remember, when active the stars stop to decrease, unless you are idle for 3 days again). Can I cheat with other ways? Do I miss the point which is to actually being motivated to be creative and not chase some counters? (though it's a nice game too that keeps me focused on projects I would forget for months otherwise and a different perspective to be creative too :) Will I have to switch and adapt to different rules that fit my own pace? I believe that the sets of rule will slowly slowly evolve. It's interesting and I will know in less than a month..

Another bet I set to myself is if I can succeed this time. Always, when I started planning a demo and visualized it in my mind it never end like I have wished and I was even frustrated near the end to finish it harsh. Now we have a CPC demo in my mind, one that if this predictable phenomenon doesn't occure this time, it will be something really great that I will be very happy with. It might be the first demo for me that I will be really really satisfied with. And I want to win this bet because it will change how I see things. When you have failed for 10 times, each next time you know that the predictable result will be to fail again. And you get dissapointed so much that you are not motivated even to start. If this doesn't fail this time I will have broken the ice and a lot will have changed with my psychology of how I see myself and demomaking. Each next time I will know that it is possible in once to dream of a good demo and make it a good demo without having to kill it and make a harsh release. Well, I think I said similar things in "A Step Beyond" too, that it was the first time to break that ice (and it was but several things weren't exactly what I wanted and there were only 2-3 effects and no design (for this one I have great plans :)). But I know that the bet seems like putting myself too high, being unrealistic. However a lot of parameters have changed that persuaded me that now is the time to set the same bet again to myself and truly succeed this time.

Recently I have evolved into a being that might easier and without much frustration as in the past finally make his dreams come true. For projects in general I have first of all evolved my psychology of how I view things concerning demomaking, my frustration, my laziness, what motivates me and what demotivates me, what I really ask for and methods I could follow. Even to stay calm in case of bad times. Also, I have experience. I have build some nice frameworks that are not yet finished but evolving. I have learned to play strategically, e.g. coding the things I can finish fast in order to show something, to motivate me and have a start. In top of all is this MPP application which reflects some of my ideas. I have learned to persuade myself to work for 1-2 hours and not go for 8 hours full (except if I am really into it) because I wrongly believe that without hard work a demo can't be done, to work for 1-2 hours slowly slowly, then make something else and have patience. And I still try to evolve my attitude towards how I plan and work on projects and my life too because it's dynamic. I still find times where I loose my patience but I regulate my feeling better now. Other than that, with the CPC demo I have great support from Rex and Voxfreax this time and we really hope to finish something before Xmas. At least I hope but if I don't I will keep the project still for the next year if my schedule gets out of proportion.

All I need is faith and a lot of courage. Patience, good psychology, trying to regulate my feelings even in bad times, understanding of what I am and what I want to do or where my flaws are. As long as I speak about it and don't code I have this feeling. But I'll have to break the ice this time. I have to succeed and well. Step by step..

Friday, 17 October 2008

The hacker, the cracker and the scener

It seems that my anti-hacker posts will never seize to appear. In fact I am really motivated to get more into it in any way possible :P

I will just make some comparisons now of the average person in three different communities. And two funny analogies too.. (my favorites :)

First, some distinctions have to be made. I will be shortly talking about the hacker, the cracker and the scener. I will define their meaning at least as used in this post. I need to be sure that no misunderstandings will take place because of a different understanding of the same words and that my point will be understood.

The hacker: I know that you don't like the use of this term to describe these electronic pranksters as seen on TV (Neither do I). In this post though I will use it as it is (even without the quotes) and I will mean only the definition as portrayed by the mass media and adapted by our own culture. I will not mean in this post by the word "hacker" the hobbyist programmer, the computer enthousiast or the computer pioneers of the past. Please understand this is just for the purpose of the post and as means to be understood even by the illiterate.

The cracker: Be careful to my definition of this term for the purpose of this post! This is not the term used in hacker ethics to differentiate from the programmer to the electronic prankster. It does not mean the bad hacker or the script kiddie here. It is about the software cracker, the dude who managed to overpass the copy protection of commercial software, makes serial number generators or even makes those nice cracktro screens with gfx/music and sometimes (maybe in the past) option for infitive lives/energy/etc. While piracy is also ethically questionable, in my opinion this guy has not much to do with the hacker as described in the previous paragraph in my opinion.

The scener: Some people say that the demoscene has it's ancestors in the cracking scene (as described in the previous paragraph). Some of the software crackers except from removing the copy protection from the commercial software, also did code some sort of a graphical screen with some music, a logo of the cracking group and a scrolling text with greeting/fuckings to various other crackers and other messages. These are the cracktros accompanied some pirated games which some of you might remember a lot of years ago even though they are not too frequent today. Some of the crackers who liked doing these intros stop their cracking abilities and just released similar cracktros (later called intros or demos (from demonstration)) purely for artistic purposes. When I first got involved in the demoscene I had no idea about the cracking scene. I just liked to code demonstrations of graphic algorithms synced to the music and release them to the public. Demoscene has nothing to do with "illegal" (as in piracy) cracking activities except for the roots (how the cracktros evolved into the scene demos of today).

In a nutshell:

What my terms mean here is:

The hacker is mostly caring about the reach of his goal which is to get access to some server in order to make some supposedly "cool" act as defacing a website, spreading a virus, stealing some private informations or maybe make a political statement. The primary force that drove most of these dudes into hacking could be because it sounded "cool" or maybe they thought romantically that they are heros fighting against the system or anything. They don't really care much about knowledge or programming skills as they just really dream for the time they make a cool "hack" into the pentagon or something. 98% "coolness" / 2% soul in my opinion.

The cracker mostly cares about the challenge of breaking that copy protection scheme, reverse engineering the algorithm behind those serial codes, disassembling commercial software and make few improvements here and there, etc. They get commercial software from suppliers and send cracked versions to the warez dudez who are responsible for spreading the pirated (and cracked) copies. Sometimes they code cracktros attached to the software and run before it starts, to claim how leet they are. The cracker may not care whether software piracy is accepted or not, they are more driven from the challenge of bypassing the protection against piracy and they feel very proud if succeed. Not much code or work is needed to achieve this but they know what a disassembler is and use it regularly for example. Funny thing is that I have met two crackers in the past and they both ignored or even snobbed my demoscene involvement while bragging about their cracking activities. There is a feeling of leetness in this scene but at least it's not about pranks on the internet and those dudes know a bit about programming and love the challenge. 70% coolness / 30% work (always in my opinion).

The scener in his first days had watched some demos done from older scene veterans and for some reasons he really liked the graphics algorithms, music and programming effort went into it. He actually liked the demos alone for their feeling and creativity and thought he'd really like to learn how to create something like that. He is in a great need for being creative with his computer and show that he can do something cool rather than spend time gaming, chatting or watching porn. It's hard at the beginning, needs a lot of effort to learn good programming, optimizations, mathematics, graphics algorithms or even how to choose the proper colors for his demo, it's even hard to organize this one with other sceners who are willing to paint computer graphics or write some music for you and put all things together in a nice presentation. Ripping a demo and presenting it as yours is more than lame in the scene because the whole purpose of what we are doing is to work hard and create a pleasing realtime demonstration of graphics algorithms, art and sound, the creative road taken is the soul of demomaking (entirely opposite from hacking, where someone can even succeed sometimes doing a "lucky" hack in a website and brag about it strongly). Of course there is a bit of a feeling of leetness in the scene too, we use cool sounding nicks and group names and argue with each other too, as in cracking and hacking, something that happens in a lesser or greater degree in every other community now I am thinking it. But the greatest motivation to join was initially to create something like the first demos we have seen and loved, no matter if some of us needed that for curing their low self-esteem too. (I am talking about myself here :)) 20% coolness / 80% creativity.

And now my favorites!

A scener is someone who walks several miles to reach his destination although he enjoys the walk. A lot of obstacles and problems are to be passed on his way. There is a great prize at the end for the good effort.

The cracker needs to jump over a protective electric fence to get to the other side. There is a ramp there at the right position and he finds a broken motorcycle. With his tools he manages to fix it and jump on the other side. He finds the switch to turn off the electric fence and cuts an opening in the fence with his tools for others to get through.

The hacker enters into the back of the car of a careless driver who stops to take a piss. The driver gets back and drives to his home. The hacker gets out, gets into the driver's house without to be seen and starts writing messages with spray over the wall. Sometimes he leaves the place, sometimes he breaks some furniture or beat the crap out of the driver too. And at the end he brags about it, thinks he is a hero and even some people congratulate him for his acts because they have heard it's to be respected.

Another one. What if sometimes even sceners or crackers seem to be engaged into hacker's activities? Why would that happen in any of these cases?

The scener is a scientist who except from his primary expertise also happens to be engaged into lock picking as a hobby because it's a tricky thing to do(like Feynmann for example). At best he finds a safe target just to experiment, not someone else's house.

The cracker is into lock picking sometimes. It's a similar technical challenge as his primary cracking activities and gives him back some more of the leetness that makes him feel special. He tries lockpicking and maybe breaks into some house. He maybe steals some food to eat or supply to other people who need it.

The hacker most of the times cannot even bother to lockpick but slams the door with a kick and gets inside. He either writes some messages with spray upon the walls or furniture with texts that mock the owner, sometimes he may steal some money or only in rare situations breaks everything apart or kills the owners. In the end he things he is a great respected scientist, a brilliant mind or a hero of the revolution because lockpicking is what Feynmann is into also. Most of the people think that these dudes are like robin hood and praise them. When you have a different opinion they blame you of being ignorant or working for something they call "the system".

I said things as raw as I could. Trying to be as exhibitive as possible. And you have seen nothing yet..

Now, to the people who still think I shouldn't be using the term "hacker" to describe what I am talking about in this post I have to say this. Nobody is using or understands the distinction term "cracker". (with which definition I also disagree because there is another scene of software crackers that have almost nothing to do with the new hacker definition (in either color of hats)) It doesn't show the real problem here. We, computer enthousiasts and hardcore programmers are not called hackers anymore. Our image to the average person is of geeks rather than revolutionary heros as seen on TV. And the new definition is deeply into our culture and only confuses things if we try to both keep the old and new definitions or even try to put different titles, not understanding at the end which activities we praise or blame given the words used.

If for example I started by saying that hacker is defined as a programming pioneer of the past that is bound to be respected and then tried to either use the same or even a distinction term (like your bad hacker "cracker") to describe it, people would still click to the well known cool sounding of the word "hacker" and further attribute the good things of the old definition you describe with their liking of the new definition everybody understands. What we would have here as a result is people thinking that illegally attacking or taking access into computer networks is to be respected and it's called "hacking" and it's done by computer gods and think that your distinction talks about the difference between good and evil hackers who both invade into computer networks but for different reasons. This is why I insisted only on the new term definition, because this is what people think either ways and I really wanted to make it clear to them that this one is not romantic or heroic but purely lame.

I thought about the term "neohacker". If you speak to people that people who invade computer networks are called "crackers" (or anything else not using the synthetic word "hacker") they will not understand. Nobody calls anyone cracker outside the world to mean anything like that. It's not deep into their culture as the romantic or heroic sounding word "hacker". And you will confuse the things more. I thought that "neohacker" still having the synthetic "hacker" into it would drag people's attention but make the distinction nicely. "Neo" refers to the new definition of the later generations. "Hacker" with the quotes wouldn't make it because if not written it sounds the same. But "neohacker" would still drag attention and yet not being forgotten as "cracker" and also can easilly make the distinction.

In fact neither "neohacker" would do it because those electronic pranksters and wannabe rebellions would still think they are called hackers and that only the bad sides of their activity is called neohacking. Where they would still think that defacing a website is on the good or accepted side (since it doesn't "destroy" anything, hell yet in my opinion it kills a lot of the precious time of people behind the website or the admins, frustrates people and is simply childish :P). But I will use the term more frequently in the future. Not much that can be done when something enters our culture and stays. But we can forget these terms for a while and just concentrate on criticizing these not really to be respected activities. If only meanings wouldn't be distorted because of the words used..