Tuesday, April 22, 2008

Been a long time

I bit off more than I could easily chew at work recently.

Actually, I have been really working hard for about 3 weeks, with last week being the culmination and the hardest, and this week I am ramping down.

We haven't refactored the code base for so long, and I decided to do something to address a few outstanding technical issues with the product that ended up being a lot more work than I had originally accounted for.

This is the first time I have worked with a multiple document system. Add to that the fact that we keep the files in a datastructure that matches their structure in memory. There is no translation step on load or save. This means that links (urls) between files are just strings, they don't point at anything. If you change a document's location, or you move a resource, you had to run through the entire project looking for links to the renamed document or the moved resource to update them.

Needless to say, this didn't scale well.

Now, we parse urls into special objects that build a graph of the documents, the objects in the documents, and how they link to each other. We build a document graph. This sort of low level change, in a product as sophisticated as Blackfish, really takes a lot of work. It reduced complexity of move, rename, and delete operations considerably; but it increases the static complexity of the system. Anyway, it was hard, but it works and it is cool, clean, and fast.

I also had a bit of a breakdown physically two weeks ago. Sometimes I will train various different sports until I enter a state of physical exhaustion.

Real exhaustion isn't something that happens after you run a long time. You may be temporarily exhausted, but it takes weeks of overtraining to reach a true physical exhausted state. There are several key indicators you are overdoing it, but I don't usually notice them until they are pretty far along. High heart rate, even during the evening. Failure to sleep effectively, moodiness, pretty much all conditions I have without being exceptionally drained. You also stop healing effectively which is the largest problem.

Anyway, I pretty much took 2 weeks off from sports. Getting a very time consuming video game (Space Rangers 2) helped a lot. This game is pretty much all about zoning out wandering around the universe checking shizzle out. There is a point to it, but you can achieve it many different ways and there isn't a use to rushing. That and I am dancing with a very sweet girl from salsa so we just danced a lot (although I find it really tough to detach from hard work enough to dance well).

And, somewhat passive aggressively, I missed a meeting yesterday and just went to a baseball game. This pissed people off, but I needed the rest so what can I say? I got a somewhat direct email from the boss today telling me to either show up for the meeting or reschedule it. I don't intend to respond.

Anyway, I have started the physical stuff again, and what I am working on is wrapping up. The next 7 weeks should be OK for me. What I really need is some serious rest from this product, but I don't see that happening any time soon.

So, I am officially employed by NVIDIA. A large pay raise, and employee badge, and meeting some pretty cool people are what I have to show for it. Now I need to pay off the first loan on my house (the small one that ensures I don't have to pay loan insurance) and refinance the house. Rent it out and buy another.

Chris

Tuesday, April 1, 2008

F#

This language is a whole other world.

I bought a book on it (expert F#), and I will shortly buy another book on it (Foundations of F#).

After LISP, I didn't know if I could ever really be with another language, really. You see, I saw so much promise and possibilities in LISP.

The look of the code was amazing. The smooth and perfectly elegant lines of code, mixed with the intricate and somewhat arcane lines of meta-code. It still gives me chills to just think about it.

The infinite possibilities of a programmable programming language. Who wouldn't fall in love with LISP? Surely, I cannot blame myself for such fantasy.

Over time, our relationship soured. I yanked and urged common lisp to move into somewhat common territory (with a name like that, you would think it would be easy...). I kept thinking that I could somehow change it, to make the infinite possibilities I saw with it really happen.

The final straw was moving it to the .net platform. This is a necessary move, it would have been good for both of us. The next step.

There comes a point in every relationship where you must either move forward or move away. And as of late, I must admit that my thoughts have been absent and my intentions toward another have grown stronger.

I didn't even know who that other was.

Then one glorious day when I felt the need to express some of the joy that life had brought me, I caught the look of something I had seen from afar but never considered.

F# and I are curiously staring at each other over coffee at the moment. It appears that we really don't speak the same language; although when push comes to gentle, rhythmic shoving I am sure we will figure it out. We are so very viscerally attracted to each other that maybe we just have to get over our differences one way or another.

This will be a sweet and gentle love affair at first. I need to give myself time to adjust to new concepts, to the gloriously dirty feel of doing something very familiar with a very unfamiliar body.

Perhaps F# can help teach my wounded heart to love again...

Chris