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

A Surveillance Timeline

The revelations from the NSA scandal are coming so fast and furious that it’s easy to become confused. Now, the EFF has come to our rescue with Timeline of NSA Domestic Spying. It starts with the ratification of the bill of rights and ends with the release of the FISA Court ruling on NSA’s violations of the Fourth Amendment.

Take a couple of minutes out of your busy life to peruse the timeline. It will probably be a revelation to you.

Posted in General | Tagged | Leave a comment

Another Emacs Challenge

Over at the Emacs reddit, zoldberghoneydew presents an interesting problem and solution. The problem boils down to creating a hosts file of the form

host1    ip-address-of-host-1
...
host64   ip-address-of-host-64

where the address of host-n can be looked up in DNS with dig.

Zoldberghoneydew’s solution is nice but a bit over complicated. The challenge is to produce this file with the minimum keystrokes possible.

Posted in General | Tagged | 3 Comments

Fourteen Years of SQL Injection

Mavituna Security has a nice post up on SQL Injection. They give a brief history of SQL injection and the three common mistakes that enable it. They have some astounding facts. Here’s a small sampling:

  • In 2012, 97% of all data breaches world wide were SQL injection attacks.
  • In one month, from the end of 2011 to early 2012, over 1,000,000 sites were successfully attacked with SQL injection.
  • SQL injection has remained in the top 10 list of vulnerabilities compiled by the Open Web Application Security Project.

I’ve written several times before about SQL injection. Every time it’s because some new article has astounded me that this attack is still possible. Mavituna is promising further articles on the technical aspects of SQL injection and how to avoid falling prey to it. Be sure to check back or sign up for their RSS feed.

Posted in General | Tagged | Leave a comment