Walking Days... in Plural

The day walked away from me today. Didn't do much, but got over some things. I'd be lying if I'd say that I didn't re-edit that last sentence and that I didn't hesitate to write this one, but I did, for both things. Sometimes I believe that I'm playing a character in a movie, and that that character should be a certain kind of person that is rightful, trustworthy, weird but innofensive, and just plain nice... but then I hesitate: am I being this person? Or am I being me? Then I realize that I really don't know who I am, just a weird mixture of personalities that I've met throughout my short years and have liked.

Interestingly, one of those personalities is very, very sincere, and really doesn't know how to say things, or how to act. I think that this personality is the one that is the most manifested in me; I don't know how to act, and I go into a serious state in which I just stand there, not knowing how to go about, feeling uncomfortable with my surroundings for no reason. Then another personality kicks in when somebody is putting attention: the talkative one, the other side, which is also very noticeable in me. There's supposed to be a listener somewhere in there too, but I haven't seen much of him lately; peaty, I really like him.

The day walked away from me today... the hardworking personality didn't come out; well, he did, for a couple of hours, but then the house maintenance guy popped in and got busy with other domestic things. I've grown accustomed to talk in plural about myself to myself, and I know it's not right to the point that I don't do it with other people around, but I feel comfortable doing it... we feel comfortable doing it. We're not well, we know, and even now, when we're writing this, knowing that somebody is going to read this, we feel the automatic need to write in singular... but now, that's what we are: plural, a bunch of needs, a bunch of moods, a bunch of attitudes that we put in when a certain situation arises. We guess that it is when another bunch of moods go along well with us that something in us kicks in and knows that it is when we multiply. We acquire new ways of thinking, new moods and new standpoints from where we foresee our future.

We're plural... but there's always this one personality that controls everything; or, well, there should be, from what I understand. What's mine? Where's mine? Could it be possible that I haven't acquired it yet? I will like to think that I have, since I've come back to singular again.

Yellow pads, padded cables, cable black, black camera, camera eyesight, sight of past, past tense, tense calm, calm door, door tree, tree forest, forest town, town agriculture, agriculture corn, corn chicken, chicken yellow... a chain of events that make up a sentence. A bunch of thoughts, a bunch of moods, a bunch of needs represented by two different things: a direction and a vehicle. The direction? The thought process that made about that chain of thoughts. The vehicle? The shell that embodies the thought process, in this case the sentence. And yes, while these are still singular, even the description of them still needs to be plural: a direction and a vehicle. Everything's plural, and yet I refer to myself as singular if I'm around a group of people (ironic, isn't it?). It's possible that it's easier to direct your attention to a person, not the group of thoughts and physical organs that make up that person.

In any case, I'll continue to refer to us in a way that my friends don't think we're completely out of my/our mind(s)... unless somebody states a preference for the alternative.

New song: Pao

Quick post:

There's a new song: pao (keeping with the 3-letter tradition). You can find it in this box.net public share or on the sidebar (if you're reading for blogspot.com). It's #9; hope you like it.

Remember, that if you do download the song (or any other one of the Just Three Letters demo) please comment on this post or on my MySpace; it's comment-ware music!

How to Write a Successful Application

I know what you're thinking. Well, no, I don't. But I do think I have a pretty good idea: “here's another guy that is saying the same old thing about how to write software”, and sincerely I'm not. If I would be, the title of this writing would've been How to Write an Application Successfully. This is not a guide to software programming, or to learn how to code. It is basically what to do before that.

The main topic here is: plan ahead, really ahead. I jolt at the idea of seeing the developer wanting to do a program that has already been done many, many times before (how many iTunes Cover Art displayers are there already?). So, before you do anything, before you even begin thinking of a line of code, think of the purpose of your new program. I know this is very The-Matrix-y, but bare with me, as I haven't seen this topic talked about as much as I would like to in Software Development forums.

A program has to fill a need; it may be a need that nobody has thought of before as needed to be satisfied (a car really doesn't need leather sitting, but when given the option, people usually welcome it). This can take ages to find, but it's what will give life to your program; is its soul, and if you don't provide it with a clear purpose of what you want it to accomplish, it will die a very painful death. Why? Because of our nemesis: enter confusion. Confusion is, in my opinion, the main reason for program deaths in the last 10 years. Users want ease of use as well as functionality, and if they don't get both, they'll look somewhere else or even may start to write their own application. In reality, because of this, even though the main purpose of your program may have been already used for making other programs, the sole fact that your program may be easier to use than others will gain it a lot of popularity. Look at, for example, the iTunes Store: they have sold over 3,000 million songs, and it still gaining popularity, all because of the ease of use of buying a song and put it onto an iPod and non-obstrusive DRM, regardless of the fact that there are other ways of obtaining that same song for free. It was planned from the user point-of-view, and was done with ease-of-use in mind.

So, the key ingredient (in my opinion, other than functionality; and the jury is still out on that one) is ease of use. I want to point out that this doesn't involve eye candy (shiny buttons, transparent backgrounds, and cool transitions); Mac OS X Developers love to throw this stuff around a lot, and, while I do appreciate it, I've seen that sometimes it actually adds to the confusion. Ease of use is just what it sounds like: that is easy to understand how it works, what it does, and what needs to be done to make it work. The latter is a very important subject: I have helped debug many different types of applications, and the top thing in the list of questions that I always ask the developer that are almost always never answered is “What is that you specifically want the user to do to use your application?”. If they do answer it, it's usually in the way of “I'll leave that to the end. I want it to work first.”. Well, it sounds logical, from a developer's point-of-view, but what happens then is that you've alienated the user experience from your thought process completely, potentially making your program clunky and difficult to understand. Not all users are developers, and even fewer think like one. It is important to mention that a lot of applications today (e.g. Microsoft Word, the whole of GNU\Linux) were developed like this (functionality first, rest later) and have gotten very popular, so I'm not saying that this method is wrong: it has worked on some occasions. However, do remember that there are countless seminars and workshops out there that teach how to use most of those programs, so their popularity cannot be attributed by their ease of use. Interesting side-note: the popularity of Linux drastically went up just after an understandable and easy-to-use graphical user interface was added to the mix.

If you're still around, you're probably asking “Ok, then, so how do I make an easy-to-use application?” This is where the planning way ahead pays off. After you've decided what is it that your application will do, sit down (if its possible, with a graphic designer) and design your graphical user interface first; every window, every word, every instruction that is going to appear. Show it to people you trust that don't have a developer background, ask them to do a certain task and see if they can figure out how to do it just by seeing the application interface sketches. Is silly, I know, but the information you get from this stage is golden because you're already debugging your software without having to write code. A lot of major changes done to applications occur during the testing stage with people outside the software company (known as the Beta stage), and usually they are changes to the user interface, and sometimes these changes imply a major change of the functionality of the program, which means that you'd be working backwards. If you do it beforehand, a lot of these major changes will be taken care of before the developing stage, when you start to actually write code. Now, doing this will also mean that you'll be working in an uncomfortable position: going this route, it is very common that the decisions made in the designing stage make the developing harder, longer, and more frustrating. This is because your developer mentality is telling you that if the whiny little user would learn to use your program a way that you know would be easier to code, you wouldn't need to be spending an extra hour everyday working around it. However, it is important to keep remembering that in this arena the user is not obligated to work hard, you are; and that this hard work will pay off.

By the way, we're still not in the developing stage (that bit was just a preamble of what's to come). After the designing stage comes the pre-developing stage, in which every part of the design will inspire a part of your code. Every button and menu item becomes a module of code that can be called at from every part of your code. In this day in age, most high-level languages (like C#, Java, etc.) are object-oriented; follow that path, extrapolate it. This actually makes the developing stage easier to delegate, which in a software company of more than 5 people is very important to do. When you have planned all your modules, order them up in priority, assign people to each of them, a time frame for each, and start coding. By this time, you should have a pretty good idea of when a first draft of you application should be finished.

When it's done, and you've tested it yourself, go into the Beta stage. I know we kind of already done that before (designing stage), but it's important to reiterate the information you've used; besides, no programmer is perfect and bugs will come about, and this stage will shine light on many of them. If there are any bugs, finding where they're hidden is simple as you now know what module is connected to what part of the application: if the user clicked a certain area and caused a bug, it's just a matter of checking which module is connected to that area to get an initial track of the bug's whereabouts, following it to its home, and squashing it. I know I'm oversimplifying the process, but you have to remember that one of the hardest parts of debugging a program is to find where the bug begins: that is why every time you hand in your computer to a technician because of a problem it has, and a week later it's returned to you without any fixing because “The problem could not be reproduced”. This is also important for when you start adding new features that your users want, as it would be easy to do so because now your program is modularized and adding in to it is easier then it would've been otherwise. Obviously, this also applies when after you publish it and still getting bug reports and feedback on how to improve it: fixing or modifying your application will be more straightforward.

In any case, from then on, the way you publish you application, how much you charge for it, if it's open-source or not, etc. is completely up to you, but do understand that it will also dictate in some degree how popular it may become. I won't get into the details of how you should go about this as it is a completely new subject unto itself, but I will say this: most donationware/open-source programs out there have become increasingly popular and self-paid for. I'm not measuring success by the amount of money you get from the project, I'm measuring it by the amount of people that are using it. And, frankly, I think this is the best way of measuring it, and the only way of enticing people to use it is to make it understandable and easy to use.

All of this can also be applied to any kind of application, like websites and even security systems. To quote Bud Tribble, Vice President of Software Technology in Apple Inc:

We spend a lot of time making the security features easy to use for our users. [...] As a result our users keep their systems up-to-date. [...] We paid attention to ease-of-use.

[...] Our security principles are actually very simple:

  1. Good security starts with design, not something you slap on.
  2. Good security is easy to use, security that is not easy to use does not get used.
  3. Good security continues to improve, it's not a one time deal, it's not a one shot, it's something that we are continually paying attention to with every release.

Remember that this a company with an operating system that hasn't had any known virus out in the wild (another subject unto itself), so their impressions on this subject are very relevant.

I'm always looking for a good debugging project, I love answering questions about this subject (it makes me feel smarter than I really am), and I love debating about this and other topics. If you have any questions or comments about this, feel free to post them here and I will make sure of answering all of them.

Quick Post about Box.net Widget

Just a quick post (I swear).

Box.net is the bomb. I've been using it for a long time now to have a place for my demo to be downloaded from, and some other stuff as well.

Just recently (meaning, around five minutes ago), I saw that I can also build a widget, provided by Box.net, to display certain files from my account. And, if they are music files, you are able to hear the song from inside the widget. Have a try, it's in the sidebar, in the "More About Me" section.

For anyone that is reading this from inside Facebook: go to my blog; it'll make more sense there.

Remember: it is comment-ware music. If you hear it, just comment in this post with some feedback about it.

Have fun!

We

Back to reality, cold in me.
Throat sinking and not only from the writhe of the now ever-present, ever-confusing clouds, but also from the ache of the now ever-absent presence of my loved everything.

Back to reality, headache-ly.
I'm getting tired just thinking of the return to that life; but enthusiastic about it nonetheless. It's a bittersweet feeling, I think is the word; a crumble of tasty mud running through my gums, although disgusting to the touch, it is cleansing.

Back to reality, and sleepy.

Back to reality, truthfully.

Back to reality, lonely.

I feel like crying, again, and I might later on if energy none-withstanding.

I feel like running away, again, and I am, in a way, from the other reality that is my hometown.

I feel like the same, again, but I'm not... I'm not... I don't know how I know this, but I feel it. Not too different, of course (this writing is evidence of such), but enough to notice it from a couple of years ago.
Is you, isn't it? I might resolve that a person changes in small ways, in small increments through time, which may be right, but there was a jump, a big step recently. It was you, wasn't it? How? Why? It can't be possible for me to feel this importantly towards you without the pressure that comes with it... is it my wish coming true? Or is it that I'm so accustomed to pressure that I'm not feeling it? If so, is that a bad thing?

You're not here, but you're present... you're there, but you're not. You're becoming the breeze behind my ear when sleeping, the creative thought when typing, the whisper that wakes me up at night. Where are you? And how come I'm so at peace with not knowing? Am I truly not letting myself control this? Am I really sitting this one out and see it play itself out? Are we winning? Why is it that I don't mind if we're not?

... Ja! Because we're plural now ... we ... Nothing else matters, we are we. We are bound, we are going to struggle, we are we and that makes all the difference: it is we now, not you, not me, but we ... although a little bit late: welcome ...