Where Work Goes to Die

Swizec Teller has an amusing article in DZone on Why Offices Are Where Work Goes to Die. The article is, as I say, amusing but it also mines several nuggets of truth. Irreal, as you doubtless know to your sorrow, is adamantly opposed to open office plans because of the destructive effect they have on office efficiency and moral. These plans are always justified on the grounds of improved communication—rather than their actual advantage of being cheaper—but Teller describes how even in a traditional office setting this ease of communication can be detrimental. He discusses several problems but the most serious is the constant interruption of flow, which for engineers is deadly.

Teller’s article is a neat summary of why I’m a big supporter of remote work. I won’t flog that horse here but Yegor Bugayenko has an excellent post on the bane of office workers: meetings. Bugayenko likens meetings to legalized robbery. He describes how meetings are abused to effectively end all progress on projects that overuse them. It’s another great read. You should read it and Teller’s post.

In the meantime, here’s a very sharp TL;DR for Bugayenko’s thesis:

Posted in General | Tagged , | Leave a comment

The No Irony Zone

Posted in General | Tagged | Leave a comment

Emacs as an OS

Daniele Sluijters says:

He has a point but I don’t think the notion of Emacs as an OS is a bad one. I came for the Lisp support but I’ve come to think of Emacs as a Lisp Machine-like operating system where all the code is available and can be changed on the fly to exactly suit my requirements.

Emacers famously move towards doing as much as possible inside Emacs. Many consider it a cache miss if they have to leave Emacs for some task. I’m not hardcore enough to use eww for all my browsing but other than Safari and (temporarily) Mail.app, I spend virtually all my tube time in Emacs. That tendency is the realization of Emacs as an operating system. The transformation of Emacs into an OS is ongoing. Indeed, we recently acquired a window manager.

The old joke about Emacs being a good OS needing only a decent editor may be stale but it does contain a germ of truth. Except for the editor part; I like the editor.

Posted in General | Tagged | 3 Comments

Mickey on Flycheck

If you’re a Flymake user, Mickey over at Mastering Emacs has some advice for you: switch to Flycheck. It’s a drop in replacement for Flymake that has better out-of-the-box language support and is faster. Mickey says that for him the replacement was seamless. “One moment I was using my own duct taped Flymake handlers, and the next I was simply using Flychecks’.”

See Mickey’s post for more details and keybindings. If you like to have your code’s syntax checked on the fly, this is definitely worth a look. And, of course, while you’re there, check out some of Mickey’s other offerings. They’re an extraordinarily good resource.

Posted in General | Tagged | 2 Comments

Diffing Regions in the Same File

A Nice tip from Aaron Fischr:

This works for relatively small regions. For larger regions (over 200 lines, say) use ediff-regions-linewise.

Posted in General | Tagged | 1 Comment

Oracle on Finding Exploits

Via Matt Blaze:

Oracle’s Mary Ann Davidson wrote an astoundingly foolish and arrogant post on why customers are wrong to find and report vulnerabilities in Oracle. It’s so bad, in fact, that it’s since been taken down (the link above is to the Internet Archive).

The post cries out for a good Fisking but no analysis could do it justice. You should really read it for yourself. The arrogant tone and lack of respect for their customers should give any Oracle user pause.

I don’t understand Oracle’s obsession with reverse engineering. We’re talking about well understood technology; There really aren’t any secrets. I’m not a database guy so I’m interested in why enterprises continue to use Oracle. Are there any reasons—other than the usual stupid ones—to prefer Oracle to, say, PostgreSQL?

Blaze has a followup Tweet on why all this matters:

Posted in General | Tagged | Leave a comment

Yasnippets Tutorial

Lefteris Karapetsas has an interesting tutorial on using yasnippets for entering boilerplate code. A lot of us use small snippets for minor tasks such as filling in a for or while loop. Karapetsas shows how to use it for large portions of boilerplate.

The examples he gives are from C but the techniques are equally applicable to other languages. The idea is that code for defining a structure and functions to allocate it, initialize it, and free it is usually pretty much the same so a snippet can “write” most of the code for you. The snippet parameters fill in many of the unique parts, leaving only the application specific code to write. The same ideas apply, of course, in other common situations.

Karapetsas also has links to another tutorial and the Yasnippet Development Manual. If you aren’t using yasnippets or are only using them in trivial ways, take a look at Karapetsas’ post.

UPDATE: Added missing link.

Posted in General | Tagged | 5 Comments

The Origin of STDERR

Most (all?) modern operating systems have the notion of STDERR, a separate output channel that programs can use to output error messages. It’s especially important for Operating Systems that have some notion of “pipe” where the output of one program is automatically used as the input to another. Obviously, you don’t want error messages corrupting the data stream.

Until recently, I didn’t know—or even think about—the origin of STDERR. It just seemed a natural and necessary facility to have. It turns out that it all started with the C/A/T typesetter and troff at Bell Labs. Diomidis D. Spinellis tells the story of how the combination of troff and the C/A/T typesetter lead to the implementation of STDERR.

Spinellis’ post also serves to remind us how easy we have it now. It wasn’t that long ago that producing a typeset document was a long and messy process. Take a look at the post; it’s an interesting and amusing story.

Posted in General | Tagged | Leave a comment

XML Parsing

Always use the best tool available. (via Karl Voit)

Posted in General | Tagged | Leave a comment

Installing Org 8.3

Org 8.3 is ready on Elpa so those of you installing it with the package manager can upgrade at your convenience. When I upgraded and reloaded Org I got the error message

Invalid function: org-babel-header-args-safe-fn

After some experimentation, I gave up and started trawling the Internet. It turns out that if you’re trying to use R in Babel, you need to byte recompile ob-R.el to make things work.

I’m not sure what the optimal procedure is but after discovering the problem when updating my iMac, I followed these steps on my MacBook

  • Updated as usual with the package manager
  • byte compiled ob-R.el by calling 【Meta+x】 byte-compile-file <path to org>/ob-R.el
  • Restarted Emacs. Still got the error so I byte compiled ob-R.el again and
  • Restarted Emacs

The main thing is to do the byte compile. After that, you can enjoy the new and wonderful Org mode.

Posted in General | Tagged , | 1 Comment