Archive for the 'personal' Category

The Best of the Best

Eight and a half years ago, I posted the 26th best mid-season time for the NCAA men's 200 Freestyle.  That was as close as I ever got to being the best of the best.  I figure that's pretty good; roughly the 99.999997th percentile of college-age men.  Three and a half weeks later, I quit competitive swimming for Heather and a life of code, never to return.

I've never come close to that level of proficiency since.  Being there again is something I long for perhaps more than anything else.  Utter competence - no question of success or failure, just how grand the success will be.  No worry about the task at hand, complete trust in yourself and the ability to enjoy every moment in all it's glory.  "Poetry in motion" is cliche to the nines ; ), but it's exactly what it is.

It being Thursday night, Heather's off at choir, the kids are in bed, and I'm tired for beating my head against problem after problem (usually clients who can't make up their mind) at work.  So here I am dumping my mind into a blog post that few will read and fewer will really understand, listening to a song stream from YouTube.  Jesu Joy of Man's Desiring is a most beautiful song, and Celtic Woman's rendition from the Helix really brought back that feeling of perfection.  From 1:00 through 1:25 (particularly at 1:10 and 1:25), effortless perfection and enjoying every minute.  The rest of the song is beautiful, but pales by comparison.

My Blog, Or Is It?

I wanted to thank everyone who read, and especially commented on, my My Blog, My Rules post a couple weeks ago.  It's nice to know that people care, and even better to know that they appreciate what I've done.  And apologies to Charlie for the firestorm.

So is this my blog?  Or is it everyone's site, and I'm the only one that can directly start new conversations?  It's public and the comment form is available to all, so the latter seems an apt description.  Weblog implies a log of something on the web, not necessarily any sort of community foundation, but that's really what a blog is.  I don't know how I feel about that.

I want an engaged audience, I want vibrant discussions, but I don't want an obligation.  But it seems unfair to want that pairing, because what's in it for that audience?

Thanks for being part of that audience, even the silent ones.

Programming Creativity

Creativity is an interesting characteristic, because it means so many things.  Bach was creative.  So was Picasso.  Da Vinci.  Shakespeare.  Thompson and Ritchie?

Is computer programming a creative endeavour?  My instinct says yes.

Merriam-Webster defines "creative" as "having the quality of something created rather than imitated".  So by definition, everything that is created is the result of a creative act.  But that is an overly sterile perspective, I think.  If I said the word "the", I would have created sound, but it surely wasn't creative.

Creativity, to me, means that you can create appealing things out of basic building blocks.  Painters use colors, composers use notes.  Everyone has access to the same colors and notes, but not everyone can create the same paintings or compositions.  Moreover, the appreciation of the whole should be at least partially divorced from those basic blocks.  When you look at a painting, you don't say "well, right here it's red X, but over here it's red Y".  Similarly, music can be appreciated without knowing what specific notes are played, you can transpose a piece up or down as long as you maintain the relationships.

I don't claim that that's necessarily a better definition.  It's certainly a more subjective one, but that's intentional.  Creativity is more than just the ability to create.  The characteristics of what's created weigh in.

So back to programming.  It certainly has the characteristic that complete programs are created out of basic building blocks (your language's syntactic constructs).  But is the result appealing, and can it be appreciated distinct from the basic blocks?  Here I'm a bit hard pressed to find an answer.  The user of a program certainly doesn't appreciate the programming, just the behaviour of the running program.  Is there any way to "view" a program outside it's syntactic constructs?  UML modeling (or your choice of comparable things) is one way, but that's not really the program anymore, it's a distinct and incomplete representation of the program.  Record the live symphony on a handheld voice recorder and play it back - not quite the same.

There is a visual micro-perspective on code.  Someone with no language familiarity (or programming familiarity, really) can certainly distinguish between chaotically formatted code and well formatted code (consistent whitespace, capitalization, etc.).  But that's not really the beauty of the program, that trait belongs to an arbitrary collection of characters, regardless of whether it's a program or not.

Now contrast my definition with that of an assembly line worker.  The worker certainly uses basic building blocks to create an aggregate that can be appreciated distinct from the individual pieces.  But he doesn't get to make the decisions for where stuff goes and how it fits together.  So is he really creating?  No, just building.

So I think creativity also requires some aspect of free will (within the constraints imposed by the medium, of course).  This would manifest itself by the ability to intentionally create non-appealing results, but choosing not to unless using it as a form of artistic expression.  Which brings up another aspect of creativity: expression.  When you write a program, are you expressing something beyond the program itself?

Programming definitely has the free will aspect, just ask anyone who has ever had to debug a mess of spaghetti code.  But I'm not so sure about the expression.  But I think that goes back to the ability to view a program outside it's syntactic constructs.  Is it possible to appreciate the creativity of a program directly, or is some sort of intermediate form required?  If you can't appreciate the creativity of a program, does that mean it's not creative, or just that it can't be proven created?

Music…

I have musical talent of a very mediocre degree, but I love listening.  Popular, rock, choral, new age, instrumental, anything that's interesting.  But what makes it interesting?  What about music evokes feelings?  Why are some collections of noises beautiful while some are appalling, even if they're made up of the same constituents?  A very perplexing question.

The basics of music are easy to explain: it's all simple rhythm counting and note counting.  Arithmetic at it's simplest.  But computer's can't compose music with any sort of competence.  If provided with examples, they can produce new "compositions" that are somehow derived from the examples, but it's not really new.  It shouldn't be that hard to follow the rules and make something original that isn't just noise, but computers can't do it.  I don't claim that I can do it either, but entities of my class (i.e. other people) can.

One thing that's interesting to me about music is how differently Heather and I experience it.  She knows the the lyrics to every song on the radio (except for KUFO, the local rock station), every Christmas song, and a host of others.  On the flip side, I have a relatively static collection of digital music on my workstation at the office, some of it dating back 10 years, and there are a pile of songs I can't sing along with, because I don't know the words.

Heather sings in a community choir as well as a church choir, and with above average competence.  She's not going to be touring the world and making millions of dollars, but for a stay at home mom with a pair of kids under four, it's hard to find fault.  She can't read music, she can only copy what she hears others sing.  She can't pick stuff out on a piano.  She can't count a rhythm.  All of those, you'd think, would be prerequisites for performing music as an adult.

I've got exactly the complementary skillset, though with generally less proficiency.  I can read music.  I can't play the piano but I can get a song across with one.  I can count a rhythm.  I understand the basics of music theory.

The conclusion I've reached is that it's all due to my ears (and/or my brain's aural processing centers).  I have great difficulty listening to spoken words.  I get by in daily life by augmenting speech with primitive lip reading.  This is why I rarely look you in the eye when I'm listening - too busy looking at your mouth.  I hate using the phone, because there aren't any lips to see.  As you might imagine, this probably contributes to me not knowing the lyrics of a wide array of songs I'm intimately familiar with.

But the non-verbal aspects of music (including the 'shape" of sung parts) ……. Heaven lives there.  The expressiveness the four weapons of volume, tempo, rhythm, and harmony can assault your ears with is breathtaking.  If you've got Incubus' Warning available to you, give it a listen, paying close attention to the baseline.  There's a little riff in there (just before the first chorus, I believe) that I could listen to over and over again.

To hear a piece of music slowly build it's richness, growing more and more full, voices weaving together in ever more intricate acrobatics, until it they finally all align themselves and the full force of the melody is heard…..  What I would give to be able to create something that evocative.

Tokamak is Offline

I've had a Linux workstation (named tokamak) as my primary computer for the past several years, and until this past year, work was exclusively Linux as well.  Tonight, for the first time in literally years, I took tokamak offline.  It'll come back on, rest assured, but it's off, and it's weird.

I got a new Thinkpad last month, and set up all my development environments on it using VMWare to virtualize Linux servers (as that's what all my production boxes are).  I knew it'd work before I did it, but I'm amazed at how smoothly it goes.  I use the host OS for everything, and just map shared drives, so all my code is executed strictly in a Linux environment.  I.e. my only Eclipse install is in Windows, and my only Apache/CF/MySQL instances are Linux.  Just use Apache to assemble my url-space out of the '/mnt/hgfs/workspace' directory (a link to my Eclipse workspace), and done.  I can have any set of servers online at a time, and manage all the deployed code on them from a single Eclipse workspace, even running the exact same copy of a given project on multiple VMs (for different CF versions, for example) concurrently.

iPhone vs. Blackberry vs. None

I used to carry a cell phone, but I haven't for the past year.  I don't miss really miss it.  Being able to whip it out and call someone any time I wanted to is nice, but not being able to call someone any time I want to is nicer, I think.  In our hyperconnected world, we, as a society, have lost "alone" time.  Sure, we're more dependent on others than we ever have been before (at least outside our immediate families), but how much should have affect our life?  With cell phones, plans can change at any time, and everyone can be told about it instantly.  That's good if you get in a car wreck.  Is it good when you forget milk at the store and call your spouse so they can pick it up on the way home?  Maybe I'm just a non-control freak, but I say that's worse.  The world isn't going to end without milk; drink something else.  Sure, it might be inconvenient, but maybe it'll help you remember next time.

I feel the same way on my motorcycle: the visor goes down and the world goes away.  If I'm late and driving a car, I rush.  If I'm late on my bike, I just don't care.  If I have to go somewhere and I've got the car, I leave as late as possible and drive fast.  With my bike, I leave early so I can avoid taking a route with traffic and/or stoplights as much as possible.  I don't know what the difference is, because it's not a conscious decision; it was a distinction I noticed in retrospect after I'd been riding for a while.

With that prelude complete, I'm debating getting a phone again.  I would love a device with JME that I could install my own apps on, but with the modern age, a solid browser is just as useful (probably more so).  Being able to whip out a computer that's always on and do something online real quick is of great interest to me, because I find myself consciously skipping certain things I want to do because getting my laptop is to much of a pain.  But I'm not sure I'm willing to pay the price of carrying a phone, both the permanent availability and the actual physical device being in my pocket (or wherever) all the time.  The iPhone is really quite a massive piece of equipment, and I already know what it's like carrying one of those around (ahem!).  The Blackberries are a noticeably smaller, but with a much smaller screen (smaller factor and dedicated keyboard).

An interesting dilemma to be sure, and with a large helping of irony on the side considering my profession.

I Am A Guitar Hero

Simeon, fine purveyor of electronic distractions, got me hooked on Guitar Here III last month.  I went over to his house for a Saturday of Halo and then some Chang's for dinner.  But unfortunately, his network wasn't cooperating, so we bailed on Halo and started playing Guitar Hero.  I have to admit that I was pretty skeptical having seen it played by others, but oh how wrong I was.  Eight hours later, with four aching hands, we decided we better go eat so we'd be able to type come Monday.

Of course, on Sunday I went an got my own copy (for the Wii), shelved Zelda again, and started rocking.  Tonight, I finished Career mode on "medium" (having already done Easy), after getting at least four stars on every song.  Now on to "hard", though I fear I have some unlearning to do.  With medium, you can play a finger per button, but not so much with hard.  Medium also didn't present any riffs that strumming only in one direction was too slow to accomplish.  I did try a couple songs on medium with alternating strums, and I cannot for the life of me get the timing to be smooth.  Between that and having to shift my hand up and down the neck, hard should present more than enough challenge, at least until I start memorizing some of the songs, so I can use my eyes to aid some of the left hand acrobatics.

My Blog, My Rules

Charlie Arehart send me an email the other day  about my Flex charting control and the way it's presented on the site (which is poorly).  I ended up writing a fairly long response that was a bit tangential, but unreasonably so.  The basic premise was that it's my site, and I don't like maintaining web sites, so I do it as little as possible.  For example, I'd never bothered to actually put an email address on my About page.

But that expands out to cover some other bases as well.  For example, I actually release a fair amount of code, and I have a enormous amount of non-released code that I could release.  But you'll notice that I don't have a single software product that I maintain.  Contrast this with Ray Camden.  I don't claim that I produce the quantity of code that he does, but he produces products, not just code.

Productizing a software product is a huge amount of work, and maintaining that product only adds more.  I have little to no interest in dedicating my personal time to that.  Even just prepping code to release it takes a lot of work, in my view.  If I'm excited about something, I want to share it and get other people excited about it too, just like anyone else.  But the ROI is minimal, since I'm not trying to build any sort of brand or create an income stream.  Which isn't to say I don't have personal brand, just I don't cultivate it the way a business(wo)?man or consultant would.

So I'm curious.  Do people use the software I release?  Comment if you do, and list what you use.  I'm just wondering, because the code is rarely polished, it's not formally versioned, rarely has standalone docs (and often very minimal inline docs), and there is no promise of backwards compatibility or long term support.   Is that a deterrent sufficient to turn away people who's problems my code might directly address?  Should it be?

I know I'm apt to discount software packages that aren't actively maintained, but I'm far less likely to discount something if it's source.  Sure, I like to have someone else do the work, but if I find something that addresses a need I have, I'm going to use it if at all possible.  I'm quite lazy that way.

Then there are the blog posts themselves.  I go very back-and-forth on blogging.  I enjoy writing, but the blog is a weird medium.  In one sense, you're writing to nobody, but you're also writing to the readership you're aware of.  But that's never your complete readership.  And unlike most other forms of communication, you have rather little feedback on a blog.  Sure, people comment, but what percentage?  Contrast that with a document you write for responding to an RFP, an email you write to someone, or even an IM conversation.

As such, I dislike writing posts that don't have a clear point (like this one).  It leaves me feeling like I'm not done yet, and that I wasted every reader's time.  But at the same time, any sort of pointed discourse leaves me this wondering how I did.  Did I get my point across?  Was I confusing?  Without a specific audience and direct feedback, those questions are very hard to answer.

So why do I write on my blog?  Usually to share something I'm excited (or frustrated) with.  Hoping that someone else will read it and be excited too.  But it's always technical, because I know that most of the readers are techies, and have this weird feeling like I have to appease my perceived audience or a Bad Thing will happen.   But I want more than that.  I want to have a conversation.  To yell.  To ramble on.  To share the love of something.  I want to turn comments off so I don't have to listen to people.  I want to force every reader to comment.  I want to start an interesting philosophical discussion that persists forever.

I've considered dedicating a period each day to writing.  About whatever.  But I know that would leave me less satisfied, because it'd become a chore, and I wouldn't end up writing about the stuff that really blows my skirt up (no, I don't typically wear a skirt - makes for cold … legs … on the motorcycle).

What's the solution?  Someone knows.  Tell me.  Please.

Me.

For most of the US, as is common knowledge, this weekend was Thanksgiving weekend.  For most of the "white collar" workforce, that means a four day weekend.  Which brings up an interesting question.  What color is my collar?  It certainly not a laborer, which seems to mean it's white by default, but that seems … weird.  Lawyers wear white collars.  Who knows.

So what did I do with my weekend?  I (along with Heather and the kids) went to my folks house on the coast, ate copiously, stayed up WAY too late writing code by choice, watched some football, came back home Saturday, and went to the zoo for a picnic on an appropriately sunny, albeit cold, Sunday.

Work has been very frustrating since starting at Mentor, and it's only gotten more so within the past few months.  Suffice to say, not having to think about anything work related for four days was a blessed relief.   I don't want to imply that I'm one of those people who dreads going to work every day.  In the general sense, I very much like my career, just the specifics of the past "while" have me to the point of dread.

What struck me this evening, as I was opening my laptop to check my email one last time, was that I didn't want to just check my email.  I wanted to go get a glass of water and spend until the early hours of tomorrow morning banging out some more code (and Flex-based code to boot!).  That was strangely reassuring to me, because it meant that I'm still doing the right thing for my job, it's just the specifics that suck.

Work is something that I've always tried to cleanly delineate from my personal life.  The lens was certainly focused spending last year working from home, but it existed before and has persisted since.  One aspect that certainly contributes is that Heather doesn't really understand software development beyond a superficial level (the "yeah, so I cast the foo char to the boo-leen [sic] array, and pop the kernel stack" level), so the triumphs and defeats at work are hard to bring home with any sort of depth.

My evenings are, ironically, usually spent on the computers working on "stuff", where stuff is any of myriad personal application I've built and use, some public, some not.   I dislike watching TV aside from a handful of shows, but Heather follows a number of series, so she's often watching those or at practice for the community choir she sings in.  A significant portion of the R&D work I do is off the clock.  Which I don't really mind, because I'm going to write the code whether it's paid for or not, but it seems a bit odd from the 25,000 foot view.

Before leaving AudienceCentral at the end of last year (amicably, I might add), I'd been pretty much heads-down on a complete rewrite of the company's software platform.  A significant undertaking, as you might imagine.  Aside from that project, most of the "demanding" coding that I've done since the turn of the century is of a personal nature.  And not even "on personal time to be released open source to the benefit of all", but totally personal.  I put "demanding" in quotes above, because I have two very specific definitions in mind:

  1.  requiring significant effort to …

end of story, at least for tonight.  Heather just came and kissed me, and it was wonderful……..

One More Reason to Love GMail

Google released a new version of the GMail UI a couple weeks ago.  Not a whole lot different on the surface, but it's noticeably snappier overall, and has a few little improvements throughout (mute from the actions menu, contact detail popups).

I had two main gripes: it doesn't work with the [unsupported] BetterGMail Firefox plugin and the space bar didn't scroll up/down the page anymore (presumably from different key listening stuff).  The UI upgrade is backwards compatible, so you can, at your discretion, flip-flop between the old and new versions.  I debated about continuing on the old version, but I'd only just picked up BetterGMail and so wouldn' t miss it that much, and I figured I could learn to use the scroll wheel like a "normal" person not concerned with shaving literally hundreds of milliseconds of their email reading experience.

I finally got around to complaining about the space bar issue either Friday or Saturday morning.  When I logged on today the space bar scrolled correctly.  This isn't the first time I've gotten rapid gratification for my complaints/suggestions, though it's been a while, mostly because they've fixed all the things that bothered me.  ;)  I'm certainly not going to take sole credit for prompting this patch (or any other), but it's nice to know that as well as producing an email application that is actually user friendly (don't get me started on Outlook which is required at the office), they listen.