Recently I have begun reading the book Understanding Media, by the Canadian philosopher Marshall McLuhan. It is, so far, a remarkable take on media—understood here as the plural form of medium, not as the modern smorgasbord of news sites and publications. Here is a passage from the first edition’s introduction:

Electronic speed in bringing all social and political functions together in a sudden implosion has heightened human awareness of responsibility to an intense degree. It is this implosive factor that alters the position of the African-American, the teenager, and some other groups. They can no longer be contained, in the political sense of limited association. They are now involved in our lives, as we in theirs, thanks to electronic media.

Interesting, indeed, but why worthy of the pages of this blog? This is well-articulated, perhaps, but also obvious to us today. Well, I lied—that’s not actually how the passage reads. I replaced a few words to make it sound more modern. Here is the actual, original passage. The bolded words are the ones I replaced in the previous quotation.

Electric speed in bringing all social and political functions together in a sudden implosion has heightened human awareness of responsibility to an intense degree. It is this implosive factor that alters the position of the Negro, the teenager, and some other groups. They can no longer be contained, in the political sense of limited association. They are now involved in our lives, as we in theirs, thanks to the electric media.

The full title of the book is Understanding Media: The Extensions of Man, and it was published in 1964. The first web browser was released for use outside of CERN, where it was built, in 1991. Facebook was founded in 2004.

So what? Clearly McLuhan was incredibly prescient. That’s one what. But what is that worth to us now? If we want to understand how modern electronic media affects us today, why defer to a text published in 1964 to inform us? Why not just observe what’s around us today, in order to accomplish the same? After all, McLuhan offers us postulations, whereas observations offer us evidence—one might say.

We should read and listen to McLuhan because his perspective is one we don’t have any longer—the perspective of someone from an age now past, with an understanding possibly deeper even than our own of the phenomena of our present age. Someone who pierced the curtain of the future and let the light from their time shine through into ours.

Here is an illustrative example of this perspective:

In the mechanical age now receding, many actions could be taken without too much concern. Slow movement insured that the reactions were delayed for considerable periods of time. Today the action and the reaction occur almost at the same time. We actually live mythically and integrally, as it were, but we continue to think in the old, fragmented space and time patterns of the pre-electric age.

Western man acquired from the technology of literacy the power to act without reacting. The advantages of fragmenting himself in this way are seen in the case of the surgeon who would be quite helpless if he were to become humanly involved in his operation. We acquired the art of carrying out the most dangerous social operations with complete detachment. But our detachment was a posture of noninvolvement. In the electric age, when our central nervous system is technologically extended to involve us in the whole of mankind and to incorporate the whole of mankind in us, we necessarily participate, in depth, in the consequences of our every action. It is no longer possible to adopt the aloof and dissociated role of the literate Westerner.

This perspective across time provides us with the power to pry apart the way our media environment impacts us today, but did not necessarily in the past. And this in turn provides us with the power to imagine how the media environment of today might be different in the future—we understand this, again, as a consequence of understanding that and how it was different in the past.

This may be the promise of all philosophy—perspective on the present as a means of empowering and enriching our visions of the future. Consider, perhaps, Plato’s Allegory of the Cave in this light.

The aspiration of our time for wholeness, empathy and depth of awareness is a natural adjunct of electric technology. The age of mechanical industry that preceded us found vehement assertion of private outlook the natural mode of expression. Every culture and every age has its favorite model of perception and knowledge that it is inclined to prescribe for everybody and everything. The mark of our time is its revulsion against imposed patterns. We are suddenly eager to have things and people declare their beings totally. There is a deep faith to be found in this new attitude — a faith that concerns the ultimate harmony of all being. Such is the faith in which this book has been written. It explores the contours of our own extended beings in our technologies, seeking the principle of intelligibility in each of them. In the full confidence that it is possible to win an understanding of these forms that will bring them into orderly service, I have looked at them anew, accepting very little of the conventional wisdom concerning them. One can say of media as Robert Theobald has said of economic depressions: “There is one additional factor that has helped control depressions, and that is a better understanding of their development.” Examination of the origin and development of the individual extensions of man should be preceded by a look at some general aspects of the media, or extensions of man, beginning with the never-explained numbness that each extension brings about in the individual and society.

And so we go.

I've found that, perhaps especially in the Ruby on Rails and Elixir/Phoenix communities, it is common to want to name join tables in relational databases after the names of the two tables they are joining, by mashing them together.

For example, let's say you have a users table with some people in it, and a magazines table with some magazines in it. You want users to be able to subscribe to some of those magazines, so you create a join table to track those subscriptions. You call it user_magazines.

But wait a minute—what's a user_magazine? If you walked up to someone and said, “hey, did you know that I've got a lot of user magazines?” what do you think they would say to you? Probably nothing, because they'd be too busy averting their eyes and increasing their pace in order to have this crazy person who just accosted them out of sight as quickly as possible.

Seriously, though. user_magazines is a somewhat meaningless name for a table, because it's somewhat meaningless as a concept. What the table actually is is a list of magazine subscriptions. So just call it that. magazine_subscriptions is much better, and even just subscriptions would probably suffice (depending on whether there are other types of subscriptions that your application is concerned with).

Another problem with user_magazines is that it could imply all sorts of different relationships between a user and a magazine. It could be the magazines that a user owns. Or the magazines a user has had writing published in. Or is a regular contributor to. Or something else!

So the next time you're creating a join table, think twice about calling it table1_table2, and consider instead what the join table actually represents. Then call it that instead.

In most software projects, the most difficult task standing between you, the developer, and an elegant, easily extensible codebase is usually the data modeling—not the logic. A bad data model is one which fails to accurately reflect the problem domain, and will lead to confusing and convoluted logic because the logic will need to patch the incongruities in the data model, in addition to serving whatever functions the problem domain would normally require of it.

Get your data models right, and if you get them wrong, make the necessary changes so that they're correct. Bad data modeling is an insidious form of technical debt.