Wednesday, March 28, 2007

End of an Abusive Relationship

I first learned Java 4 or 5 years ago (I think). There were several reasons for that. Among them were the fact that it is mostly cross platform and that the computer I had at the time wasn’t beefy enough to run Visual Studio .NET (I got a new computer about a year later, but the damage was already done heh).

Over the years, my one main complaint with the language has been that it’s a royal pain in the ass to lay out a GUI with it (for me at any rate). My general cycle goes thusly – make a change, compile, run, tweak, compile, run, finally get it right (maybe. If not, then back to tweaking), and then move on to the next change.

The main problem with this is that most of the apps I’ve had to do with it have required a GUI component. Heck, most of them have been a GUI and business logic sitting on top of a database. This means that I spend 80-90% of my time trying to get the GUI to look halfway decent and the other 10-20% doing the actual logic coding.

I can safely say that the containers scheme has given me more headaches than even having to do manual memory management in C or C++. That at least is fairly straightforward even if I dislike having to do it when I don’t have to =]

It’s the reason that I have no example programs in Java on my website. I loathe even thinking about doing GUIs in it anymore. I’ve had enough of the bull and have decided that it’s time to move on.

I’m switching over to C#. The language is rather similar, most of the people I’ve had to deal with were Microsoft-centric anyway, and laying out a GUI in Visual Studio is a piece of freaking cake.

Another upside is that the job market for C# is a heck of a lot bigger here than it is for Java.

I’m not tossing out Eclipse because I may have to maintain some of my old code, but chances are that I won’t be doing any new Java-based projects.

You’ve been an interesting partner, but it’s time for you to join my other ex, Perl. I’m just not into S&M when it comes to writing code *smirk*

Current mood: liberated
Current music: Don Henley – The Garden of Allah

Tuesday, March 27, 2007

Important things that most companies need to learn.
(In no particular order)

  • The customer is NOT always right.
  • Always back the people who report to you if the customer (or whoever is attacking them) is wrong.
  • Always maintain your integrity.
  • Remain even handed and level headed.
  • It is alright to lose a customer to maintain your integrity or if they become a real problem.
  • Low cost is not always the best policy – you can be cheap, high quality, or have good service. Pick two at the most. Option one often has to be chosen alone.
  • You are a part of your community. ACT LIKE IT.
  • The people on both sides of the sale are important. Treat your employees with contempt and they will leave on the first chance they get.
  • If your company has a bad reputation, it is probably deserved. Examine yourself honestly and find out why. After you know the reason, FIX IT.
  • Don’t shoot the messenger.
  • Value honest, constructive criticism.
  • Be open to new ideas.
  • Realize that some ventures fail and accept it.
  • Be wary of people who advocate going after the quick buck at the expense of long term goals.
  • Plans should cover short, medium, and long term goals and have some sort of backup strategy.

Current mood: annoyed
Current music: Tears for Fears – Break it down again

Saturday, March 24, 2007

Of Life and Experience

Sorry for the lack of updates. It’s been hectic of late.

On the upside, I’ve started training again, so I’m really beginning to feel a lot better physically. It’s amazing how that works =]

It amazes me how often I seem to be treated like a young kid who doesn’t know anything. Granted, at 26, I’m not as old as some other people, but, so far at any rate, it’s been a long interesting trip and I seem to have covered more ground and lived more than a lot of people in the twilight of their years.

That’s not to say I know everything. Hell, I learn new things every day and I’ll be a bit concerned if I ever seem to stop. However, for most things, it’s just not my first dance.

I have enough stories that I don’t even bother to tell most of them to people who don’t know me very well because they’d never believe them (hey, they have a hard enough time believing that the mala I wear around my wrist was a gift from a group of Tibetian monks when they ask about it). I think the comment one of my training partners made one day around 10 years ago was that I was 16 going on 600.

I’ve just always sort of been thrust into the leadership position either by circumstance or (rarely) someone’s design. I’ve become the voice of wisdom and experience among other things.

Despite that, everyone seems to think that I don’t know anything. Though, to be fair, they also seem to think that I’m some sweet, innocent guy, and that’s just not true. I may be a nice guy, but sweet and innocent I’m not. I’ve been through too much to be either (I do admit, though, that I can be sweet on occasion, but that’s generally for specific people).

After having friends die around you, keeping others alive, and running across people that wanted you dead for various reasons, a lot of the innocent just sort of leaves you. As for the sweet part, let’s say that I tend more toward hopeful cynicism. I smile, but not like I used to. It feels more like a mask most days now.

Somehow, I still seem to remain charming though. Go figure.

I sort of miss being innocent and sweet, but at the same time, I wouldn’t be here if I was still that way. I guess it’s all for the best.

It just gets kind of old being treated like the kid and then ending up being the big brother because people underestimate both you and the situation.

Current mood: tired yet thoughtful
Current music: Ozzy Osbourne – Old LA Tonight

Thursday, March 08, 2007


This isn’t the first time I’ve said this, but I’m weird.

I think that the name of a piece of software should give you an idea about what it does. A lot of people out there, especially in the open source world, don’t seem to agree with that school of thought. Too many of them try to come up with cool or clever names for their projects.

Think about it for a minute. With the exception of PDF Creator, Open Office, and RubyZip, most of the open source programs I have on this computer have names that have absolutely nothing to do with what they actually do.

While I love Firefox and Thunderbird, their names give you absolutely no idea of what they actually do. Nor does Seamonkey (formerly Mozilla Application Suite) or IceWeasel (basically a rebranding of FireFox).

This is a real problem if you want non-technical people to actually know about and use your stuff.

I practice what I preach most of the time. If there are exceptions, they are generally for a good reason.

That said, I try to name my programs things that make sense (the ones that I make for myself at any rate. The ones I’m commissioned to write get named whatever my clients want them to be named provided it doesn’t violate trademark or something like that. If they want it named “Joe Bob’s great, cool, and ultimate app,” then by golly, that’s what it’s going to be named. After all, they’re footing the bill.).

If you look at the programs section of my website, you’ll see a few programs there and they’re all named things that make sense with one possible exception.

Zipper – it zips files from the command line. I used it for setting up my entertainment center computer. It’s actually quite handy.

Sorter – you guessed it. It sorts files. However, this was not the first thing it did, nor was Sorter the original name (which is why it’s at version 1.1.1 now). It originally started out as a way to strip underscores from file names and replace them with spaces. Sorting ended up being an afterthought (largely brought on by my finding out how much of a headache it was to sort several thousand files into alphabetic directories in Windows) so I changed the scope of the project.

The original name of Sorter was Stripper. However, that just sounded bad and wrong. Think of the reaction of people looking at my programs page and seeing two programs named Stripper and Zipper. They’d probably accuse me of coding porn apps *smirk*

Sigmaker – it makes my sig file every day. I like having variety in the quotes that are at the bottom of my email sig, but I don’t want to waste time choosing a new one every day, so I spent 5 minutes or so coding something to do it for me.

Funlibs – okay, this one sort of breaks the pattern, but there’s a good reason for it. It was a fun Madlibs style program. However, I can’t call it Madlibs because that’s someone else’s trademark, so I called it something similar. Apparently I’m not the only one, because Google turns up several other people that have also called their program Funlibs.

Yes, I realize that I also didn’t open source FunLibs, but that’s because the code is fairly ugly. I was doing it for the end result and out of boredom. I didn’t expect the code to be overly pretty. However, my naming convention stands.

The point is, name things in a way that makes sense. And I don’t want to hear “well, they can just change it if they don’t like it” or “I don’t care if anyone uses it”. First off, most people do not want to dig around in someone else’s code (not even other developers). Secondly, if you don’t care whether anyone uses your program or not WHY DID YOU WRITE IT IN THE FIRST PLACE????

Writing a program without a reason to do so is just an exercise in mental masturbation. Why do it? Even if you’re just writing it to learn something new or keep your skills sharp, write the bloody thing like you intend other people to use it because that’s what you’ll be doing on the job. Format the text well, comment it so that it’s easy to follow if it has to be updated or read, and for the love of all that’s decent, name it something that makes sense.

Current mood: tired
Current music: Rammstein – Du Hast