Best of mcguire: ruthless simplicity

Posted on April 19, 2014 by Tommy McGuire
Labels: software development

A few days ago, the article Boring Systems Build Badass Businesses appeared on Hacker News. In one comment, idlewan wrote, "It's not about the end result, it's about using better tools to get to it," arguing the case for specialized tools, in this case some CSS compiler. In response, mcguire wrote:

How old is your CSS compiler?

After gaining a fair amount of experience with various technologies over the years (by which I mean, getting burned (especially by things that seem wonderful and then cease to exist for a variety of reasons or change their nature drastically)), that has become the single most important question I ask about a new technology. If it's been around for ten years, it'll probably still be around in ten years. If it hasn't then it may not, especially in a form recognizable as related to today's.

C and Java are, well, not horrible, but not good. However, C has been C for my entire career. And I'm fairly sure that if I write something in simple, plain Java, in five or ten years when the whatzit needs some significant work then that work won't start with a complete rewrite.

(or at least he would have, if he'd bothered to reread and perhaps edit his comment.)

Faced with a response of, "...as long as you are satisfied with the current feature set, the code isn't going to disappear...I'll still be able to use it 5 years down the road...", he responded:

I was merely using the CSS compiler as an example. For something like that, just put a copy in your source repository and forget about it—in the worst case, it'll be fine for a couple of generations of browsers, until the "best current practices" have gone beyond deprecation. Hopefully, you won't mind throwing away your proto-CSS source at that point.

In the mean time, I'm sitting here looking at a JRuby on Rails application using JRuby 1.1.4 and a suitably ancient version of Rails (2.2, maybe?). This application has been in production for roughly five years and has received essentially no major love during that period; it Just WorkedTM. (Certainly a monument to the skill of the original author.) However, the poor sod who was responsible for it and our one other Rails application, our one and only Rails developer, finally managed to move on to other things.

At this point, security issues and (more likely) the inability to slather on new features have percolated up the chain of command and it has been agreed that Something Must Be Done. Since the upgrade path seems to recapitulate the phylogeny of Rails, our options are to rewrite the applications in a modern Rails and kick the can down the street, hoping it'll work better this time, or rewrite it using our common tools around here (and because I've got something to do with it, in the simplest manner possible). (And against the usual "never rewrite anything, ever" meme—which isn't an option—that project is going reasonably well.)

As for C, yes, it's feature set has been more-or-less frozen, which is good. It's environment is not. I was reasonably happy with the first version of gcc I used; call it 1.37 or so. Do you think you could use gcc 1.37 today?

* * * * *

Oh, and on a New York Times article on the death of Gabriel García Márquez, mcguire commented:

In his novels and stories, storms rage for years, flowers drift from the skies, tyrants survive for centuries, priests levitate and corpses fail to decompose. And, more plausibly, lovers rekindle their passion after a half-century apart."

"Less plausibly"! "Less plausibly"!

Geeze. Someone needs to teach these goobs to write.

But perhaps he's been reading too much Myles na gCopaleen lately.

active directory applied formal logic ashurbanipal authentication books c c++ comics conference continuations coq data structure digital humanities Dijkstra eclipse virgo electronics emacs goodreads haskell http java job Knuth ldap link linux lisp math naming nimrod notation OpenAM osgi parsing pony programming language protocols python quote quotes R random REST ruby rust SAML scala scheme shell software development system administration theory tip toy problems unix vmware yeti
Member of The Internet Defense League
Site proudly generated by Hakyll.