Archive for March, 2013

Turning a Very Painful Corner

Friday, March 15th, 2013

Sad State of Affairs

This evening Liza wanted to talk. She told me what was up with the kids, which was nice, because they aren't texting or calling me back, so it's nice to hear about what's up with them. Then she asked me how I was doing, and there wasn't a lot I needed to say other than it's been horrible. But I could tell there was something she needed to say, and she was just working up to it.

After I explained that I wanted to work together towards a future where we were both happy, she explained to me that she wanted a divorce. That the year that we weren't supposed to 'do anything' during was really too long. She wants to sell the house and get on with her life. She believes that I'll be "snapped up" by one of the ladies at church - after all, I have good teeth and a well-paying job.

I was upset that she so easily passed off my pain as something that was easily "fixed" by "someone else"… and that she told the same thing to the kids when they said to her that I'd be alone for the rest of my life.

I asked if she was sure, and she was. She is.

I don't think I've felt quite that hopeless in my entire life.

At our rehearsal dinner, I made a toast to her:

Everyone that knows me knows I'm as serious as death.
But Liza has given me something I didn't know one person could give another.
She has given me hope.

Tonight, at least for a while, she's stripped it away.

I don't think it's gone forever. I sure hope it's not. But this is a horrible feeling.

But I'm glad I know. I'm glad there's no more questions about what might be. What might happen. It's clear now that she has no interest in being married to me. So I can close this chapter in my life and move on.

As difficult as those two things might be, I have to do them.

I've turned a corner. Like it or not.

Still Alive, Just in a Deep Hole

Wednesday, March 13th, 2013

Sad State of Affairs

I'm still alive… I'm still coming to work… but the things happening with Liza and the kids have just gotten me into a state where I don't care about pretty much anything. If it weren't for this job, I might just get in a car and drive somewhere… No real idea where, probably not any better for me because I have to face my future and not run away from it, but given that my future is being (not) decided by Liza, and she's making no indications that she's interested in talking to me - let alone seeing me, or even living with me again, I'm really at a loss of where to go and what to do.

The kids aren't even texting back, and when their Mom is being like Liza, I can't really say that I blame them. She's not taking me seriously, so why should they? They are teenagers, after all, and that is almost the definition of self-absorption. So they aren't communicating, Liza isn't communicating… it's like they are dead - but I know they aren't, and their ignoring me is purposeful.

Sticks and stones can sure break bones when aimed with angry art.
Words can sting like anything, but silence breaks the heart.

Yup. Wonderful times I'm living in these days. Just wonderful.

I Love Magic – as Entertainment

Tuesday, March 5th, 2013

Clojure.jpg

I love a magic show. Even one that my friends might think of as lame. I love the well-done illusion. I know it's not real, but it's fun to believe that it is. After all - it's entertainment, and if you don't enjoy entertainment, then watch something else. It's your time, your life, your choice. But where I don't like magic is in languages and coding - there I absolutely hate it.

Take clojure, and for that matter, ruby falls into this category as well. The Ruby-ism of Convention over configuration is a nice thought, and can be helpful for new coders starting out, but it obscures all the details, and in that obscurity, it masks all the performance-limitations, and that includes threading. Clojure is the same. What's really being done? Don't quite know with a lazy sequence, do you? What's loaded when? If it's a database result set, does the code load in all the rows and then construct them as a lazy sequence, or does it read a few rows at a time and leave the connection open? Big difference, right?

So I'm not a fan of this kind of code - except for simple one-off scripts and manual processes. You just have no idea what's really happening, and without that knowledge, you have to dig into the code and learn what it's doing. Don't forget to stay abreast of all the updates to the libraries as well - things could change at any time simply because of the cloaking power of that abstraction.

Why does this mean so much to me? Because there's never been a project I've been involved in in the last 15 years that doesn't come down to performance. It's always coming dow to how fast can this all be done, and how much can be run on a single box, and so on. All these are performance issues, and without the in-depth, continual, knowledge of every library in use, I'm bound to have to make some assumptions - until I'm proven wrong by the code itself.

And what's worse, is that I know to look, whereas plenty of the junior developers that I have worked with simply assume that it's par for the course, and don't even think about the performance consequences of their code. They've always had enough memory, and CPU speed, and if it takes 20 mins - so what? It takes 20 mins! I wonder if they would feel that way if it was charging a defibrillator for their parents? I'm guessing not.

Time is the one limited resource we all have. Waiting is not acceptable if you can figure out a way to reduce or eliminate the wait. That's what I've been doing for the better part of 15 years now: removing the wait.

Starting late yesterday, I realized that we have a real performance problem with the clojure code we are working with. I'm not sure that the code is really all that bad, as it works fine when the database isn't loaded, but when it is - and it doesn't have to be loaded very much, things slow to a crawl, and that's not good. So bad, in fact, that several processes failed last night as it was cranking through a new data set.

So what's a guy to do? Well… I know what to do to make JDBC faster, I just need to know what to do in clojure to get those parameters into the Statement creation code in the project. Unfortunately, there's no simple way to see how to do it. Clojure, like ruby, isn't well documented for the libraries - for the most part. This bites because I can see what I need to set, but not how to set it.

So I'm going to have to wait for our clojure expert to show up this morning and tell him to dig into it until he can give me a list of examples that I can work from. I have no doubt he's capable of doing it, but it's not terribly nice to have to wait for him to walk in.

But that's my problem, not his.

But Boy! I hate "magic" code.

Month Two of My Most Painful Year

Tuesday, March 5th, 2013

Sad State of Affairs

Well… I haven't been writing a lot lately, and frankly, that's because I'm entering month two of my most painful year to date. I'm not silly enough to think that this will be my most painful year ever, but insofar as 'ever' is 'to date', then it's ever. I just haven't had the emotional energy to write. I can't bring myself to write about anything. Work is OK… life is horrible… but in that, it's normal.

I'm going to try to get back into the swing of writing, but I know that it's a little optimistic to think that I'll get back into the swing right away. I'm just hoping to write a little more than I have been.

Hopefully, it'll cheer me up.