Author Archives: Graham

About Graham

I make it faster and easier for you to create high-quality code.

On the “advances” in web development since 1995

The first “web application” I worked on was written in a late version of WebObjects, version 4.5. An HTTP request was handled by an “adaptor” layer that chose a controller based on the parameters of the request, you could call … Continue reading

Posted in futurology, WebObjects | 1 Comment

When Object-Oriented Programming Isn’t

A problem I was investigating today led me to a two-line Ruby method much like this: class App # … def write_file_if_configured file_writer = FileWriter.new(@configuration.options) file_writer.write if file_writer.can_write? end end This method definitely looks nice and object-oriented, and satisfies many … Continue reading

Posted in OOP | 1 Comment

Two ways of thinking

I’ve used this idea in conversations for years, and can’t find a post on it, which I find surprising but there you go. There are, broadly speaking, two different ways to look at programming languages. And I think that these … Continue reading

Posted in code-level, social-science | Leave a comment

If Object-Oriented Programming were announced today

Here’s an idea: the current backlash against OOP is actually because people aren’t doing OOP, they’re doing whatever they were doing before OOP. But they’re calling it OOP, because the people who were promoting OOP wanted them to believe that … Continue reading

Posted in FP, OOP | Leave a comment

Open Source: because I got mine, so fuck you

The Free Software movement has at its core the idea that people have the freedom to use, study, share, and improve the software on their computers. The modern developer “ecosystem” has co-opted this to create a two-tier society: a developer … Continue reading

Posted in freesoftware | 6 Comments

Technical debt and jury service

We have the idea that in addition to the product development backlogs for our teams, there’s an engineering backlog where technical debt paydown, process/tooling improvements, and other sitewide engineering concerns get recorded. Working on them is done in time that … Continue reading

Posted in software-engineering | 1 Comment

The worst phrase in software marketing

“Rewritten from the ground up”. Please. Your old version mostly worked, except for those few corner cases that I’d learned how to work around. Now I don’t know whether the stuff that did work does work now, and I don’t … Continue reading

Posted in Business | 2 Comments

Culture Smell

A phrase I used in a discussion today. Developers are familiar with “code smells”, aspects of a codebase that aren’t necessarily wrong but do make you take a deeper look. By analogy, a culture smell surprising, but not necessarily wrong, … Continue reading

Posted in Uncategorized | Leave a comment

Literate Programming with LibreOffice

This post comes in the form of an OpenDocumentFormat document containing a program that can extract programs from ODF documents, including the program contained in this document.

Posted in code-level, software-engineering, tool-support | 1 Comment

Prototypical object-oriented programming

Some people think that the notion of classes is intrinsic to object-oriented programming. Bertrand Meyer even wrote a textbook about OOP called A Touch of Class. But back in the 1980s, Alan Borning and others were trying to teach object-oriented … Continue reading

Posted in javascript, OOP | 1 Comment