The Cost of Collaboration

Regular readers know that Irreal has disdain for open plan offices and those who perpetrate them on their hapless employees but, somehow, never on themselves. These office plans are always justified on the grounds of “increased collaboration” but there’s a nasty, suspicious corner of Irreal’s soul that suspects it’s really all about saving money.

People who actually do creative work that requires concentration have always known that these plans are a disaster and very destructive of productivity. Now the The Economist is reporting what sensible people have understood all along: the cost of the increased collaboration that these plans bring exceeds their benefits.

As the economist says, “Oddly, the cult of collaboration has reached its apogee in the very arena where the value of uninterrupted concentration is at its height: knowledge work.” That would be our work spaces.

The good news is that a backlash is setting in. There’s an increasing body of research showing that, as Peter Drucker argues, you can do real work or you can go to meetings but you can’t do both. If you put workers in a noisy, disruptive environment, if you drag them into an endless series of meetings, the “deep work” that is the raison d’être of knowledge workers becomes impossible.

Part of the problem, the Economist says, is that while it’s easy for management to measure collaboration, it’s not so easy to measure the benefits of deep work. And, of course, managers gotta manage so we get days filled with meetings and memos. It’s a rare manager with the wisdom to give his workers the freedom to do their work unencumbered with distractions.

It’s a good article and well worth the five minutes of your time that it will take to read it.

Posted in General | Tagged | 1 Comment

HUH?!?

Remote SSH access with a hard-coded password? In a security device? Today? Who does this?

UPDATE: The answer, it seems, is just about everyone.

Posted in General | Tagged | Leave a comment

Is Object Oriented Programming Bad?

One of our community’s favorite arguments, right after Vim versus Emacs and static versus dynamic typing, is whether object oriented programming is boon or bane. Like those other arguments, there is more often heat than light in the discussions.

Brian Will has an excellent video and associated blog post that examines the question in a reasonable way and comes to a conclusion. Of course, some people—once they hear that conclusion, whatever it is—will immediately conclude that Will is a lunatic and disregard everything he says without actually considering his argument. For that reason, I’m tempted not to say what that conclusion is but Will is up front with his verdict by naming the video Object Oriented Programming is Bad and his blog post Object Oriented Programming: A Disaster Story.

But why does Will reach that judgment? OO, he says, is an attempt to manage shared state. It does that by encapsulating the state in objects and accessing it only through messages to the objects. In other words, what would otherwise be global variables are hidden away in objects and managed through the call graph.

The problem is that when you take this idea seriously you end up not with a graph of objects but with a strict hierarchy of objects. That would be okay but when you have a non-trivial amount of state it turns out to be impractical keep state manipulation in the same hierarchy so programmers end up passing around references to the state obviating the point of encapsulating it in objects.

Controlling state is the right end, Will says, but object oriented programming is the wrong solution. The right answer, he says, is to minimize state by using functional programming techniques.

The foregoing is just a précis of Will’s argument, which is a bit more nuanced, so you should definitely watch the video (it’s about 45 minutes) or at least read the blog post if you have any interest in the subject matter. When you do, you’ll discover that Will doesn’t dismiss every aspect of OO and that objects can be useful in some circumstances. As I said, you should watch the video.

Posted in Programming | 2 Comments

A Sad Security Prediction

Those of us who care about security will find this sad but in our hearts we know it’s true:

Posted in General | Tagged | Leave a comment

Xwidget Branch Merged Into Emacs 25.1

The XWidget branch has been merged into Emacs 25.1. One very important consequence of that is that it should be possible to embed webkit into Emacs. Perhaps we’re finally getting closer to the dream of a browser inside Emacs1. At least for me, there wouldn’t be much need to leave Emacs if that happened.

UPDATE: Here’s a post with a bit more on what this means.

Footnotes:

1

Yes, I know about eww.

Posted in General | Tagged | 1 Comment

PSA

Apress is having a 40% sale on the eBook versions of Edi Weitz’s Common Lisp Recipes. If you’re a Lisper, you’ll definitely want this book. I just bought my copy so I haven’t had a chance to peruse it yet.

The Sale ends February 1.

Posted in General | Tagged , | Leave a comment

Taking Notes with Org Mode

Most of you know how I love reading “workflow” articles, especially if they involve Emacs and Org. Brandon van Beekum has a nice post on how he uses Org mode to take notes and then export them to share with others. For his example, he demonstrates how he might take notes on a computer science paper but even if you’re interested in creative writing and have no interest in scientific matters, you will still find his write-up instructive.

Van Beekum starts with a title and the outline headings Summary and Links. He adds some text to the Summary section that describes what he’s trying to accomplish by reading this paper and adds various links to supporting documents in the Links section.

As he goes along, he adds a Notes section that he uses to capture interesting points from the paper including, in his case, a bit of code that he puts in a code block for proper formatting. He even demonstrates generating a graph with Babel and Dot.

For export, van Beekum uses his ox-twbs package which is much like ox-html but with some extra formatting and an interactive table of contents off to the side. It produces very nice output and is worth considering if you produce a lot of HTML documents to share with colleagues and friends.

If you’re interested in using Org mode to take notes—whether or not you want to export them later—van Beekum’s post is worth a read. It uses very simple Org functionality so it’s a good way of starting with Org mode.

Posted in General | Tagged , | Leave a comment

Search for Symbol at Point

Artur Malabarba has another excellent bit of Elisp for us to improve our workflow. This time it’s a quick and easy way to search for the symbol at point. He binds his code to 【Ctrl+u Ctrl+s】 but remarks that that sequence is already used for isearch-forward-regexp. He doesn’t care about that because he’s never used isearch-forward-regexp. There is, though, no need to worry about 【Ctrl+u Ctrl+s】 because 【Ctrl+Meta+s】 is also bound to isearch-forward-regexp and easier to remember because it’s like the 【Ctrl+Meta+%】 that query-replace-regexp uses.

More to the point, isearch-forward-symbol-at-point is bound to 【Meta+s .】, which I find just as easy to type as 【Ctrl+u Ctrl+s】 so unless you, like Malabarba, find the latter easier to type and remember than the former you may not need to add his code to your configuration.

On the other hand, Emacs is all about having it your way and Malabarba’s code shows how easy it is to adjust its behavior to be more how you like it. In my case, I don’t use isearch-forward-symbol-at-point often enough to bother giving it a special key sequence. Of course, 【Meta+s .is unintuitive and hard to remember. Since I don’t use it often, it’s not worth building a hydra for it; instead I use the excellent guide-key package to remind me of the proper sequence. Again, Emacs letting me have it my way. Instead of forcing Malabarba and me to use the same work flow, Emacs lets us each optimize it to suit our own way of working.

Posted in General | Tagged | 7 Comments

New save-excursion Semantics

Marcin Borkowski (mbork) has a useful heads up for Elisp programmers. Starting with Emacs 25.1, save-excursion will no longer save the mark state. If you want to save the mark, you should use save-mark-and-excursion instead.

While reading mbork’s post, I remembered that when I first started learning Elisp, there was an issue with saving the mark and you had to take additional action to make things work correctly. I checked the source code and the problem was that save-excursion didn’t save deactivate-mark. From what I can tell1, the new code fixes that. I’m not sure why they chose to implement the macro save-mark-and-excursion instead of just fixing things up in save-excursion (the semantics changed regardless). The NEWS file and Elisp manual don’t say but I’m sure one of you will let me know.

As mbork points out, programmers mostly didn’t depend on save-excursion saving the mark anyway so this won’t be a huge issue for most code. Just be aware that if you depend on the mark being the same after your protected code runs, you should use save-mark-and-excursion rather than save-excursion.

Footnotes:

1

I really need to figure out the C macros that Emacs uses so that I can read the C code better.

Posted in Programming | Tagged | 3 Comments

Turn Off Adblock, Get Served Malware

I’ve written before about the horror that is adtech. Advertisers send us megabytes of Javascript for 500 words of content so that they can track us and build profiles of our habits and preferences. When users finally tired of this and started using ad blockers, the advertisers reacted with outrage and indignation. It’s immoral, it’s stealing they said. Some even said it’s illegal. The irony was thick on the ground.

Some advertisers went further. They added scripts to detect when ad blockers were in use and refused to serve content when they were. One such company is Forbes. When readers with ad blockers tried to read their 30 under 30 list, they were asked to turn it off and the content was withheld until they did. Any unfortunate reader who did disable the ad blocker was immediately served malware. Remember, this is not some pr0n site in the seedier corners of the Internet; it’s Forbes.

The Engadget piece linked above says that “[The ad networks are] practically the most popular malware delivery systems on Earth, and they’re making the websites they do business with into the same poisonous monster.” The content providers who use these systems have lost the moral high ground. It’s easy to have sympathy for their position that they depend on advertising and without it they can’t provide content but it’s too great a stretch to ask users to have their privacy violated and it’s certainly not reasonable to ask readers to deal with the malware that these websites serve them.

It’s up to the content providers to hold the ad networks’ feet to the fire and insist that they clean up their act. If that doesn’t happen, it’s not hard to imagine a lot of companies going out of business. The final irony is that the annoying ads are not cost effective.

Posted in General | Tagged , | Leave a comment