Apple Responds

Irreal readers are certainly aware of the latest drama playing out between the FBI and Apple. The FBI applied, ex parte, to a federal magistrate for an order compelling Apple to assist the FBI in breaking into an iPhone 5C used by one of the San Bernardino shooters. The magistrate granted the order and Apple promptly announced that it would appeal1.

It’s important that Apple prevail because despite the government’s disingenuous assurance that this is a one-time request dealing only with one phone, the point of the FBI’s request is to establish a precedent. Indeed, the government has several more cases lined up and ready to go as soon as the case is resolved. Nationwide, there are probably hundreds of cases where prosecutors want Apple to break into phones.

Apple’s public discussion of the case emphasized that complying would put the security of every iPhone user—something that Apple has worked very hard to secure—at risk. Irreal readers, I’m sure, will find that argument compelling but is it sufficient to quash the magistrate’s order?

We needn’t have worried. Apple has filed their motion to vacate the order and it seems to me—speaking as a non-lawyer—to be devastating to the government’s case. To me—again, speaking as a layman—Apple’s most persuasive argument was that the All Writs Act, which the government depends on to justify their action, does not apply in this case because

  1. the Congress already considered the matter and refused to act, and
  2. that complying does, in fact, represent a significant burden on Apple.

On the second point, Apple pointed out that after the initial effort2, once the precedent is set they will receive a flood of similar applications and that will require hiring additional full-time staff to deal with them. Furthermore, they can’t, as the Government suggests, simply destroy the break-in software after the data is recovered because they may be called in some future trial to testify on their methods and procedures and to produce the software as evidence.

Apple already has significant legal and engineering staff dedicated to dealing with government requests for data and they understand the need to document each step they take and to establish a chain of custody for any hardware they work on. They make a good case that complying with the order will result in a significant and ongoing burden.

There’s plenty more and you really should read Apple’s brief. It’s entertaining and instructive even if you aren’t a lawyer. If you don’t have time for the brief itself, The Intercept_ has an excellent summary of the important points it raises. The Intercept_ describes the brief as “a legal motion for the ages.”

Footnotes:

1

The press, of course, characterized this as Apple putting itself above the law but by refusing to roll over for the government and appealing, Apple is, in fact, following the law.

2

Apple estimates 10 engineers and related personnel for 2 to 4 weeks. That’s probably already more effort than the All Writs acts contemplated.

Posted in General | Tagged , | Leave a comment

Moving Files Asynchronously in Dired

Sometimes you want to copy a set of files from Dired in Emacs. If you have one or two files you can simply mark and copy them but if there are many files it can take some time for the copying and during that time Emacs is frozen.

The excellent abo-abo over at (or Emacs posted a nice bit of Elisp that arranges for the copying to be done asynchronously so that you can continue working while the copying takes place. The idea is that the code calls rsync asynchronously with async-shell-command and then switches to another window with the progress bar so that you can check the progress when you like while doing other things until the copy completes.

Since the copying uses rsync the code works nicely with remote copies too. If you often copy many files at a time, you should consider integrating the code into your workflow.

Posted in General | Tagged | Leave a comment

Science vs. Everything Else

Via Karl Voit we have sad commentary on the human condition.

Posted in General | Tagged | 1 Comment

Mickey on use-package

Mickey has a new post over at Mastering Emacs on John Wiegley’s excellent use-package package. For those who don’t know, use-package is a macro that organizes and simplifies package loading and configuration. It can also delay the loading of a package until it’s needed.

As usual, Mickey does an excellent job of covering the material so I’ll just send you over to Mastering Emacs to read his post. If you aren’t already using use-package, you really should read Mickey’s post and consider starting to use it. It really does make thing easier and neater.

Also, note the comment from Wiegley on how to simplify Mickey’s last example by leverage a new feature that he just pushed. You can get use-package from Melpa so it’s easy to load and keep current.

Really, you should be using it.

Posted in General | Tagged | Leave a comment

Lisp in Production

If you’re a Lisper, you’ve probably heard many times that it’s not practical to use Lisp in production. Despite the many counter examples (Viaweb, ITA, …) this myth—like the one about Lisp being slow—refuses to die. Vsevolod Dyomkin and Kevin McIntire over at the Grammarly blog are helping to put this myth to rest with a description of how Grammarly uses Lisp in production.

They discuss how they use SBCL in production and CCL for development. This illustrates one of the benefits of having differing Lisp implementations. SBCL has excellent run time performance while CCL has speedy compilation. By using both, Grammarly gets the best of both worlds.

The post is not a fluff piece pushing Lisp, though. They also discuss the problems they encountered and how they solved them. They describe a difficult bug (in the SBCL runtime) and how they used the TRACE facility to track it down.

Finally, they discuss how Slime provides a powerful IDE for developing in Lisp. It’s an enjoyable read if you like Lisp and wish you could use it more.

Posted in General | Tagged , , | Leave a comment

Some Ansi-Term Improvement

Brian Zwahr uses ansi-term in Emacs for his shell work but found that there were a few things about it that he didn’t like. Being Emacs, those things were pretty easy to fix and he posted about his fixes.

He begins with a bit of Elisp that kills the ansi-term buffer when the shell exits. This isn’t a huge thing but it is annoying to have the now useless buffer hanging around so this is a worthwhile change.

At the other end, he arranges for ansi-term to automatically use his preferred shell. That way he doesn’t have to specify it every time he starts an ansi-term.

Zwahr noticed that when he pasted something into the buffer with 【Ctrl+y】 the shell didn’t see it. Again, a bit of Elisp fixed that.

Finally, there were a couple of display issues, one involving the solarized color theme, that required tweaking.

I prefer eshell for most of my shell work and just call up iterm2 when I need to do something that eshell doesn’t handle well but if you like the ansi-term solution, you should definitely give Zwahr’s post a read. You may want to grab some of his fixes.

Posted in General | Tagged | Leave a comment

Org 8.3.4

Posted in General | Tagged , | Leave a comment

Ledger

Austin Walker recently gave a talk at the Boston Emacs Meetup on using John Wiegley’s ledger program. Happily, there’s a video of the talk so we can all enjoy it. Ledger is a command line program but, of course, there’s a ledger-mode for Emacs so that you can handle everything from your editor, if you like.

What I like about the program is that everything is plain text. Ledger is merely a parser and report generator so it doesn’t change the data files at all. You can back them up with git or whatever method you use. You can generate them however you like. You can also massage the data with your own scripts in any way you like. Maximum flexibility and no data lock-in.

If you’re in charge of handling your finances and like to keep track of things, ledger seems like an excellent solution. It’s open source, uses plain text, and has an Emacs mode. What’s not to like?

Watch the video and see what you think. It’s 51 minutes, 33 seconds so you’ll need to schedule some time.

Posted in General | Tagged | Leave a comment

Privacy versus Law Enforcement

Posted in General | Tagged | Leave a comment

Running Emacs as a Daemon

For some workflows, especially those centered around the terminal, it makes sense to run Emacs as a server so that you can use emacsclient to quickly pop up an Emacs frame. I mostly just have a GUI instance of Emacs running all the time but it’s convenient when I’m in a terminal—especially on a remote machine—to pop up an Emacs frame right in the terminal rather than switching focus to the GUI Emacs. M. J. Wall has a script that makes that easy.

A GUI Emacs instance is started automatically when my desktop comes up so I initiate the server from my init.el. Other people have different processes and maybe don’t even have a desktop so it’s convenient to be able to start the Emacs server early on so that emacsclient is available whenever it’s needed.

Happily, the Emacs Wiki has us covered with an article on how to run Emacs as a daemon. The idea is that Emacs is started at boot time but as server. The article covers how to do this on various Linux systems and on OS X. It also covers how to shut down the server and how to run separate servers for multiple users. If you want to run Emacs as a daemon, be sure to give this article a read.

Posted in General | Tagged | Leave a comment