Archive for the ‘Everything Else’ Category

Burn It Down

Thursday, May 1st, 2008

While at dinner with a friend of mine a couple of weekends ago, we got to talking about how certain programming problems, usually the hardest ones we’ve faced, are ones where we ended up having to simply work the problem: stare at the code, stare at the reference / specification / dataset, hunker down, and plow through the tough stuff with more determination and tenacity than engineering or design rigor. While we were talking about this dynamic, I inadvertently summed up that kind of experience and approach with what I think is a pretty apt phrase: sometimes, you just need to “burn it down” (’it’ being the problem at hand).

The phrase “burn it down” has been rattling around in my head incessantly since then, so I’m hoping to exorcise it here. Perhaps the reason why it’s stayed with me so long is that there’s a pretty good chance that that phrase has a lot of applicability to life in general. Looking back over the years, I’ve often found myself in situations where the key to survival and (ostensibly) success has been my ability (tendency?) to wage a war of attrition against that which stands in my way.

The most immediate case is a programming challenge: you’re sitting there trying to solve a problem for the umpteenth time, and the algorithm in your head or on the page in front of you is laughing at your inadequacies. Ideally, you’d like to step up to the whiteboard, and bang out a description of how this data structure should look, a proof for how that graph-walking algorithm can be sped up by an order of magnitude, whatever. I’ve seen programmers do this – they’ll pull out a small pad, and in about 8 minutes, they’ll knock out some pseudocode for an implementation of some algorithm that might take you an hour to comprehend, never mind implement.

Unfortunately, only a vanishing minority can seize hard problems like that on a regular basis; the rest of us are left wanting to be smarter than we clearly are. So, despite all of your hopes, your text editor simply stares blankly at you, the whiteboard is inert, and you’re left with two options: failure, or the last resort of the almost-overwhelmed, unyielding determination.

(This is very simply the same thing that Edison talking about: “Genius is one percent inspiration, ninety-nine percent perspiration.” Of course, I don’t think we’re in genius territory here…competency, perhaps?)

I’ve experienced that exasperation so many times while working on PDFTextStream and other Snowtide products. I’m fond of saying that I’m a math idiot, and while few people believe me, it’s entirely true. There are things in PDFTextStream that required me to slowly, painfully learn more about esoteric corners of computational geometry than I would ever care to know otherwise, and the same goes for various other specialties in mathematics and computer science. For me, understanding formalisms in those fields is like feathering a chicken by running it through a keyhole. The only way I’ve been able to ship a single bloody line of code has been to Burn It Down.

Of course, programming is a very narrow domain, but I think the same strategy is the only tool that us humans have to use in coping with the crush of life and disorder that surrounds us. Through growing up, getting an education, finding a job, starting a business, sustaining a life partnership, raising children, and coping with the march of time, the only common thread of human endeavor is rage. Even that majickal 1% of prodigies and bona fide geniuses have areas of their lives where their only hope of enduring is to simply endure. In a way, it’s comforting to know that despite the pretensions of some, the only sure way to succeed in programming (and likely even loftier domains) is to lay siege to (or perhaps, depending upon your mindset, to practice judo with) whatever challenge is ahead.

The day is young. Burn, baby, burn.

All Aboard the Arc Bandwagon!

Sunday, April 1st, 2007

Inkling beat me to it, but after my recent revelations about Python, I’ve also decided to move all new development to Arc. Even better, it looks like someone has done an Arc implementation for .NET/Mono called SteelArc, which will suit our embedded apps nicely. I think the name is a take-off on IronPython.

Introducing jsdifflib

Wednesday, February 21st, 2007

I’d like to introduce jsdifflib, an in-browser visual diff tool and library:

In the process of building a new web-based document-centric service, it became clear that I needed a good in-browser visual diff tool. I’ve become friends with a number of desktop “thick client” diff tools over the years, but the interface to this new service is 100% through the browser, and all those old friends aren’t amenable to diffing web-based resources.

Some web searches didn’t turn up anything particularly promising. I was looking for an in-browser diff tool, preferably in Javascript (but I suppose Flash would have done the trick, too). I found a few not-so-great Java applets that would do the bare minimum, but nothing ideal. There were a few javascript diff algorithm implementations (like this), but nothing that could be considered a complete solution.

So, I built jsdifflib over a weekend in February of 2007.

I hope you find jsdifflib useful. On its page, you’ll find some more background information, implementation details, examples, a live demo, and free downloads (with a BSD license).

Speaking about Snowtide and Entrepreneurship at CCV

Wednesday, October 4th, 2006

I just returned from speaking to a class at the Community College of Vermont in Rutland.  I was asked to speak to the Principles of Marketing class being taught there by John Hutchins, my friend, Snowtide shareholder, ex-Digital salesman, and father of a friend of my fiancée.  It was my first significant public speaking “gig” since my high school graduation, and I had a blast.

For the hour I spoke, I presented a history of Snowtide, our marketing and product positioning strategies, and then weaved back and forth between general business and entrepreneurial strategy and what I suppose could be called motivational speaking.  Rutland is a rural former mill town / railroad junction, much like the town where I spent most of my formative years (Palmer, MA), and I think (or hope!) a lot of my personal experience in how I came to believe in my potential to build a successful business is relevant to that kind of audience.  Entrepreneurial attitudes, both in business and in life, can be the key to improving one’s range of opportunities, which can sometimes seem limited when growing up or living in a smaller, more rural community.  I hope what I covered, especially in my discussions of confidence, tenacity, and the pursuit of excellence will help the students at CCV find their path to success and well-being long after they finish school.

On a personal note, I had a great time.  I really enjoy public speaking, but rarely get a chance to “stretch my lungs” — I keep meaning to look up a Toastmasters meeting in my area, but it seems to fall off the bottom of my to-do list pretty consistently.

I did record my talk at CCV, which I plan on putting online, soon.