Sunday, August 14, 2005

Fan-Tab-ulous!

I've always found myself to be a proponent of tabs in favor of spaces in source code. It makes more sense, because the reader can choose whatever tab-width they want, so it makes the source code more accessable, with a properly configured editor. Lately, though, I find myself using two spaces instead of a tab character. I still feel tabs are better, so why am I using spaces?

On Game Ratings, Companies, and Retailers

There is a three-fold source to the recent debates and arguments surrounding the video game world. Most people who care, and plenty who don't, have heard about the scandles with Grand Theft Auto: San Andreas and the Hot Coffee mod. That isn't what I want to focus on, because that has already been blogged to hell and back.

The system is broken. While most studies show the average gamer as being 34 years old, the industry is still trying to sell games to kids and teenagers. Now, I have no trouble with giving a game an AO rating, but why do retailers have a problem selling them? They sure are cutting out a huge section of their consumer base. Besides, Wal-Mart actually does card for M games, last I checked, so why not sell AO games and card them as well?

The bottom line is this: if most of the people buying games are adults, why should they always aim for a rating that lets teens buy it (T or M is usually the highest rating they want)? The answer is that the stores don't carry AO games, but that just brings back the questions about the average gamer age.

In the end, we just need to work to make everyone realize that AO games aren't bad. You can carry them in your store and card anyone who looks too young, just like smokes. Only AO games don't kill people, they help stressed out adults relax after a long day of working as a productive member of society.

Monday, August 08, 2005

The Perfect Python IDE

There are a lot of things I look for in a good IDE. Looking for those things, I've tried Kate, KDevelop, Eric3, Komodo, and Boa-Constructor, to name only a few. Some of them give me a few things I like, each one giving different things. But, none of them have all of the core features I really want in a Python editor.
So, here I am laying them out. Maybe an IDE will be developed meeting these requests, or maybe I'll do it myself eventually, possibly joining one of the above mentioned projects.
Such an imaginary program we will call, for the time being, The Perfect Python IDE.
  • Indentation is important in Python programs. The fact that one can not mix tabs and spaces brings hardship to anyone who commonly edits multiple projects' files simultaneously, when they use different indenting rules. The Perfect Python IDE sees what kind of indenting is being used in the current file, and auto-indent following that style.
  • indentation exists both in the actual code and in how the code is displayed. Sometimes a line may be lengthy on a particular display, or when I'm using a horizontally split view. The Perfect Python IDE dynamically wraps the line's display without affecting the source code itself, and even indents the following line for clarity.
  • Of course, The Perfect Python IDE knows that if any feature gets in the way, its not a feature; it is a bug. That's why it only follows through with an auto-completion when I explicitly tell it to, and it always implicitly goes away the moment it sees I don't want auto-completion.
  • Even the smallest of projects needs a sense of history. You never know when you'll want to undo something you saved a week ago, so version control is a must. An IDE should naturally compliment such a system, like CVS or Subversion. The Perfect Python IDE only asks me for a path to the local working copy, or a svn+ssh:// URL to the repository, so it can just keep the working copy files hidden while I work on them.
  • As long as I'm just giving The Perfect Python IDE the URL to the repository, there isn't a need for any silly project files.
  • Now that my files are stored in a repository on a remote server, interested people might work on the code, too. They'll probably want the code to work when they update their working copies, so I'd better test before every time I commit something. The Perfect Python IDE can see my test/ directory and my test_*.py scripts and run them, being sure to set the PYTHONPATH for my package.
  • UnitTests being run is one thing, but doing something with them when the tests fail is something to be really proud of. The Perfect Python IDE extracts the tracebacks and bookmarks all the lines in the call stack. It even numbers them and displays local values at the time of error.
  • The Perfect Python IDE may be perfect, but part of that is being exactly what I want it to be, or what you want it to be. Those things may be different, but The Perfect Python IDE can be different, too. It can be customized at any point; and, it can be customized in Python. Of course, it is used as an editor of those very same customization scripts.
  • Not everything needs custom code to make it act right. The settings and configuration can go a long way, too. The Perfect Python IDE never asks me to restart it for settings to take affect, and it always lets me know exactly what any particular setting does.
Do I ask too much? I could probably ask for more. Did I not specify well enough what I want? I'm mostly listing it to get things straight in my own head. Does something already exist that does this all? I haven't it. Do Vim or (X)Emacs do the things I ask? They're ugly. I pay for high-end computers and large monitors for graphical interfaces, not consoles.
Yeah, they both have GUI modes, but they kind of suck. They're little more than terminal emulators enhanced for that particular program. Either of them could be a good GUI IDE, but communities around them just don't seem to understand the reason to make it looks "pretty", so I doubt they will, at least, not for a very long time. Despite what many techno-machos say, programs really are better when they're pretty.

Tuesday, August 02, 2005

Lonely Coding

There are a lot of interested I've carried throughout my life. I've dabbled in so many arts and craftworkings and skills, but never really mastered anything. I've wanted to be a writter, a painter, a movie director, a programmer, and probably a dozen other creative endevours. I've shared all these with someone.

There are three people in my life that I've ever really considered my best friends. Unlike the childhood movies you might be used to, we weren't like the four musketeers. As a matter of fact, for the most part they barely know each other. But what they all have in common is that at one point, we were supposed to do something big.

I was supposed to start a successful art career alongside Ben.

Matt and I were planning to build a solid tech company from our ideas.

And, along with David, I may have made gripping films of a powerful nature.

None of it came to pass, even though we are still great friends. Ben doesn't draw anymore, David never finishes any stories he writes, and Matt might be a decent SysAdmin, but he can't code a lick.

So where does this leave me? After much of my life looking forward to realizing a dream of potential alongside one of my best friends, how do I drag myself through it alone? It makes me wonder how much I wanted to success, and how much I wanted it alongside a really good friend.