The War Between NSA and the Tech Industry Begins

Patrick Gray over at Wired wrote an interesting article in which he posits that Tech Companies and Government May Soon Go to War Over Surveillance. His notion is that while tech companies may have been willing to accommodate the NSA or allow themselves to be pushed around before the Snowden revelations they now realize that the subsequent destruction of their users’ trust represents an existential threat. One way of regaining that trust is to put in place robust systems that make NSA surveillance difficult or impossible. By doing this now they put the government in a bind. As Gray remarks, it’s one thing to pass laws prohibiting such changes and quite another to mandate that they be removed from users’ devices It’s pretty clear that the public wouldn’t tolerate the latter.

Now, it would appear that the first shot in that war has been fired. The Washington Post is reporting that Google has accelerated its program to encrypt data as it moves between Google data centers. Before this change, data in flight between the data centers represented rare points of vulnerability. Whatever their previous transgressions, if any, it’s clear that Google is moving at speed to make their users’ data tamper-proof.

When I first read Gray’s article I was a bit skeptical that the war would come to pass. Google’s action gives me hope that maybe it will.

update: represent → represents

Posted in General | Tagged | Leave a comment

Learning Emacs Keyboard Shortcuts

Sacha Chua has been doing a lot of sketch notes lately. One of her most recent contributions are two guides for learning Emacs keyboard shortcuts. These are, of course, aimed at n00bs but they are well done and worth passing on to anyone you know who is struggling to get started with Emacs.

Chua has lots of good advice for learning about Emacs. I particularly like her observation that it’s a lifetime project. It tells the beginner that it’s all right not to understand everything right away. Those of us who have been plugging away at learning Emacs for years can sympathize. On the other hand, it’s actually nice that there’s always something new to learn.

Update: nner → beginner

Posted in General | Tagged | Leave a comment

Using Org Mode for Custom Workflows

jr0cket, aka John Stevenson, is working on a series of posts that discuss how to design a custom workflow with Org Mode. So far, he has a set of three posts but be sure to check his home page for more.

You may or may not find that Stevenson’s workflow makes sense for you but the nice thing about the posts is that they show you how to set up Org Mode in a way that does work for you.

As regular readers know, I am a big fan of Org Mode and use it for a variety of tasks such as

  • Managing my Todo list
  • Writing this blog and other writing chores
  • Maintaining records (such as tax deductable expenses) as a sort of spreadsheet.

These are long standing uses that I’ve written about before. The nice thing is that I’m always finding new uses. If you haven’t yet explored Org Mode, these posts are a nice starting point for one use case. There are many more.

Posted in General | Tagged , | Leave a comment

Schneier on Trusting the NSA

Bruce Schneier has a powerful article in The Atlantic on The Only Way to Restore Trust in the NSA. His prescription is to appoint an independent special council to clean up the mess. My first reaction when reading that was to snort, “Yeah, that’s gonna happen.” I still think that’s correct but Schneier makes a strong case for why it’s needed and why it would, in the end, help the NSA too.

The problem, Schneier says, is that no one any longer believes anything the NSA says and no one believes anything the President says about it either. The NSA has lied and been discovered lying repeatedly resulting in a complete breakdown in trust in the agency, the Intelligence community, and, if the commenters’ opinions are representative, government itself.

A special council with the power and a technically qualified staff to do a thorough investigation could report to the country the truth concerning what the NSA is doing and then we could have rational discussion about what we want to allow and shut down those programs that are clearly illegal. As I said, I doubt that will happen and that’s too bad.

Be sure to read Schneier’s article. It’s one of his best concerning the NSA scandals.

Posted in General | Tagged | Leave a comment

The Nikodemus Common Lisp FAQ

I’m sure I’ve mentioned Nikodemus’ Common Lisp FAQ before but it’s been a while so it’s worth reminding everyone. The FAQ is meant for Lisp n00bs as a way of getting over some of the initial hurdles a beginner faces. It’s a good read for any Lisper, though, and I like to reread it every once in a while myself.

Posted in Programming | Tagged , | Leave a comment

Interactive SICP

Longtime Irreal readers know that I consider Structure and Interpretation of Computer Programs (SICP) arguably the best computer science book ever written. Therefore, I was delighted when I discovered an online version of SICP with an embedded Scheme interpreter so that you can edit and run the code in the book. Just about any of the book’s Scheme expressions can be edited and run.

I couldn’t find any explanation on the site that explains how to invoke the interpreter but the README at the Git repository has the secret: with the cursor at the end of the expression press【Ctrl+Enter】.

I’ve only played with it a little but it seems really useful, especially for someone working their way through SICP for the first time.

Posted in Programming | Tagged , | Leave a comment

Sacha Does Org

The ever-energetic Sacha Chua uses Org mode to organize her life. If you follow her at all you know that

  1. She has an extremely busy schedule.
  2. She documents everything.

If Chua can run her life with Org Mode, just about anyone can.

Follow the link to see how she arranges her Org files. She has links to her Emacs configuration so you can see her customizations and templates. As usual, her set up probably won’t be an exact fit for your needs but there’s lots of good ideas and you can take her configuration and customize it to be just what you need.

Posted in General | Tagged , | 2 Comments

SBCL 1.1.11 Is Out

The latest version of my favorite Common Lisp environment, SBCL, is out and available at the usual place. If you’re running Linux there’s a binary available, otherwise just grab the source and compile it yourself. Compiling is very easy—just follow the excellent directions. You’ll also need a C compiler and a CL compiler. If this is your first build you can grab one of the older SBCL binaries or use another CL compiler. Again, it’s all explained in the Getting Started page.

For Windows users, there’s a fork that supports threads. This hasn’t been incorporated into the mainline yet so if you need threads on Windows you can use this fork until it gets folded in.

For the rest of us, the update is mostly bug fixes with a couple of enhancements to building the documentation and the Windows port. As usual, my build went without problems. If you’re new to SBCL and running on Windows, see yesterday’s post for a pointer to an excellent article on getting started.

Posted in Programming | Tagged , | Leave a comment

Lisp and Slime on Windows

I haven’t used a Windows machine in decades but my general sense is that using Emacs on Windows can be—er—challenging. Even more so, apparently, is using Slime with Emacs on Windows.

It’s nice, then, that Jisang Yoo has come to the rescue with a nice piece on installing Common Lisp and Slime on a Windows machine. Yoo walks you through installing and testing both CLISP and SBCL. Then he talks about installing and configuring Slime. Finally he talks a bit about how to use the Slime documentation features (including downloading a local version the HyperSpec).

My only complaint is that he doesn’t mention Quicklisp. That’s relevant to Yoo’s post because of Quicklisp’s special handling for Slime. As Yoo points out, loading and configuring Slime can be a bit involved and finicky but Quicklisp let’s you do all this with a single command. It also automates keeping Slime up to date.

If you’re a Windows user and want to try Lisp, this article is a great resource. Be sure to check out Quicklisp too: it makes package handling, including Slime, so much easier.

Posted in General | Tagged , , | Leave a comment

Common Lisp versus Emacs Lisp

As a user of both Elisp and Common Lisp I sometimes have a hard time remembering the small differences. Many of these are “hidden” in the sense that identically named functions behave differently. One such example is that functions such as assoc and member behave differently because Elisp uses equal as the predicate whereas eql is used by default in CL.

Jisang Yoo has published a lengthy post on some of the differences between the two Lisps. It’s not encyclopedic but it does cover the most important differences and the ones that are apt to bite the unwary practitioner.

He also covers the cl-lib package, which is the new CL compatibility library for Elisp. One nice touch is that he shows how to programmatically list all the cl-lib functions with an indication of whether or not they have a built-in version.

Some differences are trivial, defconst versus defconstant for example, while others, like the difference in member are subtle and hidden. Even if you’re experienced in both languages, you may find some differences you didn’t know about. This is a great post and well worth the time it takes to read it. You’ll also learn an interesting fact about the Korean language.

Posted in General | Tagged , , , | Leave a comment