It is amazing what you learn when you start extending an application. As stated yesterday, I am porting a Torque application to use the iBatis database layer. I think I may have dorked up the database design when I originally wrote the application. :) Or maybe the database design is correct, I just goofed the object model. I am starting to lean more towards the object model being wrong because the datamodel is pretty strong. Anyway, what I thought was going to be a fairly simple port is turning out to be... not so simple. But, that is not because of Torque or iBatis, just my rookie design skills.
The love for Hibernate abounds. But I think Vic has found a challenger in iBatis. Last night I decided to give iBatis a try and see how long it would take me to create a simple unit test to get a bit of information from my database. To my great surprise, it took less than an hour.
So, I am throwing out a challenge. Specifically to Matt. We have had a couple of conversations about Hibernate and how to get it working. He also made some design decisions he made in his struts-resume application that lends itself to this type of "challenge". Matt, I would like for you to port struts-resume to iBatis. I will be porting one of my applications from Torque to iBatis this weekend to see which I like better. Are you interested?
I wanted to take a screenshot of some wonderful images G-Force was spitting out. If you have never seen G-Force in action, you owe it to yourself to download and install it immediately. Then, choose your most favorite song and let your eyes feast on the tunes. G-Force just "knows" what a song should "look like". G-Force expresses the emotion of a song through continuous changes to patterns and colors being displayed.
One of my favorite songs has a "searching for your soul" feeling to it. I was listening and reading and thought about how much this song made me feel like the person singing was searching for the path through life. I looked up and was not surprised to see what seemed like a search light being displayed by G-Force. That is truely one of the best examples I can give.
So, where are the screenshots? I decided that I should let people discover their own screenshoot worthy images. I am weird I guess, but I take the images that are sent out of G-Force very personally. It is digital magic performed just for me.
This isn't really Java related, but it is a "programming"-ish type of post, so I will put it under Java. I have two databases in my life currently.... [snip].... I was going to talk about how I deleted the wrong data from one, but I was having to generalize it to the point where it didn't make sense.
But, since I can't complain about my um-dumb delete mistake, I will talk about something else. The second database in my life, I didn't design.... [snip].... I was going to complain about one of my coworkers that is a complete doofus, but it ended up being boring as well.
So, that is life...
I am not a great programmer. I can't write my own btree algorythm or recite the inner workings of J2EE. For that matter, I don't think I would know a btree if it bit me on the face. What I am good at though is solving problems. What I am REALLY good at is using tools that other people have built to solve difficult problems.
When I was growing up in the programming world, I started out doing Perl and then moved on to PHP. While in PHP land I frequented #php on EFNet to ask a couple of questions from time to time. I learned one thing. Be sure you have exhausted all of your resources before asking a question. So, that became SOP for me... read read read read, search google, read some more. If I can't figure it out, time to ask on IRC.
That worked fine and dandy until I graduated to Java. The guys weren't all that helpful. If you didn't know the answers, they didn't really want to help. I think I ran into maybe 2 or 3 guys that were half way cool. But most were complete jerks.
As usual, Charles has nailed it again. The constant bitching that went on in #java drove me away. I won't even TRY WebWork simply because of the association it has with #java. That is probably foolish of me, but I don't really care. Struts has its problems, but at least the people that run the show aren't arogant asses like the maintainers of WebWork. I left with two good tools though. Orion and IDEA.
Uhhhh, there seems to be a problem. "abcd12".matches("\\D"); should return true, but doesn't. Last time I checked abc AND d were all non-numeric characters. "abcd".matches("\\D"); works just fine, but as soon as you put a number in the mix, it fails. Any smart readers out there that can enlighten me? For now, I am going to use Perl5Util since it acts as expected.
The latest crazy idea is to use blogs to keep up with project management. Why would my developers want to write yet another document? First they have to write requirements documents and design documents. Not to mention the email that has to be sent to notify the other developers of what is going on. Now, they have to blog too?
Could the answer be: No more email. You have a message that needs to go out? Blog it. You change the way something works? Blog it. Need to write some documentation? Blog it... On the documentation Blog.
It is quite a different idea of how to do things. Humorously, on Wednesday, one of my developers brought up using our wiki for this very idea. I had an idea about how to use a bliki (blog crossed with a wiki) as a document management tool and I squashed both for all of the same reasons Mark did. In short, people won't do it well enough to make it worthwhile.
But then, there is the whole disable the email idea...
So, I am pondering whether or not I should offer a "Weblog Hosting" plan on sixty4bit.com (My web hosting company). The gist of it would be something along the lines of TiVo's plans, $5/month or a lifetime payment of $199. There would have to be some SERIOUS monitoring to ensure these accounts don't go over 250MB/month. If they passed that limit, then they would have to pay extra, but something reasonable like $5/250MB.
I was speaking with my boss today, grumbling about a couple of my cow-orkers and the cows they bring to the team. My teammates are frustrating at times, and my feelings have ranged from, these guys are complete lunatics, to thinking they are just a couple of points above moronic. But, I have come to the conclusion that you just have to play with the cards that you were dealt.
One of my friends has wound himself up so tight because of his coworkers, that he is constantly unhappy. So unhappy in fact that I can't hang out with him anymore. That was a hard decision to make, giving up on a friendship that I had invested 4 years of my life. But, my friend couldn't handle the cards he was dealt.
I have been thinking about "team dynamics" for over a year now. I left a "perfect team" that was so disfunctional it was starting to drive me nuts. I left and joined another "perfect team". The job was good, the people were smart and it was going to be a good growing opportunity. And then reality set in two months later. It was the same situation, with different people, only I was a little more experienced in handling relationships. So, this time, instead of fighting against the river, I just started to flow with it. We don't have the cleanest code, or the best datamodel and our application has some bugs... But I am a happy person, doing the best I can, with what I have, to make the application better.
Maybe one of these days I will learn to load the deck so the cards fall out just the way I want, but until then, I will just deal with the randomness of the cards and play the best game I can.
One of the guys that works for me is pretty smart, but he did the strangest thing this Friday. I got to work at ~9:30, and he was there, which is unusual since he normally shows after 10. Two hours pass by, and he says that he has to leave to go pick up some friends at the airport, and then he leaves. Normally this wouldn't be a big deal, but since we were trying to freeze the code by the end of the day, and we had been working towards this all week.
He is new to the project and to Struts, and was having problems earlier in the week and I was being less than helpful, mainly because he wasn't "thinking for himself", and that was frustrating the hell out of me.
A couple of hours go by, and one of my peers asks if I am going to call and find out if the guy is coming back. Nope. So, he calls him. I already knew the answer, he wasn't coming back. I didn't want to know why. I didn't want to talk to the guy, he didn't want to talk to me. So, I stayed and finished his code. Part of which was my responsibility in the first place that I had delegated off to him.
So, as a boss, I made a couple of mistakes... Unfortunately I can only think of one mistake. I let myself get frustrated at him. I know he is not without blame and for a change I am not going to beat myself up about it. Humorously, I am not going to beat him up either.