SBCL 1.2.9

Steel Bank Common Lisp is out and available at the usual place. This month's release has some optimizations and a bunch of bug fixes. You can get the details from SBCL's NEWS page.

As I say every month, if you're looking for an excellent Common Lisp system that's easy to install and use, I can recommend SBCL without hesitation.

Posted in Programming | Tagged , | Leave a comment

Just When You Thought It Couldn't Get Worse

What could make the Lenovo/SuperFish scandal worse than it already is? This could:

If true and you bought one of those laptops, it probably means that Lenovo sold you and your safety out for less than a dollar.

Here's the Forbes story.

Posted in General | Tagged , | Leave a comment

Act While You Can

Gabriel Weinberg, the founder and CEO of DuckDuckGo has an impassioned plea to all of us to take a stand in the coming debate over Internet privacy. “Internet privacy” is a large and complex subject that includes abuses by the NSA and other government agencies as well as commercial enterprises that are eager to exploit our personal data for commercial gain.

It's reasonable to be a bit pessimistic about being able to yank back our privacy from the government but it does seem possible to get the advertisers and data brokers under control. As Weinberg reports, the Obama administration is set to introduce legislation to do just that. We can expect major pushback from those who want to keep mining our personal information and building ever more comprehensive dossiers on us.

Weinberg says that this is a fight where we can actually make a difference and he suggests some ways to claw back our privacy. You should head on over and read his post. As he says, it's now or probably never.

AFTERWORD: Here's the EFF's take on the upcoming legislation.

Posted in General | Tagged | 2 Comments

Oh Nooos

Spock is dead. Now who will be my roll model? The linked NYT has a short video in which Nimoy explains the origin of the Vulcan salute.

Nimoy's character was an inspiration to me and I loved Nimoy's portrayal of him. RIP.

Posted in General | Leave a comment

Remapping Your Keyboard

I've always been in awe of folks like Xah Lee who do extensive remapping of their keyboards. I have enough problems remembering key sequences without changing the keys around on my keyboard so I don't do that. Now abo-abo has taken this to extremes with his keyboard layout.

First, he repurposes 【;】 as a modifier key to select alternative mappings for the other keys. For example, 【l】 just inserts the letter l but 【;+l】 inserts <. He also has special keys to insert various sorts of brackets, and to do things like jump to a bookmark or change windows. Take a look at his post to see the full setup.

This sort of thing is definitely not for me but I do think it can be very useful, especially for adding key sequences with an additional modifier key. You should definitely take a look even if you don't think it's for you. Perhaps you'll find it more useful than you think. Abo-abo says that after using his setup for a while, the plain QWERTY keyboard feels unbearably sluggish.

Posted in General | Tagged | 2 Comments

Quick Notes

In my continuing quest to make better use of the Org mode agenda facility, I've implemented a way of capturing quick notes that are meant to be ephemeral and not saved long term. It's a good way to capture information while I'm on the phone or otherwise need to capture some data quickly and deal with it later. For example, maybe someone calls and wants to change the time of an appointment. I can just capture the new time and update my calendar after the call.

The capture template is ridiculously simple. It just grabs a headline and any associated text and puts a timestamp at the end. The capture template is

("q" "Quick Note" entry (file "~/org/") "* %?\n%U")

The file has #+FILETAGS: QN in the header so that it's easy to find them with a custom agenda view. Here it is:

("q" "Quick Notes" tags "QN" nil)

Once I've acted on the note, I can type 【Ctrl+k】 to delete it from the agenda and file.

This is a really simple thing but something I'm almost certainly going to use a lot. Even though it's simple, I had to do a bit of research to figure out all the details so I'm recording my process here in case any of you want to do the same thing.

Posted in General | Tagged , | Leave a comment

A New Stock Photo for a Hacker

Christopher Soghoian has an excellent suggestion

If that picture isn't scary enough for you, how about this one?

Posted in General | Tagged | Leave a comment

Capturing Blog Ideas

I've been refactoring my workflow lately, trying to make better use of Org-mode, especially Org agenda. I'm always on the lookout for promising blog subjects and usually find them when reading my RSS feeds. My normal process was to bookmark a promising post1 in a “Blog Ideas” folder and then look through that when I was searching for Irreal post subjects. The problem is that the folder is huge because I don't actually use most of the posts I bookmark. Half the time, I forget why I saved a post.

My new workflow is to save my ideas in an Org file. I capture the ideas using org-capture. That makes it easy to record a link to the post and to add notes about my initial ideas for transforming it into an Irreal post.

Here's my org-capture template for blog entries:

("b" "Blog" entry (file "~/org/")
 "* TODO %? \n%U\n%(jcs-retrieve-url)\n")

It's pretty much conventional except for the %(jcs-retrieve-url) that calls jcs-retrieve-url to get the URL of the current Browser page and inserts it into the TODO entry. The jcs-retrieve-url function is just a call to some Apple script requesting the URL of the current Safari page. It's the same call that I used in jcs-get-link. I have a similar template that gets its link from the killring. I use that for capturing blog posts that include a link to a tweet.

Here's what a typical entry looks like:

* TODO Abo-abo's remapped keyboard                                    :emacs:
the =;= key acts as an escape to remapped keys.
Abo-abo claims that the main disadvantage is that QWERTY seems
sluggish after he got used to using it. 
[2015-02-14 Sat 17:19]

One nice thing about this scheme is that I can accumulate notes about the post before I actually write it. With my old scheme, there was no way of doing this so if I had an idea about the post there was no easy way of recording it. Now I just add some notes to the TODO entry. I can also add links to related posts so that I have them all available when I start writing. Before I could save additional links but there was no way of tying them together other than remembering that they were related.

Even better, I can start writing the post, mark it as a DRAFT, and add a link to the DRAFT in the agenda. Then I can accumulate ideas directly into the post before I'm ready to post it. Because the draft post is still anchored by the agenda item, it doesn't get lost—it still appears in my agenda until I publish it and mark it DONE.

EDIT: I just noticed that Sacha Chua has a great post on using org-capture and efficient note taking. If you're interested in leveraging Org mode for note taking you should definitely take a look.



For this post, the term “post” means someone else's post or article that I found on the Internet. The term “Irreal post” means one of my posts that appears or will appear on Irreal.

Posted in General | Tagged , | Leave a comment

Handling Windows

A while ago I wrote about abo-abo's application of Hydra to switching windows. It was an idea apparently inspired by Sacha Chua's use of his def-rep-command to switch windows but went further to handle many chores involving windows and buffers. I had also recently written about John Kitchin's use of Helm to do the same sort of thing, and remarked that I really liked both methods but couldn't make up my mind as to which to implement.

Abo-abo's method seemed easier to implement so I decided to try it on an experimental basis. If I didn't like it, I could always try Kitchin's method instead. My version is almost the same as abo-abo's except I use x and y for vertical and horizontal splits and I added magit-status.

I've been using it for a couple of weeks and really like it. It definitely gives Emacs a further Lisp Machine feel. The Lisp Machine had a SELECT key that was used to initiate window operations and hydra-window has the same feel. It's really convenient how I can perform several operations in a row with one hydra invocation. For example, I can switch to another window, load an existing buffer or bookmarked file and switch back to the original window almost instantaneously.

I find that I now use bookmarks all the time whereas before I seldom did. It's so easy: invoke hydra-window, press 【m】, and then one other letter to bring up the file. A lot of my work flow involves the same set of files so this really speeds things up. It's faster, even, than just keeping the files open and switching to them with ido. I made this work better by stealing another idea from abo-abo and upgrading to bookmark+ and arranging to have distinct starting letters (or in some case 2 letters) for the bookmark names. That, with headlong-bookmark-jump means I can select a file with a single letter or two. I also added book marks to call Ibuffer and open Irreal in my browser.

It's startling what a different feel using this set up gives my Emacs workflow. Things just seem faster and smoother. The only problem I haven't resolved is how to invoke hydra-window. Currently【F1】, 【F10】, and【y y】 are all bound to hydra-window. I'm trying to determine what the best sequence to simulate the SELECT key is. I like【F1】 but dired+ steals it. I could probably remap that after dired+ is loaded but I'm finding 【F10】 more natural. I'll probably keep experimenting with different bindings for a while.

A final benefit is completely unexpected. For some reason, I have stopped fretting so much over open buffers.

Posted in General | Tagged | 8 Comments

A LaTeX Tip

Here's something from John Cook that I didn't know:

Posted in General | Tagged | Leave a comment