Monday Morning Coffee History Factoid

“The first coffee houses, later called kahveh kanes by the Turks, opened in Mecca, and students, travelers, musicians, and storytellers gathered there to play games, sing, dance, talk, and drink coffee.”
Coffee or Tea, Elin McCoy and John Frederick Walker, 1988, New American Library

[T]he opulent and luxurious coffee houses of Sixteenth Century Constantinople… were constantly jammed despite the large numbers of new ones that kept opening.
ibid.

[C]offee houses… first appeared on the Piazza San Marco in Venice by the end of the Seventeenth Century…. In the tradition of the coffee houses of the Turks, Persians, and Arabs, they encouraged the spread of radical ideas; one coffee house even planned to install a reading room to educate the general public.
ibid.

280-Character Wisdom

A guest post by John Shade

The good folks at Twitter want every person in the world to be able to express their thoughts fully and without restraint. That’s why they’re trying out a new, longer tweet limit. Now you can express yourself in 280 characters. I thought I’d see what we can expect from this expansion of the basic tweet. What follows are some familiar quotes that fit in the existing 140-character limit, enhanced with the new freedom of 280 characters.

140-character quote:
Walking on water and developing software from a specification are easy if both are frozen. — Edward V. Berard

Improved 280-character version:
Walking on water and developing software from a specification are easy if both are frozen, because when water is frozen it becomes ice, and thus a solid, while when a specification is frozen it can’t be modified, removing the need to keep up with the modifications. — Edward V. Berard

140-character quote:
I invented the term ‘Object-Oriented,’ and I can tell you I did not have C++ in mind. — Alan Kay

Improved 280-character version:
I invented the term ‘Object-Oriented,’ and I can tell you I did not have C++ in mind. What I had in mind was communication via messaging, local retention and protection and hiding of state-process, extreme late-binding of everything, and none of that Simula inheritance crap. — Alan Kay

140-character quote:
Hofstadter’s Law: It always takes longer than you expect, even when you take into account Hofstadter’s Law. — Douglas Hofstadter

Improved 280-character version:
Hofstadter’s Law: It always takes longer than you expect, even when you take into account Hofstadter’s Law. — Douglas Hofstadter, the author of Hofstadter’s Law and, in accordance with Hofstadter’s Law, of this attribution and the attribution of the attribution, recursively forever.

140-character quote:
Most of you are familiar with the virtues of a programmer. There are three, of course: laziness, impatience, and hubris. — Larry Wall

Improved 280-character version:
Most of you are familiar with the virtues of a programmer. There are three, of course: laziness, impatience, hubris, and surprise. Four. There are four virtues of a programmer: laziness, impatience, hubris, surprise, and ruthless efficiency. Amongst the virtues are …. — Larry Wall

140-character quote:
Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates

Improved 280-character version:
Measuring programming progress by lines of code is like measuring aircraft building progress by weight. That’s stupid. Measuring programming progress is done by asking harder and harder questions until they can’t answer, and then yelling at them for being unprepared. — Bill Gates

October PragPub


The scary cover of this issue of PragPub is false advertising. There’s nothing scary in this issue. So if life has you stressed out, come relax with this totally not-scary October PragPub.

Change can be a little scary. But they say change is the only constant. Keeping up with change requires constant learning. And encouraging learning in a business requires more than practices and programs, it requires a work environment optimized for learning. Diana Larsen knows how to create that environment, and talks about it in this issue.

Diana’s advice is pragmatic and experience-based. But sometimes what looks like an excellent program for improving your workplace needs a little tweaking to make it fit your particular situation. Sandy Mamoli recounts a case of a company trying to implement a purpose-driven, responsive self-management program and running into difficulties. It’s an enlightening description of what it can take to make a truly useful program be truly useful for you.

All right, maybe change isn’t the only constant. Derek Sivers makes a convincing argument that coincidence is another constant. Highly unlikely events happen every day. Life is nothing but a string of remarkable coincidences, and they are remarkable only when we remark on them. Expecting coincidences puts you more in sync with reality.

Those three articles are packed with practical advice, but what they don’t have is executable code. Our fourth feature this month fills that need. Venkat Subramaniam is back with another example of how to refactor code to functional style in Java 8. This time he looks at the popular Decorator pattern, and in a series of before-and-after examples shows how taking a functional approach can declutter the pattern, resulting in highly concise, elegant, and expressive code that is easier to understand and maintain.

Our regular columnists are here as well. Marcus Blankenship writes about the challenges of the programmer/manager, and this month shares a personal story of a time he fell short as a manager, and what he learned from the experience. Johanna Rothman is our project expert, and this month she answers the question, when the problem’s not with the team but with the system, how do you prove it to management? And John Shade? He’s skeptical about the new venture Elon Musk is considering.

Of course Antonio Cangiano has all the latest tech books and your editor has some interesting tech stories for your edification and a puzzle for your entertainment. We hope you enjoy this totally not-scary October PragPub!