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.

Sunday, July 10, 2005

Blogger not cutting it

I don't think this website/blog is going to last any longer than any other I've had. I'm going back to the homegrown path. I've been finally learning how to use Atop and Nevow, and I'm on the path to building a decent and usable system with it.
All the blog services I've looked into just lack something I want. Particularly, the kind of organizational system I'm looking for. I'm building my new FrogTongue with a Tag concept, where Tags are basically labels and any number of them can apply to any number of items of content. Tags can even imply that other tags are applied along with them. This will be very flexible, so I can cover a lot of different topics and keep things seperated where they need to be.
I'll be releasing FrogTongue at some point in the very near future. It won't take me long, and I don't intend to do a lot with it. Involgo and Picos keep me busy enough, at is it.
Thankfully, I'll have some help in that area, with a new coder joining the project. My best friend, actually, who is new to programming, but a very smart guy and I'll be giving him some tasks to do in Involgo, which will be very closed and controlled, so he can learn with some definate goals.
Hopefully this all goes well, and we can get Involgo out the door before the end of the year.

Sunday, June 12, 2005

Fitting in with a Tough Crowd

I began this post a while back, saved the draft, and pretty much forgot where I was going with it. Make what you will of it...

I want people to think that I'm cool. I want to impress people, and more importantly, I want to impress the kind of people who otherwise would impress me. I want all the other geeks to think I'm cool. Hey, I'm human.

How do you impress a geek? You be a better geek, in some respect. You write a very useful application, or create an amazingly efficient library for handling a common task. You be the geek the other geeks wish to be. I want to create software, and I want that software to be useful, maybe even to the point of making the world even just a little bit better. If I manage to impress some fellow geeks along the way, then I say that is even better.

To the point I had in mind when I began writing this: I should but do not wish to change my coding style if I want to impress anyone. People commonly don't like my coding style, for various reasons, none of them good reasons, even. There really aren't good reasons to dislike a particular coding style, and I want to make it clear why I think so.

Firstly, why I don't think we have no reason to dislike a particular coding style, and how this is different from liking a particular coding style, which I do think we should do. Source code is supposed to be human-readable instructions to computer, but in truth they are no more readable at the lowest level than an executable binary. In the lowest levels, they are all bits, after all. Source code, however, is stored in a convention of bits, which a computer can process not only as instructions to follow, but as instructions to display to the user. The computer, in other words, can display the text on the screen. The biggest mistake in the software development world is the lack of instructing the computer to display this source code text intelligently. Source code presentation has not improved much over the years. We went from displays of hard-delimited lines, to having word-wrapping functionality that didn't do a good job, so we still keep old rules around about the length of the lines, because that's easier in the short-term than just making the word-wrappers smarter. We got syntax-highlighting, and that was pretty basic, but it stuck and works OK. Code-folding came along a long time after that, and it spread quickly and helps a lot, and its at least something near to intelligent, but it still works with those hard-delimited lines.

Why power of the tab

In itself and its symbolism

The tab is a controversial character, because it isn't really a character. The controversy began with the bad decisions in its original creation. The tab exists, really, in two forms, which work together and sometimes separately, causing most of the problems. The tab is a key on the keyboard and also a character present in many text files. It is the tab character's presence in source code that irks as many people as it makes happy.

Friday, June 10, 2005

Intel, Apple, and the Victims

Right off the bat, I want to say that if you are starting a good band with a good sound, name your band "The Victims", because when I wrote that I immediately thought, "That would be a great name for a band."

So, to the topic at hand. I wanted a blog and every blogger with a sense of trend is talking about the Apple/Intel deals going on before our eyes, and behind our backs. But, not just behind our backs, but behind the backs of several big name companies and tech-world shakers who are going to become very nervous at board meetings for months to come, maybe years, maybe until the very last board meeting their particular company holds. If Cringley is right about Apple and Intel merging, or even if they are only striking lots of extremely friendly, exclusive deals, there is a lot at stake in the world, technologically, economically, socialogically, and politcally.

The first and most important point to make here is to simply point out the amazing sense of irony this situation brings to the table. Do you honestly and fully realize what is going on here? Apple, the only major competetor to Intel's prize architecture over the years, is poised to become their biggest customer. Apple on Intel chips is a strange a sounding phrase as Sadam marrying Mother Teresa!

This move is going to have a two-fold affect on the open source movement, particularly the Linux people. On one hand, everyone is going to have a much slicker choice of alternatives for Windows very soon. On the other hand, this will open up the idea of using something other than Windows to the mind of Average Joe User, so he will be more willing to take a chance on free systems like Linux. It will be interesting to see where these trends balence.

Over on Slashdot, this guy makes an interesting comment about the biggest mythical challenges to the Apple/Intel pair that could pop up. The "Microsoft acquires AMD" is a little bit of a stretch, but the IBM/Cell/Linux idea is probably a crowd favorite. I've been waiting to get my hands on a Cell chip for a long time now, and seeing what it might be able to do in the hands of all those skilled Linux developers and other open source coders is really a fantastic thought. I'd love to get a look under the hood myself.

HP is definately going to be in on this deal, in my opinion. They already make Apple's iPods, they have close ties to Intel (Pavilion and Celeron sure bring in a pretty chunk of change for the two of them), and with a move to Intel it will be much easier for Apple to shift the hardware work over to another party, and focus on the software work they are so blessed at.

These are the cards, and the major players have their hands. How will they play them? What wild cards do they have up their sleaves? I for one am very interested to see how this game plays out. I was about to purchase an iMac or an iBook, but now I'm going to step back and watch, and way, and hope for the best. Rought waters are ahead, but we might come out of it all for the better, or hell could break loose and we'll all be stuck in the mud.

Wednesday, June 08, 2005

First Post

(That title is in honor of the great and silly internet past-time of First Posting)

I ran a blog on my website (www.ironfroggy.com) a while back, with a very small number of readers. I probably knew each of the readers personally from before the blog, actually. The main reason I hosted it there was to roll my own blog technology. I actually wrote a very basic web-scripting system in Python, that let me embed posts, basic data, etc. into web pages. I even wrote my first GUI application as a tool for managing the posts and categories. To top it off, it was all multi-user enough for my wife to run one, too, and to merge our personal blogs from our homepages into the front page of the website, all in my own primitive scripting format.

What a trip.

Well, for the moment I can't spend the time maintaining my own server and all that, so I decided to move to a blog service. I wanted one that will still let me host from my own site, which blogger.com will let me do. And, when I saw I could post from my phone, I was hooked. Finally, a good way to vent on my lunch break at work!

So, what should a blog be? What should my blog be. I suppose, as any blogger does, I would post about the things that interest myself. I will post about my views of the world, my ideas for software and technology, and maybe some thoughts on my first book I am slowly writing.

This I write for myself, to take my jumbled mind and lay it down, for a moment, into a coherent enough a set of ideas that I can make sense of it, for a moment. Perhaps, just maybe, you can do the same.