As I find myself writing on a Saturday afternoon with my 48th-and-a-half birthday approaching, having just started working at a new client this week, and with my wife off on a weekend sabbatical, I seem to be in a reflective mood.
I've spent a lot of time doing software development.
I've been doing it so long that it's like music to me now.
I've written several software symphonies, many programming concertos, and countless sketches of codal counterpoints.
Sometimes it has swept me up, the harmonies lifting me high above the methods and objects I'm creating, letting me see the beauty of the whole systems, how everything works together.
Other times I've been dragged down into the depths, frustrated with the limitations of the classes I've designed, struggling to overcome the dissonance that threatens to tear a program apart.
I've always wanted so badly to find the lost chord and the music of the spheres, and hear within them all the things yet to come.
A few years back, Dave Thomas gave a lecture at a conference I attended in which he equated software development with the work of other artisans, such as painters, sculptors and writers - as opposed to the more methodical approach taken by engineers that those not involved in programming often associate with what we do.
When I look back I see the truth in this perspective.
But it's more than that.
No artist truly creates total beauty.
No artist ever creates the end-all, be-all composition.
There is always the next painting, sculpture or novel.
I've grown older.
The ambitious dreams of my youth have been subjected to the realities of life with all the foibles and foolishness that have taken up so much of my time from then to now.
The joys of family and friends have tempered my desire to single-mindedly do impossible things.
The dreams are still there, but I know that I will not be able to grasp the stars that as a child I thought were only just beyond my reach.
But even though the sorrow of this realization is profound, I am less troubled by it than I thought I would be.
Nothing is singular.
All things stand in relation to others.
It is only through the totality of each others' accomplishments that efforts can be appreciated. We all achieve and add to the richness of each others' efforts.
When I was young, my software dreams were for me.
Now I write software for more than just myself.
No person can do everything they want to do.
There is simply not enough time.
Sometimes it is difficult enough to just keep up with all that goes on.
Even when things come easily, there is just so much more to know, so much that there is no time to experience.
There is always much more left to do - much more than anyone could ever hope to achieve despite their youthful dreams.
And there is no finality to it.
In the ocean of human achievement, we each only get to play in the waves for a short time.
I've written a lot of software, but it is only a drop in that vastness.
I want to do more than I have time left to do it in.
This is my continuing frustration.
I wish it were different.
But the dreams that once dominated my thoughts are now just hopes.
Hopes that perhaps others will someday achieve some of what I had envisioned but that I will not be around to see.
My best hope now is that what I've done and what I will still get to do before I'm gone will help others more than hinder them.