Friday, September 26, 2008

You're Fired! Details on IntraWiki

I have to relate this one, it was just too ironically funny.

I'm a big RSS nut, and I have our internal Wiki site's change log RSS as one of my feeds. This way, I get to view all recent edits to the Wiki, but otherwise rarely-if-ever access it, and even more-rarely-if-ever create or edit content in it.

Typical fare is product release updates, and people editing their personal pages to claim new skills or skill-levels (What!? Jimmy's a Java Expert? Not hardly!) I have not touched my page; I know too much, rofl.

As we all know, things here in the US economy are tightening, and our organization is no exception. In fact, one of my officemates just got the sack.

Was that the funny part?

Obviously not. The funny part was when I viewed the change log of the Employee List page, I noticed that not only he had been dismissed, but that someone else had been too, and the same day to boot!

Now I obviously feel bad for these new ex-employees, but I feel even worse for the organization that didn't make any mention of it, via email, verbally, etc. but only in the fine-print of some web page.

Thursday, September 25, 2008

If I See Another Hard-coded SQL Statement I'm Gonna Yak!

Was that long enough of a title for you?

Fucking-ay right-on! That's about how fed-up I am with this crap.

Why do people think it's easier to just slog it all together, and remember to quote everything, and always messing with date-to-string conversion, and get-a-fucking-clue!

You lamers know I'm talking about you! You wouldn't know a PreparedStatement or a parameter marker, if it came up and bit you on the ass!

How do you expect anyone to externalize and be able to configure your mess of bullshit string-appendage?

Why aren't you smart enough to realize that the parameter markers help your lame ass by letting you pass your values in as their native data type, without all your lame string-conversion bullshit!?

Why don't you want to make your work easier? Don't you think editing a configuration file (you can use Notepad in a pinch) is easier than rebuilding and redeploying everything in Eclipse?

Of course, chances are good you are the same lamers that hard-code all your constants, and never heard of a properties file....

Let it out, bruvva. Don't you want to back that up with some code samples or awt?

Fuck that. Everyone chooses their own path. Just stay off my project.

Friday, September 19, 2008

Rube Goldberg 3.0

Man, what a week! My aging laptop finally got a nasty infection, I'm hoping because I have let my AV definitions go stale (I haven't paid my fee).

So you were browsing porn then?

Well, of course! I don't go to gaming sites.

So, back to the title of this post.

Years ago, in a hazy state of mind, my friend and I came up with the concept for a bogus software application, named Rube Goldberg 2.0.

The great ironic part of this concept (as the name should suggest), was that there was in fact no software application at all.

What you talkin' 'bout, Willis?

The whole thing was an exercise in futility. The application was the "Installer" itself, which was a purposefully-designed maze that led to nowhere. Under no circumstances would the user ever be able to install any application (remember there was none anyway) and they would eventually have to give up.

Now in order to keep the user hoping for success, the whole thing had to be plausible, i.e. it had to look like the "installation" was making progress, and if you just confirm this one more scan, I will install, I promise.

What pure evil.

As I watched my infection unfold, the fake anti-spyware it installed reminded me exactly of this, as it pretended to find infections, and flashed across items from my filesystem (or maybe not even). It even prompted me to allow it to "clean" my system, or continue to work "unprotected".

Fortunately, I have a friend in the computer de-fecking business, and he has helped considerably. He instructed me as to what tools to download, etc. Which leads me to another supporting anecdote.

I had been infected at such a deep level, I was redirected to a bogus download page for one of the AV tools I wanted to install. In fact, this is how it got bad! I had never seen the real download page, so I blindly downloaded and installed Rube Goldberg 3.0! The journey was afoot.

Thursday, September 11, 2008

Everywhere Else It's 11.9

Just making a point about i18n and our friend, the date format.

You may not be able to tell, but I live in the US, and we format dates month-day-year, unless you are in the military. I actually prefer the day-month-year format, and use it in my notebooks, etc. I also prefer to use the 24-hour clock, and my car actually allows me to set the display that way (it's a European Luxury Sedan btw). As many devices that allow for it (a delightfully-increasing number), are configured for 24-hour display. Free trade is finally good for something!

People always ask me, "Why do you use Military Time?" and I say "No, that's the World Time". My daughter is almost getting it now, when I answer her "What time is it?" with "It's 19.37 sweetheart".

Saturday, September 6, 2008

A Simple Goal

I have set only one goal for this blog for 2008, and I will share it with everyone:

And you mean literally "one" don't you....

To post more than last year (30 posts).

One could say that this post in-and-of-itself is a transparent attempt to "pad the stats" so it were, to get us closer to our goal.

Glad I didn't have to come out with it....

Nevertheless, excercise is what keeps one in shape, so-to-speak. And so, I must "speak", at (ir)regular intervals, to keep the blog in shape.

It is shaping up like some kind of large turd!

Well, this is the opposite of a diet, what did you expect?

Thursday, September 4, 2008

Using Annotations in an IoC Protocol

What kind of high-falootin' title is that!? Don't try to come off all educated now...

Any-road, I have been leading the dual Java/.NET existence for the last few months, and I realized that Java 5 has Annotations, which they obviously stole from you-know-where.

Since I am a great fan of Inversion-of-Control, I took the 10 minutes to read about how to define and use Java Annotations.

The beauty of marking stuff with meta-data is just that: beauty. I can now apply whatever algorithms (i.e. "protocol") I want, and I can control participation simply by checking for the meta-data.

This is important, because otherwise the "burden" of the protocol gets uninverted back into the instance itself, whereby I have to remember to deposit all these bits and baubles of code in a bunch of overriden methods, and heaven forbid if I want to alter the protocol, because now I have all these instances I have to tweak, and hope I get it right 100%.

Another advantage is similar to using interfaces, in that any instance participating in the annotation protocol is not obligated to derive from anything in particular.

I am currently using annotations to produce a UI binding framework for a certain mobile platform, whereby the "gluing" of code to screen elements is a subtle blend of annotations (to identify the participants and their mappings) which "mark" fields that contain (subclasses) of a specific abstract class (it could be an interface).

Without this handy-dandy mechanism, I would be left with (an interface with) bookkeeping methods, at the very least, to build the list of participants the annotations indicate. Not only that, I would have to provide the "extra" data (in the annotation properties) in that code as well.

It's basically the difference between this


public @interface TagMe {
  String value();
}
...
public class SomeClass {
@TagMe("LastName") MyInterface field1 = new MyImpl1();
@TagMe("FirstName") MyInterface field2 = new MyImpl2();
@TagMe("FavoriteColor") MyInterface field3 = new MyImpl3();
}

and this


public interface ITagMe {
  void add(Map list);
}
...
public class SomeClass implements ITagMe {
MyInterface field1 = new MyImpl1();
MyInterface field2 = new MyImpl2();
MyInterface field3 = new MyImpl3();
public void add(Map list) {
  list.put("LastName", field1);
  list.put("FirstName", field2);
  list.put("FavoriteColor", field3);
}
}

Only with less freedom. The reason being that it is possible to use multiple annotations, in order to specify additional or optional meta-data to the protocol, or to a (possibly unrelated) protocol that is using the same set of participants.

Disclaimer

Look, this is humor, so put away the flame-thrower! Just have a laugh and go on your merry way....