Programmers’ Fonts

The other day I wrote about Emacs themes. It’s amazing how much difference a well chosen theme can make to your peace of mind and productivity. Just as important is the choice of a programming font. Fortunately, Emacs can support just about any font and can even look elsewhere for missing glyphs. It’s really just a matter of deciding on a font, installing it, and telling Emacs to use it.

Not all that long ago, monospaced fonts weren’t antialiased and were really ugly. Now there are several good, free fonts to choose from. Jacob Gube over at Six Revisions has a great article on 10 excellent free programmers’ fonts. Each font has a screen shot and additional information, including where to get it.

I’m a long-time user of Inconsolata, which is one of the fonts he lists, and am very happy with it. My only complaint with it is that the l (ell) and 1 (one) are a bit hard to tell apart. Some of the other fonts do better. Source Code Pro, for example has a very distinctive ell that can’t be mistaken for a one. Others have a distinctive one with an exaggerated serif at the top. Oddly, the otherwise excellent Droid Sans Mono has a zero and oh that are very difficult to tell apart unless you see them together.

If you’re looking for a new font or you just want to see some of the other choices, take a look at Gube’s article. It’s a nice set of choices and is sure to have something for just about everyone.

Posted in General | Tagged | Leave a comment

DWIM Narrowing

The other day I saw a nice bit of code from Michael Fogelman that implemented a “do what I mean narrowing” function. That seemed pretty neat and I made a mental note to add it to my init.el. Then Artur Malabarba over at Endless Parentheses, a site you should definitely add to your feed, took that code and improved it a bit.

His best idea, though, was to add it to his toggle map. Now, for almost all uses of narrowing, a single, easy-to-remember key sequence will do what he wants. That means he no longer has to remember all the different narrowing calls and their key sequences; he just has to type 【Ctrl+x t n】 and the desired narrowing takes place. I’ll definitely be adding his implementation to my version of the toggle map.

Posted in General | Tagged | Leave a comment

SBCL 1.2.2

The latest version of Steel Bank Common Lisp is out and available at the usual place. The new version has some bug fixes and minor enhancements (see the NEWS page for details) so it represents the ongoing refinement of the environment that the developers have been working on for some time. The package just keeps getting better and better.

As always, the system compiled and ran the tests without problems on my OS X 10.9.4 systems. As I say every month, if you’re looking for an excellent Common Lisp package that is under continuous development, you should definitely try out SBCL. It’s an outstanding package.

Posted in Programming | Tagged | Leave a comment

Emacs Autoloads

Over at lunarsite, Sebastian Wiesner has a very nice post that explains the ins and outs of autoloads in Emacs lisp. Mostly, autoloads take care of themselves but sometimes users do need to interact with them. Here’s an example that I learned from Steve Purcell.

Of course, if you’re writing packages you will need to understand how autoloads work and when to use them. Wiesner’s post gives you all the information you need. Definitely worth a read even if you’re not writing your own packages.

Posted in General | Tagged | 2 Comments

git-timemachine

Recently, I’ve seen several references to the git-timemachine package. It didn’t seem that interesting to me so I ignored it. Then I noticed that Bozhidar Batsov is recommending it on Emacs Redux. When Batsov recommends something, it’s generally an indication that that something is worth a look.

So I loaded git-timemachine from Melpa and started playing with it. It provides a functionality that, as far as I know, is missing or hard to use in git or magit. When you invoke git-timemachine on a file, you can scroll through all the versions of the file in git. This isn’t the commit records but the actual file—you get the ultimate in context.

If you often—or even sometimes—find yourself looking at older version of a file, you should take a look at this package. It’s easy to load and try out with ELPA. You don’t even need to adjust your .emcas or init.el, just load the package and start using it. If you decide you don’t like it, just uninstall it. It’s definitely worth a look.

Posted in General | Tagged , | 1 Comment

News on the Jewel v. NSA Case

Here in the United States, the EFF is prosecuting a suit on the NSA’s indiscriminate collection of Americans’ private digital communications. In 2008 they filed the Jewel v. NSA case alleging that the NSA’s wholesale vacuuming up of Americans’ communications without warrant or specific cause is a violation of the Fourth Amendment.

Now the EFF is arguing to a federal judge that there are enough agreed upon facts to reach a constitutional conclusion and they are asking the judge to rule the NSA’s actions unconstitutional. They argue that the NSA’s actions amount to a general warrant, a legal device that the Fourth Amendment was specifically written to prohibit.

There’s no question that the EFF has the facts on their side but it is far from certain that the judge will rule in their favor. Still, at least the case is moving along and offers hope that these illegal actions will be halted.

There appears to be positive action in Europe too. The European Court of Human Rights has demanded that the GCHQ justify its mass surveillance. Meanwhile, seven ISPs have filed complaints with Britain’s Investigatory Powers Tribunal about GCHQ’s monitoring of Internet communications, something the GCHQ has been worrying about for some time. One can only hope that their fears are realized.

Posted in General | Tagged | Leave a comment

Quantum Theory and Computational Complexity

The Physics arXiv Blog has a really interesting article about the connection between quantum theory and the question of whether or not P = NP. The article starts with the question of why we can’t observe quantum phenomena at the macroscopic scale. Arkady Bolotin of Ben-Gurion University says that the key to understanding the problem is to treat it as a problem of computational complexity.

Briefly—see the article for details—the idea is that while it is possible to solve Schrödinger’s equation for simple systems at the quantum scale, it becomes increasingly difficult as the number of particles increases. Bolotin asks what if it’s impossible to solve Schrödinger’s equation for macroscopic systems in reasonable time. He shows that it is indeed impossible providing P ≠ NP.

The article outlines the argument in terms accessible to those not expert in quantum mechanics. To my—mostly uninformed—mind this provides a persuasive argument for the notion that P ≠ NP. It’s not a proof of course but it is persuasive. If you have the slightest interest in the P ≠ NP problem or are fascinated by the counter intuitive results of quantum mechanics, I’m sure you’ll enjoy the article.

Posted in General | Tagged | 2 Comments

Advanced Programming Mode Implementation

A year and a half ago I mentioned Christopher Wellons’ excellent tutorial on writing a minor mode. Now David Christiansen looks at some of the advanced aspects of implementing programming modes. As with Wellons’ post, Christiansen is documenting the things he learned from implementing his own mode—idris-mode in his case.

I like this post because it explains how to implement features that add polish and utility to your mode. He covers:

  • Imenu
  • Completion
  • Eldoc
  • flycheck and
  • Customize

as well as other hints for writing programming modes.

As with the Wellons post, you’ll want to bookmark this one against the day that you need its advice. As Christiansen says, all this material is well documented but the problem is knowing what’s available so you can look up its documentation.

Posted in Programming | Tagged | 1 Comment

Emacs Themes

I started using Emacs before there was any real support for themes so I just selected the default light configuration. I made a few tweaks like making the cursor a red bar but didn’t do much fiddling otherwise. About three years ago, the white background started bothering my eyes so I changed it to oldlace and I’ve been happy enough with the result that I haven’t made any further changes.

Still, I occasionally run across a tweet or post praising some theme and I always take a look at the screen shots. So far, I haven’t seen anything that I like more than my simple non-theme but I’ll doubtless keep looking at themes people like and point out on the Web.

Now Yuriy Pitometsu over at the Google+ Emacs Community points to a very nice site that has screen shots and information on several themes. If you’re new to Emacs or unhappy with your current theme, you should take a look. Each page of the site lists several themes along with a thumbnail screen shot so you can easily find themes that interest you. Clicking on a theme brings up a larger screen shot and more information. It’s a very nice resource if you’re in the market for a new theme. Recommended.

Posted in General | Tagged | Leave a comment

Unicode Font Redux

A couple of days ago I wrote about finally solving a long standing Emacs problem involving missing glyphs in my default font. I was really happy to have the problem resolved. So pleased I wrote about it in glowing terms.

That solution involved installing the unicode-fonts package, which scans your fonts for missing glyphs, finds them in other installed fonts, and arranges for them to be used in place of the missing glyphs. It’s a really great package but it does much more than I need. I really just wanted to specify an alternate font for those missing glyphs.

As soon as I published my post, Xah Lee and Artur Malabarba suggested a simpler solution. I was happy with unicode-fonts but couldn’t resist the one line solution that Lee and Malabarba offered. So I disabled unicode-fonts and added the line

(set-fontset-font "fontset-default" nil 
                  (font-spec :size 20 :name "Symbola"))

to my init.el. It worked perfectly, of course, so I uninstalled unicode-fonts and went with the Lee-Malabarba solution.

Malabarba notes that the documentation for set-fontset-font is a bit opaque. That’s an understatement. I had to read it several times before I could figure out why it worked for my problem. No matter. If you’re having the same problem you can just think of it as a magic incantation.

Posted in General | Tagged | 2 Comments