Animation of Using eshell to cd into Another Machine

Last month I wrote about using cd to ssh into a remote machine. Today, I came across this animated Gif from Bodil that shows the process in action

Notice how easy it is to log out: just type cd and you’re back in your home directory on the local machine. Also notice how easy it is to use Magit remotely.

A really nice and informative animation and it takes less than two minutes to watch.

Posted in General | Tagged | 6 Comments

Joel Spolsky on Open Offices

If you’ve been around here for awhile, you know my feelings about open offices: despite the self-serving cant from management, they’re really about saving money. Everyone who does creative work knows how devastating the constant interruptions can be on productivity and focus.

Joel Spolsky—whose company, Fog Creek Software, is famous for providing developers with private offices—has a few words to say about this and the effect Facebook’s infamous 8-acre open office has on productivity. He makes a point that is often not appreciated by management imagining that they will save money by having an open office. Spolsky says that Facebook is paying its engineers 40–50 percent more than other companies and that is usually an indication that people don’t want to work there.

Of course they don’t. Who would? Facebook is doing interesting work and solving serious problems so you’d think it would be a great place to work. That is until they show you your 8-acre office shared by every other engineer in the company. Facebook can talk all it wants about synergy and communication but the fact is no one wants to work in conditions that would make the food court at a typical mall seem appealing. So they don’t. At least not until you bribe them with a salary 50% above normal.

Be sure to read the comments too. Open offices don’t have very many supporters among those who have to work in them.

Posted in General | Tagged , | Leave a comment

Dennis Ritchie

The Internet appears to be on fire with news that Dennis Ritchie has died. Folks, that was 5 years ago. How can you not know this? Ritchie was one our leading lights and his legacy is everywhere within our industry and even our world.

The “news” appears to have been set off when Wired reran a story of his death from 2011. I don’t know if it was meant as a memorial or was just a mistake. Regardless, that’s no excuse for all these people posting about his death as if it just happened. I really don’t understand how some practitioners in our field can be so unaware that one of our leading icons died 5 years ago. Maybe they need to get out into the big blue room a little more.

UPDATE [2016-10-13 Thu 19:01]: C|Net has an article on this. It’s astounding that serious tech figures like Om Malik, Sundar Pichai, and Craig Newmark didn’t know that Ritchie has been dead for 5 years.

Posted in General | Tagged | 2 Comments

Comment Line in Emacs 25

A couple of years ago, I wrote about a nice bit of Elisp from Artur Malabarba that deals with commenting and uncommenting whole line(s). It’s sort of like comment-dwim except that it deals with whole lines. Recently, Malabarba resumed blogging at Endless Parentheses and mentioned that the code in question is part of Emacs 25.

Malabarba describes the code here but you should note that it is now bound to Ctrl+x Ctrl+; instead of Ctrl+;.

Posted in General | Tagged | Leave a comment

How a Non-Developer Uses Emacs

Charles-H. Schulz is not a developer—although he is technically proficient. He describes himself as specializing in literature, history and philosophy. He’s also an Emacs user. I find that interesting because I’m always fascinated with how people who aren’t writing code use Emacs and how they took the unlikely step of getting started.

Schulz has a post in which he describes how he uses Emacs. It’s easy to see him as a power user because he performs many—or even most—of his daily tasks in Emacs. That includes mu4e for email, blogging, IRC, file management, terminal, and, of course, Org mode. Like most of us he prefers to browse with a dedicated browser rather than, say, eww, and he doesn’t like the available Emacs packages for RSS or Twitter. Still, he does an impressive number of his daily chores from within Emacs.

If this sort of thing interests you too, head on over to and take a look at his write-up.

Posted in General | Tagged | 2 Comments

C

More and more often, these days, I see the opinion expressed that C is a dead, dangerous, stupid language and no one uses it anymore. For me, that’s like having someone start a discussion by saying ”As everyone knows the earth is flat…” I stop paying attention because I’m pretty sure that this person doesn’t know what they’re talking about.

Of course, it could be just another example of “Kids, today” and a longing for the way things were. I was therefore very happy to see this post by Ozan Onay on why it’s still important for young engineers to learn and be fluent in C. He gives four reasons for this:

  1. If you get away from the Web App startup culture, C is one of the most commonly used languages.
  2. C influences the design of most modern languages.
  3. C helps you think like a computer.
  4. Most tools for writing software are written in C (or perhaps C++).

Onay looks at each of these reasons and gives some possible objections to them. In the end, he settles on number 4 as the most compelling of them. I disagree with that last assessment. To me the most important thing—and reason enough to learn C—is that it helps you think like the computer.

Assembly language is even better for that but that ship sailed long ago. When I code in any language I find that I always mentally translate what’s going to happen into C. C is close enough to machine language that you can get a good idea of how fast something is going to run and how much memory it’s going to require. It takes a while to develop that facility, of course, but I don’t see how you can be a first rate software engineer without it. Otherwise, all you’re doing is reciting magic spells that you don’t understand except to the extent you know the result they’ll produce.

Or I could be just an old fool babbling on and on about the old days. But I don’t think so.

Posted in Programming | Tagged | Leave a comment

A Video Tutorial for undo-tree

The other day I wrote about undo-tree and wished for a video on how to use it. Mike Zamansky came to the rescue with a very nice video expanation of undo-tree. Really, this package is extraordinarily useful and it’s nice to have an easy way to get started.

For me, at least, seeing the video helped illuminate some of the dark corners. Others, I know, would rather read an explanation and for them the nice commentary that I mentioned in the original blog post is the place to go. If you like to see things actually happening, you should definitely take a look at Zamansky’s video. It’s the 16th in a series of useful Emacs tutorials that he’s done. They’re all worth watching so take a look when you get a chance.

One interesting thing that Zamansky mentioned that I hadn’t considered is that you really don’t need redo—although that is much improved with undo-tree—because you can simply use undo-tree-visualize (bound to Ctrl+x u) to move down the undo tree to redo as much as you like. That’s a subtle but very useful point.

My advice is to watch Zamansky’s video and then read the commentary (or vice versa if that makes more sense for you) and you should be able to start using undo-tree efficiently. It’s definitely a package you want.

Posted in General | Tagged | Leave a comment

Stop Emacs from Writing package-selected-packages into init.el

A new minor annoyance in Emacs 25.1 is that Emacs maintains a variable called package-selected-packages that maintains a list of packages that you have specifically specified. This is used to handle dependencies on package deletion as well as making it possible to port your package configuration to multiple machines.

Here’s the problem: Emacs writes that variable into the custom section of your init.el (or .emacs). That means that configurations on different machines can diverge making syncing (say through Git) harder. Also, I don’t like anything in the configure section. I want everything my init.el does specified by me not by configure.

Happily, there are a bunch of solutions to this. One of the easiest—and what I’ve chosen to do—is to specify a separate file for the configure data. You can load this file or not but at least it stops Emacs from messing with your init.el. There are some other solutions as well, so be sure to follow the link.

Posted in General | Tagged | Leave a comment

The Wages of Sin

Posted in General | Tagged | Leave a comment

Hide Files in Dired Listing

I like to see all files in my Dired listings but lots of folks have a more minimalist mindset and would prefer not to see certain files. Things like backup files, .DS_STORE (on MacOS), or even all dot files are examples of files you might find uninteresting.

If you’re in the latter class of Emacs users and you’re using Dired-x (which you really should be) you can easily prevent certain files from appearing. You can specify files to omit by either regexp or by extensions. Check out this reddit Emacs post for the details.

Posted in General | Tagged | Leave a comment